GNU/Linux >> Znalost Linux >  >> Linux

Vše, co potřebujete vědět o systému souborů Linux

Soubory a manipulace s nimi leží v centru moderní výpočetní techniky. Dokonce jedním ze základních principů všech unixových systémů je popisovat vše v systému jako soubory. Platí prakticky pro všechny systémy Linux. Od adresářů po zařízení vaše Linuxová distribuce zachází se vším ve vašem systému jako se soubory. Nyní systémy také potřebují začlenit prostředky pro ukládání a správu těchto souborů. Zde vstupují do hry souborové systémy Linuxu. Protože Linux podporuje mnoho souborových systémů a implementuje pro ně různé operace, považujeme za nutné poskytnout našim čtenářům nějaké znalosti o tom, jak souborové systémy v Linuxu fungují.

Základy systému souborů Linux

Souborový systém Linux je zodpovědný za ukládání vašich systémových dat a jejich správu. Souborový systém lze definovat jako mechanismus za ukládáním a získáváním dat. Souborové systémy se obvykle skládají z několika vrstev, včetně logické vrstvy, která zajišťuje interakci uživatele, rozhraní API pro různé operace se soubory a podobně.

Možná jste si všimli, že celá vaše instalace Linuxu se řeší kolem / směřovat. Říká se mu kořen souborového systému a je v podstatě výchozím bodem vašeho systému. Obsahuje několik adresářů, z nichž většina má nějaký historický význam. Hierarchii souborového systému Linuxu a dalších Unixů probereme později v této příručce.

K této hierarchii souborového systému můžete připojit další komponenty jejich připojením k bodu připojení. Po připojení mohou uživatelé procházet nové souborové systémy pomocí tohoto bodu. V následujících částech vám ukážeme, jak na to. Jak tedy systém sleduje tyto souborové systémy? Stručně řečeno, používá k tomu předdefinované tabulky oddílů k určení inodů (počátečních bodů), hranic, jmen a dalších informací.

Při definování tabulek oddílů pomocí správců oddílů Linuxu jste si možná všimli, že existuje několik typů souborových systémů. Některé běžné příklady jsou NTFS, FAT a EXT. Linux podporuje širokou škálu typů souborových systémů, jak uvidíte později.

Objevení struktury systému souborů Linux

Souborový systém Linux má významnou podobnost s původním souborovým systémem Unix. Ačkoli moderní počítačové inovace napomáhají nárůstu novějších trendů, hierarchie souborového systému zůstává díky svému historickému významu téměř stejná. Tuto hierarchii jsme nastínili pomocí vhodných příkladů v této části. Předpokládáme, že znáte interpret příkazového řádku, neboli linuxové shelly.

Ve výchozím nastavení se uživateli zobrazí /home/USER adresáře při každém přihlášení. Můžete to potvrdit zadáním pwd do terminálu. Budeme používat strom, jeden z de-facto nástrojů pro vizualizaci hierarchie adresářů v Linuxu. Můžete to získat v Ubuntu vydáním instalačního stromu sudo apt.

--

Pokud spustíte strom ve svém aktuálním adresáři, je pravděpodobné, že se ocitnete ve složité, záhadné struktuře. Stává se to proto, že strom prochází každý prvek v tomto umístění (tj. obrázky, dokumenty, soubory ke stažení atd.) rekurzivně a vytváří konečnou strukturu, která je kombinuje. Můžete však přidat -L příznak k určení hloubky tohoto příkazu.

$ tree -L 1

Spuštěním tohoto příkazu získáte přímou stromovou strukturu skládající se pouze z komponent první úrovně vašeho výchozího bodu. Tuto hodnotu můžete zvýšit, abyste získali transparentnější a robustnější vizualizaci. Ke změně umístění uvnitř systému souborů můžete použít příkaz cd. Nyní jsme diskutovali dříve, že vše v Linuxu je soubor. Adresář tedy musí být soubor. Opravdu je.

Adresáře jsou pouze speciální soubory, které obsahují jména jiných souborů (aka jejich podřízených prvků). Nové instalace Linuxu přicházejí s některými vestavěnými adresáři. Budeme o nich diskutovat níže. Pomůže vám to mnohem lépe porozumět vašemu systému.

