Ugrás a tartalomhoz Lépj a menübe
 


2011.05.01

 

Bevezetés

Az Ext4 a legtöbbet használt Linux fájlrendszernek, az Ext3-nak a továbbfejlesztése. Az Ext4 mélyebb átalakulást jelent mint az Ext2 -> Ext3 váltás, mivel az Ext2-ből jóformán csak a naplózás hozzáadásával lett Ext3. Viszont az Ext4-ben fontos, adatstruktúrát érintő változtatások vannak, amik az adatok tárolását befolyásolják. Ezeknek a változtatásoknak és az optimalizált tervezésnek hála fájlrendszernek jobb teljesítménye, megbízhatóbb lett és újabb funkciókkal gazdagodott.

Az Ext4 jellemzői

Kompatibilitás
Bármilyen létező Ext3 fájlrendszer migrálható Ext4-re egy egyszerű eljárással, ami néhány parancs lefuttatásával jár a fájlrendszer csak olvasható módjában. Ez azt jelenti, hogy formázás és / vagy az operációs rendszer újratelepítése nélkül javíthatod a teljesítményt, emelheted a tárolási limitet és sok új funkcióhoz is hozzájutsz. Ha a munkádhoz szükséged van az Ext4 előnyeire, akkor frissítheted a fájlrendszered. A folyamat biztonságos és nem veszélyes az adatokra (természetesen, a biztonsági mentés a kritikus adatokról javasolt, akkor is ha nem frissíted a fájlrendszeredet :).

Az Ext4 az új adatstruktúrát csak az új adatoknál fogja használni, a régi struktúra érintetlen marad, így írható / olvasható marad meddig csak szükséges. Ez azt is jelenti természetesen hogy ha egyszer átkonvertáltad az fájlrendszeredet Ext4-re, lehetetlen visszaalakítani Ext3-ra újra (habár lehetséges - a később leírtak alapján - az Ext3-at Ext4-ként csatolni az új lemez formátum nélkül, amit később lehetséges újra Ext3-ként csatolni, de ezzel az Ext4 rengeteg előnyétől elesel).

Nagyobb fájlrendszer/fájl méret
Jelenleg az Ext3 maximum 16 TB fájlrendszer méretet támogat és a legnagyobb tárolható adat 2 TB nagyságú lehet.

Az Ext4 48 bites blokk címzést használ, tehát maximum 1 EB (exabyte) lehet a fájlrendszer maximális mérete és a legnagyobb tárolható állomány 16 TB nagyságú lehet. 1 EB = 1,048,576 TB ( 1 EB = 1024 PB, 1 PB = 1024 TB, 1 TB = 1024 GB [bővebben az ExaByte-ról: a Wikipediában -- a fordító]). Miért 48 bit és miért nem 64 bites a blokk címzés? Van néhány korlátozás, amit javítani kellene az Ext4-en hogy teljesen 64 bit képes legyen, ezért nem lett 64 bites a címzés. Az Ext4 adatstruktúrája tervezésekor figyelembe vették ezt is, így a jövőben, Ext4 teljes 64 bites címzés támogatása csak egy ugrás lesz előre. 1 EB valószínűleg elég lesz (tényleg elég ameddig nem frissítenek :) Megjegyzés: A kódnak, ami létrehozza a 16 TB -nál nagyobb fájlrendszereket, a cikk írásakor még nem volt stabil kiadása az e2fsprogs-ban. A stabilizálás következő kiadásokban várható.

Alkönyvtárak "mélysége"
Jelenleg az alkönyvtárak maximális száma, amik egy könyvtárban lehetnek az Ext3-ban 32,000. Az Ext4-nél nem áll fent ez a limit, korlátlan számú alkönyvtára lehet egy könyvtárnak.

Extents
A hagyományos Unix származékú fájlrendszerek mint az Ext3 is, közvetett blokk megfeleltetés (Fixme, aki jobban tudja esetleg: indirect blokk mapping) sémát alkalmaznak ami a fájlból határoza meg az adott állomány adat blokkjait. Ez egyáltalán nem hatékony nagy fájlok esetén, főleg nagy fájlok törlésekor, csonkításakor, mert a megfeleltetés megtartja minden egyes blokk bejegyzését és a nagy fájlok sok blokkban helyezkednek el -> nagy megfeleltető állomány, lassú kezelés.

