Systém souborů FreeBSD: hierarchie a připojení. FreeBSD: Automatické připojení souborových systémů NFS a SMBFS pomocí AMD Automaticky připojit síťový disk při spuštění freebsd

Příprava diskového prostoru k použití nekončí vytvořením diskových oddílů a souborových systémů na nich. Všechny vytvořené systémy souborů musí být také zpřístupněny FreeBSD. Proč by měly být připojeny - tedy zahrnuty do jedné hierarchie adresářů a souborů, která je také označena názvem systému souborů. Pokud jsme však dříve mluvili o fyzické organizaci dat, nyní je čas seznámit se s její logikou.

Logika souborového systému

Logicky je souborový systém FreeBSD (jako každý unixový systém) organizován podle stromového principu: jeho základem je kořen (kořenový adresář, označovaný symbolem / a také nazývaný kořenový adresář; posledně jmenovaný by neměl být zaměňován s kořenový adresář /, který slouží jako domovský adresář pro superuživatele).

Z kořenového adresáře, který může být spíše kmenem stromu, jsou větve – podadresáře v něm vnořené a výhonky – běžné soubory. Těch druhých je však málo: ve verzích FreeBSD se jedná o určitý entropický soubor (/entropy) a soubor popisující autorská práva systému /COPYRIGHT.

V kořenovém adresáři je ale poměrně hodně podadresářů a některé z nich jsou uvnitř uspořádány velmi složitě a obsahují značné množství vnořených podadresářů hlubších úrovní.

V zásadě je hierarchie adresářů ve všech unixových systémech podobná, protože je regulována za prvé dlouholetou tradicí a za druhé všemi druhy standardizačních dokumentů, zejména FHS (Filesystem Hierarchy Standard), který je nyní k dispozici v ruském překladu (za což děkuji Viktor Kostromin).

Standard FHS byl původně vyvinut k uspořádání adresářové struktury mnoha distribucí Linuxu. A teprve později byl upraven pro další unixové systémy (včetně klanu BSD). Nicméně je to hierarchie adresářů FreeBSD, která může sloužit jako příklad příkladného dodržování ducha FHS. A doslovné odchylky v něm od jeho litery jsou vždy funkčně určeny.

Standard FHS spočívá na dvou základních principech – jasném oddělení v hierarchii souborů sdílených a nesdílených adresářů na jedné straně a neměnných a proměnných na straně druhé.

Kontrast mezi sdílenými a nesdílenými adresáři je způsoben přirozenou síťovou povahou Unixu obecně a FreeBSD zvláště. To znamená, že data související s místním počítačem (například konfigurační soubory pro jeho zařízení) by měla být umístěna v adresářích oddělených od těch, jejichž obsah je přístupný z jiných počítačů v síti, místní nebo globální (příkladem není pouze uživatelská data, ale i programy).

Podstatu kontrastu mezi neměnnými a proměnlivými adresáři lze snadno vysvětlit na příkladu. Stejné uživatelské programy tedy musí být ze své podstaty neměnné (resp. dostupné pro úpravu pouze správci systému, nikoli však samotnému uživateli, který je při své práci používá). Tyto programy přitom při svém provozu generují nejen datové soubory, řekněme texty nebo obrázky (jejich proměnlivá povaha je jasná bez komentáře), ale všechny druhy servisních informací, jako jsou log soubory, dočasné soubory a jako). Které by měly být seskupeny do adresářů oddělených od skutečných spustitelných souborů programů, knihoven, konfiguračních souborů atd., nezbytných pro jejich spuštění.

Přísné dodržování konceptu oddělení sdílených a nesdílených, neměnných a neměnných adresářů od sebe umožňuje v rámci jediné stromové hierarchie souborů fyzicky izolovat jeho jednotlivé větve – tedy ve formě nezávislých souborových systémů umístěných na izolovaná zařízení (disky, diskové řezy, diskové oddíly; v obecném případě - a na vzdálených médiích připojených k síti, ale o tom nyní nebude řeč). Existuje pro to mnoho důvodů – zvýšení rychlosti, zvýšení spolehlivosti a jednoduše ohledy na pohodlí – ale o nich teď nebudeme mluvit. Protože teď nám záleží jen na tom, že tyto větve stromu souborů musí být začleněny do obecného systému souborů.

V unixových systémech je každý soubor (včetně adresáře) rozpoznán systémem nikoli podle názvu, ale podle jedinečného identifikátoru jeho položky v tabulce. inody. Existují nástroje pro zobrazení těchto ID souborů. Jedním z nich je příkaz ls s volbou -i, který vytiskne ID každého pojmenovaného souboru. Uvedeno pro kořenový adresář -

$ ls -i /

ukáže nám to poněkud nečekaný obrázek (pro zjednodušení výstupu jsou z výstupu vyloučeny informace o běžných souborech a symbolických odkazech v rootu a zbývající adresáře jsou seřazeny podle jejich identifikátorů):

2 ../ 2 ./ 2 dev/ 2 home/ 2 tmp/ 2 usr/ 2 var/ 3 cdrom/ 4 mnt/ 5 root/ 8257 dist/ 8258 bin/ 8294 proc/ 8295 sbin/ 16512 stand/ 22477 bota/