Nejprve přejděte do kořenového adresáře vašeho systému pomocí cd / a spusťte ls. Zobrazí se vám všechny tyto výchozí adresáře. Pokračujte ve čtení a zjistěte jejich účel.

/bin

Obsahuje binární soubory, neboli spustitelné soubory různých programů nainstalovaných ve vašem počítači. V mnoha systémech toto neexistuje jako skutečný adresář, ale slouží jako symbolický odkaz na /usr/bin adresář.

/boot

Zde jsou umístěny všechny důležité soubory potřebné pro spuštění systému. Neměli byste experimentovat s obsahem tohoto adresáře, pokud nevíte, co děláte. Jinak byste mohli poškodit samotný systém a narušit funkčnost.

/dev

Adresář /dev obsahuje soubory zařízení vašeho systému. Toto jsou reprezentace souborů vašich jednotek USB, pevných disků, webové kamery a tak dále.

/etc

Historicky, /etc adresář se používal pro uchovávání různých souborů. Dnes je však standardní konvencí ukládat konfigurační soubory pro celý systém do tohoto adresáře. Zde jsou uloženy informace jako vaše uživatelské jméno/heslo, síťová pověření, přípojný bod oddílů.

/home

Toto je osobní adresář uživatele. Může obsahovat více podadresářů na základě počtu uživatelů ve vašem počítači. Řekněme, že jste uživatel „maniak“, pak vám bude přidělen adresář /home/maniac. Po přihlášení se vám v terminálu zobrazí adresář /home/maniac. Označuje se také jako :~$ v prostředí Bash.

/lib

Zde jsou umístěny systémové knihovny. Toto jsou úryvky kódu používané vašimi aplikacemi k provedení nějakého úkolu. Jejich příklad zahrnuje úryvky kódu, které kreslí okna nebo odesílají soubory.

/media

Tento adresář je přípojným bodem zařízení plug and play, jako je externí úložiště. Jedná se o relativně novější přírůstek do systému souborů Linux.

/mnt

Staří a nevrlí unixoví administrátoři používali tento adresář k ručnímu připojení zařízení nebo oddílů na vyžádání. Ačkoli se používá zřídka, zůstává v souborovém systému Linuxu kvůli jeho historické důležitosti.

/opt

Zkratka pro volitelný a určený k uložení volitelných systémových souborů. Správci jej často používají k hostování aplikací třetích stran, které nainstalovali ze zdroje.

/proc

Hostuje soubory procesů, moduly jádra a podobná dynamická data. Neměli byste do toho zasahovat, jinak by váš systém mohl být zastaralý.

/root

Jako /home ale pro superuživatele systému. Je to adresář, který se vám zobrazí, když přepnete na účet root.

/run

To se používá pro uchovávání dočasných dat používaných procesy systému Linux. Nepleťte se sem, pokud nevíte, na čem jste.

/sbin

Jako /bin ale obsahuje pouze binární soubory nezbytné pro systém. Zde jsou umístěny různé každodenní používané nástroje jako ls, cd, cp atd. Nemanipulujte s nimi.

/usr

Místo „použijte pro všechny druhy“, kde jsou uloženy různé informace. Mohou zahrnovat binární soubory, knihovny, ikony, manuály a tak dále.

/srv

Adresář serveru. Obsahuje zdrojové soubory webových aplikací a obsahuje další komunikační protokoly.

/sys

Jiný virtuální adresář, například /dev . Obsahuje citlivé informace a nemělo by se s ním experimentovat, pokud uživatel neví, na čem je.

/tmp

Používá se pro uložení dočasných hodnot, které budou smazány během restartu systému.

/var

Původním účelem tohoto adresáře bylo hostit všechny proměnné soubory. V současné době obsahuje několik podadresářů pro ukládání věcí, jako jsou protokoly, mezipaměti a podobně.

Ve vašem kořenovém adresáři mohou být nějaké další adresáře. Obvykle podléhá specifické distribuci Linuxu a může se v různých systémech lišit.

Kontrola hierarchie systému souborů Linux