A modern fájlrendszerek máshogy közelítik meg a problémát, és egy "extents" nevű megoldást használnak. Az extent egyszerűen egy csomó folyamatos fizikai blokk. Egyszerűen azt mondja "Az adat a következő n számú blokkban van". Például, 100 MB-os fájlt kioszthatnak a méretének megfelelően, ahelyett hogy a közvetett megfeleltetés miatt 25600 blokkot (4 KB/blokk) hozznának létre. A nagy fájlokat szétszedi önálló extent-eké. Az extent-ek javítják a teljesítményt és csökkentik a töredezettséget, mivel az extent segíti a folyamatos elhelyezkedést a lemezen.

Több blokkos elhelyezés
Amikor azt Ext3-nak írni kell a lemezre, a blokk elhelyező eldönti hogy melyik szabad blokkokat használja az adatok írására. De az Ext3 blokk elhelyező egyszerre csak egy blokkot (4 KB-ot) képes elhelyezni egy időben. Ezt azt jelenti, ha a rendszernek 100 MB adatot kell írnia - emlékezzél az előző pontra - szüksége van a blokk elhelyezőre 25600 alkalommal (és ez csak 100 MB!). Nem csak ezért nem hatékony, hanem azért sem mert így nem engedi meg a blokk elhelyezőnek hogy optimalizálja az elhelyezés rendjét, mert nem tudja hogy mennyi adatot fog elhelyezni, mindig csak egy darab blokkról tudott. Az Ext4 a "multiblock allocator"-t (mballoc) (azaz a több blokkos elhelyezést) használja, ami sok blokkot tud elhelyezni egy egyszerű hívás során, ahelyett hogy csak egy blokkot helyezzen el hívásonként, így elkerüli a haszontalan terhelést.

Így javul a teljesítmény ráadásul különösen hasznos a késleltetett elhelyezéssel és az extent-ekkel együtt. Ez a funkció nem befolyásolja a lemez formátumot. Más módosításai is vannak az Ext4 blokk/inode elhelyezőnek amiről itt olvashatsz angolul.

Késleltetett elhelyezés
A késleltetett elhelyezés (delayed allocation) egy teljesítményt javító funkció (nem változtatja a lemez formátumot [tehát ext3-at ext4-ként csatolva is működik --a fordító ]) amit megtalálunk a modern fájlrendszerekben mint az XFS, ZFS, btrfs vagy Reiser4. Ez a művelet azt takarja, hogy a blokk elhelyezést addig késlelteti ameddig csak lehetséges, ellentétben a hagyományos fájlrendszerekkel (mint ahogy pl. Ext3 vagy Reiser 3 is) csinálja: Elhelyezik a blokkokat amint csak lehetséges. Például ha a folyamat ír, a fájlrendszer kód azonnal elhelyezi a blokkokat, ahova az adat megy - ha esetleg az adatot nem most írja akkor a lemez gyorsítótárába kerül egy kis időre és onnan írja ki-.

Ez a hozzáállás hátrányos. Például amikor egy folyamat folyamatosan ír egy fájlba, ami így folyamatosan nő, a sikeres írás befejezésekor elhelyezésre kerülnek az egy blokk adatai, de nem tudja hogy a fájl folyamatosan nő. A késleltetett elhelyezés máshogy kezeli, nem helyezi el azonnal a blokkokat amikor a folyamat kiírta [write()], inkább elhalasztja a blokkok elhelyezését, miközben a fájlt a gyorsítótárban tárolja, utána ráírja a lemezre. Ez lehetőséget ad a blokk elhelyezőnek hogy optimalizálja az elhelyezést olyan helyzetekben amikor a régi rendszer már nem tud hatékonyan működni.

A késleltetett elhelyezés nagyon szépen össze játszik a fentebb említett két funkcióval, azt extents-el és a több blokkos elhelyezéssel, mivel sok munkahelyzetben amikor a fájl végleg ki lett írva a lemezre, az extent-ekbe van foglalva, aminek az elhelyezését megcsinálta az mballoc lefoglaló. A teljesítmény sokkal jobb és a töredezettség is sokkal kisebb ugyanolyan munkakörnyezetben.