Z tohoto příkladu (týkajícího se souborového systému stroje, na kterém jsou tyto řádky zapsány) je zřejmé, že až 7 adresářů má stejné digitální identifikátory, rovné 2. Otázkou je, v čem spočívá jedinečnost?

První dva prvky seznamu jsou snadno pochopitelné: ./ představuje aktuální adresář (v tomto případě kořenový adresář) a ../ je nadřazený adresář aktuálního; a protože podle definice neexistuje nic nad kořenem v hierarchii souborů, druhý označuje sám sebe. Není tedy divu, že ./ a ../ mají stejný identifikátor - jsou to různá označení (pevné odkazy, nebo jinými slovy duplicitní názvy) pro stejný, kořenový, adresář.

Ale stejně, jak se na první pohled zdá, význam identifikátoru pro adresáře /dev, /home, /tmp, /usr, /var vyžaduje vysvětlení. Je to však jednoduché: všechno jsou to adresáře, ve kterých jsou připojeny nezávislé souborové systémy, buď umístěné na samostatných zařízeních – diskových oddílech, jako jsou adresáře /home, /usr, /var, nebo virtuální souborové systémy, které nestaví na jakékoli skutečné diskové zařízení (adresář /dev se systémem souborů zařízení a v tomto případě adresář /tmp, ve kterém je připojen souborový systém v RAM, o čemž bude řeč později). A od stolu inody- různé pro každý souborový systém, není divu, že kořen každého z nich je označen číslem 2 - číslování inody jdou ve svém vlastním referenčním rámci.

Připojení je tedy zahrnutí souboru ze systému do libovolného adresáře existujícího v kořenovém systému (ne nutně přímo v kořenovém systému, může mít jakýkoli stupeň vnoření, jak je znázorněno níže). Bez toho jsou adresáře a soubory takto připojeného systému jednoduše nepřístupné. To je důležité pochopit, když narazíte na výrazy jako "vytvořit souborový systém /usr". Z výše uvedeného je zřejmé, že to, co se vytváří (příkazem newfs), je prostě nějaký abstraktní souborový systém a své „jméno“ získává až v okamžiku připojení do zadaného adresáře.

Je zajímavé, že identifikátor adresáře pro připojení (také nazývaný bod připojení) je nalezen pouze v okamžiku připojení. Abychom to ověřili, provedeme jednoduchý experiment. V adresáři /mnt, určeném speciálně pro připojení dočasně připojených souborových systémů, můžete vidět tři podadresáře - /mnt/disk, mnt/iso, /mnt/usb (je to v mém systému, vytvořil jsem je pro vlastní pohodlí; původně byl adresář /mnt ve FreeBSD prázdný). Při startu systému v nich není nic připojeno a jejich obvyklý stav je být prázdný. Když se podíváte na jejich identifikátory, můžete vidět něco takového:

$ ls -i /mnt 18 disk/ 24 iso/ 19 usb/

Nyní vezmeme a připojíme flash disk s USB rozhraním do /mnt/usb (přesně to jsem zamýšlel) a zopakujeme prohlížení. A vidíme:

18 disků/ 24 iso/ 2 usb/

To znamená, že identifikátory adresářů, které zůstaly prázdné (/mnt/disk a /mnt/iso), se nezměnily, ale identifikátor adresáře /mnt/usb se magicky změnil na 2. Protože v okamžiku připojení se stal kořenem pro vlastní souborový systém a referenční bod pro výpočet inody všechny soubory na něm zaznamenané.

Pojďme trochu odbočit a vzpomenout si na pevné odkazy, přes které totéž inode a datové bloky s ním spojené mohou mít různá jména. Nyní je jasné, proč by všechny tyto duplicitní soubory měly být umístěny ve stejném systému souborů: koneckonců různé systémy souborů mají své vlastní, neodpovídající číslování inody, a není možné je identifikovat podle čísel (jak jinak by systém rozlišil adresáře /usr a /var z našeho příkladu - koneckonců ho nezajímají názvy souborů). Za symbolické odkazy, které mají své inode(ve skutečnosti kromě nich téměř nic) s jejich identifikátory, očíslovanými v referenčním rámci souborového systému, ve kterém se nacházejí, takové omezení neexistuje. A symbolické odkazy mohou být umístěny kdekoli (včetně na vzdáleném počítači - nejen na jiném oddílu).

Vraťme se však k příkladu našeho kořenového adresáře. Ze všeho uvažovaného je zřejmé, že řada jeho větví leží na samostatných oddílech a tvoří své vlastní souborové systémy (ve skutečnosti jsme je oba vytvořili). A proto je všechny potřeba namontovat.

Montážní praxe

Pro účely připojení slouží příkaz mount, který se spouští buď automaticky během spouštění systému, nebo ručně z příkazového řádku. Vlastně v plném smyslu je v každém případě automaticky připojen pouze kořenový souborový systém. Nemusí být na disku – při spuštění ze záchranného CD nebo jiného bezpečnostního média může být umístěn na virtuálním disku v RAM.

Proces připojování kořenového souborového systému je však stejně nevyhnutelný jako vítězství socialismu v globálním měřítku: stejně jako socialismus, aniž by zvítězil v globálním měřítku, jednoduše ztrácí schopnost existovat (což jsme nedávno pozorovali), tak může OS existovat bez kořenového systému nemůže. V Linuxu to způsobuje kernel panic mód – přibližně stav, do kterého naši lídři upadli asi před 20 lety. Pravda, ukázalo se, že jsou silnější než Linux a obnovily se docela rychle - takže nás stále restartují (nebo restartují? - ale my jsme silnější :)). To však neplatí pro instalační záležitost, kterou se vám nyní pokusím představit.

Chcete-li tedy připojit všechny systémy souborů kromě kořenového, musíte provést určité akce. Nejprve se podíváme na to, jak je provést ručně, a poté na to, jak je zvěčnit do příslušných konfiguračních souborů.

Takže příkaz mount. Ve skutečnosti se jedná o celou rodinu programů, z nichž každý je navržen pro připojení souborových systémů určitých typů – nejen UFS, ale všech těch, které podporuje FreeBSD. Jejich seznam je poměrně rozsáhlý - představu o tom můžete získat v adresáři /sbin:

$ ls -1 /sbin/mount*

co nám dá odpověď

/sbin/mount_cd9660* /sbin/mount_devfs* /sbin/mount_ext2fs* /sbin/mount_fdescfs* /sbin/mount_linprocfs* /sbin/mount_mfs* /sbin/mount_msdosfs* /sbin/mount_nfs_nt* /sbin/smount/mount_nt* /sbin /sbin/mount_nullfs* /sbin/mount_procfs* /sbin/mount_std* /sbin/mount_udf* /sbin/mount_umapfs* /sbin/mount_unionfs*

Každý příkaz v tomto seznamu je zodpovědný za připojení jiného typu souborového systému, k některým z nich se vrátíme později. Prozatím si všimněme pouze samotného /sbin/mount, navrženého pro práci s UFS a UFS2.

Volá se z příkazového řádku a vyžaduje dva argumenty – název zařízení, které má být připojeno, a bod připojení (tj. adresář, do kterého má být připojen základní souborový systém). Název zařízení by měl označovat patriciu již namapovanou na existujícím řezu BSD s vytvořeným systémem souborů UFS2 (UFS), například,

$ mount /dev/ads0d /usr

připojí systém souborů na zadaný oddíl v adresáři /usr kořenového adresáře stromu souborů. Pokud souborový systém na zařízení není vytvořen nebo je jiného typu než UFS/UFS2, objeví se chybová zpráva označující nesprávný superblok: na rozdíl od stejnojmenné linuxové utility nemůže samotný příkaz FreeBSD mount soubor rozpoznat. typ systému.

Na bod připojení jsou kladeny následující požadavky: a) adresář se stejným názvem musí existovat v době připojení a b) být co nejprázdnější. To první je nutnost, ale to druhé není tak úplně pravda. Připojení do adresáře s libovolnými soubory proběhne hladce (pamatuji si, že v Linuxu to není tak dávno, co způsobilo pád systému), ale veškerý jeho obsah bude nepřístupný, dokud nebude odpojen. A pokud soubory, které obsahuje, hrají významnou roli pro jakýkoli subsystém, může to mít nejrůznější špatné následky. Pokud by byl například obsah adresáře /tmp zablokován připojením souborového systému tam, zatímco byl spuštěn systém X window, výsledkem by pravděpodobně bylo selhání X serveru. Naštěstí v případě potřeby můžete provést kombinovanou montáž (viz níže).

V zadaném tvaru bude připojení provedeno s některými výchozími charakteristikami: souborový systém bude číst/zapisovat v tzv. režimu. noasync (stejný, ve kterém se operace s metadaty provádějí synchronně a operace s daty se provádějí asynchronně). Tuto pozici lze změnit pomocí hodnot volby -o. Je jich poměrně dost, ale prakticky hlavní pro nás v této fázi budou:

  • async - poskytne zcela asynchronní režim (i přes hrozná varování v předchozích příspěvcích budu později mluvit o situaci, kdy to může být oprávněné);
  • synchronizace - naopak povolení plně synchronního režimu (i když vlastně nechápu, proč je to prakticky nutné);
  • noatime je velmi užitečná možnost, která zabraňuje aktualizaci atributu posledního přístupu k souboru, což výrazně zlepšuje výkon;
  • rdonly - připojí systém souborů v režimu pouze pro čtení (někdy je to nutné);
  • union je stejná volba, která vám umožňuje provést sjednocené připojení, ve kterém zůstane viditelný předchozí obsah adresáře bodu připojení; true - s určitými omezeními - viz man (8) mount .

Existuje několik dalších hodnot volby -o, které zakazují umístění určitých typů souborů na připojený souborový systém, například spustitelné soubory (-o noexec), soubory zařízení (-o nodev) nebo soubory s tzv. -volal. trochu sebevraždy. Praktický význam však mají především pro správce serverů a slouží bezpečnostním účelům. Na stolním počítači by obvyklá forma montáže byla něco takového:

$ mount -o noatime /dev/ads0d /usr; $ mount -o noatime /dev/ads0e /var; $ mount -o noatime /dev/ads0f /home

Vše výše uvedené platí pouze pro připojení souborových systémů FreeBSD. V praxi však často vzniká potřeba začlenit do svého adresářového stromu jiné typy souborových systémů. To je zvláště často vyžadováno pro ISO9660 (obvyklý souborový systém pro všechna CD kromě Mac) a FAT různých druhů. V tomto případě je třeba explicitně zavolat příslušný příkaz mount, např.

$ mount_cd9660 /dev/acd0 /cdrom

pro montáž kompaktu, popř

$ mount_msdosfs /dev/ad## /mnt

pro FAT jakéhokoli druhu (včetně FAT32) to však lze provést také nepřímo zadáním volby -t file_system_type do příkazu mount

$ mount -t ext2fs /dev/ad## /mnt/linux

připojí systém souborů Linux (pokud je odpovídající funkce součástí jádra). V tomto případě je standardní připojení pro oddíly BSD jednoduše nahrazeno příkazem /mount_ext2fs, který je navržen pro připojení oddílů ext2fs (a také ext3fs - ale samozřejmě bez jakýchkoli funkcí žurnálování). Tedy forma

$ mount -t fstype ......

bude úplným ekvivalentem příkazu

$mount_fstype ... ...

Všechny operace pro připojení souborových systémů (včetně výměnných médií) ve FreeBSD vyžadují práva superuživatele. Hodnoty volby -o zde na rozdíl od linuxové verze příkazu mount nezahrnují uživatelský parametr -o, který umožňuje připojení běžným uživatelům. Je pravda, že existuje několik způsobů, jak to obejít, jak je uvedeno ve zvláštní poznámce.

Nastavení automatické montáže

V praxi se však k ručnímu připojování uchýlí pouze u zřídka používaných souborových systémů. Všechny souborové systémy, které jsou zásadně důležité pro fungování FreeBSD, se připojují automaticky při startu systému a ty často používané se připojují v poloautomatickém, tak říkajíc režimu.

Pro automatické připojování je připojovací program spuštěn během procesu spouštění z inicializačních skriptů. Hledá svůj konfigurační soubor - /etc/fstab a připojí do něj vše, co najde, až na některé výjimky (o kterých bude řeč níže).

Samotný soubor /etc/fstab je generován automaticky při instalaci FreeBSD, včetně všech souborových systémů nezbytných pro podporu života. V budoucnu jej však lze upravit ručně, aby bylo možné přidat nová zařízení pro montáž nebo další možnosti pro již povolená zařízení.

Soubor /etc/fstab je jednoduchá databáze v textovém formátu (pole oddělená mezerami nebo tabulátory), včetně následujících polí:

  • Zařízení - název souboru zařízení, na kterém je umístěn souborový systém, podobně jako první argument příkazu mount při ručním použití;
  • Mountpoint - bod připojení (odpovídá druhému argumentu příkazu mount);
  • FStype - typ souborového systému, zadaný také jako hodnota volby -t;
  • Možnosti - další možnosti montáže, podobné hodnotám možnosti -o;
  • Dump - podmínky pro provedení zálohy souborového systému pomocí utility dump;
  • Pass# - podmínky pro kontrolu souborového systému pomocí nástroje fsck.

V čerstvě nainstalovaném FreeBSD bude /etc/fstab nutně obsahovat následující položky (příklad pro 1. díl hlavního disku na 1. kanálu IDE):

# Device Mountpoint FStype Options Dump Pass# /dev/ad0s1a / ufs rw 1 1 /dev/ad0s1b žádný swap sw 0 0

Pokud se budete řídit radami rozumných lidí (a výchozími nastaveními sysinstall) a vyberete některé větve souborového systému z kořene, položky jako

/dev/ad0s1d /var ufs rw 0 0 /dev/ad0s1e /usr ufs rw 0 0 /dev/ad0s1f /tmp ufs rw 0 0

/dev/ad0s1g /home ufs rw 0 0

zodpovědný za systém souborů s domovskými adresáři uživatele.

Je zřejmé, že do pole Možnosti můžete přidat jakékoli dostupné (a rozumné) hodnoty volby -o (oddělené čárkami, bez mezer), například noatime pro všechny systémy souborů a pro /tmp - také async , protože obsah tohoto adresáře se nemá po restartu uložit.

Výše uvedené platí pro systémy souborů, které se připojují automaticky při spuštění. Nikdo vás však neobtěžuje dělat záznamy v /etc/fstab pro systémy, které jsou čas od času připojeny - v tomto případě je lze připojit podle zjednodušeného schématu (to jsem měl na mysli výše poloautomatickým režimem). Takže pro jednotku CD můžete přidat řádek (ve skutečnosti se automaticky objeví při generování souboru /etc/fstab, pokud bylo CD vybráno jako zdroj instalace v sysinstall)

/dev/acd0 /cdrom cd9660 ro,noauto 0 0

ve kterém možnosti, jak asi tušíte, předepisují odmítnutí připojení při spuštění (noauto) a režim pouze pro čtení (ro). Poté bude pro připojení CD stačit zadat pouze bod připojení -

