Ablakok.  Vírusok.  Jegyzetfüzetek.  Internet.  hivatal.  Segédprogramok.  Drivers

A Linux fájlrendszer leggyakrabban ext4. Ez naplóz, és lehetővé teszi, hogy kényelmesen dolgozzon az adatokkal a feladatok túlnyomó többségének megoldása során. Vannak azonban mások is. Főbb típusok fájlrendszerekés a velük való munka alapelveit ennek az anyagnak a keretein belül tekintjük át.

A Linux fájlrendszerek típusai és jellemzőik

A megkülönböztető jellemzők a fájlokkal való munka sebessége, a biztonság és a paraméterek (például blokkméret), amelyek alapértelmezés szerint léteznek, és az FS létrehozásakor kerülnek beállításra. Talán a legtöbbet fontos jellemzője egy rönk jelenléte. A rendszernapló rögzíti az adatokat ill metaadatokat(csak fejlécek), amelyekből hiba esetén visszaállíthatók az információk.

Fájlrendszer bármilyen eszközön létrehozható: lemezen vagy rendszerpartíción.

EXT2 fájlrendszer

Az EXT2 egy mára elavult fájlrendszer, amelyet a modern telepítésekben alig használnak. a fő hátrány a naplózás hiánya, ami ennek megfelelően meghibásodás esetén lehetetlenné teszi az adatok visszaállítását. Még mindig vonatkozik hordozható adathordozók információk, például az USB. A tár nem szükséges hozzájuk, mivel bizonyos helyet foglal el.

A maximális sebességet is garantálja.

  • EXT2 esetén a maximális fájlméret -2 TB

EXT3 fájlrendszer

Elmozdított EXT2, fő jellemzője a magazin megjelenése, visszafelé teljesen kompatibilis az EXT2-vel (az EXT2 szabadon konvertálható EXT3-ra). Ma már ez is ritka, szinte mindig az EXT4-et használják.

A napló egy speciális memóriaterület, amely minden változásról információt rögzít.

  • EXT3 esetén a maximális fájlméret -2 TB
  • az összes fájl maximális mérete 32 TB
  • Minden könyvtár legfeljebb 32 000 alkönyvtárat tartalmazhat

Három lehetőség van a naplózásra (a fájlrendszer létrehozásakor megadva):

  • folyóirat - a folyóirat metaadataiban, valamint maga az információ
  • megrendelve - az alapértelmezett beállítás, csak a metaadatok mentése a lemezre írás után
  • visszaírás - csak a metaadatok is mentésre kerülnek, választhat, hogy a lemezre írás előtt vagy utána menti-e el

EXT4 fájlrendszer

Leggyakrabban a kiterjesztett fájlrendszer modern verzióját használják

  • maximális fájlméret -2 TB 16 TB
  • az összes fájl maximális mérete 1 EB (exabyte). 1 EB = 1024 PB (petabájt). 1 PB = 1024 TB (terabájt).
  • Minden könyvtár legfeljebb 64 000 alkönyvtárat tartalmazhat

EXT4-ben a naplózás az opció beállításával kikapcsolható adat amikor be van szerelve ki

EXT, mint a fő Linux fájlrendszer és munkamódszer

A fájlrendszert az mk2fs parancs hozza létre

A kívánt naplózási beállítás a felszereléskor kerül megadásra, például:

mount /dev/vdc /mnt/1 -t ext3 -o data=journal

Konvertálás EXT2 E-ről XT3-ra

ReiserFS

A ReiserFS (és a Reiser4 modern megvalósítása SELinux támogatással) jól teljesít és nagyon produktív – különösen, ha nagyszámú kis fájllal dolgozik. A ReiserFS nem osztja ki az inode-okat az egyes kis fájlokhoz úgy, hogy azokat együtt dolgozza fel, hanem a ReiserFS is egy naplót használ több lehetőséggel. Jelenleg a fájlrendszert oroszországi fejlesztők támogatják.

A paranccsal létrehozhat egy FS-t egy eszközhöz

XFS

Az XFS egy naplózott fájlrendszer. RAM-ot használ az információk tárolására, így lehetséges az adatvesztés – például az áramellátás kikapcsolásakor.

Az XFS Ubuntuban való használatához csomagokat kell telepítenie xfsprogsÉs xfsdump

vfat

A Linux fájlrendszer Windows környezetben is létezik. Akkor használatos, ha meg kell szervezni a különböző operációs rendszerű kliensek bizonyos lemezeihez és partícióihoz való közös hozzáférést. Más esetekben nem ajánlott használni, mert nehéz lehet Linux alatt dolgozni.

VLADIMIR MESKOV

ext2 fájlrendszer architektúra

A cikk az ext2 - a fájlrendszer - logikai felépítését tárgyalja operációs rendszer Linux.

Az ext2 fájlrendszer alapvető összetevői

Mint minden UNIX fájlrendszerben, az ext2 fájlrendszerben is a következő összetevők különböztethetők meg:

  • blokkok és blokkcsoportok;
  • információs csomópont (information node);
  • szuperblokk.

Blokkok és blokkcsoportok

A teljes lemezpartíció fix méretű blokkokra van osztva, amelyek a szektorméret többszörösei - 1024, 2048 és 4096 bájt. A blokk mérete a partíción lévő fájlrendszer létrehozásakor kerül megadásra merevlemez. A kisebb blokkméret helyet takarít meg a merevlemezen, de korlátozza a fájlrendszer maximális méretét is. Minden blokknak van sorozatszáma. A töredezettség és a merevlemez fejmozgások számának csökkentése érdekében nagy adattömbök olvasásakor a blokkokat csoportokba egyesítik.

Információs csomópont

A fájlrendszer alapkoncepciója egy információs csomópont, információs csomópont vagy inode. Ez egy speciális struktúra, amely információkat tartalmaz egy fájl attribútumairól és fizikai helyéről. A fájl attribútumai a típusa (normál fájl, könyvtár stb.), a hozzáférési jogosultságok, a tulajdonos azonosítója, mérete, létrehozási ideje. A fizikai hely információ fájladatokat tartalmazó abszolút blokkszámok sorozata.

Superblock

A szuperblokk az ext2 fájlrendszer fő eleme. A következő információkat tartalmazza a fájlrendszerről (a lista nem teljes):

  • a blokkok és inódák teljes száma a fájlrendszerben;
  • a szabad blokkok és inódák száma a fájlrendszerben;
  • fájlrendszer blokkmérete;
  • a blokkok és inódok száma a csoportban;
  • inode mérete;
  • fájlrendszer azonosító;
  • az első adatblokk száma.

Más szóval, ez a szuperblokkot tartalmazó blokk száma. Ez a szám mindig 0, ha a fájlrendszer blokkmérete nagyobb, mint 1024 bájt, és 1, ha a blokk mérete 1024 bájt.

A fájlrendszer állapota közvetlenül függ a szuperblokk integritásától. Az operációs rendszer több biztonsági mentések szuperblokk, hogy sérülés esetén helyreállítható legyen. A főpéldány 1024 bájtnyi eltolásban található annak a partíciónak a kezdetétől, amelyen a fájlrendszer létrejött (az első 1024 bájt az operációs rendszer betöltője számára van fenntartva).

Az ext2 fájlrendszer korai verziói szuperblokk-másolatokat hoztak létre minden blokkcsoport elején. Ez nagy lemezterület-veszteséget eredményezett, így később a szuperblokk-mentések száma csökkent, és a 0, 1, 3, 5 és 7 blokkcsoportokat jelölték ki ezek befogadására.

Blokkcsoport formátuma

ábrán látható az ext2 fájlrendszer általánosított blokkdiagramja. 1.

Szinte minden blokkcsoportnak azonos a formátuma. Minden csoportban az információs blokkok mellett bittérkép formájában tárolják a csoport blokkjainak és inódjainak foglaltságára vonatkozó információkat. A 0. blokkcsoport egy szuperblokkot és egy csoportleíró táblázatot is tartalmaz, amelyeket az alábbiakban tárgyalunk.

A blokk foglalt bittérkép általában a csoport első blokkjában található. Ha a csoportban van tartalék szuperblokk, akkor a bittérkép a csoport második blokkjában található. A bittérkép mérete egy blokk. Ennek a térképnek minden bitje a blokk állapotát jelzi. Ha a bit be van állítva (1), akkor a blokk foglalt, ha visszaállítja (0), akkor a blokk szabad. A csoport első blokkja a térkép nulla bitjének, a második blokk az első bitnek felel meg, és így tovább.

Az azonos csoporton belüli inódákat egy táblázatba gyűjtjük. Egy csoport inode foglaltsági bittérképében minden bit egy elem állapotát jelenti a csoport inode táblájában.

Minden blokkcsoportot egy blokkcsoport-leíró ír le. A csoportleíró egy olyan struktúra, amely információkat tartalmaz a megfelelő csoport blokk foglalt bittérképének, foglalt inode bittérképének és inode táblájának címeiről. Az összes csoportleírót egy csoportleíró táblában gyűjtjük össze, amelyet a 0. blokkcsoportban tárolunk. A szuperblokkhoz hasonlóan az operációs rendszer biztonsági másolatot készít a csoportleíró tábláról.

Fájlolvasási algoritmus

Minden inode, mint egy blokk, rendelkezik egy sorszámmal, amely egyedi a fájlrendszeren belül, és csak egy fájlról tartalmaz információt. Így egy fájl tartalmához való hozzáféréshez ismerni kell a hozzá tartozó inode sorszámát.

Mint fentebb említettük, a fájl fizikai helyére vonatkozó információkat az inode tartalmazza. Ez az információ a fájladatokat tartalmazó 32 bites blokkszámok sorozata (1. ábra). Az első 12 szám közvetlen hivatkozás az információs blokkokhoz (közvetlen blokkszám). A 13. szám egy közvetett blokkszám. A blokk címét tartalmazza, amely az információs blokkok címeit tárolja. A 14. szám egy dupla indirekt link (dupla blokkszám), a 15. szám egy hármas közvetett kapcsolat (hármas blokkszám).