Gyors fsck
Az Fsck egy nagyon lassú folyamat, főleg az első lépés: Ellenőrzi az összes inode-ot a fájlrendszerben. Az Ext4-ben a csoport inode táblák végén tárolva van a használatlan inode-ok listája (ellenőrző összeggel a biztonság kedvéért), tehát az fsck nem ellenőrzi ezeket az inode-okat. Ennek eredménye, hogy az idő tizedére csökkent, persze ez függ a használd inode-októl is. Bővebben:
http://kerneltrap.org/Linux/Improving_fsck_Speeds_in_Ext4.

Muszáj megemlíteni, hogy az fsck és nem az Ext4 ami létrehozza a használatlan inode-ok listáját. Ez azt jelenti hogy muszáj lefuttatni az fsck-t hogy létrehozza a listát a használatlan inode-okról, így csak a következő fsck lesz gyorsabb (sikeresen le kell futnia az fsck-nek az Ext3 rendszeren az Ext4-re való átállás előtt is). Ez csak egy része annak a funkciónak ami gyorsabbá teszi az fsck-t. A "rugalmas blokk csoportok" - "flexible block groups" is gyorsítja a fájlrendszer műveleteit.

Napló ellenőrzőösszeg
A naplózás a lemez legjobban használt része, a blokkok létrehozása itt még jobban érzékeny a hardver hibákra, így a helyreállítás az elrontott naplózásból lehet egy csúnya, adatvesztéshez vezető hiba is. Az Ext4 ellenőrző összegeket rendel a napló állományokhoz, hogy tudja, hogy a naplózó blokkok csak gyengék vagy hibásak. De a napló ellenőrző összeggel való ellátása ad egy bónuszt is: Lehetővé teszi a fájlrendszer konvertálást két részben bármilyen rábízott rendszeren, illetve az Ext3 naplózását pedig egy részben át tudja alakítani, ami gyorsítja a fájlrendszer műveleteket 20% ugyanolyan helyzetben, - tehát a megbízhatóságot és a teljesítményt egy időben javítja -. (Megjegyzés: Ennek a funkciónak a része ami javítja a teljesítményt az asszinkron naplózás amit alapértelmezetten még ki van kapcsolva, de a jövőben ez aktiválva lesz).

Online töredezettség mentesítés
(Ez a képesség nincs benne a 2.6.28-as kernelben, de talán a következő kiadásban már benne lesz). Bár a késleltetett elhelyezés, az extents és a több blokkos elhelyezés segít csökkenteni a töredezettséget, a használat alatt lévő fájlrendszer továbbra is töredezett lehet. Például: Három állományt írsz egy könyvtárba és folyamatosan a lemezre is. Néhány nap múlva frissíted a középső állományt, de az nőtt egy bitet, tehát nincs elég hely számára. Nincs lehetőséged, töredezik az állomány és a kis része az adatnak egy másik helyen lesz a lemezen, ami a seek-elést eredményez vagy az elhelyezett állományt teljes egészében máshova kell rakni, távolra a másik két állománytól, aminek az eredménye szintén seek-elést eredményez, ha az alkalmazás olvasni akarja az állományokat a könyvtárban (mint amikor a fájl kezelő készíti az előnézeteket a könyvtárban az összes képről). Emellett a fájlrendszer csak bizonyos fajta töredezettségre tud figyelni, nem tudja például hogy a boot állományoknak muszáj folyamatosnak maradni, mert azt nem tudja mely állományok kellenek a boothoz. A probléma megoldására, az Ext4 támogatja az online töredezettség mentesítést. Az e4defrag eszközzel tudod online töredezettség mentesíteni az egész rendszert.

Inode-al összefüggő funkciók
Nagyobb inode-ok, ezredmásodperces időbélyegek, gyors kiegészítő attribútumok, inode lefoglalás..

  • Nagyobb inode-ok: Az Ext3 támogatta az inode-ok méretének változtatását (az -l mkfs paraméterrel), de az alapértelmezett inode méret 128 byte. Az Ext4 alapértelmezettje 256 byte, mert muszáj elhelyezi valahol az extra mezőket, (mint a ezredmásodperces időbélyegek vagy az inode verziók) és a maradék inode terület a kiegészítő attribútumokhoz kell, ami egy kicsi de elég terület. Ezzel gyorsabb az attribútumok hozzáférése sokkal gyorsabb és javítja azon alkalmazások teljesítményét amik használják a kiegészítő attribútumokat.
  • Az inode lefoglalás, lefoglal néhány inode-ot amikor egy könyvtár létrejön, arra számítva hogy a jövőben használva lesz. Ez javítja a teljesítményt, mert amikor az új állományokat létrehozod a könyvtárban, azok használhatják a lefoglalt területet. A fájl létrehozás és törlés ezentúl sokkal hatékonyabb.
  • A ezredmásodperces időbélyegzők azt jelenti hogy az inode területeken mint a "módosítás ideje" mostantól pontossággal részletességgel jelennek meg nem úgy mint az Ext3 másodperces részletessége.