Pomocí standardních nástrojů příkazového řádku se můžete rychle pohybovat v hierarchii souborového systému. Pro tento účel jsme sestavili seznam některých nejpoužívanějších příkazů terminálu Linux. Pokud je pro vás těžké držet krok s další částí, zamiřte tam.

Takže po spuštění vašeho terminálu jste na /home/USER umístění označené symbolem :~$ podepsat. Na nové místo se můžete přesunout pomocí příkazu cd (change directory), jako je cd /etc. Pomocí příkazu tree, jak je uvedeno níže, vygenerujte jednoduchou vizualizační strukturu vašeho aktuálního adresáře, jak je uvedeno níže.

$ tree -L 1

Typ souboru můžete zobrazit pomocí příkazu ls -l. První část jeho výstupu označuje, s jakými druhy souborů máte co do činění. Řekněme například, že váš aktuální adresář obsahuje podadresář s názvem Obrázky a textový soubor s názvem test. V tomto adresáři zadejte příkaz ls -l a vyhledejte řádek, který obsahuje informace o těchto dvou prvcích.

Uvidíte, že řádek obsahující složku Obrázky začíná d , jako v adresáři. Mezitím by počáteční prvek řádku pro test měl být , označující běžné soubory. Ostatní soubory, jako jsou zařízení a zásuvky, jsou zastoupeny podobně. Speciální soubory jsou označeny pomocí c , zásuvky pomocí s , potrubí s p , zablokujte zařízení pomocí b a symbolické odkazy s l .

Dalším robustním příkazem, který lze použít k určení typu souboru, je soubor samotný příkaz. Ve výše uvedeném příkladu by spuštění příkazového souboru Pictures poskytlo výsledek „adresář“. Navíc by souborový test měl dát něco jako ASCII text, označující jednoduchý textový soubor.

$ file FILENAME

Můžete také použít mount příkaz pro připojení souborového systému na určité místo ve vaší hierarchii. Následující příkaz připojí /dev/sdb zařízení na /home/USER/devices .

$ sudo mount /dev/sdb /home/USER/devices

Uživatel má nyní přístup k obsahu tohoto zařízení z vybraného umístění. Chcete-li najít název blokovaného zařízení, můžete použít lsblk příkaz. Podobně lspci lze použít pro detekci zařízení PCI, lsusb k seznamu USB a lsdev zobrazíte seznam všech zařízení.

Porozumění typům souborů a oprávněním

Jak již bylo zmíněno, v systému souborů Linux existuje několik typů souborů. Každý má svůj vlastní účel, ale většinou se budeme zabývat běžnými soubory a adresáři. Běžné soubory zahrnují každodenní soubory, jako jsou zdrojové kódy, spustitelné soubory, dokumenty, hudba a podobně. Adresáře jsou jednoduché soubory, které obsahují názvy jiných souborů. Mezitím jsou speciální soubory nízkoúrovňové systémové součásti, jako jsou trubky a zásuvky. Obvykle je řeší linuxové jádro.

Nyní jsou oprávnění zcela odlišným konceptem a jsou pro uživatele Linuxu extrémně důležitá. Pokud chcete vynikat ve svých schopnostech správy systému, musíte jim jasně porozumět. Linux, stejně jako ostatní Unixy, používá oprávnění k souboru k určení, jak velké oprávnění má uživatel k souboru.

Oprávnění zajišťují, že uživatelé mohou přistupovat nebo upravovat pouze ten obsah systému, ke kterému mají povoleno. Je to nejdůležitější aspekt zabezpečení vašeho systému Linux. Vzhledem k tomu, že oprávnění k souborům v systému Linux jsou sama o sobě extrémně důležitým tématem, podrobně o nich budeme hovořit v pozdější příručce. Pro dnešek se budeme držet základů.

Dříve jsme pro určení typů souborů používali příkaz ls -l. Určili jsme to pouhým pohledem na první znak počátečního sloupce. Nyní je to sloupec, který určuje oprávnění. Spusťte znovu ls -l, ale v konkrétním souboru/adresáři.