A fájlnév nem része az inode-nak, a fájlnevek és az inode sorszámok közötti leképezés könyvtárakon keresztül történik.

Katalógusok

A UNIX és POSIX rendszereken található fájlok egy faszerű hierarchikus fájlrendszerben tárolódnak. A fájlrendszer gyökere a gyökérkönyvtár, amelyet a "/" szimbólum jelöl. A fájlrendszerfa minden köztes csomópontja egy könyvtár. A fájlrendszerfa levélcsomópontjai vagy üres könyvtárak vagy fájlok. A fájl abszolút elérési útja a megadott fájlhoz vezető összes könyvtár nevéből áll, a gyökérkönyvtártól kezdve. Például a /home/test.file elérési út azt jelenti, hogy a test.file fájl a kezdőkönyvtárban található, amely viszont a gyökérkönyvtárban található "/".

A könyvtárakat, akárcsak a fájlokat, inode írja le. A könyvtár tartalma bejegyzések tömbje, amelyek mindegyike az aktuális könyvtárban "belül" lévő fájlról tartalmaz információt.

A címtárbejegyzés formátuma a következő:

  • a fájl inode száma;
  • rekord hossza bájtban;
  • fájl név;
  • fájlnév hossza.

A fájl inode-számának keresése mindig a gyökérkönyvtárban kezdődik. Például a gyökérkönyvtárban található fájl inode számának lekéréséhez az operációs rendszernek be kell szereznie a gyökérkönyvtár tartalmát, meg kell találnia benne egy bejegyzést a fájl nevével, és ebből a bejegyzésből ki kell bontania a fájl inode számát. .

Az első néhány inode-ot a fájlrendszer lefoglalja, és a fejlécfájlban vannak felsorolva:

*Speciális inode számok

#define EXT2_BAD_INO 1 /* Hibás blokkok inode */

#define EXT2_ROOT_IN 2 /* Root inode */

#define EXT2_ACL_IDX_IN 3 /* ACL inode */

#define EXT2_ACL_DATA_INO 4 /* ACL inode */

#define EXT2_BOOT_LOADER_INO 5 /* Boot loader inode */

#define EXT2_UNDEL_DIR_INO 6 /* Inode könyvtár törlésének visszavonása */

A 2. számú inode (root inode) a gyökérkönyvtár bejegyzés számára van fenntartva. Ez az inode a 0. blokkcsoportban található, és a második pozíció a csoport inode táblájában. Az első lefoglalt inode száma a szuperblokkban tárolódik.

Miután meghatározta a fájl inode sorszámát, a kernel kiszámítja annak a csoportnak a számát, amelyben ez az inode található, és annak helyét a csoport inode táblájában. Ebből az inode pozícióból olvasva az operációs rendszer teljes információt kap a fájlról, beleértve azon blokkok címét is, amelyekben a fájl tartalma tárolva van.

A blokkcsoport számát, amelyben az inode található, a következő képlettel számítjuk ki:

csoport = (inode_szám - 1) / inodes_per_group

Ahol:

  • csoport– kívánt blokkcsoport száma;
  • inode_num– a fájlt meghatározó inode sorszáma;
  • inodes_per_group– a csoportban lévő inódok száma (ez az információ a szuperblokkban található).

Az inode pozícióját a csoport inode táblázatában a következő képlet határozza meg:

index = (inode_szám - 1) % inodes_per_groupe

ahol az index az inode pozíciója a táblázatban.

Vegyünk egy példát a gyökérkönyvtárban található test.file fájl tartalmának lekérésére. A /test.file fájl olvasásához a következőket kell tennie:

  • keressen egy bejegyzést erről a fájlról a gyökérkönyvtár bejegyzéseinek tömbjében;
  • bontsa ki a fájl inódjának sorszámát, számítsa ki annak a csoportnak a számát, amelyben ez az inode található;
  • kivonja a csoport inode tábla címét a csoport leírójából;
  • számítsa ki az inopozíciót ebben a táblázatban;
  • olvassa be a fájl beírását;
  • kinyerje ki az információs blokkok címeit az inoodból, és olvassa be az ezekben a blokkokban található információkat.

ábrán. A 2. ábra a /test.file olvasásának lépéseit mutatja be részletesen.

    1-6 lépések – a gyökérkönyvtár olvasása:

  1. A 0. blokkcsoportból a csoportleíró táblázat kerül kiolvasásra.
  2. A 0. blokkcsoport-leírót a csoportleíró táblából lekérjük, és a 0. csoport inode tábla címét olvassuk ki belőle.
  3. Az inode tábla a 0. blokkcsoportból kerül kiolvasásra.
  4. A gyökérkönyvtár inode száma 2-ben van rögzítve, így a második elem a 0. csoportos inode táblából kerül kiolvasásra, amely a gyökérkönyvtár tartalmát tartalmazó blokk címét tartalmazza. Tegyük fel, hogy ez a blokk az A blokkcsoportban található.
  5. Az A blokkcsoportból a gyökérkönyvtár bejegyzéseket tartalmazó blokk kerül beolvasásra.
  6. A "test.file" nevű bejegyzést keresi. Ha ilyen bejegyzést találunk, akkor a „test.file” inode száma lekérésre kerül belőle.
  7. Az inode szám megadásával elérhetők a fájl információs blokkjai (7-11. lépések):

  8. Kiszámításra kerül annak a csoportnak a száma, amelyben az adott inode található, és a csoport inode táblázatában elfoglalt pozíciója (feltételezve, hogy a csoport száma B és a táblázatban a pozíció X).
  9. A csoportleíró táblából lekérjük a B blokkcsoport leíróját, és kiolvassuk ebből a blokkcsoport inode táblájának címét.
  10. Az inode tábla a B blokkcsoportból kerül kiolvasásra.
  11. A B blokkcsoport inode táblázatából az X pozícióban lévő inode kerül kiolvasásra.
  12. Az olvasási inode-ból a blokkcímek a /test.file fájl tartalmával kerülnek kibontásra, és a megadott címmel rendelkező blokkból kiolvashatók az információk.

A fájlolvasási algoritmus szoftveres megvalósítása

Kezdeti adatok: van egy merevlemez-partíció, amelyen az ext2 fájlrendszer létrejön. Ez a partíció a /dev/hda3 eszközfájlnak felel meg. A home alkönyvtár a partíció gyökérkönyvtárában lett létrehozva, és a következő tartalommal tartalmazza a test.file fájlt:

A citrusfélék élnének a déli bozótosban?

Igen, de hamis másolat!

1234567890-=

Ne gondolj rosszra, ez nem hülyeség, hanem próbagyakorlat a volt Szovjetunió jelzőcsapatainak távíró-kezelői tanfolyamáról!

Figyelem! Figyelembe kell venni fontos pont. A létrehozott fájl nem kerül azonnal a lemezre, hanem először a lemez pufferébe kerül. A fájl tartalmának azonnali lekérésére tett kísérlet a fenti algoritmussal nem vezet semmire, mivel a lemezen fizikailag nincs információ erről a fájlról. „Kényszeríteni” kell a rendszert, hogy a lemezpuffert lemezre írja. Ennek legegyszerűbb módja az újraindítási művelet végrehajtása. Ezért a fájl létrehozása után indítsa újra a rendszert.

A feladatunk az, hogy a /dev/hda3 eszközfájl segítségével olvassuk be a /home/test.file fájlt, közvetlenül hozzáférve az információs blokkjaihoz.

Fontolja meg a műveletet végrehajtó modul szoftveres megvalósítását.

Fejléc fájlok:

#beleértve

#beleértve

#beleértve

#beleértve

#beleértve

#beleértve

A fejlécfájl olyan szerkezeti típusokat határoz meg, amelyek leírják az ext2 fájlrendszer fő összetevőit - szuperblokk, blokkcsoport-leíró, információs csomópont, könyvtárbejegyzés.

Tekintsük röviden azokat a mezőket, amelyeket ezek a struktúrák tartalmaznak:

  1. Szuperblokk-struktúra struct ext2_super_block:
    • __u32 s_inodes_count a fájlrendszerben lévő inode-ok teljes száma;
    • __u32 s_blocks_count a fájlrendszer blokkjainak teljes száma;
    • __u32 s_free_blocks_count– szabad blokkok száma;
    • __u32 s_free_inodes_count– szabad inódok száma;
    • __u32 s_first_data_block– az első adatblokk száma (annak a blokknak a száma, amelyben a szuperblokk található);
    • __u32 s_log_block_size- Ez az érték a blokk méretének kiszámítására szolgál. A blokk méretét a következő képlet határozza meg: blokkméret = 1024<< s_log_block_size;
    • __u32 s_blocks_per_group– a blokkok száma a csoportban;
    • __u32 s_inodes_per_group– az inódák száma a csoportban;
    • __u16 s_magic– az ext2 fájlrendszer azonosítója (0xEF53 aláírás);
    • __u16 s_inode_size– információs csomópont (inode) mérete;
    • __u32s_first_ino az első foglalás nélküli inode száma.
  2. Blokkcsoport-leíró szerkezet struct ext2_group_desc:
    • __u32 bg_block_bitmap– bittérkép a csoportblokk-foglaltságról;
    • __u32 bg_inode_bitmap– group inode busy bitmap;
    • __u32 bg_inode_table– a csoport inode táblájának címe.
  3. Információs csomópont szerkezete struct ext2_inode:
    • __u16 i_mode - fájltípus és hozzáférési jogok hozzá. A fájl típusát ennek a mezőnek a 12-15. bitjei határozzák meg:
      • 0xA000– szimbolikus link;
      • 0x8000– normál fájl;
      • 0x6000– blokkolja az eszközfájlt;
      • 0x4000- Könyvtár;
      • 0x2000– karakter eszköz fájl;
      • 0x1000– FIFO csatorna.
    • __u32 i_size– méret bájtban;
    • __u32 i_atime– a fájlhoz való utolsó hozzáférés időpontja;
    • __u32 i_ctime– a fájl létrehozásának ideje;
    • __u32 i_mtime– az utolsó módosítás ideje;
    • __u32 i_blocks– a fájl által elfoglalt blokkok száma;
    • __u32 i_block– információs blokkok címei (beleértve az összes közvetett hivatkozást).
  4. Az EXT2_N_BLOCKS értéke a következő fájlban van megadva:

    * Az adatblokkokhoz viszonyított állandók

    #define EXT2_NDIR_BLOCKS 12

    #define EXT2_IND_BLOCK EXT2_NDIR_BLOCKS

    #define EXT2_DIND_BLOCK (EXT2_IND_BLOCK + 1)

    #define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK + 1)

    #define EXT2_N_BLOCKS(EXT2_TIND_BLOCK + 1)

  5. A címtárbejegyzés szerkezete struct ext2_dir_entry_2:
  6. #define EXT2_NAME_LEN 255

  • __u32 inode– fájl inode száma;
  • __u16 rec_len– a telefonkönyv bejegyzésének hossza;
  • __u8 name_len– a fájlnév hossza;
  • karakter neve fájl név.