Kitartó elő lefoglalás - Presistent preallocation
Ez a funkció az Ext3-ban is elérhető a legutóbbi kernel verziókban és a glibc is emulálja, ha a fájlrendszer nem támogatja azt. Ez a funkció engedélyezi az alkalmazásoknak a tárhely előre való lefoglalását (pl. torrent programoknál "szükséges tárhely lefoglalása" pont -- a fordító). Az alkalmazás üzeni a rendszernek hogy előre foglaljon le területet, és a fájlrendszer lefoglalja a szükséges blokkokat és adatstruktúrákat, de addig nincs ott adat ameddig az alkalmazás nem ír arra a területre adatot. Ez az, ami a P2P alkalmazások csinálnak "előre lefoglalás" néven, amikor lefoglalják a területez a letöltendő alkalmazásoknak az elkövetkező órákra vagy napokra, de sokkal hatékonyabban van implementálva fájlrendszer szinten egy általános API-val.

Ennek más alkalmazása is van: Előszór is, elkerüli hogy az alkalmazások (mint a P2P programok) maguk csinálják, rossz hatékonysággal egy fájl 0 értékekkel való feltöltését. Másodrészt, a töredezettség elkerülésére, mivel a blokkok egy időben kerülnek lefoglalásra olyan folyamatosan amennyire csak lehetséges. Harmadrészt, bizonytalan hogy az alkalmazások mindig annyi helyet foglalnak le amennyire valóban szükségük van, ami fontos az RT-ish alkalmazásoknak (fogalmam nincs milyenek ezek, valaki? :) -- a fordító), mivel előre lefoglalás nélkül a fájlrendszer teli lehet egy fontos folyamat közepén. Ez a funkció elérhető a libc posix_fallocate() interfészen keresztül.

Alapértelmezett sorompó
Ez a funkció javítja a fájlrendszer integritását némi teljesítményért cserébe (kikapcsolható a "mount -o barrier=0" módon, javasolt kikapcsolni a tesztelés előtt.) Idézet
ebből az LWN cikkből:
"A fájlrendszer kódnak írás előtt muszáj meggyőződnie arról hogy minden tranzakciós információ benne van a naplóban. Csak írni a parancsnak megfelelően nem hatékony, a mai lemezeknek nagy köztes táruk van, így újra ki kell adni a parancsot a jobb teljesítményért. Tehát, a fájlrendszernek muszáj határozottan utasítani a lemezt hogy írja ki az összes napló adatot a médiára mielőtt megírja a bejegyzést. Ha a bejegyzés kerül előbb a lemezre, a naplózás hibás lehet. A kernel blokk I/O alrendszere képessé a sorompók használatára a rendszert, lényegében a "sorompó" elrejti az írást a blokkokra, aztán míg az összes blokk meg nem lesz írva. A sorompó használatával a fájlrendszer biztos lehet abban hogy a lemezen lévő struktúra mindig konzisztens marad.

Hogyan használd az Ext4-et.

Ez az első stabil verziója az Ext4-nek, ráadásul a fájlrendszer fejlesztését és kiadását is lelassították és a kiadását elnapolták többször is, hogy garantálják ugyanazt a stabilitást mint amint elvársz a jelenlegi Ext3 implementációtól. Ezt a szabályt szinte egy program sem tartja be.

Az első és nagyon fontos dolog hogy észben tartsd, hogy Nincs GRUB támogatás az Ext4-hez!. Bár ez nem egészen igaz, mert a van Grub támogatás csak a jelenlegi Grub verziók amit a disztribúciódban van nem támogatja. A Grub2-ben van támogatás, de az még fejlesztés alatt van. Elérhetőek Grub2 csomagok az Ubuntuban és a Debian származék rendszerekben mint gurb-pc csomag. A 0.9x-es verzióhoz nincs hivatalos támogatás de a Google SoC projekt ad hozzá támogatást és a Google patch-eket keres hozzá. Tehát a választás a tied. A következő disztribúciók a 2.6.28-as Linuxon fognak alapulni, amik valószínűleg támogatják majd. A legbiztonságosabb ha a /boot partíció továbbra is Ext3-al van formázva.

