Inode
Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2022. január 22-én felülvizsgált
verziótól ; az ellenőrzések 2 szerkesztést igényelnek .
A számítástechnikában az inode (ejtsd: ainod vagy inode), az inode egy adatstruktúra a hagyományos UNIX fájlrendszerekben (FS), például az UFS , ext4 . Ez a struktúra metainformációkat tárol a szabványos fájlokról , könyvtárakról vagy más fájlrendszer-objektumokról, az adatokon és a néven kívül.
Részletek
A fájlrendszer létrehozásakor a fájlokról információkat tartalmazó adatstruktúrák is létrejönnek. Minden fájlnak megvan a maga inódája, amelyet egy egyedi szám azonosít (gyakran "i-számnak" vagy "inode-nak" nevezik) azon a fájlrendszeren, ahol maga a fájl található.
Az Inodes információkat tárol a fájlokról, például a tulajdonjogról (felhasználó és csoport), a hozzáférési módról (olvasás, írás, futtatás) és a fájltípusról. Van egy bizonyos számú inode, amely meghatározza az adott fájlrendszer által megengedett fájlok maximális számát. Fájlrendszer létrehozásakor jellemzően a kötetének körülbelül 1%-a van lefoglalva az inode-oknak.
Az inode kifejezés általában olyan blokkeszköz -inode-okra utal, amelyek állandó fájlokat, könyvtárakat és ha lehetséges, szimbolikus hivatkozásokat kezelnek . Ez a koncepció fontos szerepet játszik a sérült fájlrendszerek helyreállításában.
- Az inode száma az eszköz meghatározott helyén kerül be az inode táblázatba; Az inode száma alapján a rendszermag beolvassa az inode tartalmát, beleértve az adatmutatókat és más fájlkontextusokat is.
- A fájl inode száma az ls -i paranccsal tekinthető meg , az ls -l parancs pedig az inode-ban tárolt információkat jeleníti meg.
- A nem hagyományos UNIX fájlrendszerek, mint például a ReiserFS , megtehetik inode tábla nélkül is, de a hasonló információkat hasonló módon kell tárolniuk, amely egyenértékű funkcionalitást biztosít. Ezeket az adatokat statisztikai információnakstat nevezhetjük, a programoknak információkat szolgáltató rendszerhívásokhoz hasonlóan .
Fájlnevek és könyvtár tartalma:
- Az inodes nem tárol fájlneveket, csak a tartalmukra vonatkozó információkat;
- A Unix könyvtárai a „referencia” struktúrák listái, amelyek mindegyike egy fájlnevet és egy inode számot tartalmaz;
- a kernelnek meg kell keresnie a könyvtárban egy fájlnevet, majd sikeres esetben a nevet a megfelelő inode számra kell konvertálnia;
- a fájlok tartalma az inode-ok által hivatkozott adatblokkokban található.
Az adatok kernel általi megjelenítését a memóriában struct inode(strukturális inode-nak) nevezik ( Linux operációs rendszerben ). A BSD rendszerek a kifejezést használják , ahol a vvnode betű kernelszintű
virtuális fájlrendszert jelöl .
Egy inode leírása a POSIX-ben
A POSIX szabványok a fájlrendszerek viselkedését a hagyományos UNIX fájlrendszerek, az UFS leszármazottjaként írják le. A normál fájloknak a következő attribútumokkal kell rendelkezniük:
- fájl hossza bájtban ;
- eszközazonosító (ID) (ez azonosítja a fájlt tartalmazó eszközt);
- A fájl tulajdonosának azonosítója;
- Fájlcsoport azonosítója ;
- fájl mód , amely meghatározza, hogy mely felhasználók olvashatják, írhatják és futtathatják a fájlt;
- Az időbélyeg azt a dátumot adja meg, amikor az inode utoljára módosult ( ctime , change time ), a fájl tartalma utoljára módosult ( mtime , modifikation time ) és az utolsó hozzáférés ( atime , access time );
- a hivatkozások száma az inode-ra mutató kemény hivatkozások számát jelzi ;
- mutatók a fájl tartalmát tároló lemezblokkokra ( tovább… ).
A rendszerhívás statbeolvassa a fájl inode számát és néhány információt belőle.
Az inode etimológiája
Az, hogy az „i-nod” névben mit jelent „és”, nem ismert. Egy ezzel kapcsolatos kérdésre a Unix társ-alkotója, Dennis Ritchie azt válaszolta:
Őszintén szólva én sem tudom. Csak egy kifejezés volt, amit elkezdtünk használni. A fájlrendszer kissé szokatlan felépítése miatt, amelyben a fájlhozzáférési információk lapos tömbként vannak tárolva a lemezen, elkülönülve minden könyvtárhierarchia információtól, a legjobb tippem (az "és"-re) az "index". Így az i-szám index volt ebben a tömbben, az i-node pedig a tömb választható eleme. (A kézikönyv első változatában az "és-" előtagot használták; idővel a kötőjelet már nem használták).
Eredeti szöveg (angol)
[ showelrejt]
Igazság szerint én sem tudom. Ez csak egy kifejezés volt, amit elkezdtünk használni. Az "Index" a legjobb tippem, a kissé szokatlan fájlrendszer-struktúra miatt, amely a fájlok hozzáférési információit egy lapos tömbként tárolta a lemezen, és ettől eltekintve minden hierarchikus könyvtárinformáció él. Így az i-szám egy index ebben a tömbben, az i-csomópont a kiválasztott elem
a tömbből. (Az „i-” jelölést az 1. kiadású kézikönyvben használták; kötőjelét fokozatosan eltüntették).
Mit jelent az "i" az inode-ban ?
Dennis Ritchie sem tudja. (nem elérhető link) . Letöltve: 2010. augusztus 3. Az eredetiből archiválva : 2011. augusztus 23.. (határozatlan)
Azaz indexcsomópont (index csomópont, elem) → index-csomópont → i-csomópont → inode - a kifejezés index csomópontjának fokozatos lerövidítése és összevonása . Más változatok szerint az i -csomópontban az i kezdőbetű az információ (információ), incore, indirection szavakból is származhat.
Jelentése
Az inode-okat használó fájlrendszerek számos finom tulajdonsággal rendelkeznek:
- Ha több név mutat ugyanarra az inode-ra ( hard link ), akkor minden név egyenértékűnek minősül. Az elsőként létrehozott névnek nincs különleges pozíciója. Ez eltér a hasonló szimbolikus linkek viselkedésétől , amelyek az eredeti névtől függenek.
- Előfordulhat, hogy egy inode-nak egyáltalán nincs hivatkozása. Általában az ilyen fájlokat törölni kell a lemezről (ezért az olyan programok, mint az undelete Unixban nem teszik lehetővé a törölt fájl pontos nevének meghatározását), és fel kell szabadítani az erőforrásait (ez a fájl törlésének szokásos folyamata ), de ha valamelyik folyamat még nem zárta be a fájlt, akkor továbbra is hozzáférhet hozzá, és a fájl csak az utolsó hozzáférés bezárása után törlődik véglegesen. Ez vonatkozik a végrehajtható másolatokra is, amelyeket az azokat végrehajtó folyamatok tartanak nyitva . Emiatt egy program frissítésekor javasoljuk, hogy törölje a régi példányt, és hozzon létre egy új inode-ot a frissített verzióhoz, hogy a régi verzió egyetlen példánya se futhasson tovább.
- Általában nincs mód arra, hogy a megnyitott fájlt a megnyitás nevével párosítsa . Az operációs rendszer az első adandó alkalommal átkonvertálja a fájlnevet inode számmá, majd "elfelejti" a használt fájlnevet. Így a getcwd() és getwd( ) könyvtárfüggvények elkezdenek keresni a szülőkönyvtárban egy olyan fájlt, amelynek az inode megfelel a " . » könyvtár ; majd keresse meg az aktuális szülőkönyvtárát, és így tovább, amíg el nem éri a " / " könyvtárat . Az SVR4 és a Linux extra információkat (mezőket) használ az inode-okban, hogy elkerülje ezt a kellemetlenséget.
- Korábban lehetséges volt a könyvtárak hardlink összekapcsolása. Ezáltal a könyvtárszerkezet fa helyett irányított gráf lett (vagyis egy N-1 éllel és N csomóponttal összekapcsolt gráf ). Például egy könyvtár lehet a saját szülője. A modern fájlrendszerek nem teszik lehetővé az ilyen kétértelműségeket, kivéve a gyökérkönyvtárat, amelyet saját szülőjének tekintenek.
- A fájl inode száma változatlan marad, ha a fájlt áthelyezik egy másik könyvtárba ugyanazon az eszközön, vagy ha a lemez töredezettségmentesül . Ezért nem elegendő a fájlt tartalmazó könyvtár vagy annak tartalmának (vagy mindkettő) áthelyezése ahhoz, hogy megakadályozzuk a hozzáférést egy már futó folyamattól, ha a folyamat képes kiszámítani az inode számát. Ez azt is jelenti, hogy az inode-ok teljesen ellenőrzött viselkedése nem valósítható meg sok nem szabványos UNIX fájlrendszeren, például a FAT -on és utódjaiban, amelyek nem képesek fenntartani az állandó „változatlanságot”, amikor egy fájl könyvtára és tartalma mozog.
Gyakorlati alkalmazás
A rendszergazdák által UNIX operációs rendszeren (OS) használt számos program gyakran használ inode számokat a fájlok hivatkozására. Példaként szolgálhat itt a népszerű beépített merevlemez- ellenőrző vagy parancs , mivel természetes módon kell konvertálnia az inode-számokat fájlútvonalakká és fájlútvonalakból . Ez kiegészíthető egy fájlkereső használatával a billentyűvel , vagy egy paranccsal a megfelelő kulccsal (ami a legtöbb platformon ).
fsckpfiles find-inumls-i
Dinamikus inode allokáció
Az egyik probléma az, hogy az inodok „kifogyhatnak”. Ebben az esetben nem tud új fájlt vagy könyvtárat létrehozni az eszközön, még akkor sem, ha van elegendő szabad hely. Ebben az esetben a meglévő fájlok teljes mértékben módosíthatók.
Így a fájlrendszerek két csoportra oszthatók
- Az inódok statikus száma: ext2-ext4 ...
- Az inodok dinamikus száma: jfs, xfs, btrfs, zfs...
Egyes inode alapú fájlrendszerek immunisak az Y2038 problémára ( Unix time néven ismert ), hogy megakadályozzák a dátum túlcsordulást, de nem mindegyik. A szerver beállításakor fontosabbá válik az ilyen POSIX -kompatibilis fájlrendszerek használatának elkerülése. A POSIX legújabb verziója támogatja a rendszeridő- és dátumhívásokat, amelyek ellenállnak az Y2038 -as kiadásnak .
Lásd még
Irodalom
- 7. Inodes and Operations (angol) (nem elérhető link) (1999.11.). - Linux virtuális fájlrendszer réteg: Inodes és Actions - Inodes in Linux . Letöltve: 2010. augusztus 3. Az eredetiből archiválva : 2008. február 7..
- Robachevsky A. N., Nemnyugin S. A., Stesik O. L. Index leírók / System V basic file system / Chapter 4. Fájlrendszer // UNIX operációs rendszer. - 2. kiadás - Szentpétervár. : BHV-Pétervár, 2008. - S. 334-. — 656 p. - ISBN 978-5-94157-538-1 .