$mount/cdrom

nebo. naopak název souboru zařízení

$ mount /dev/acd0

Podobné záznamy lze provést pro všechny vyměnitelné jednotky (Zip, USB disky, dokonce i diskety) a pro oddíly bez BSD (FAT nebo Ext2fs). Mimochodem, souborové systémy můžete připojit pomocí zjednodušeného schématu ihned po provedení změn v /etc/fstab, aniž byste museli čekat, až se počítač restartuje.

Odebírání

Před vypnutím napájení nebo restartováním počítače musí být odpojeny všechny zúčastněné souborové systémy. Po elegantním vypnutí se to děje automaticky, což má za následek, že každý zapisovatelný souborový systém obdrží čistý odpojovací bit zapsaný do vlastního superbloku. Přítomnost tohoto bitu brání obslužnému programu fsck v kontrole konzistence systémů souborů při příštím spuštění systému.

V řadě případů (například při připojování nebo odpojování mechanismu měkkých aktualizací nebo při provádění kontroly integrity) je však nutné ručně odpojit (a znovu připojit) souborové systémy, pro které se používá příkaz umount. Vyžaduje jeden argument – ​​specifikující bod připojení souborového systému „odstraněného“ z adresářového stromu, například:

$umount/tmp

nebo jako v případě poloautomatické montáže název souboru „vypínacího“ zařízení:

$ umount /dev/ad#s#?

Pomocí jednoho řádku můžete odpojit více souborových systémů:

$ umount /usr /var /home

Nebo můžete - všechny připojené systémy souborů nebo všechny systémy souborů uvedené v souboru /etc/fstab (kromě kořenového), což bude vyžadovat volby

$umount -A

$ částka -a

respektive. Určité typy souborových systémů je také možné odpojit zadáním hodnot volby -t. Ano, tým

$ umount -t ufs

odpojí pouze oddíly BSD, aniž by to ovlivnilo CD a vše ostatní, co je součástí systému.

Souborové systémy by neměly být v době odpojování používány, to znamená, že by neměl být přístup k souborům, které se na nich nacházejí. Být v libovolném adresáři souborového systému je tedy dostatečným důvodem pro odmítnutí jeho odpojení (se zprávou jako zařízení je zaneprázdněno), což je důvod, proč žádný z výše uvedených příkazů nebude schopen odpojit kořenový souborový systém. Důvodem odmítnutí odpojení bude načtení datového souboru libovolným programem – stejně jako u mazání souboru to neumožňuje deskriptor souboru otevřený jakýmkoli procesem.

Můžete však také odpojit souborový systém, který používáte - k tomu budete muset zadat příkaz umount s volbou -f (z vynucení - tedy vynucení). Je pravda, že to může vést k chybám, takže je lepší se k tomu neuchylovat, pokud to není nezbytně nutné. A volba vynuceného odpojení nebude mít žádný vliv na kořenový souborový systém.

Hromadná montáž

Chcete-li pokračovat v práci po provedení nízkoúrovňových operací na souborových systémech, bude nutné je znovu připojit. To lze provést nejen bez restartu, ale také bez zdlouhavého individuálního připojování. Stačí použít volbu -a:

$mount -a

přes který budou připojeny všechny systémy souborů, pro které jsou položky v /etc/fstab. V tomto případě bude proveden pokus o připojení těch, které jsou označeny příznakem noauto. Abyste tomu zabránili, můžete dále definovat typ systému souborů. Tedy tým

$ mount -a -t ufs

připojí pouze oddíly BSD, aniž by zasahoval do CD nebo flash disků. Nebo naopak můžete z procesu globálního připojení vyloučit některé systémy souborů uvedené v /etc/fstab, například aktuálně nepotřebné FAT:

$ mount -a -t nomsdosfs

Preambule místo závěru

Mimochodem, příkaz mount bez možností a argumentů (a v této podobě, na rozdíl od všech výše diskutovaných případů, jej může zadat i běžný uživatel) zobrazí seznam aktuálně připojených souborových systémů s uvedením bodu připojení, jeho podmínek a pracovní režim. Například pro stroj, na kterém jsou tyto řádky zapsány, bude jeho výstup vypadat takto:

/dev/ad0s1a na / (ufs, local, noatime, soft-updates) devfs na /dev (devfs, local) /dev/ccd0e na /var (ufs, local, noatime, soft-updates) /dev/ccd1e na / usr (ufs, local, noatime, soft-updates) /dev/ccd2e na /home (ufs, local, noatime, soft-updates) /dev/md0 na /tmp (ufs, local, noatime, async)

První řádek výstupu ukazuje, že oddíl /dev/ad0s1a je připojen v našem kořenovém adresáři, nese souborový systém UFS (konkrétně v tomto případě - UFS2, ale ve výstupu příkazu mount se neliší) s Soft Updates mechanismus povolen, je lokální (to znamená, že se nachází na disku tohoto stroje - síťové jednotky se také připojují pomocí příkazu mount) a nepodléhá aktualizaci atributu atime.

$ více /etc/fstab /dev/ad0s1b žádný swap sw 0 0 /dev/ar0s1b žádný swap sw 0 0 /dev/ad0s1a / ufs rw,noatime 1 1 /dev/ccd0e /var ufs rw,noatime/ 2 2 /dev/ 2 2 /dev ccd1e /usr ufs rw,noatime 2 2 /dev/ccd2e /home ufs rw,noatime 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 0 /dev/da0s1 /mnt/usb ext2fs,no rw,no dev/md0 /tmp mfs rw,noatime,async,-s32m 2 0

pak uvidíme jeden z výstupních řádků

Devfs na /dev (devfs, místní)

Mezi jeho záznamy není vůbec žádná korespondence. Jaká jsou tato zařízení a systémy souborů?

Otevírám sérii minipříruček „pro ty, kteří nevědí, jak používat vyhledávání a klást hloupé otázky“. Dnešním tématem je připojování a odpojování disků ve FreeBSD.

Chceme tedy přistupovat k datům na přídavném pevném disku nebo flash disku. K tomu jej musíme připojit (připojit) do prázdného adresáře, po kterém budeme mít přístup k datům na tomto disku v námi vytvořené/dříve existující složce. (DŮLEŽITÉ: disk nepřipojujte do již obsazených adresářů, dostanete obsah svého disku např. místo obsahu složky pro konfigurační soubory, zamyslete se nad důsledky pro sebe;))

Nejprve vytvořte prázdnou složku. Představme si, že uživatel shitus chce připojit disk k novému adresáři s názvem pron. Za tímto účelem vytvoří novou složku ve svém domovském adresáři (pravděpodobně nejbezpečnější místo).

Mkdir /home/shitus/pron Dalším krokem je připojení pevného disku k bodu připojení (právě jsme vytvořili složku). Všechna zařízení ve vašem systému najdete ve složce /dev/. V mém případě chci připojit své zařízení /dev/da2 do složky /home/shitus/pron

Připojte /dev/da2 /home/shitus/pron Nyní můžete zobrazit obsah disku ve výše uvedeném adresáři.

Jak připojit jiné systémy souborů než BSD

V mém případě máme USB disk se souborovým systémem Fat32. Při připojování na BSD tedy musíte jasně uvést typ použitého souborového systému.

Mount -t msdosfs /dev/da2s1 /home/shitus/pron/

U jiných souborových systémů se můžete podívat na dokumentaci FreeBSD, odkaz neposkytnu, protože Google je všechno.

Jak odpojit/odpojit souborový systém

Řekněme, že chcete odpojit/odebrat připojené souborové zařízení. Může to mít mnoho důvodů, hlavně se to dělá, pokud chcete vymazat disk nebo jej znovu připojit k jinému přípojnému bodu. Příkaz je velmi jednoduchý -

Umount /home/shitus/pron/

Ujistěte se, že se při provádění tohoto příkazu nenacházíte v této složce, jinak bude výsledek nulový.

Chcete-li připojit disk při startu systému, musíte jej zaregistrovat v souboru /etc/fstab stejným způsobem jako ty, které jsou tam již zaregistrované. Můžete si o tom také přečíst více v dokumentaci nebo o tom někdy napíšu po sté.

NTFS je nativní souborový systém Windows. Nebude tedy možné jednoduše připojit flash disky, pevné disky nebo jiná nám neznámá vyměnitelná média (ve skutečnosti to bude fungovat, ale budou problémy). Proto vydáváme náš komplexní manuál k této záležitosti.


  1. Jako vždy to všechno začíná. Nainstalujte ovladač pro NTFS: #cd /usr/ports/sysutils/fusefs-ntfs #make install clean
  2. Od FreeBSD 10 je Fuse součástí jádra. Načteme jej pomocí systémových modulů #nano /boot/loader.conf fuse_load="YES"

    To bude fungovat po restartu. V aktuální relaci načteme tento modul ručně

    #kldload pojistka

    Pomocí příkazu můžete zkontrolovat, zda je modul načten nebo ne

    #kldstat

    Pokud seznam obsahuje pojistka.ko, to znamená, že je vše v pořádku.

    #kldstat ID Refs Adresa Velikost Název 1 3 0xffffffff80200000 1fa7c38 jádro 2 1 0xffffffff821a9000 1a7c8 fuse.ko

  3. Dále se musíme rozhodnout, jak systém vidí flash disk nebo externí pevný disk: #dmesg | grep da

    Výstup bude něco takového:

    Da0 na sběrnici umass-sim0 0 scbus1 cíl 0 lun 0 da0: s/n 00H79BHRYGX22JBN odpojeno (da0:umass-sim0:0:0:0): Periph zničil da0 na umass-sim0 autobus 0 scbus1 cíl 0 lun 0 da0: Vyměnitelné zařízení SCSI SPC-4 s přímým přístupem da0: Sériové číslo 00H79BHRYGX22JBN da0: 40 000 MB/s přenosy da0: 14870 MB (30453760 512 bajtových sektorů) da0: quirks=0x12 da1 na sběrnici umass-sim1 1 scbus2 cíl 0 lun 0 da1: s/n 8968888304C9BB52 odpojeno (da1:umass-sim1:1:0:0): Periph zničil da1 na umass-sim1 autobus 1 scbus2 cíl 0 lun 0 da1: Vyměnitelné zařízení SCSI-2 s přímým přístupem da1: Sériové číslo 8968888306C9BB52 da1: 40 000 MB/s přenosy da1: 1999 MB (4093952 512 bajtových sektorů) da1: quirks=0x2

    Vidíme, že v systému máme dva flash disky s identifikátory da0 A da1. V našem příkladu použijeme pouze flash disk da0.

  4. Připojíme jej pomocí následujícího příkazu: ntfs-3g /dev/da0 /mnt

    /dev/da0- to je náš flash disk, to jsme zjistili v bodě 3.
    /mnt je bod připojení. Může být kýmkoli.

    Pokud se objeví chyba, připojte oddíl flash disku. Po vstupu

    Ntfs-3g /dev/da0

    stiskněte TAB a podívejte se na oddíly flash disku

    Da0 da0s1

    A tuto sekci namontujeme

    Ntfs-3g /dev/da0s1 /mnt

  5. Přejdeme do adresáře, kam jsme připojili flash disk, a tam vidíme jeho obsah: #cd /mnt #ll total 13 drwxrwxrwx 1 root wheel 0 4 Nov. 17:23 System Volume Information/ -rwxrwxrwx 1 root wheel 9 Nov 4 18:05 xxx.xxx* -rwxrwxrwx 1 kořenové kolo 22. listopadu 4 18:04 ZIP archiv - WinRAR.zip* -rwxrwxrwx 1 kořenové kolo 9904 4. listopadu 18:04 List Microsoft Office Excel.xlsx*

    Nyní můžete zapisovat soubory na flash disk a číst je z něj.

  6. Aby bylo možné flash disk odpojit, nejprve opustíme adresář, kde je připojen. Například #cd /

    A poté použijeme příkaz

    #umount /mnt

    Všimněte si, že Argumentem není flash disk, ale jeho přípojný bod!
    DŮLEŽITÉ: Nevytahujte flash disk ihned po zadání příkazu! Lze jej vytáhnout až po několika sekundách, kdy se v terminálu znovu objeví vstupní výzva!

Domů > Operační systémy > UNIX > BSD > FreeBSD

Přidejte pevný disk do FreeBSD za 5 minut

Často upozorňuji na to, že jednoduché otázky jsou na internetu často špatně pokryty. Je to pravděpodobně proto, že všichni guruové jsou si jisti, že nikdo nikdy nebude klást tak hloupé otázky, protože to ví každý. Moje praxe ale ukázala, že právě tyto drobné jednoduché otázky jsou nejčastější nejen mezi začátečníky, ale i mezi seriózními administrátory, kteří se s tím prostě nemuseli zabývat. Ani seriózní administrátoři to nedělají každý den, ale aby nezapomněli, nechají si pro sebe nějaký cheat sheet, aniž by to někomu přiznali. Pojďme vše napravit. Nyní se naučíte, jak přidat pevný disk do FreeBSD za 5 minut. Tak. Nejprve budou uvedeny kompletní pokyny k pochopení procesu a na konci bude krátký seznam akcí, který bude obsahovat pouze seznam příkazů jako cheat.

Podrobné pokyny s vysvětlením

Výběr názvu pevného disku

Nejprve musíme určit název zařízení, které jsme právě přidali. K tomu nám pomůže následující příkaz:

Seznam disků Geom

Nebo tento příkaz:

Devlist Camcontrol

Ve skutečném systému tyto příkazy zobrazí užitečnější informace, jmenovitě názvy zařízení a sériová čísla.

Před instalací nového zařízení jsme věděli, že náš systém je nainstalován na ada0, což logicky znamená, že náš nový disk je ada1. Můžete to určit podle názvu nového zařízení, jeho sériového čísla nebo svazku.

Nyní zkontrolujeme, zda je na našem novém disku označení

Gpart show ada1

Disk nemá žádné označení.

Odstranění existujícího označení

Pokud byl disk již použit a je potřeba z něj odstranit označení, jednoduše spusťte:

Gpart zničit -F ada1

Vytváření značek GPT

Nejprve musíme vytvořit diskový oddíl. Vřele doporučuji zapomenout na MBR a přejít na nový, pohodlnější a funkčnější - GPT.

Na disku vytvoříme označení GPT a poté zkontrolujeme, co se stane:

Gpart create -s gpt /dev/ada1 gpart show ada1

Nyní má náš disk rozdělení GPT. Z výstupu můžete vidět, že absolutně celý disk, počínaje LBA 34 a konče LBA 8388541, je prázdný. LBA 0-33 - rezervováno systémem pro tabulku oddílů.

Řekněme, že na tomto disku potřebujeme vytvořit dva oddíly:

  • vyměnit- odkládací oddíl
  • data- sekce typu ufs pro ukládání jakýchkoli dat, která potřebujeme.

Vytváření sekcí (řezů)