Szükséges van egy frissített e2fsprogs eszközre természetesen, aminek a legutolsó verziója a 1.41.3 a javasolt.

Megjegyzés: A legtöbb Debian származék disztribúció, beleértve az Ubuntut is, ha úgy initramfs használatakor konvertálod a fájlrendszered, az eredmény nem induló rendszer, amikor látszólag engedélyezted az "ext4dev compatibility" opciót. A probléma az, hogy a fstype klibc eszköz az Ext3-nak detektálja az Ext4-et így Ext3-nak próbálja csatolni a rendszert ami így elbukok. A probléma megoldása a "rootfstyoe=ext4" opció hozzáadása (idézőjelek nélkül) a kernel parancssorában.

Váltás Ext4-re nagyon könnyű, csak három lépés kell a váltáshoz.

Ext4 fájlrendszer készítése a semmiből
Ez az egyik legegyszerűbb. javasolt új telepítéseknél. Csak frissítsd az e2fsprogs csomagot Ext4-re és hozz létre egy fájlrendszert mkfs ext4 paranccsal.

Ext3 fájlrendszer migrálása Ext4-re
Használni kell a tune2fs és az fsck eszközöket a fájlrendszerben de a fájlrendszert le kell csatolni.

Futtasd: tune2fs -O extents,uninit_bg,dir_index /dev/fájlrendszered

Ezután MUSZÁJ futtatni az fsck-t, különben az EXT4 PARTÍCIÓ NEM LESZ CSATOLVA. Az fsck futtatása azért szükséges hogy a fájlrendszer visszatérjen a konzisztens állapotba. Meg fogja kérdezni, hogy keressen-e ellenőrzőösszeg hibákat a csoport leírókban, ez várható és pontosan az ami szükséges hogy újraépüljön a fájlrendszer és csatolni lehessen mint Ext4, tehát ne lepődj meg rajta. Kis idő múlva, néhány hibát fog találni, megkérdezi mit tegyen, mindig mond neki hogy IGEN (YES). Ha nem akarsz válaszolni, add hozzá a -p paramétert az fsck parancshoz, ami automatikus javítást jelent.

fsck -pf /dev/fájlrendszered

Ez egy másik dolog amit meg kell említenem. Minden létező állományod továbbra is használható a régi közvetett megfeleltetéssel. Az online töredezettség mentesítő eszköz képes lesz migrálni a megmaradt állományokat az extent formátumba (ioctl használatával, ami megmondja a fájlrendszernek hogy írja fel újra az állományt az extent formátummal, biztonságosan használható, ha rendesen használod a fájlrendszered).

Létező Ext3 fájlrendszer csatolása mint Ext4 formátum váltás nélkül.
Csatolhatod a létező Ext3 fájlrendszeredet mint Ext4, de a fájlrendszer szerkezetét megváltoztató funkciók nélkül. Ez azt jelenti hogy képes leszel a fájlrendszert újra Ext3-ként csatolni. Így csatolhatod a meglévő Ext3-as fájlrendszered mint Ext4: mount -t ext4 /dev/partíciód /mnt vagy /media. Megteheted ezt a konvertálási folyamat nélkül, ez rákényszeríti az Ext4-et hogy ne használja a lemez szerkezetét megváltoztató funkciókat, mint pl. extents, csak olyan funkciókat használhat, ami nem változtatja meg a fájl szerkezetét a lemeznek, mint a mballoc vagy késleltetett lefoglalás. Képes leszel csatolni az Ext3-ként újra. De magától értetődő módon elveszted az Ext4 előnyeit ha nem használod..

 

...................................

 

cinyódekor

 

 

NYEREMÉNY JÁTÉK

 

 katt a képre

 

cinyo.png

 


NYEREMÉNY JÁTÉK

 

TÖK INGYENES CSAK REGISZTRÁLNOD KELL:)

 

 

 bezár

 

/cikkek/alapok/ext4-ext4.html

 

 

 

 

 

.....................................................

 

....................................................................................................................... (oldalt lebegő reklám)