Inode
Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od
verze recenzované 22. ledna 2022; kontroly vyžadují
2 úpravy .
V informatice inode (vyslovováno ainod nebo inode), inode je datová struktura v tradičních unixových souborových systémech (FS), jako je UFS , ext4 . V této struktuře jsou kromě samotných dat a názvu
uloženy metainformace o standardních souborech , adresářích nebo jiných objektech souborového systému.
Podrobnosti
Při vytvoření souborového systému se také vytvoří datové struktury obsahující informace o souborech. Každý soubor má svůj vlastní inode, identifikovaný jedinečným číslem (často nazývaným „i-číslo“ nebo „inode“) v systému souborů, kde se nachází samotný soubor.
Inody ukládají informace o souborech, jako je vlastnictví (uživatel a skupina), režim přístupu (čtení, zápis, spouštění) a typ souboru. Existuje určitý počet inodů, který určuje maximální počet souborů povolených určitým systémem souborů. Při vytváření souborového systému je obvykle přibližně 1 % jeho objemu přiděleno inodům.
Termín inode obvykle označuje inody blokového zařízení , které spravují trvalé soubory, adresáře a, je-li to možné, symbolické odkazy . Tento koncept hraje důležitou roli při obnově poškozených souborových systémů.
- Číslo inodu se zadává do tabulky inodů na konkrétním místě na zařízení; podle čísla inodu může jádro systému číst obsah inodu, včetně datových ukazatelů a dalšího kontextu souboru.
- Číslo inodu souboru lze zobrazit pomocí příkazu ls -i a příkaz ls -l zobrazí informace uložené v inodu.
- Netradiční souborové systémy UNIX, jako je ReiserFS , se obejdou bez tabulky inodů, ale musí ukládat podobné informace podobným způsobem, který poskytuje ekvivalentní funkčnost. Taková data lze nazvat statistická informace , analogicky se stat systémovým voláním , které dodává informace programům.
Názvy souborů a obsah adresáře:
- inody neukládají názvy souborů, pouze informace o jejich obsahu;
- adresáře v Unixu jsou seznamy 'referenčních' struktur, z nichž každý obsahuje jeden název souboru a jedno číslo inodu;
- jádro musí vyhledat v adresáři název souboru a poté jej převést na příslušné číslo inodu, pokud bude úspěšné;
- obsah souborů je umístěn v datových blocích , na které odkazují inody.
Reprezentace těchto dat v paměti jádra se nazývá struct inode(strukturální inode) (v OS Linux ). Systémy BSD používají termín , kde vnodepísmeno v označuje virtuální souborový systém na úrovni jádra
.
Popis inodu v POSIX
Standardy POSIX popisují chování souborového systému jako potomka tradičních souborových systémů UNIX, UFS. Běžné soubory musí mít následující atributy:
- délka souboru v bajtech ;
- identifikátor zařízení (ID) (identifikuje zařízení obsahující soubor);
- ID uživatele , který vlastní soubor;
- ID skupiny souborů ;
- souborový režim , který určuje, kteří uživatelé mohou číst, zapisovat a spouštět soubor;
- Časové razítko udává datum, kdy byl inode naposledy upraven ( ctime , change time ), obsah souboru byl naposledy upraven ( mtime , modifikační čas ) a poslední přístup ( atime , access time );
- počet odkazů udává počet pevných odkazů směřujících na inode;
- ukazatele na bloky disku, které ukládají obsah souboru ( více… ).
Systémové volání statpřečte číslo inodu souboru a některé informace z něj.
Etymologie inodu
Co v názvu „i-nod“ znamená „a“, není známo. V odpovědi na otázku týkající se tohoto, spolutvůrce Unixu Dennis Ritchie odpověděl:
Abych byl upřímný, ani já nevím. Byl to jen termín, který jsme začali používat. Vzhledem k mírně neobvyklé struktuře souborového systému, ve kterém jsou informace o přístupu k souborům uloženy jako ploché pole na disku, oddělené od všech informací o hierarchii adresářů, mohu nejlépe odhadnout (pro „a“) „index“. Tedy i-číslo bylo indexem v tomto poli a i-uzel byl volitelným prvkem pole. (Předpona „a-“ byla použita v první verzi návodu, postupem času se pomlčka přestala používat).
Původní text (anglicky)
[ zobrazitskrýt]
Po pravdě ani já nevím. Byl to jen termín, který jsme začali používat. "Index" je můj nejlepší odhad kvůli mírně neobvyklé struktuře systému souborů, která ukládala přístupové informace k souborům jako ploché pole na disku, přičemž všechny hierarchické informace o adresářích žijí stranou. I-číslo je tedy index v tomto poli, i-uzel je vybraný prvek
pole. (Zápis "i-" byl použit v manuálu 1. vydání, jeho pomlčka se postupně vypouštěla).
Co znamená "i" v inode ?
Ani Dennis Ritchie to neví. (nedostupný odkaz) . Získáno 3. srpna 2010. Archivováno z originálu dne 23. srpna 2011. (neurčitý)
Tedy indexový uzel (indexový uzel, prvek) → index-uzel → i-uzel → inode - postupné zkracování a slučování slovního spojení index uzel . Podle jiných verzí může počáteční písmeno i v i -uzlu také pocházet ze slov informace (informace), incore, indirection.
Význam
Souborové systémy, které používají inody, mají několik jemných funkcí:
- Pokud několik jmen ukazuje na stejný inode ( pevné odkazy ), pak jsou všechna jména považována za ekvivalentní. První vytvořené jméno nemá žádné zvláštní postavení. To se liší od chování podobných symbolických odkazů , které závisí na původním názvu.
- Inode nemusí mít vůbec žádné odkazy. Normálně by měl být takový soubor smazán z disku (proto programy jako undelete v Unixu neumožňují určit přesný název smazaného souboru) a jeho prostředky by měly být uvolněny (toto je normální proces mazání souboru ), ale pokud nějaké procesy ještě soubor neuzavřely, mohou si k němu ponechat přístup a soubor bude trvale smazán až po uzavření posledního přístupu k němu. To platí také pro spustitelné kopie, které jsou udržovány jako otevřené procesy , které je spouštějí. Z tohoto důvodu se při aktualizaci programu doporučuje odstranit starou kopii a vytvořit nový inode pro aktualizovanou verzi, aby nadále neběžely žádné instance staré verze.
- Obvykle neexistuje způsob, jak porovnat otevřený soubor s jeho názvem , pod kterým byl otevřen. Operační systém při první příležitosti převede název souboru na číslo inodu a poté „zapomene“ použitý název souboru. Knihovní funkce getcwd ( ) a getwd() tedy začnou hledat v nadřazeném adresáři soubor s inodem, který odpovídá " . » adresář ; pak vyhledejte nadřazený adresář pro aktuální adresář a tak dále, dokud nedosáhnete adresáře " / " . SVR4 a Linux používají další informace (pole) v inodech, aby se této nepříjemnosti vyhnuly.
- Dříve bylo možné pevné odkazy na adresáře. Tím se z adresářové struktury stal řízený graf namísto stromu (tedy souvislý graf s N-1 hranami a N uzly). Adresář může být například svým vlastním rodičem. Moderní souborové systémy takové nejednoznačnosti neumožňují, s výjimkou kořenového adresáře, který je považován za vlastního rodiče.
- Číslo inodu souboru zůstává stejné, když je soubor přesunut do jiného adresáře na stejném zařízení nebo když je disk defragmentován . Přesunutí buď adresáře obsahujícího soubor nebo jeho obsahu (nebo obojího) tedy nestačí k zabránění přístupu k němu již běžícímu procesu, pokud má proces schopnost vypočítat číslo inodu. To také znamená, že plně řízené chování inodů nelze implementovat na mnoha nestandardních souborových systémech UNIX, jako je FAT a jeho nástupci, které nemají schopnost zachovat takovou trvalou „neměnnost“ při pohybu adresáře souboru a jeho obsahu.
Praktická aplikace
Mnoho programů používaných správci systému v operačním systému UNIX (OS) často používá k odkazování na soubory čísla inodů. Jako příklad zde může posloužit oblíbený vestavěný nástroj na kontrolu pevného disku fsck nebo příkaz , který potřebuje přirozeně převádět čísla inodů do a ze souborových cest . To lze rozšířit pomocí vyhledávače souborů s klíčem , nebo příkazem s příslušným klíčem (což na většině platforem je ).
pfiles find-inumls-i
Dynamická alokace inodů
Jedním z problémů je, že inody mohou „docházet“. V takovém případě nebudete moci v zařízení vytvořit nový soubor nebo adresář, i když je dostatek volného místa. V tomto případě lze existující soubory plně upravit.
Souborové systémy lze tedy rozdělit do dvou skupin
- Statický počet inodů: ext2-ext4 ...
- Dynamický počet inodů: jfs, xfs, btrfs, zfs...
Některé souborové systémy založené na inodech jsou imunní vůči problému Y2038 (známému jako Unixový čas ), aby zabránily přetečení data, ale ne všechny. Při nastavování serveru se stává důležitější vyhnout se používání takových systémů souborů , které nejsou kompatibilní s POSIX . Nejnovější verze POSIX podporuje volání systémového času a data, která jsou odolná vůči problému Y2038 .
Viz také
Literatura
- 7. Inodes and Operations (anglicky) (nedostupný odkaz) (11.1999). - Vrstva virtuálního souborového systému Linux: Inody a akce - Inody v Linuxu . Získáno 3. srpna 2010. Archivováno z originálu dne 7. února 2008.
- Robachevsky A. N., Nemnyugin S. A., Stesik O. L. Indexové deskriptory / Základní souborový systém System V / Kapitola 4. Souborový systém // Operační systém UNIX. - 2. vyd. - Petrohrad. : BHV-Petersburg, 2008. - S. 334-. — 656 s. - ISBN 978-5-94157-538-1 .