Pokud se instalace provádí na moderní pevné disky s velikostí sektoru 4 KB, je třeba při vytváření oddílů použít zarovnání. Můžete to udělat dvěma způsoby:
1) pokud zadáváme parametry sekce v blocích, pak zadejte číslo bloku jako násobek 8, například: -b 40;
2) pokud uvedeme velikost oddílu v bajtech, nebo neuvedeme začátek a velikost vůbec, použijeme parametr - 4k, který upraví začátek a konec sekce na sektory o velikosti 4 kb. Protože v tomto příkladu provádíme testovací instalaci na virtuální pevný disk, nemusíme to dělat. V každém případě musíte před vytvořením oddílů přesně znát velikost sektoru vašeho disku, jinak to bude mít za následek hrozné zpomalení práce.

Nyní vytvoříme oddíly. K tomu existuje příkaz gpart add s různými parametry. První parametr -t- označuje typ vytvářeného systému souborů. V našem případě budou použity dva typy: freebsd-swap a freebsd-ufs. Dále jsou dva volitelné parametry: -b- označuje číslo LBA, ze kterého je třeba vytvořit oddíl. Pokud tento parametr nezadáte, oddíl bude vytvořen automaticky z prvního volného LBA. -s- označuje velikost oddílu v LBA. Velikost jednoho LBA bloku = 512 bajtů. Doporučuje se uvádět v počtu LBA bloků, ale je to možné i v kilo/mega/giga/… bytech (přípona k/M/G). Pokud tento parametr nezadáte, bude oddíl vytvořen na maximální možné LBA v prázdné oblasti. Jako parametr můžete také zadat označení sekce, například: - Vyměním 1- v tomto případě se vytvoří štítek /dev/gpt/swap1, který lze použít pro pohodlnější přístup k oddílu. Posledním povinným parametrem je cesta k disku. V našem případě: /dev/ada1.

Vytvoříme dva oddíly a pak uvidíme, co máme. Vytvoříme první oddíl bez zadání počátečního LBA, ale s určením velikosti 1 GB (2097152 bloků). Druhý oddíl vytvoříme bez zadání počátečního LBA a bez zadání velikosti - bude tedy vytvořen na celém volném místě.

Gpart add -t freebsd-swap -s 2097152 /dev/ada1 gpart add -t freebsd-ufs /dev/ada1 gpart zobrazit ada1

Velikost lze zadat spíše v bajtech než v blocích. Je to mnohem pohodlnější. Jediným negativem je, že systém nemůže vždy správně vypočítat počet bloků. Mohou nastat případy, kdy při zadání velikosti oddílu v bajtech zůstane na disku prázdný určitý počet bloků.

Vytvoření souborového systému (formátování)

Není potřeba formátovat odkládací oddíly. Ale oddíly jako ufs musí být před použitím naformátovány. Správnější by bylo říci: měl by na nich být vytvořen souborový systém.

Chcete-li vytvořit souborový systém na druhém oddílu, stačí spustit následující příkaz:

Newfs -U /dev/ada1p2

V tomto případě byl použit parametr -U - označuje, že v tomto souborovém systému by měl být použit mechanismus Soft Updates. Tuto možnost můžete vynechat, abyste tento mechanismus nepovolili.

Montáž

Dalším krokem je připojení oddílů. Nejprve, abychom nezapomněli, přidejte naše nové sekce do /etc/fstab. Můj soubor po úpravě vypadá takto:

Chcete-li znovu připojit všechny oddíly podle souboru /etc/fstab, jednoduše spusťte příkaz:

Mount -a

Jak můžete vidět z výstupu, oddíl /dev/ada1p2 je připojen. Nyní se podívejme, co se stalo se sekcí SWAP. Spustíme příkaz:

Jak vidíte, nový oddíl SWAP není připojen. Aby bylo možné připojit SWAP, musíte jej povolit speciálním příkazem:

Swapon /dev/ada1p1

Stejným způsobem pomocí příkazu swapoff musíte zakázat oddíl SWAP, než na něm provedete jakékoli akce.

Tím jsou dokončeny všechny kroky k přidání nového pevného disku do systému.

Stručný návod

Dáno: pevný disk /dev/ada1

cílová: Smažte stávající oddíl, vytvořte nový oddíl GPT, vytvořte dva oddíly: swap a data a připojte je k funkčnímu systému.

Po každé akci udělejte gpart show sledovat výsledek. Sekvenční řazení:

  1. Odebrat stávající označení:
    gpart zničit -F ada1
  2. Vytvořit nové označení:
    gpart create -s gpt /dev/ada1
  3. Vytvořte dva oddíly: swap a data:
    gpart add -t freebsd-swap -s 2097152 /dev/ada1 gpart add -t freebsd-ufs /dev/ada1
  4. Vytvořte systém souborů UFSv2 na druhém úseku:
    newfs -U /dev/ada1p2
  5. Přidejte řádky do souboru /etc/fstab pro automatické připojení při spouštění:
    /dev/ada1p1 žádný swap sw 0 0 /dev/ada1p2 /mnt ufs rw 2 2
  6. Připojte nový oddíl (příkaz připojí všechny oddíly ze souboru /etc/fstab):
    nasednout -a
  7. Povolte nový odkládací oddíl příkazem:
    swapon /dev/ada1p1 Materiál převzatý z webu:



Horní