První část výstupu by měla obsahovat tři pole oddělená znakem symbol. První znak označuje typ souboru. Bude to pro běžné soubory, jak jsme si řekli dříve. Další část by měla obsahovat jeden nebo více znaků z množiny {r, w, x} . Pokud je například rw , pak má uživatel k němu přístup pro čtení (r) a zápis (w). Pokud je (rwx ), uživatel má oprávnění ke čtení, zápisu a spouštění (x).

Pokud tedy tato sekce označuje řízení přístupu uživatele, proč jsou zde další dvě podobné sekce? Jsou to oprávnění skupiny a ostatních uživatelů. Vzhledem k tomu, že Unix je víceuživatelský systém, byl souborový systém navržen pro usnadnění souběžného používání stejného systému různými uživateli. Každý uživatel měl svůj vlastní pár loginu a hesla, které mohl použít pro přístup do systému. Oprávnění jednoduše definují, jakou kontrolu má konkrétní uživatel nad určitým obsahem.

Oprávnění některého obsahu můžete upravit pomocí chmod a chown příkazy. Budou ukázány v bezplatné příručce.

Přehled různých typů systému souborů Linux

V operačních systémech založených na Linuxu existuje několik typů souborových systémů. Běžné typy souborových systémů Linuxu jsou ext3, ext4, zfs, FAT, XFS a Btrfs. V tomto seznamu je nepochybně mnohem více a my vám v krátkosti poskytneme jejich stručný přehled. Nalezení správného typu systému souborů obvykle závisí na požadavcích uživatelů. Začínajícím uživatelům Linuxu doporučujeme držet se žurnálovacího souborového systému ext4.

Vzhledem k tomu, že existuje více typů linuxových souborových systémů, myslíme si, že je nezbytné mít o nich určité znalosti. Zde představujeme 10 široce používaných typů souborového systému v Linuxu.

1. souborové systémy EXT

Ext (Extended File System) je navržen speciálně pro Linux a má k dnešnímu dni 4 verze. Jsou to ext, ext2, ext3 a ext4. Většina moderních distribucí již nepodporuje ext a ext2. Verze ext3 implementovala žurnálování, což je funkce, která zabraňuje poškození dat v případě náhodného výpadku napájení. Od vydání verze ext4 zaznamenal relativní pokles v používání. Ext4 je výchozí typ systému souborů v nejnovějších distribucích.

2. BtrFS

„B-Tree File System“ je inovativní souborový systém vyvinutý společností Oracle. Nabízí některé ohromující funkce, které ve standardních typech souborových systémů Linuxu chybí. Některé z nich zahrnují schopnost pořizovat snímky na cestách, možnosti sdružování disků, online defragmentaci a transparentní kompresní metody. Mnoho lidí vyslovuje BtrFS jako „lepší FS“ a považuje ho za další velký typ souborového systému na linuxových serverech a osobních pracovních stanicích.

3. ReiserFS

ReiserFS je další souborový systém založený na žurnálu, který lze použít pro univerzální výpočty. Je podporován na Linuxu a má open source licenci GNU GPL. ReiserFS si ve svých raných letech získal docela příznivce díky některým funkcím, které byly v té době relativně nové. Mezi ně patřila možnost měnit velikost svazků z online, tail packing pro snížení vnitřní fragmentace a žurnálování pouze s metadaty. Vývoj ReiserFS se zastavil kvůli tomu, že hlavní vývojář strávil ve vězení.

4. ZFS

ZFS je robustní souborový systém a správce svazků vyvinutý společností Sun Microsystems a v současnosti je spravován společností Oracle. Je to extrémně výkonný souborový systém, který podporuje masivní úložiště, efektivní kompresní techniky, moderní modely RAID, deduplikaci dat a mnoho dalších funkcí. ZFS je k dispozici ve většině distribucí Linuxu a BSD spolu s Mac OS a FUSE. Uživatelé Ubuntu mohou zjistit více o ZFS zde.

5. XFS

XFS je souborový systém podobný Ext4 vyvinutý společností Silicon Graphics a je dostupný v Linuxu od roku 2001. Nabízí mnoho funkcí standardního souborového systému ext4, ale omezuje některé jeho schopnosti. XFS využívá techniku ​​zvanou zpožděná alokace pro efektivnější detekci fragmentace souborů. Je tedy vhodný pro nastavení linuxových NAS a SAN úložišť. Zjistili jsme, že funguje lépe s velkými soubory, ale poměrně pomaleji při práci s velkým množstvím menších souborů.

6. JFS

JFS je zkratka pro „Journaled File System“, což je souborový systém Linux vyvinutý společností IBM. Je známý svým omezeným využitím zdrojů CPU a poskytuje výrazně lepší výkon jak pro velké soubory, tak pro kolekce několika menších souborů. Navíc umožňuje správcům systému dynamicky měnit velikost jejich oddílů. Tato funkce však podporuje pouze zvětšování, nikoli zmenšování.

7. KLADIDLO

HAMMER je extrémně robustní typ souboru vyvinutý pro verzi DragonFly BSD. Jedná se o vysoce dostupný souborový systém, který podporuje pouze 64bitové systémy. Hammer používá stromy B+ k implementaci svých funkcí, které zahrnují mimo jiné schopnost pořizovat neomezené snímky exportovatelné do NFS, uchovávání historie, kontrolní součty a operace master-multi slave. Podporuje také deduplikaci dat na vyžádání a transparentní komprese.

8. TUK

FAT neboli File Allocation Table je třída souborového systému známá svou flexibilitou a robustní sadou funkcí. Některé populární souborové systémy FAT zahrnují FAT 16, FAT32, exFAT a vFAT. Jsou jedním z nejpoužívanějších souborových systémů díky jejich začlenění do starších počítačů s Windows. Linux podporuje širokou sadu běžných souborových systémů FAT známých svým vysokým výkonem.

9. NTFS

NTFS (New Technology File System) je dalším běžným typem souborového systému pro mnoho uživatelů. Je to výchozí souborový systém na moderních počítačích Windows a je podporován Linuxem a dalšími systémy BSD. NTFS implementuje několik technik ke zvýšení jeho výkonu a je to žurnálovaný souborový systém. Podporuje alternativní datové toky, různé metody komprese, změnu velikosti, řídké soubory a mnoho dalších funkcí.

10. křeče

Komprimovaný souborový systém ROM, aka cramfs, je jedním z nejrozšířenějších typů souborových systémů ve vestavěných systémech. Je to pouze souborový systém pouze pro čtení, který umožňuje systému číst obrázky, aniž by bylo nutné je nejprve dekomprimovat. To je důvod, proč jej mnoho linuxových distribucí používá pro obrazy initrd a instalační obrazy.

V Linuxu existuje mnohem více typů souborových systémů. Navíc umožňuje uživatelům připojit více typů oddílů ve struktuře souborového systému. Je to skutečně rozšířená praxe. Jedním speciálním typem linuxového souborového systému je swap. Ve skutečnosti to není souborový systém, ale technika používaná pro implementaci virtuální paměti.

Kontrola typu systému souborů v systému Linux

Protože Linux umožňuje uživatelům používat více než jeden typ souborového systému současně, je často nutné před prováděním operací se soubory zkontrolovat typ souborového systému. Nastíníme některé konvenční metody k určení typu systému souborů oddílu z příkazového řádku.

1. Identifikace typu systému souborů pomocí příkazu df

Typ souborového systému v Linuxu můžete určit pomocí níže uvedeného příkazu df. Podívejte se na naše příklady příkazů df pro Linux, abyste příkazu df porozuměli podrobně.

$ df -T /

Výsledkem by byl typ systému souborů root (/) ve výstupním sloupci Type.

2. Identifikace typu systému souborů pomocí příkazu fsck

Příkaz fsck (File System Check) lze použít k určení typu systému souborů oddílu. -N příznak se používá pro zakázání kontroly chyb.

$ fsck -N /

Tento příkaz by měl vypsat typ souborového systému a jeho id bloku.

3. Identifikace typu systému souborů pomocí příkazu lsblk

Příkaz lsblk se používá pro zobrazení blokových zařízení v počítači se systémem Linux. Můžete přidat -f příznak, který říká lsblk, aby zobrazil typ systému souborů.

$ lsblk -f

Vytiskne všechna bloková zařízení spolu s jejich typem, bodem připojení a dostupností.

4. Identifikace typu systému souborů pomocí příkazu mount

Jak bylo uvedeno výše, připojení se používá k připojení zařízení nebo oddílu k vybranému umístění ve vašem souborovém systému. Můžete jej také použít s grep k určení typu souboru aktuálně připojených systémů souborů Linux.

$ mount | grep "^/dev"

Zobrazí všechny připojené diskové oddíly s jejich typem.

5. Identifikace typu systému souborů pomocí příkazu blkid

Příkaz blkid se používá pro tisk vlastností blokových zařízení. Zobrazuje také typ systému souborů, jak ukazuje příklad níže.

$ blkid /dev/sda9

Obsahuje další informace. K extrahování konkrétních informací můžete použít příkaz Linux cut.

$ blkid /dev/sda9 | cut -d ' ' -f 3

6. Identifikace typu systému souborů pomocí příkazu soubor

Příkaz file vytiskne informace o souborech a adresářích. Přidání -sL volba do souboru umožňuje určit také typ systému souborů.

$ sudo file -sL /dev/sda9

Vypíše typ systému souborů oddílu /dev/sda9.

7. Identifikace typu systému souborů pomocí souboru fstab

Soubor fstab obsahuje informace používané vaším systémem k určení typu systému souborů. Můžete jej použít k získání typu souborového systému, jak je ukázáno níže.

$ cat /etc/fstab

Tento příkaz vytiskne typ systému souborů vašich oddílů spolu s dalšími informacemi.

8. Identifikace typu systému souborů pomocí příkazu parted

Příkaz parted je jedním z nejužitečnějších způsobů určování typů souborových systémů v Linuxu. Můžete jej použít, jak je uvedeno níže.

$ sudo parted -l

Tento příkaz by měl vytisknout všechny oddíly spolu s jejich typem systému souborů Linux a dalšími informacemi. Tuto metodu použijte, když potřebujete určit typ všech souborových systémů ve vašem systému.

9. Identifikace typu systému souborů pomocí příkazu inxi

Dalším užitečným příkazem, který uživatelům umožňuje zjistit typ souborového systému, je inxi. Pomocí následujícího příkazu můžete zjistit typ systému souborů všech oddílů.

$ inxi -p

Vytiskne všechna zařízení spolu s informacemi o jejich typu.

10. Identifikace typu systému souborů pomocí souboru mtab

Můžete také grep soubor mtab získat informace o typu pro připojené souborové systémy. Níže uvedený příkaz vám ukáže, jak to udělat.

$ cat /etc/mtab | grep "/dev/sd*"

Vytiskne typ informací o aktuálně připojených zařízeních.

Konec myšlenek

Souborový systém Linux pokrývá řadu aspektů vaší oblíbené distribuce Linuxu. Z hlediska softwarového inženýrství jsme diskutovali o tom, jak Linux strukturuje své souborové systémy a diktuje různé příkazy k efektivnímu procházení této hierarchie. Typ systému souborů v Linuxu označuje logickou entitu konkrétního systému souborů. Nastínili jsme deset široce používaných typů souborových systémů Linux a poté jsme vám ukázali, jak to určit z terminálu. Přestože je velmi těžké obsáhnout souborový systém v jediném průvodci, naši redaktoři se ze všech sil snažili udělat nemožné. Zanechte nám komentář, pokud máte nějaké nejasnosti nebo máte další otázky.


Linux
  1. 30 věcí, které jste nevěděli o linuxovém jádře

  2. Vše, co potřebujete vědět o Ubuntu 13.04

  3. 15 věcí, které potřebujete vědět o Linux Directory Structure

  1. Linuxová komprese souborů:Vše, co potřebujete vědět

  2. Oprávnění souborů Linux:Vše, co potřebujete vědět

  3. Swappiness v Linuxu:Vše, co potřebujete vědět

  1. Vše, co potřebujete vědět o Linux Chmod Command

  2. Vše, co potřebujete vědět o Linuxových kontejnerech (LXC)

  3. Vše, co potřebujete vědět o serveru Linux Ubuntu