Mám na vás zvláštní otázku.
Stěžoval si někdy váš linuxový systém, že vám nezbývá místo, zatímco zjevně máte stále víc než dost?
Stalo se mi, že mi zbylo mnoho GB, ale můj linuxový systém si stěžoval, že nezbývá místo. Tehdy jsem se dozvěděl o inodech .
stručně inody
Inodes ukládá metadata pro každý soubor ve vašem systému ve struktuře podobné tabulce, která se obvykle nachází blízko začátku oddílu. Ukládají všechny informace kromě názvu souboru a dat.
Každý soubor v daném adresáři je záznam s názvem souboru a číslem inodu. Všechny ostatní informace o souboru jsou získány z tabulky inodů odkazem na číslo inodu.
Čísla inodů jsou na úrovni oddílu jedinečná. Každý oddíl má svou vlastní tabulku inodů.
Pokud vám dojdou inody, nemůžete vytvářet nové soubory, i když vám na daném oddílu zbývá místo.
Co je inode v Linuxu?
Inode je zkratka pro Index Node. Ačkoli si tím historie není úplně jistá, je to nejlogičtější a nejlepší odhad, se kterým přišli. Dříve se psalo I-uzel , ale pomlčka se časem ztratila.
Jak je popsáno na linfo.org:
inode je datová struktura … … která ukládá všechny informace o souboru kromě jeho názvu a jeho skutečných dat.
Inodes ukládá metadata o souboru, na který odkazuje. Tato metadata obsahují všechny informace o uvedeném souboru.
- Velikost
- Povolení
- Vlastník/skupina
- Umístění pevného disku
- Datum/čas
- Další informace
Každý použitý inode se vztahuje na 1 soubor. Každý soubor má 1 inode. Adresáře, znakové soubory a bloková zařízení jsou všechny soubory. Každý z nich má 1 inode.
Pro každý soubor v adresáři existuje záznam obsahující název souboru a číslo inodu, které je k němu přiřazeno.
Inody jsou jedinečné na úrovni oddílu. Můžete mít dva soubory se stejným číslem inodu, protože jsou na různých oddílech. Informace o inodech jsou uloženy ve struktuře podobné tabulce ve strategických částech každého oddílu, které se často nacházejí blízko začátku.
Jak zkontrolovat inode v Linuxu?
Číslo inodů můžete snadno vypsat pomocí následujícího příkazu:
ls -i
Následující obrázky ukazují můj kořenový adresář s odpovídajícími čísly inodů.
O množství inodů, které má každý souborový systém, se rozhoduje při vytváření souborového systému. Pro většinu uživatelů je výchozí počet inodů více než dostatečný.
Výchozí nastavení při vytváření souborového systému vytvoří 1 inode na 2 kB prostoru. To poskytuje dostatek inodů pro většinu systémů. Více než pravděpodobně vám dojde místo dříve, než vám dojdou inody. V případě potřeby můžete určit, kolik inodů vytvořit při vytváření systému souborů.
Pokud vám dojdou inody, nebudete moci vytvářet nové soubory. Váš systém to také nebude schopen. Toto není situace, se kterou se většina uživatelů setká, ale je to možné.
Například poštovní server bude ukládat velké množství velmi malých souborů. Spousta těchto souborů bude mít méně než 2 kB. Očekává se také, že bude neustále růst. Proto je poštovní server vystaven riziku, že mu dojdou inody dříve, než dojde místo.
Některé souborové systémy jako Btrfs, JFS, XFS implementovaly dynamické inody. V případě potřeby mohou zvýšit počet dostupných inodů.
Jak inode funguje?
Když je vytvořen nový soubor, je mu přiřazeno číslo inodu a název souboru. Číslo inodu je jedinečné číslo v rámci tohoto systému souborů. Jméno i číslo inodu jsou uloženy jako položky v adresáři.
Když jsem spustil příkaz ls “ls -li / ” název souboru a číslo inodů jsou ty, které byly uloženy v adresáři / . Zbývající informace o uživateli, skupině, oprávněních k souboru, velikosti atd. byly získány z tabulky inodů pomocí čísla inodů.
Informace o inode pro každý souborový systém můžete vypsat pomocí příkazu df v Linuxu:
df -hi
Inody a měkký/pevný odkaz
Soft link nebo symbolický odkaz je dobře známá funkce Linuxu. Ale co se stane s Inodes, když vytvoříte symbolický odkaz v Linuxu? Na dalším obrázku mám adresář s názvem “dir1 “, soubor s názvem „file1 “ a uvnitř „dir1 “ Mám měkký odkaz s názvem „slink1 “, který ukazuje na „../file1 “
Nyní mohu rekurzivně vypisovat a zobrazovat informace o inodech.
Podle očekávání mají dir1 a soubor1 různá čísla inodů. Ale stejně tak měkký odkaz. Když vytvoříte měkký odkaz, vytvoříte nový soubor. Ve svých metadatech ukazuje na cíl. Pro každý měkký odkaz, který vytvoříte, použijete jeden inode.
Po vytvoření pevného odkazu v dir1 pomocí příkazu ln:
ln ../file1 hlink1
Výpis čísla inodů mi poskytuje následující informace:
Můžete vidět „soubor1″ a „hlink1 “ mají stejné číslo inodu. Po pravdě řečeno, pevné odkazy jsou možné díky inodům. Pevný odkaz nevytvoří nový soubor. Poskytuje pouze nový název pro stejná data.
Ve starších verzích Linuxu bylo možné napevno propojit adresář. Bylo dokonce možné, aby byl daný adresář jeho vlastním rodičem. To bylo možné díky implementaci inodu. To je nyní omezeno, aby uživatelé nemohli vytvářet velmi matoucí strukturu adresářů.
Další důsledky inodů
Způsob, jakým inody fungují, je také důvodem, proč není možné vytvořit pevný odkaz napříč různými systémy souborů. Povolení takové úlohy by otevřelo možnost mít konfliktní čísla inodů. Na druhé straně může být vytvořen měkký odkaz napříč různými systémy souborů.
Protože pevný odkaz má stejné číslo inodu jako původní soubor, můžete původní soubor odstranit a data jsou stále dostupná prostřednictvím pevného odkazu. Jediné, co jste v tomto případě udělali, bylo odstranit jedno z názvů ukazujících na toto číslo inodu. Data spojená s tímto číslem inodu zůstanou dostupná, dokud nebudou smazána všechna s ním spojená jména.
Inody jsou také velkým důvodem, proč se systém Linux může aktualizovat bez nutnosti restartu. Důvodem je, že jeden proces může použít soubor knihovny, zatímco jiný proces tento soubor nahradí novou verzí. Proto vytvoření nového inode pro nový soubor. Již běžící proces bude nadále používat starý soubor, zatímco každé nové volání k němu povede k použití nové verze.
Další zajímavou funkcí, která přichází s inody, je možnost ukládat data do samotného inodu. Toto se nazývá Inlining . Tento způsob ukládání má tu výhodu, že šetří místo, protože nebude potřeba žádný blok dat. Také to prodlužuje dobu vyhledávání tím, že zamezuje většímu přístupu k disku pro získání dat.
Některé souborové systémy jako ext4 mají možnost nazvanou inline_data. Je-li povoleno, umožňuje operačnímu systému ukládat data tímto způsobem. Kvůli omezení velikosti funguje vkládání pouze pro velmi malé soubory. Ext2 a novější budou často ukládat informace o měkkých odkazech tímto způsobem. To znamená, že velikost není větší než 60 bajtů.
Závěr
Inody nejsou něčím, s čím přímo interagujete, ale hrají důležitou roli. Pokud má oddíl obsahovat mnoho velmi malých souborů, jako je poštovní server, vědět, co to je a jak fungují, vám může ušetřit spoustu problémů.
Doufám, že se vám tento článek líbil a dozvěděli jste se něco nového a důležitého o inode v Linuxu. Přihlaste se k odběru našich webových stránek a získejte další informace o Linuxu.