Határozzuk meg a partíció nevét, amelyen a fájlrendszer létrejött, a globális struktúrákat és a változókat.

#define PART_NAME "/dev/hda3"

struct ext2_super_block sb;

/* puffer a csoportleíró táblázat tárolására */

unsigned char buff_grp;

unsigned char buff; /* információs puffer */

int indev; /* eszközfájl-leíró */

int BLKSIZE; /* fájlrendszer blokk mérete */

Határozunk meg néhány funkciót, amelyek működéséhez szükségünk van:

Superblock olvasási funkció:

void read_sb()

memset(&sb,0,1024);

1024 bájtot tolunk el a szakasz elejétől, és beolvassuk a szuperblokkot a struct ext2_super_block sb struktúrába:

If(lseek(indev;1024;0)< 0) {

error("lseek");

Kilépés(-1);

If(read(indev,(char *)&sb,sizeof(sb))< 0) {

error("olvasás");

Kilépés(-1);

A fájlrendszer azonosítójának ellenőrzése:

If(sb.s_magic != EXT2_SUPER_MAGIC) (

Printf("Ismeretlen fájlrendszer típus!");

Kilépés(-1);

Az EXT2_SUPER_MAGIC értéket a fejlécfájl határozza meg.

Információkat jelenítünk meg a szuperblokkban lévő fájlrendszerről:

printf(" Superblock info ----------- ");

Printf("Inodes count - %u ",sb.s_inodes_count);

Printf("Blokkszám - %u ",sb.s_blocks_count);

Printf("Blokkméret - %u ",1024<< sb.s_log_block_size);

Printf("Első inode - %d ",sb.s_first_ino);

Printf("Magic - 0x%X ",sb.s_magic);

Printf("Inode mérete - %d ",sb.s_inode_size);

Printf("Inódok csoportonként - %u ",sb.s_inodes_per_group);

Printf("Blokok csoportonként - %u ",sb.s_blocks_per_group);

Printf("Első adatblokk - %u ",sb.s_first_data_block);

Visszatérés;

Csoportleíró táblázat olvasási funkciója:

void read_gdt()

Számítsa ki a fájlrendszer blokkméretét:

BLKSIZE = 1024<< sb.s_log_block_size

A csoportleíró tábla az első adatblokkot közvetlenül követő blokkban (a szuperblokk mögött) található.

A táblázat olvasása:

If(lseek(indev, (sb.s_first_data_block + 1) * BLKSIZE, 0)< 0) {

error("lseek");

Kilépés(-1);

If(read(indev,buff_grp,BLKSIZE)< 0) {

error("olvasás");

Kilépés(-1);

Visszatérés;

A függvény, amely egy inode tartalmát a száma alapján kapja meg:

void get_inode(int inode_num, struct ext2_inode *in)

A függvény bemeneti paraméterei az inode száma és a struct ext2_inode struktúra.

Struct ext2_group_desc gd;

U64 csoport, index, poz.

Kiszámoljuk annak a blokkcsoportnak a számát, amelyben az inode_num sorszámú inode található:

Csoport = (inode_szám - 1) / sb.s_inodes_per_group;

Bontsa ki a csoportleírót a csoportleíró táblából, és másolja a struct ext2_group_desc gd szerkezetébe:

Memset((void *)&gd, 0, sizeof(gd));

Memcpy((void *)&gd, buff_grp + (csoport * (sizeof(gd))), sizeof(gd));

Kiszámoljuk az inode_num sorszámú inode pozícióját a csoportcsoport inode táblájában, és beolvassuk ezt az inode-ot az ext2_inode struktúrába:

index = (inode_szám - 1) % sb.s_inodes_per_group;

Pos = ((__u64)gd.bg_inode_table) * BLKSIZE + (index * sb.s_inode_size);

Preread64(indev, in, sb.s_inode_size, pos);

Visszatérés;

Adatblokk olvasási funkciója:

void read_iblock(struct ext2_inode *in, int blk_num)

U64pos;

A függvény bemeneti paraméterei az inode struktúra és a blokkszám (értsd: az inode-ban található címblokkok sorozatából származó szám).

Kiszámoljuk az eltolást a partíció információs blokkjához, és beolvassuk ezt a blokkot a globális pufferbe:

Pos = ((__u64)in->i_block) * BLKSIZE;

Preread64(indev, buff, BLKSIZE, poz);

Visszatérés;

A gyökérkönyvtár tartalmának lekérésére szolgáló függvény:

void get_root_dentry()

Az ext2_inode szerkezete in;

A gyökérkönyvtár inode száma ismert, ezért megkapjuk a gyökérkönyvtár inode tartalmát, és beolvassuk a tartalmát a puffer pufferbe:

get_inode(EXT2_ROOT_INO, &in);

Read_iblock(&in, 0);

A puffer puffer tartalmazza a gyökérkönyvtár tartalmát.

Visszatérés;

Funkció az inode szám lekéréséhez a fájlnévből:

int get_i_num(char *name)

A függvény bemeneti paraméterei a fájlnév. A visszatérési érték a fájl inode száma.

int i = 0, rec_len = 0;

Struct ext2_dir_entry_2dent;

A puffer puffer könyvtárbejegyzések tömbjét tartalmazza. Egy fájl inode számának meghatározásához meg kell találnia egy bejegyzést ebben a tömbben a fájl nevével:

For(; i< 700; i++) {

Memcpy((void *)&dent, (buff + rec_len), sizeof(dent));

If(!memcmp(dent.name, name, dent.name_len)) break;

Rec_len += dent.rec_len;

Return dent.inode;

Most írjuk fel a fő függvényt:

int main()

Változók és struktúrák:

struct ext2_inode in;

// a fájl abszolút elérési útja

Unsigned char *full_path = "/home/test.file";

unsigned char buff1;

Statikus int i = 1;

int n, i_num, outf, type;

A fájl abszolút elérési útjában az első karakternek perjelnek (/) kell lennie. Nézzük meg:

If(teljes_útvonal != "/") (

error("perjel");

Kilépés(-1);

Nyissa meg az eszközfájlt, olvassa el a szuperblokk- és csoportleíró táblázatot:

indev = open(PART_NAME,O_RDONLY);

if(indev< 0) {

error("nyitva");

Kilépés(-1);

Read_sb();

Read_gdt();

Szerezd meg a gyökérkönyvtár tartalmát:

get_root_dentry();

A buff puffer mostantól a gyökérkönyvtár összes bejegyzését tartalmazza (ha szeretné, külön fájlba mentheti). Most, hogy megvannak a gyökérkönyvtár bejegyzései, a fenti fájlolvasási algoritmus segítségével elérhetjük a test.file tartalmát. Ennek érdekében ciklust szervezünk. A ciklus törzsében elemezzük a fájl abszolút elérési útját, kiemelve annak elemeit - alkönyvtárakat (van ilyenünk, home) és a kívánt fájl nevét (test.file). Minden elemhez meghatározzuk az inode sorszámát, kiolvassuk ezt az inode-ot, majd megkapjuk a nulla blokk tartalmát (az inode-ban található címblokkok sorozatából):

míg(1) (

memset(buff1,0,sizeof(buff1));

For(n = 0 ; n< EXT2_NAME_LEN; n++, i++) {

Buff1[n] = teljes_útvonal[i];

If((buff1[n] == "/") || (buff1[n] == "?")) (

I++;

szünet;

buff1[n] = "?";

A fájl abszolút elérési útjának minden eleméhez meghatározzuk az inode sorszámát, beolvassuk a memóriába, majd megkapjuk a nulla blokk tartalmát:

I_szám = get_i_num(buff1);

Get_inode(i_num, &in);

Read_iblock(&in, 0);

Mutassunk információkat a fájlról (név, inode száma, fájlméret és típus):

Printf("Inode szám - %u ", i_szám);

Printf("Fájlnév - %s ", buff1);

Printf("Fájlméret - %u ",in.i_size);

A fájltípust a struct ext2_inode struktúra i_mode mezőjének felső négy bitje határozza meg:

type = ((in.i_mode & 0xF000) >> 12);

Printf("Típus - %d ",típus);

kapcsoló(típus) (

Case (0x04):

Printf("(könyvtár)");

szünet;

Case (0x08):

Printf("(normál fájl)");

szünet;

Case (0x06):

Printf("(eszközfájl blokkolása)");

szünet;

Case (0x02):

Printf("(char eszközfájl) ");

szünet;

alapértelmezett:

Printf("(ismeretlen típus)");

szünet;

A fájl típusának ellenőrzése. Ha ez egy normál fájl, megtörjük a hurkot:

if(type & 0x08) (

A puffer puffer tartalmazza a /home/test.file fájl információs blokkjaiból kiolvasott információkat. Írjuk ezt az információt egy fájlba:

Outf = open("out",O_CREAT|O_RDWR,0600);

Write(outf, buff, sizeof(buff));

bezár(outf);

szünet;

Kijárat:

bezár(indev);

visszatérés 0;

Ezzel befejeztük az ext2 fájlrendszer logikai szerkezetének vizsgálatát.

Most leírjuk a legnépszerűbb Linux lemezfájlrendszert, az ext2-t. A Linux első kiadása a MINIX 1 fájlrendszert használta, amely rövid fájlnevekkel és 64 MB maximális fájlmérettel rendelkezett. A MINIX 1 fájlrendszert végül felváltotta az első kiterjesztett fájlrendszer, az ext, amely hosszabb fájlneveket és nagyobb fájlméreteket tett lehetővé. Az ext rendszert alacsony hatékonysága miatt (teljesítmény szempontjából) felváltotta a ma is széles körben használt ext2 utódja.

Az ext2-vel rendelkező lemezpartíció az ábrán látható fájlrendszert tartalmazza. 10.17 elrendezés. A 0-s blokkot a Linux rendszer nem használja, és a számítógép indítókódját tartalmazza. A 0. blokkot követően a lemezpartíció blokkcsoportokra van osztva (figyelmen kívül hagyva a lemezhenger határait). Minden csoport a következőképpen van felszerelve.


Az első blokk a szuperblokk, amely információkat tárol a fájlrendszer elrendezéséről, beleértve az i-node-ok számát, a lemezblokkok számát, a szabad lemezblokkok listájának elejét (általában több száz elem). Ezt követi egy csoportleíró, amely információkat tartalmaz a bittérképek helyéről, a csoportban lévő szabad blokkok és i-csomópontok számáról, valamint a csoportban lévő könyvtárak számáról. Ez az információ azért fontos, mert az ext2 fájlrendszer megpróbálja egyenletesen elosztani a könyvtárakat a lemezen.

A két bittérkép nyomon követi a szabad blokkokat és a szabad i-csomópontokat (ez szintén a MINIX 1 fájlrendszertől származik, és megkülönbözteti a legtöbb UNIX fájlrendszertől, amely listát használ a szabad blokkokhoz). Minden bittérkép mérete egy blokk. 1 KB-os blokkmérettel ez a séma 8192 blokkra és 8192 i-csomópontra korlátozza a blokkcsoport méretét. Az első szám valódi határ, a második pedig gyakorlatilag semmi. 4 KB-os blokkokkal a számok négyszer nagyobbak.

Ezután maguk az i-csomópontok találhatók. 1-től maximumig vannak számozva. Minden i-csomópont 128 bájt méretű, és pontosan egy fájlt ír le. Az i-csomópont könyvelési információkat tartalmaz (beleértve mindazt, amit a stat hívás visszaadott, amely egyszerűen átveszi azt az i-node-tól), valamint elegendő információt a fájladatokat tartalmazó lemezblokkok megtalálásához.

Az i-csomópontokat adatblokkok követik. Az összes fájl és könyvtár itt tárolódik. Ha egy fájl vagy könyvtár több blokkból áll, akkor ezeknek a blokkoknak nem kell egymás mellett lenniük a lemezen. Valójában egy nagy fájl blokkjai valószínűleg szétszórva vannak a lemezen.

A könyvtáraknak megfelelő i-csomópontok szétszórva vannak az összes lemezblokk-csoportban. Az Ext2 megpróbálja a normál fájlokat ugyanabba a blokkcsoportba helyezni, mint a szülőkönyvtár, az adatfájlokat pedig ugyanabba a blokkba, mint a forrásfájl i-csomópontja (feltéve, hogy van ott elég hely). Ezt az ötletet a Berkeley Fast fájlrendszerből kölcsönözték. Fájlrendszer(McKusick és munkatársai, 1984). Fogadásra bittérképeket használnak gyors javítások a kiválasztással kapcsolatban

helyek az új fájlrendszeradatok számára.

Új fájlblokkok lefoglalásakor az ext2 néhány (nyolc) további blokkot is előre lefoglal ugyanahhoz a fájlhoz (hogy minimalizálja a fájl töredezettségét a jövőbeni írások miatt). Ez a séma szétosztja a fájlrendszert a lemezen. Jó a teljesítménye is (összefüggő jellegének és csökkentett töredezettségének köszönhetően).

Egy fájl eléréséhez először az egyik Linux rendszerhívást (például open) kell használnia, amelyhez meg kell adnia a fájl elérési útját. Ezt az elérési utat a rendszer elemzi, és az alkotó könyvtárakat kivonja belőle. Ha relatív elérési út van megadva, akkor a keresés a folyamat aktuális könyvtárából indul, ellenkező esetben a gyökérkönyvtárból. Mindenesetre az első könyvtár i-node-ja könnyen megtalálható: a folyamatleíróban van rá mutató, vagy (a gyökérkönyvtár esetében) egy adott blokkban van eltárolva a lemezen.

A könyvtár legfeljebb 255 karakter hosszú fájlneveket tesz lehetővé (10.18. ábra). Minden könyvtár számos lemezblokkból áll (így a könyvtárat atomosan lehet lemezre írni). Egy könyvtárban a fájlok és könyvtárak elemei rendezetlen sorrendben vannak (minden elem közvetlenül követi az előzőt). Az elemek nem léphetik át a blokkhatárokat, ezért általában minden lemezblokk végén van némi fel nem használt bájt.


ábrán látható minden egyes címtárbejegyzés. A 10.18 négy fix hosszúságú mezőből és egy változó hosszúságú mezőből áll. Az első mező az i-node száma, amely 19 a kolosszális fájlnál, 42 a terjedelmes fájlnál és 88 a bigdir könyvtárnál. Ezután jön a rec_len mező, amely a teljes könyvtárbejegyzés méretét adja meg bájtokban (esetleg a név után további kitöltő bájtokkal). Ez a mező a következő bejegyzés megkereséséhez szükséges (abban az esetben, ha a fájlnév ismeretlen számú bájttal van kitöltve). Az ábrán ezt a mezőt nyíl jelzi. Ezután van egy fájl típusú mező, könyvtár stb. Az utolsó rögzített hosszúságú mező a fájlnév hosszát tartalmazza bájtokban (8, 10 és 6 ezt a példát). Végül ott van maga a fájlnév, amelyet egy null bájt zár le, és egy 32 bites határra van kitömve. Ezt további kitöltési bájtok követhetik.

ábrán. A 10.18b ugyanazt a könyvtárat mutatja, miután a voluminous elemet eltávolították. A címtárban mindössze annyit kell tenni, hogy növeljük a rekordméret mezőben a számot. előző fájl kolosszális, és a címtárbejegyzés bájtjait távoli fájl terjedelmes fordulat az első rekord helyőrzőivé. Ezt követően ezek a bájtok használhatók írásra új fájl létrehozásakor.

Mivel a könyvtárak keresése lineárisan történik, sok időbe telhet egy olyan bejegyzés megtalálása, amely egy nagy könyvtár végén található. Ezért a rendszer gyorsítótárat tart fenn a legutóbb elért könyvtárakról. A gyorsítótárban fájlnév alapján keresnek, és ha megtalálják, akkor már nincs szükség a drága lineáris keresésre. Minden egyes elérési út-összetevőhöz bekerül egy dentry objektum a címtárbejegyzés gyorsítótárába, és (az i-csomópontján keresztül) a könyvtárban megkeresi a következő elérési út bejegyzéseket (amíg meg nem találják a fájl tényleges i-csomópontját).

Például egy abszolút elérési út (például /usr/ast/file) által meghatározott fájl megkereséséhez a következő lépéseket kell követni. Először is, a rendszer megkeresi azt a gyökérkönyvtárat, amelyet a 2-es számú i-node általában használ (különösen, ha az 1-es számú i-node hibás blokkok számára van fenntartva). A megfelelő bejegyzést a címtárbejegyzés gyorsítótárába helyezi (a gyökérkönyvtár jövőbeli kereséseihez). Ezután megkeresi a gyökérkönyvtárban az "usr" karakterláncot, hogy megkapja a /usr könyvtár i-node számát (amely szintén bekerül a könyvtár elem-gyorsítótárába). Ezt az i-csomópontot ezután beolvassa, és lemezblokkokat bont ki belőle, így a /usr könyvtár olvasható és kereshető az "ast" karakterlánc után. Miután megtalálta a megfelelő bejegyzést, az /usr/ast könyvtár i-node száma meghatározható belőle. Ha ezt az i-node számot kapja, akkor ez olvasható és könyvtárblokkok találhatók. Végül megkeressük a "file" szót, és megtaláljuk az i-node számát. Így a relatív elérési út használata nemcsak kényelmesebb a felhasználó számára, hanem csökkenti a rendszer munkáját is.

Ha a fájl jelen van, a rendszer lekéri az i-node számát, és az i-node tábla indexeként használja (a lemezen), hogy megkeresse a megfelelő i-node-ot, és beolvassa a memóriába. Ez az i-csomópont az i-node táblában van elhelyezve, egy kernel adatszerkezetben, amely tartalmazza az összes i-csomópontot a megnyitáshoz Ebben a pillanatban fájlok és könyvtárak. Az i-node elemformátumnak tartalmaznia kell (legalább) a stat rendszerhívás által visszaadott összes mezőt, hogy a stat hívás működjön (lásd: 10.10. táblázat). táblázatban. A 10-13. ábra a Linux fájlrendszer által támogatott i-node szerkezet néhány mezőjét mutatja be. A tényleges i-node szerkezet sokkal több mezőt tartalmaz, mivel ugyanazt a struktúrát használják a könyvtárak, eszközök és egyéb speciális fájlok megjelenítésére. Az i-node struktúra jövőbeli használatra fenntartott mezőket is tartalmaz. A történelem azt mutatja, hogy a fel nem használt bitek nem maradnak sokáig tétlenül.

Most nézzük meg, hogyan olvassa be a rendszer a fájlt. Ne feledje, hogy egy tipikus könyvtári eljáráshívás az olvasási rendszerhívás futtatására így néz ki:

n = read(fd, puffer, nbyte);


Amikor a kernel átveszi az irányítást, csak ezzel a három paraméterrel és a belső tábláiban található információkkal tud kezdeni (a felhasználóra vonatkozóan). E belső táblák egyik eleme a fájlleírók tömbje. Fájlleírók indexelik, és megnyitott fájlonként egy elemet tartalmaz (legfeljebb bizonyos számú, alapértelmezés szerint általában 32-ig).

Az ötlet az, hogy ezzel a fájlleíróval kezdjük, és a megfelelő bnode-dal fejezzük be. Nézzünk meg egy lehetséges sémát: tegyünk egy mutatót egy csomópontra a fájlleírók táblázatában. Az egyszerűség ellenére ez a módszer(sajnos) nem működik. A probléma ez. Minden fájlleírónak rendelkeznie kell egy társított fájlmutatóval, amely meghatározza azt a bájtot a fájlban, ahol a következő olvasási vagy írási művelet kezdődik. Hol kell ezt a mutatót tárolni? Az egyik lehetőség az, hogy a csomóponttáblázatba helyezi. Ez a megközelítés azonban nem működik, ha több, egymástól független folyamat egyszerre nyitja meg ugyanazt a fájlt, mivel minden folyamatnak saját mutatóval kell rendelkeznie.

A második megoldás egy mutató elhelyezése a fájlleíró táblában. Minden fájlt megnyitó folyamatnak megvan a maga pozíciója a fájlban. Sajnos ez a séma sem működik, de a kudarc oka igen ez az eset nem annyira nyilvánvaló és a természettel kapcsolatos megosztás fájlokat Linux rendszeren. Tekintsük az 5. shell scriptet, amely két parancsból (p1 és p2) áll, amelyeket egymás után kell végrehajtani. Ha a parancsfájlt a parancssorból hívják meg

akkor p1 várhatóan az x fájlba írja a kimenetét, majd a p2 szintén az x fájlba írja, ahol a p1 abbamaradt.

Amikor a shell elindítja a p1-et, az x fájl eleinte üres lesz, így a p1 egyszerűen elkezd írni a fájlba a 0 pozícióban. Amikor azonban a p1 kész, szükség van valamilyen mechanizmusra annak biztosítására, hogy a p2 a kezdőpozíciót ne 0-t lássa (hanem pontosan ez történik, ha a fájl pozíciója a fájlleíró táblában van tárolva), de az az érték, amelynél a pi megállt.

Ennek módja az ábrán látható. 10.19. A trükk egy új tábla bevezetése – a leírás táblázat nyissa meg a fájlokat(fájlleíró tábla megnyitása) - a fájlleíró tábla és az i-node tábla közé, és abban tárolja a fájlmutatót (valamint az olvasási/írási bitet). Az ábrán a szülő folyamat a shell, a gyermek pedig először a pi folyamat, majd a p2 folyamat. Amikor a shell létrehozza a pi folyamatot, annak felhasználói szerkezete (beleértve a fájlleíró táblát is) ugyanannak a shell-struktúrának a pontos másolata, tehát mindkettő ugyanarra a nyitott fájlleíró táblára mutat mutatókat. Amikor a pi folyamat kilép, a shell fájlleírója továbbra is a megnyitott fájlleíró táblázatra mutat, amely tartalmazza a p1 folyamat pozícióját a fájlban. Amikor a shell most létrehozza a p2 folyamatot, az új gyermekfolyamat automatikusan örökli a fájlban lévő pozíciót, anélkül új folyamat, és a shellnek sem szükséges tudnia az adott pozíció aktuális értékét.


Ha valamilyen idegen folyamat megnyitja a fájlt, akkor a megnyitott fájlleíró táblában saját bejegyzést kap a fájlban elfoglalt pozíciójával, amire pontosan szükség van. Így a megnyitott fájlleíró tábla célja, hogy a szülő- és utódfolyamatok egyetlen mutatót oszthassanak meg egy fájlban, de az idegen folyamatokhoz személyes mutatókat rendeljenek.

Tehát (visszatérve az olvasás végrehajtásának problémájához) megmutattuk, hogyan határozzák meg a fájl pozícióját és az i-node-ot. Az I-csomópont tartalmazza a fájl első 12 blokkjának lemezcímét. Ha a fájl pozíciója az első 12 blokkba esik, akkor olvassa el kívánt blokk a fájl és az adatok a felhasználóhoz másolódnak. A 12 blokknál hosszabb fájlok esetén az i-node egyetlen indirekt blokk lemezcímét tartalmazza (10.19. ábra). Ez a blokk további lemezblokkok lemezcímeit tartalmazza. Például, ha a blokk mérete 1 KB és a lemezcím 4 bájt, akkor egyetlen közvetett blokk legfeljebb 256 lemezcímet tárolhat. Ez a séma legfeljebb 268 KB méretű fájlok támogatását teszi lehetővé.

ext2(más néven ext2fs) - Második kiterjesztett fájlrendszer(Second Extended File System) egy Linux kernelre épülő fájlrendszer. Az ext2 megalkotója és fejlesztője a Remy Card. Az ext2 fájlrendszert ő építette fel a régi, korábbi verzió - ext.

Az olyan mutatók tekintetében, mint a sebesség és a teljesítmény, ez a fájlrendszer viszonyítási alapként szolgálhat. Ezt bizonyítják a fájlrendszer-teljesítménytesztek eredményei. Például a Dell Tech Center szekvenciális olvasási/írási sebességtesztjeiben az ext2 jobban teljesít, mint az ext3, és csak olvasási sebességben múlja felül a modernebb ext4-et.

Az ext2 fő hátránya, hogy nem naplózó fájlrendszer. Ezt a hiányosságot azonban a következő fájlrendszer - ext3 - megszüntette.

Az ext2 flash kártyákon és szilárdtestalapú meghajtókon (SSD) használatos, mivel a naplózás hiánya előnyt jelent, ha írási cikluskorlátokkal rendelkező meghajtókkal dolgozik.

Az ext2 története

A Linux rendszer rohamos fejlődése idején a Minix OS fájlrendszert használta. Elég stabil volt, de 16 bites. Ennek eredményeként partíciónként 64 Mb-os szigorú korlátja volt. Ezenkívül korlátozták a fájlnév maximális hosszát, amely 14 karakter volt.

Ezek a korlátok együttesen indokolták a "bővített fájlrendszer" kifejlesztését (innen a " Bővített fájlrendszer »). Azt a feladatot kapta, hogy oldja meg Minix két kulcsfontosságú problémáját. Az új fájlrendszert 1992 áprilisában hozták nyilvánosságra. Ez volt az Ext, amely a fájl méretkorlátját 2 gigabájtra terjesztette ki, a fájlnév-korlátot pedig 255 karakterre állította.

Az új fájlrendszer sikere ellenére azonban még mindig maradt jó néhány megoldatlan probléma. Például nem támogatták a külön hozzáférést, nem voltak időbélyegek az adatok módosításához. Ezeknek a problémáknak a megoldása volt az indítéka a kiterjesztett ext2 fájlrendszer következő verziójának (" Második kiterjesztett fájlrendszer). Az ext2-t 1993 januárjában fejlesztették ki, és POSIX-kompatibilis ACL-eket és kiterjesztett fájlattribútumokat is megvalósított.

Az ext2 logikai felépítése

Az ext2 címtárhierarchia gráf hálózatként jelenik meg. Ez annak köszönhető, hogy egy fájl egyszerre több könyvtárba is bekerülhet.

Minden fájltípusnak szimbolikus neve van. A hierarchikusan szervezett fájlrendszerekben általában háromféle nevet használnak: egyszerű, összetett és relatív. Ugyanez az ext2-vel. Egyszerű név esetén a korlátozás az, hogy hossza ne haladja meg a 255 karaktert, emellett a név ne tartalmazzon NULL karaktert és perjelet.

Ami a NULL karaktert illeti, a korlátok a karakterláncok C nyelvi megjelenítéséhez kapcsolódnak, a perjel karakter esetében minden abban rejlik, hogy elválasztó karakterként használják a könyvtárak között.

A teljesen minősített név az összes könyvtár egyszerű szimbolikus neveinek lánca, amelyen keresztül az elérési út a gyökértől a adott fájl. Az ext2-ben egy fájl több könyvtárban is lehet, ami azt jelenti, hogy több teljes neve is lehet (egy fájl, több teljes név). De egyébként is a teljes név határozza meg a fájlt.

ext2 attribútumok:

  • fájltípus és engedélyek,
  • tulajdonos, hozzáférési csoport,
  • információk az engedélyezett tranzakciókról,
  • létrehozási idő, utolsó hozzáférés dátuma, utolsó módosítás dátuma és utolsó törlés időpontja,
  • aktuális fájlméret,
  • fájl specifikáció:
    • normál fájl,
    • katalógus,
    • bájt-orientált eszközfájl,
    • blokkolja az eszköz fájlját,
    • nevű cső,
    • szimbolikus link,
  • az elfoglalt blokkok száma,
  • mások

A fájlattribútumok speciális táblákban tárolódnak, nem könyvtárakban, ahogy az egyszerű fájlrendszerekben megszokott. Ennek eredményeként a katalógusnak nagyon egyszerű szerkezet, amely két részből áll: egy inode számból és egy névből.

Az ext2 fizikai felépítése

Lemezpartíció szerkezete

Az ext2 részeként a következők különböztethetők meg:

  • blokkok és blokkcsoportok;
  • inode;
  • szuperblokk.

A teljes lemezpartíció fix méretű blokkokra van osztva, amelyek a szektorméret többszörösei (1024, 2048, 4096 vagy 8192 bájt). A blokk mérete a lemezpartíción lévő fájlrendszer létrehozásakor kerül megadásra. Minden blokk sorozatszámot kap. A töredezettség és a merevlemezfej-mozgások számának csökkentése érdekében nagy mennyiségű adat olvasásakor a blokkokat csoportokba egyesítik.

A fájlrendszer alapkoncepciója az inode (más néven inode - információs csomópont). Ez egy speciális struktúra, amely információkat tartalmaz a fájl tulajdonságairól és fizikai helyéről. Az index-dekódolókat egy táblázatba egyesítik, amely az egyes blokkcsoportok elején található. A szuperblokk az ext2 fájlrendszer fő eleme. Általános információkat tartalmaz a fájlrendszerről. A szuperblokk 1024 bájtra található a szakasz elejétől számítva. A szuperblokk integritása határozza meg a fájlrendszer állapotát. Az operációs rendszer több biztonsági másolatot készít a szuperblokkról - arra az esetre, ha a partíció megsérül. A szuperblokk után következő blokk egy globális leíró táblát tartalmaz - a blokkcsoportok leírása tömb formájában, általános információkkal az összes blokkcsoportról.

Csoport blokkolása

Az ext2 partíción lévő összes blokk csoportokra van osztva. Minden csoporthoz külön bejegyzés jön létre a globális leíró táblában. Ez a bejegyzés az alapvető paramétereket tárolja, mint például: a blokkszám bittérképekben és táblázatokban, a szabad blokkok száma a csoportban, a könyvtárakat tartalmazó inode-ok száma.

Bittérkép blokkolása egy olyan rendszer, amelyben minden bit tájékoztat arról, hogy a neki megfelelő blokk hozzá van-e rendelve valamelyik fájlhoz. Ha a bit 1, akkor a blokk foglalt. Az inode bitmap hasonló funkciót lát el: megmutatja, hogy mely inódok foglaltak és melyek nem. Linux kernel megpróbálja egyenletesen elosztani a könyvtári inódákat a csoportok között, és áthelyezi a fájlinódákat a szülőkönyvtárral rendelkező csoportba. Az összes fennmaradó terület, amely a táblázatban adatként jelenik meg, a fájlok tárolására van lefoglalva.

Adatcímző rendszer

Az adatcímző rendszer a fájlrendszer egyik legkomolyabb és legfontosabb összetevője. Ennek köszönhetően a kívánt fájl a lemezen található sok üres vagy foglalt blokk között található.

Az ext2 a következő fájlblokk-címzési sémát használja. A fájl címének tárolásához 15 mező van lefoglalva, amelyek mindegyike 4 bájtból áll. Ha a fájl 12 blokkba illeszkedik, akkor a megfelelő klaszterek számai a cím első tizenkét mezőjében szerepelnek. Ha a fájl mérete meghaladja a 12 blokkot, akkor a következő mező annak a klaszternek a címét tartalmazza, amelyben a fájl következő blokkjainak száma található. Így a tizenharmadik mezőt indirekt címzésre használjuk.

A 4096 bájt maximális blokkméret mellett a 13. mezőnek megfelelő fürt legfeljebb 1024 következő blokkszámot tartalmazhat a fájlban. Ha a fájl mérete meghaladja a 12+1024 blokkot, akkor a 14. mező kerül felhasználásra, amely egy 1024 fürtszámot tartalmazó fürt címét tartalmazza, amelyek mindegyike a fájl 1024 blokkjára vonatkozik. Itt kettős indirekt címzést használnak. És ha a fájl több mint 12 + 1024 + 1048576 blokkot tartalmaz, akkor az utolsó 15. mező a hármas közvetett címzésre szolgál.

Egy ilyen címzési rendszer 4096 bájt maximális blokkméret mellett lehetővé teszi a 2 TB-nál nagyobb fájlok használatát.

Fájlrendszer(angol fájlrendszer) - parancs, amely meghatározza az adatok rendszerezési, tárolási és elnevezési módját az informatikai berendezések információhordozóin (hordozható flash memóriakártyák használatával elektronikus eszközök: digitális kamerák, mobiltelefonok stb. e) és számítástechnika. Meghatározza az általában fájlok formájában csoportosított információk tartalmának és fizikai tárolásának formátumát. Egy adott fájlrendszer határozza meg a fájl (mappa) nevének méretét, a maximális lehetséges fájl- és partícióméretet, valamint a fájlattribútumok készletét. Egyes fájlrendszerek biztosítják szolgáltatási képességek mint például a hozzáférés-vezérlés vagy a fájltitkosítás.

Fájlrendszeri feladatok

Bármely fájlrendszer fő funkciói a következő feladatok megoldására irányulnak:

fájl elnevezése;

az alkalmazások fájljaival való munka programfelülete;

a fájlrendszer logikai modelljének hozzárendelése az adattárház fizikai szervezetéhez;
a fájlrendszer stabilitásának megszervezése áramkimaradások, hardver- és szoftverhibák ellen;

A többfelhasználós rendszerekben egy másik feladat jelenik meg: az egyik felhasználó fájljainak védelme egy másik felhasználó illetéktelen hozzáférésétől, valamint közös munka fájlokkal, például amikor az egyik felhasználó megnyit egy fájlt, mások számára ugyanaz a fájl átmenetileg csak olvasható módban lesz elérhető.

A fájlrendszer a számítógép által a merevlemezen lévő információk rendszerezésére használt fő struktúra. Új merevlemez telepítésekor azt particionálni és egy adott fájlrendszerhez kell formázni, ami után adatokat és programokat tud tárolni. A Windowsnak három van lehetséges opciók fájlrendszer: NTFS, FAT32 és a ritkán használt régi FAT rendszer (más néven FAT16).

Az NTFS az előnyben részesített fájlrendszer a Windows ezen verziójához. Számos előnnyel rendelkezik a korábbi FAT32 rendszerhez képest; ezek közül néhányat az alábbiakban sorolunk fel.

Bizonyos lemezhibák utáni automatikus helyreállítás képessége (a FAT32 nem rendelkezik ezzel a képességgel).
Továbbfejlesztett támogatás a nagy merevlemezekhez.
Magasabb fokú biztonság. Engedélyekkel és titkosítással megakadályozhatja, hogy a felhasználók hozzáférjenek bizonyos fájlokhoz.

Korábban a FAT32 fájlrendszert és a ritkán használt FAT rendszert használták Windows verziók, beleértve a Windows 95-öt, a Windows 98-at és a Windows Millennium Editiont. A FAT32 fájlrendszer nem biztosítja az NTFS által biztosított biztonsági szintet, így ha egy számítógép FAT32 formátumú partícióval vagy kötettel rendelkezik, a partíción lévő fájlok bárki számára láthatók, aki hozzáfér a számítógéphez. A FAT32 fájlrendszernek is vannak fájlméret-korlátai. A Windows ezen verziójában nem lehet 32 ​​GB-nál nagyobb FAT32-partíciót létrehozni. Ezenkívül a FAT32 partíció nem tartalmazhat 4 GB-nál nagyobb fájlt.

A FAT32 rendszer használatának fő oka az lenne, hogy a számítógép képes lesz a Windows 95, Windows 98 vagy Windows Millennium Edition, valamint a Windows ezen verziójának futtatására (több operációs rendszer konfigurációja). Egy ilyen konfiguráció létrehozásához telepítenie kell az operációs rendszer egy korábbi verzióját egy FAT32-vel vagy FAT-tal formázott partícióra, így ez lesz az elsődleges (az elsődleges partíció tartalmazhatja az operációs rendszert). Más szakaszok innen érhetők el előző verziók A Windows rendszert is FAT32-re kell formázni. Több korai változatai A Windows csak az NTFS hálózati partíciókhoz vagy kötetekhez tud hozzáférni. Az NTFS-partíciók a helyi számítógépen nem lesznek elérhetők.

ZSÍR - pluszok:

Kevés szükséges ahhoz, hogy hatékony legyen véletlen hozzáférésű memória.
Gyors munka kis és közepes könyvtárakkal.
A lemez átlagosan kevesebb fejmozgást végez (az NTFS-hez képest).
Hatékony munka lassú lemezeken.

ZSÍR – hátrányok:

Katasztrofális teljesítményvesztés a növekvő töredezettség miatt, különösen nagy meghajtók esetén (csak FAT32 esetén).
Nehézségek a nagy (mondjuk a lemezméret legalább 10%-a) fájlokhoz való véletlenszerű hozzáférés során.
Nagyon lassú munka tartalmazó könyvtárakkal nagyszámú fájlokat.

NTFS előnyei:

A fájlok töredezettsége alig vagy egyáltalán nincs hatással magára a fájlrendszerre – a töredezett rendszer teljesítménye csak a fájladatokhoz való hozzáférés tekintetében romlik.
A könyvtárszerkezet összetettsége és az egy könyvtárban található fájlok száma sem jelent különösebb akadályt a teljesítménynek.
Gyors hozzáférés egy fájl tetszőleges töredékéhez (például nagy .wav fájlok szerkesztése).
Nagyon gyors hozzáférés kis fájlokhoz (néhány száz bájt) - a teljes fájl ugyanazon a helyen van, ahol a rendszeradatok (MFT rekord).

NTFS hátrányai:

Jelentős rendszermemóriaigény (64 MB az abszolút minimum, több jobb).
A Bus Mastering nélküli lassú lemezek és vezérlők nagymértékben lelassítják az NTFS teljesítményét.
A közepes méretű könyvtárakkal nehéz dolgozni, mert szinte mindig töredezettek.
A hosszú ideje 80–90%-os telítettségben futó lemez rendkívül alacsony teljesítményt mutat.

A következő fájlrendszerek tekinthetők "natív" Linuxnak (vagyis azok, amelyekre telepíthető, és amelyekről el tud indulni): ext2fs, ext3fs, ext4fs, ReiserFS, XFS, JFS.Általában nekik kínálják fel a választást a disztribúciók túlnyomó többségének telepítésekor. Természetesen vannak módok Linux telepítések FAT/VFAT/FAT32 fájlrendszerekre, de ez csak azoknak a mézeseknek és uraknak szól, akik sokat értenek a perverziókhoz, és nem is beszélek róluk.

A fájlrendszer kiválasztásának fő kritériuma általában a megbízhatóság és a sebesség. Egyes esetekben a kompatibilitási tényezőt is figyelembe kell venni - ez ebben az esetben azt jelenti, hogy más operációs rendszerek képesek hozzáférni egy adott fájlrendszerhez.
Kezdem a ReiserFS-sel – mert a jegyzet megírásának oka a kérdés volt: mit tekintsünk kis fájloknak? Hiszen köztudott, hogy a kis fájlokkal való munka hatékonysága az erőssége ennek a fájlrendszernek.

Tehát a kis fájlok kisebb fájlok, mint a fájlrendszer logikai blokkja, amely Linuxban a legtöbb esetben négy kilobájtnak felel meg, bár a formázás során bizonyos határokon belül beállítható (az adott FS-től függően). Számtalan ilyen kis fájl található bármely Unix-szerű operációs rendszerben. Tipikus példa erre a FreeBSD portok, Gentoo portok és hasonló portolt rendszerek fáját alkotó fájlok.
A legtöbb fájlrendszerben az ilyen mini fájloknak saját inode (a fájl metainformációit tartalmazó információs csomópont) és egy adatblokk is van, ami lemezterület-felhasználáshoz és lassabb fájlműveletekhez vezet. Különösen ez az oka a FreeBSD fájlrendszer (mind a régi, UFS, mind az új, UFS2) katasztrofális átgondoltságának, amikor a saját portrendszerével dolgozik.

A ReiserFS fájlrendszerben ilyen esetekben nem osztanak ki külön adatblokkokat - sikerül a fájladatokat közvetlenül a saját inode területére tolni. Ennek köszönhetően és lemez terület mentésre kerül, és a teljesítmény növekszik - szó szerint többszörösére az összes többi FS-hez képest.
A kis ReiserFS fájlok ilyen kezelése egy legendát adott a megbízhatatlanságáról. Valójában a fájlrendszer összeomlásakor (vagyis a szolgáltatási területek megsemmisülésekor) az inode-okkal együtt elhelyezett adatok is eltűnnek velük együtt - és visszahozhatatlanul. Míg azokban a fájlrendszerekben, ahol az inódok és az adatblokkok térben mindig el vannak választva, az utóbbiak elméletileg visszaállíthatók. Tehát az ext2/ext3 esetében még olyan eszközök is vannak, amelyek lehetővé teszik ezt.

Azonban, mint minden legenda, ez is csak a hitelesség benyomását kelti. Először is, az állandó adatvesztés csak nagyon kisméretű fájlokra vonatkozik. A felhasználóik között gyakorlatilag nincs ilyen, és az összes többi könnyen visszaállítható az elosztókészletből.
Másodszor, amikor az adatok helyreállításának lehetőségéről beszélünk olyan blokkokból, amelyek elvesztették kötődésüket az inode-jukhoz, nem véletlenül használtam az „elméleti” szót. Mert a gyakorlatban ez a foglalkozás rendkívül időigényes, nem ad garantált eredményt. Mindenki, akinek ezt kellett tennie, egyetért azzal, hogy csak a teljes reménytelenségből lehet beletörődni. És ez minden Linux fájlrendszerre vonatkozik. Ez a szempont tehát elhanyagolható a fájlrendszer kiválasztásakor.

Az általános teljesítményt tekintve a ReiserFS határozottan gyorsabb, mint az összes többi naplózott FS, és bizonyos tekintetben még az ext2-t is felülmúlja. Néhány elterjedt fájlfájl-művelet sebességének összehasonlításának eredményeit itt találja.
De a ReiserFS kompatibilitásával a helyzet valamivel rosszabb. Hozzáférés az operációs rendszerből Windows családok, amennyire én tudom, nem lehetséges. A BSD család néhány operációs rendszere (DragonFlyBSD, FreeBSD) támogatja ezt a fájlrendszert, de csak olvasható módban. Még annak a valószínűsége sem nulla, hogy egy tetszőleges múltkori Linux LiveCD nem támogatja a ReiserFS-t.

És itt az ideje, hogy emlékezzünk az ext3fs-re. Előnye egyáltalán nem a nagyobb megbízhatóságban rejlik – ez ugyanaz a legenda, mint a ReiserFS instabilitása. Annyit hallottam az ext3fs összeomlásáról, mint a ReiserFS összeomlásáról. Jómagam sem az egyiket, sem a másikat nem tudtam elpusztítani. Hacsak nem működött az ext2-vel – de még az is nagyon régen volt, a 2.2-es (vagy akár a 2.0-s) kernel idején.

Nem, az ext3fs fő előnye a kompatibilitása – garantáltan elolvassa bármely Linux rendszer. Például, amikor egy ősi LiveCD asszisztensből helyreállítottam - egy olyan helyzet, ami szinte nem is olyan hihetetlen, bele kellett mennem. Ismétlem, a legtöbb BSD-rendszer könnyen megérti az ext3fs-t (bár naplózás nélkül). A Windowshoz is, ha jól tudom, mindenféle illesztőprogram és beépülő modul létezik fájlkezelők(típus Total Commander), amelyek hozzáférést biztosítanak az ext2fs/ext3fs partíciókhoz.

A teljesítmény tekintetében az ext3fs vegyes benyomást kelt. Először is, teljesítménye nagymértékben függ a naplózási módtól, amelyből három van: teljes adatnaplózással, részleges adatnaplózással és csak metaadatok naplózásával. Mindegyik módban eltérő teljesítményt mutat a különböző típusú fájlműveleteknél. A teljesítmény azonban mindenesetre nem rekord.

Ha azonban a gyorsaság követelményét helyezik előtérbe, akkor az ext2fs itt versenyen kívül esik - azonban ebben az esetben egyáltalán el kell viselni a naplózás hiányát. Következésképpen a hosszadalmas fájlrendszer-ellenőrzések bármilyen helytelen leállás esetén - és a modern lemezek mennyisége mellett ez hosszú ideig elhúzódhat ...

Az XFS-sel kapcsolatban a következőket lehet elmondani. Ami a kompatibilitást illeti, minden vonatkozik rá, ami ReiserFS-re íródott – ráadásul egy ideig nem támogatta a szabványos Linux kernel. Teljesítmény szempontjából az XFS sem tündököl, összességében nagyjából az ext3fs szintjén beszél. A fájlok törlésének működése pedig általában lehangoló lassúságot mutat.
Tapasztalataim szerint az XFS használata kifizetődő, ha nem csak nagy, hanem nagyon nagy fájlokkal dolgozik – amelyek valójában csak DVD-képek és videofájlok.

Visszatérek a megbízhatóság kérdésére. A banális kikapcsolás a normál felhasználói munka során általában fájdalommentesen továbbítja az összes naplózott fájlrendszert (és egyik sem biztosítja a lemezre nem írt felhasználói műveletek biztonságát - megmenti a fuldoklókat, és itt marad a fuldoklók munkája). Igaz, bármely fájlrendszer esetében szimulálható egy olyan helyzet, amelyben a tápellátás kikapcsolása többé-kevésbé súlyos károsodáshoz vezet. A való életben azonban nem valószínű, hogy ilyen helyzetek előfordulnak. És teljesen kiküszöbölheti őket egy forrás megszerzésével szünetmentes tápegység- jobban bízik az adatok biztonságában, mint a fájlrendszer típusa. Nos, mindenesetre csak a rendszeres biztonsági mentésük lehet garancia a megsemmisült adatok helyreállítására ...

Úgy gondolom, hogy a fenti információk elegendőek a megalapozott választáshoz. Személyes döntésem az elmúlt néhány évben a ReiserFS volt. Alkalmanként olyan rendszereken, ahol indokolt mindent áthelyezni a root partíción kívülre, ami csak lehetséges, célszerű az ext3fs a root fájlrendszerhez, és a ReiserFS minden máshoz.

Ha külön partíció van biztosítva a /boot könyvtárhoz (és ez a használat során javasolt GRUB rendszerbetöltő fejlesztői) - számára az ext2fs kivételével semmilyen más fájlrendszer nem indokolt, itt semmiféle naplózásnak nincs értelme. Végül, ha külön partíciót hozunk létre mindenféle multimédiás anyag számára, akkor gondolhatunk az XFS-re.

Ha módszeresebben közelítjük meg a magyarázatot

ext - be kezdeti szakaszban A Linux fejlesztésben az ext2 rendszer (bővített fájlrendszer, 2-es verzió) dominált. 2002 óta felváltotta az ext3 rendszer, amely nagyrészt kompatibilis az ext2-vel, de támogatja a naplózási funkciókat is, illetve ha a kernel 2.6-os és újabb verziójával dolgozunk, akkor az ACL-t is. A maximális fájlméret 2 TB, a fájlrendszer maximális mérete 8 TB. 2008 végén hivatalosan is bejelentették az ext4 verzióját, amely visszafelé kompatibilis az ext3-mal, de számos funkciót a korábbiaknál hatékonyabban implementálnak. Ráadásul a fájlrendszer maximális mérete 1 EB (1 048 576 TB), és számíthatunk rá, hogy ez egy ideig elég lesz. A reiserről – A rendszert alapítójáról, Hans Reiserről nevezték el, és ez volt az első olyan rendszer, amely naplózási funkcióval rendelkezik, amely elérte a Linux kernelt adatokért. A zp SUSE verziója még szabványnak számított egy ideig. A reiser fő előnye az ext3-mal szemben a nagyobb sebesség és a jobb elhelyezés, amikor kis fájlokkal dolgozik (és a legtöbb fájl a fájlrendszerben általában kicsi). Idővel azonban a reiseferek fejlesztése leállt. A 4-es verziót már nagyon régen bejelentették, ami még mindig nincs készen, és a 3-as verzió támogatása megszűnt. Az xfs-ről – Az xfs fájlrendszert eredetileg IRIX operációs rendszeren futó SGI munkaállomásokhoz fejlesztették ki. Az Xfs különösen jó nagy fájlokkal való munkavégzéshez, különösen ideális streaming videókhoz. A rendszer támogatja a kvótákat és a kiterjesztett attribútumokat (ACL).
jfs

jfs – az a66peBHaTypaJFS a „Journaled File System” rövidítése. Eredetileg az IBM számára fejlesztették ki, majd Linuxra adaptálták. A Jfs soha nem örvendett igazán nagy elismerésnek a Linuxban, és jelenleg nyomorúságos, más fájlrendszereknél gyengébb életet él.
brtfs

brtfs – ha ez a vezető kernelfejlesztők akarata, a Linux brtfs fájlrendszere fényes jövő előtt áll. Ezt a rendszert az Oracle az alapoktól kezdve fejlesztette ki. Tartalmazza az eszközleképezőt és a RAID támogatást. A Brtfs leginkább a Sun ZFS-ére hasonlít. Legérdekesebb funkciói közé tartozik a fájlrendszer menet közbeni ellenőrzése, valamint az SSD támogatása (a szilárdtest-meghajtók flash memórián alapuló merevlemezek). Sajnos a brtfs-en végzett munka belátható időn belül nem fejeződik be. A Fedora 11-es verziója óta lehetséges a brtfs telepítése, de csak fájlrendszer-fejlesztőknek ajánlom a használatát!
Nincs „leggyorsabb” vagy „legjobb” fájlrendszer – a becslés attól függ, hogy mire kívánja használni a rendszert. Kezdők Linux felhasználók dolgozni vele helyi számítógép, az ext3-mal, a szerveradminisztrátoroknak pedig az ext4-gyel javasolt dolgozni. Természetesen az ext4 gyorsabb, mint az ext3, de az ext4 adatmegbízhatósága lényegesen rosszabb – könnyen elveszhet az információ, ha a rendszer hirtelen leáll.

Ha egy második UNIX-szerű operációs rendszert telepített a számítógépére, akkor az alábbi fájlrendszerek jól jönnek az adatcseréhez (egyik operációs rendszerről a másikra).

sysv - SCO, Xenix és Coherent OS használja.

ufs - A FreeBSD, a NetBSD, a NextStep és a SunOS használja. A Linux csak az ilyen fájlrendszerekből tud információkat olvasni, de nem tudja módosítani az adatokat. A BSD szegmensek eléréséhez szükség lesz a BSD lemezcímke kiterjesztésre. Hasonló kiterjesztés létezik a SunOS partíciós táblákhoz.

A ZFS relatív új rendszer, amelyet a Sun fejlesztett ki a Solaris számára. Mivel a ZFS kód nem felel meg a GPL licencnek, nem integrálható a Linux kernellel. Emiatt a Linux ezt a fájlrendszert csak közvetetten, a FUSE-n keresztül támogatja.
Windows, Mac OS X

A következő fájlrendszerek hasznosak lehetnek az MS DOS, Windows, OS/2 és Macintosh rendszerekkel történő információcserénél.

vfat – a Windows 9x/ME rendszerben használatos. A Linux képes információkat olvasni az ilyen partíciókról, és módosítani tudja azokat. A vfat rendszer-illesztőprogramok lehetővé teszik a régi MS DOS fájlrendszerekkel való munkát (8 + 3 karakter).

ntfs - a rendszert a Windows minden modern verziójában használják: otNT és újabb. A Linux képes olvasni és módosítani a fájljait.

A hfs és a hfsplus az Apple számítógépek által használt fájlrendszerek. A Linux képes olvasni és módosítani a fájljait.

Az adat-CD-k és DVD-k általában saját fájlrendszert használnak.

iso9660 – A CD-ROM-ok fájlrendszerét az ISO-9660 szabvány írja le, amely csak rövid fájlneveket engedélyez. A hosszú neveket a különböző operációs rendszerek különböző módon támogatják, sokféle, egymással nem kompatibilis kiterjesztés segítségével. Linux rendszer képes együttműködni a UNIX-ban megszokott Rockridge bővítménnyel és a Microsoft által kifejlesztett Joliet bővítménnyel.

udf - ez a formátum (univerzális lemezformátum) az ISO 9660 örököseként jelent meg és fejlődött ki.

Hálózati fájlrendszerek

A fájlrendszereknek nem kell bekapcsolva lenniük helyi lemez- Ők
csatlakozhat a számítógéphez és a hálózaton keresztül. A Linux kernel különféle hálózati fájlrendszereket támogat, amelyek közül a következők a leggyakrabban használtak.

smbfs/cifs – segítség a hálózathoz való csatlakozáshoz Windows könyvtárak vagy a Sambát egy könyvtárfába.

Az nfs a UNIX legfontosabb hálózati fájlrendszere.

coda - ez a rendszer nagyon hasonlít az NFS-hez. Sok van benne további jellemzők de nem túl gyakori.

ncpfs – a Novell Netware által használt NetWare kernel protokollon fut;oH.

Virtuális fájlrendszerek

A Linuxban számos olyan fájlrendszer létezik, amelyek nem merevlemezen (vagy más adathordozón) való adatok tárolására szolgálnak, hanem csak a kernel és a felhasználói programok közötti információcserére.
devpts – Ez a fájlrendszer hozzáférést biztosít pszeudoterminálokhoz (röviden PTY) a /dev/pts/* fájlon keresztül, a UNIX-98 specifikációnak megfelelően. (A pszeudoterminálok soros interfészt emulálnak. UNIX/Linux rendszereken ezeket az interfészeket terminálemulátorok, például xterm használják. Általában olyan eszközöket használnak, mint a /dev/ttypn. Ezzel szemben a UNIX-98 specifikáció új eszközöket határoz meg. További részletek az információ a H0WT0 szöveges terminálon jelenik meg.)
proc és sysfs - a proc fájlrendszer a kernel és a folyamatok kezelésével kapcsolatos szolgáltatási információk megjelenítésére szolgál. Ezen kívül a sysfs fájlrendszer kapcsolatokat épít ki a kernel és a hardver között. Mindkét fájlrendszer a /proc és a /sys helyekre van csatlakoztatva.
tmpfs – Ez a rendszer a System V szerinti megosztott memórián alapul. Általában a /dev/shm pozícióban csatlakozik, és hatékony információcserét biztosít két program között. Egyes disztribúciókon (pl. Ubuntu) a /var/run és /var/lock könyvtárak is a tmpfs fájlrendszer segítségével jönnek létre. Az ezekben a könyvtárakban található fájlokat egyes hálózati démonok folyamatazonosító számok és fájlhozzáférési információk tárolására használják. A tmpfs-nek köszönhetően ezek az adatok most megjelennek a RAM-ban. A módszer garantálja a nagy sebességet, valamint azt, hogy a számítógép leállítása után a /var/run vagy a /var/lock könyvtárban nem maradnak fájlok.

usbfs - az usbfs fájlrendszer a kernel 2.6-os és újabb verzióitól kezdve információkat ad a csatlakoztatott USB-eszközökről. Általában a proc fájlrendszerbe integrálva van. Az USB-eszközök támogatásáról Linux alatt.

Egyéb fájlrendszerek

auto - valójában nincs ilyen nevű fájlrendszer. Az auto szó azonban használható az /etc/fstab fájlban vagy a mount paranccsal a fájlrendszer megadására. Ebben az esetben a Linux megpróbálja önállóan felismerni a fájlrendszert. Ez a módszer a legtöbb nagyobb fájlrendszerrel működik.
autofs, autofs4

Az autofs, autofs4 szintén nem fájlrendszerek, hanem olyan kernelkiterjesztések, amelyek automatikusan végrehajtják a mount parancsot a kiválasztott fájlrendszerekhez. Ha egy fájlrendszert egy ideig nem használtak, akkor a rendszer automatikusan végrehajtja az umount parancsot. Ez a módszer elsősorban olyan esetekben hasznos, amikor a sok NFS-könyvtár közül csak néhányat használnak aktívan egyszerre.

E műveletek végrehajtásához az /etc/init.d/ autofs szkript automatikusan végrehajtja az automount programot a rendszer indításakor. Az /etc/auto.master fájl segítségével konfigurálható. A megfelelő programok automatikusan települnek például a Red Hat-ba és a Fedorába. Mindenesetre az autofs csak az /etc/auto.master vagy az /etc/auto.misc beállítása után engedélyezett.
cramfs és squashfs

cramfs és squashfs - A Cram és Squash fájlrendszerek csak olvashatóak. Arra használják, hogy minél több tömörített fájlt "pakoljanak" flash memóriába vagy ROM-ba (csak olvasható memória).

fuse – A FUSE a "Fájlrendszer a felhasználói térben" rövidítése, és lehetővé teszi a fájlrendszer-illesztőprogramok kernelen kívüli fejlesztését és használatát. Ezért a FUSE-t mindig külső fájlrendszer-illesztőprogrammal használják. A FUSE különösen az ntfs-3g NTFS meghajtóval működik.

gfs és ocfs – Az Oracle Global File System és az Oracle Cluster File System segítségével óriási hálózati fájlrendszereket építhetsz, amelyekhez egyszerre több számítógép is hozzáférhet párhuzamosan.

jffs és yaffs – A naplózó Flash fájlrendszer és a Yet Another Flash fájlrendszer kifejezetten a szilárdtestalapú meghajtókés flash média. Speciális algoritmusok segítségével igyekeznek egyenletesen használni az összes memóriacellát (kopásszint-kiegyenlítő technológia), hogy elkerüljék a rendszer idő előtti meghibásodását.
hurok

hurok – pszeudoeszközökkel való munkavégzésre szolgál. A visszahurkolt eszköz egy olyan adapter, amely úgy tud hozzáférni egy normál fájlhoz, mintha az blokkeszköz lenne. Neki köszönhetően bármilyen fájlrendszert elhelyezhet bármely fájlban, majd csatlakoztathatja a könyvtárfához a mount segítségével. Az ezért felelős kernel függvény - pszeudoeszköz támogatás - a ciklusmodulban van megvalósítva.

A pszeudoeszközök használatának többféle módja van. Különösen akkor használhatók, ha lemezeket hoz létre a RAM-ban a kezdeti inicializáláshoz (kezdeti RAM-lemez) a GRUB vagy a LILO számára, titkosított fájlrendszerek implementálásakor vagy CD-lemezképek tesztelésekor.

Adattároló fájlrendszerek

Fájlrendszerek
ISO 9660
Az ISO 9660 fájlrendszer Joliet kiterjesztése.
A Rock Ridge (RRIP, IEEE P1282) egy ISO 9660 fájlrendszer-kiterjesztés, amelyet a POSIX operációs rendszerekben használt fájlattribútumok tárolására terveztek.
Amiga Rock Ridge kiterjesztések
El Torito
Apple ISO9660 kiterjesztések
HFS, HFS+
Univerzális lemezformátum Az operációs rendszertől független fájlrendszer-formátum specifikációja a fájlok tárolására optikai adathordozók. Az UDF az ISO/IEC 13346 szabvány megvalósítása
Rainier-hegy

Ha hibát észlel, jelöljön ki egy szövegrészt, és nyomja meg a Ctrl + Enter billentyűket
OSSZA MEG: