Filerendszerek
a (→ext2: typo) |
(v1.5) |
||
1. sor: | 1. sor: | ||
− | == Filerendszerek Unix alatt == |
+ | == Filerendszerek Unix alatt == |
Unix alatt a Windows-környezetben megszokott elemeken (elsősorban könyvtár, file) kívül előfordulhat néhány további: |
Unix alatt a Windows-környezetben megszokott elemeken (elsősorban könyvtár, file) kívül előfordulhat néhány további: |
||
99. sor: | 99. sor: | ||
* <tt>ext2online</tt> |
* <tt>ext2online</tt> |
||
* <tt>ext2resize</tt> |
* <tt>ext2resize</tt> |
||
+ | * <tt>e2fsadm</tt> |
||
* <tt>e2defrag</tt> |
* <tt>e2defrag</tt> |
||
* <tt>e2undel</tt> |
* <tt>e2undel</tt> |
||
+ | * <tt>mke2fs</tt> |
||
* e2fsprogs csomag Debianon |
* e2fsprogs csomag Debianon |
||
113. sor: | 115. sor: | ||
* sb=x: az 1. blokkban levő szuperblokk helyett használjuk az x. blokkban levő másolatát. 2-hatványokkal érdemes próbálkozni. |
* sb=x: az 1. blokkban levő szuperblokk helyett használjuk az x. blokkban levő másolatát. 2-hatványokkal érdemes próbálkozni. |
||
* user_xattr: támogassa a felhasználók által beállított extended attribútumokat |
* user_xattr: támogassa a felhasználók által beállított extended attribútumokat |
||
− | |||
− | === ext3 === |
||
− | |||
− | * Az ext2 bővítése |
||
− | ** journalinggal (fizikai, nem olyan jó) |
||
− | ** sok file-t tartalmazó könyvtár esetén gyorsabb |
||
− | ** online növelhető |
||
− | * A 2.4.15-ös kernelben jelent meg hivatalosan (jó régen) |
||
− | * Mountolható ext2-ként, ha üres a journal |
||
− | * Az ext2 helyben upgrade-elhető ext3-ra |
||
− | * Az ext3-ból helyben csinálható ext2 |
||
− | * Egész jó teljesítmény |
||
− | * Jó helyreállíthatóság |
||
− | * Nagyon széles körben elterjedt |
||
− | * Más oprendszerek is támogatják (Windows driver is van), bár általában csak ext2-ként |
||
− | * POSIX ACL, extattr |
||
− | |||
− | Létrehozása: |
||
− | |||
− | <pre> |
||
− | # mke2fs -j /dev/... |
||
− | </pre> |
||
− | |||
− | Kapcsolódó eszközök: mint az ext2-nél, de undelete nincs. |
||
− | |||
− | mount opciók: |
||
− | |||
− | * data= - journaling módja |
||
− | ** data=journal: az adatműveleteket is naplózza. Lassú, de biztos. |
||
− | ** data=writeback: a meta-adat-műveleteket naplózza, a többit nem. Crash esetén logfile-ok végén szemét várható. |
||
− | ** data=ordered: alapértelmezés. Mint a writeback, de a meta-adatok változásainak naplózása előtt az adott file-lal kapcsolatos többi puffert üríti. Crash esetén logfile-ok vége hiányozhat. |
||
=== ext3 === |
=== ext3 === |
||
199. sor: | 170. sor: | ||
* "tree rebuild" fsck során átverhető reiserfs-image-re emlékeztető file-lal |
* "tree rebuild" fsck során átverhető reiserfs-image-re emlékeztető file-lal |
||
* instabilitás |
* instabilitás |
||
+ | * rossz angolsággal írt dokumentáció |
||
Eszközök: |
Eszközök: |
||
− | Mount opciók: |
+ | * debugreiserfs |
+ | ** Általános diagnosztikai eszköz, mindenfélének a kiolvasására |
||
+ | * reiserfsck |
||
+ | * reiserfstune |
||
+ | ** journal-hangolás (méret, tranzakcióméret) |
||
+ | ** journal kihelyezése külső eszközre |
||
+ | * resize_reiserfs |
||
+ | ** offline zsugorítás/növelés |
||
+ | ** online növelés |
||
+ | * mkreiserfs |
||
+ | * reiserfsprogs csomag |
||
+ | |||
+ | Fontosabb mount opciók: |
||
+ | |||
+ | * notail: tail packing kikapcsolása (pl. a LILO kedvéért) |
||
+ | * resize=blokkszám: remountoláskor használható a filerendszer növelésére |
||
=== XFS === |
=== XFS === |
||
236. sor: | 208. sor: | ||
* snapshot support: ha LVM snapshotot csinálunk, arra az időre konzisztenssé teszi magát (Linux alatt) |
* snapshot support: ha LVM snapshotot csinálunk, arra az időre konzisztenssé teszi magát (Linux alatt) |
||
* online defragmentálható (de nem nagyon kell) |
* online defragmentálható (de nem nagyon kell) |
||
− | * online növelhető (rendkívül gyorsan) |
+ | * online növelhető (rendkívül gyorsan, de kell hozzá legalább minimális szabad hely) |
− | * online backupolható xfsdumppal |
||
* POSIX ACL |
* POSIX ACL |
||
+ | * dinamikusan allokálja az inode-okat (legfeljebb a teljes hely megadható hányadáig) |
||
+ | * fejlett kvótarendszer |
||
+ | ** kvóta állítható: |
||
+ | *** userenként |
||
+ | *** csoportonként |
||
+ | *** "projektenként" (könyvtárfánként) |
||
+ | ** állítható soft/hard: |
||
+ | *** helyfoglalás |
||
+ | *** inode-szám |
||
+ | *** helyfoglalás a realtime sectionben (még nincs implementálva) |
||
+ | |||
+ | Három része lehet: |
||
+ | # data section |
||
+ | #* Meta-adatok |
||
+ | #* Felhasználói adatok (file-ok, könyvtárak tartalma) |
||
+ | # log section |
||
+ | #* Ez a journal |
||
+ | #* Alapértelmezés szerint a data section része |
||
+ | #* De lehet külső eszközön is |
||
+ | # realtime section |
||
+ | #* A realtime file-ok tárolására |
||
Hátrányok: |
Hátrányok: |
||
245. sor: | 238. sor: | ||
Eszközök: |
Eszközök: |
||
+ | |||
+ | * ''xfsprogs csomag:'' |
||
+ | * xfs_copy |
||
+ | ** párhuzamosan akár több új eszközre (vagy sparse image file-ba) is lemásolja a filerendszert |
||
+ | ** csak akkor használható, ha a forrás: |
||
+ | *** nincs mountolva, vagy |
||
+ | *** read-only van mountolva, vagy |
||
+ | *** xfs_freeze-zel befagyasztottuk. |
||
+ | ** a másolatok új UUID-t kapnak, hogy ugyanazon a gépen is használhassuk őket (kivéve -d kapcsoló esetén) |
||
+ | ** nem támogatja a realtime sectiont és a külső journalt |
||
+ | ** kis filerendszer nagyobb helyre másolásához jobb az xfsdump/xfsrestore |
||
+ | * xfs_db |
||
+ | ** interaktív (de scriptelhető) diagnosztikai eszköz |
||
+ | ** több másik xfs_* program is ezt használja a háttérben |
||
+ | ** ~900 sornyi dokumentáció |
||
+ | ** not for the faint of heart |
||
+ | ** kapcsolgathatók fele opcionális featúrák, pl. extattr support |
||
+ | * xfs_admin |
||
+ | ** label és UUID átállítása |
||
+ | ** néhány opcionális featúra bekapcsolása |
||
+ | *** unwritten extent support (''mire jó?'') |
||
+ | *** log version 2 |
||
+ | * xfs_check |
||
+ | ** csak ellenőriz, nem javít |
||
+ | * xfs_ncheck |
||
+ | ** filenév-inodeszám párok listázása, opcionálisan speciális és setuidos file-ok keresése |
||
+ | ** ''mire jó?'' Esetleg hardlinkek keresésére (tudunk egy inode-számot, és kell hozzá az összes név). De ezt tudja a find(1) is. |
||
+ | * xfs_growfs |
||
+ | ** online átméretezés (offline nem is lehet) |
||
+ | ** elvileg tudná növelni és csökkenteni a journalt (de egyelőre nem tudja) |
||
+ | ** az adatterületet csak növelni lehet |
||
+ | ** a realtime sectiont csak növelni lehet |
||
+ | ** átállítható, hogy az összes helynek legfeljebb hány százalékát használja inode-ok tárolására |
||
+ | * xfs_info |
||
+ | ** mindenféle paramétert kérdez le, pl. allocation group-ok száma, mérete (mountolt fs-re működik) |
||
+ | * xfs_io |
||
+ | ** diagnosztikai eszköz, mint az xfs_db, de magasabb szintű műveletekkel |
||
+ | * xfs_bmap |
||
+ | ** melyik blokkokat használja az adott file? |
||
+ | ** ''mire jó ez?'' |
||
+ | * xfs_freeze |
||
+ | ** felfüggeszti az írhatóságot |
||
+ | ** folyamatban levő tranzakciók befejeződnek |
||
+ | ** író processzek blokkolódnak |
||
+ | ** az immár konzisztens filerendszerről csinálhatunk snapshotot |
||
+ | ** utána <tt>xfs_freeze -u</tt> "olvasztja ki" |
||
+ | * xfs_mkfile |
||
+ | ** tetszőleges méretű file-t hoz létre, opcionálisan sparse |
||
+ | ** ''miért jobb, mint a dd(1)?'' |
||
+ | * xfs_logprint |
||
+ | ** megnézhetjük vele a journal tartalmát - csak xfs-szakértőknek mond valamit |
||
+ | * xfs_quota |
||
+ | ** kvóta-adminisztráció |
||
+ | * xfs_rtcp |
||
+ | ** file-okat másolhatunk vele a realime-adatterületre |
||
+ | * fsck.xfs |
||
+ | ** nem csinál semmit, az fsck mountoláskor automatikus, ha piszkos a journal |
||
+ | * mkfs.xfs |
||
+ | ** ez hozza létre az xfs-t |
||
+ | ** ajánlott opció: <tt>-l version=2</tt> |
||
+ | ** érdekes lehetőség: egy szövegfile-ban megadhatunk egyfajta template-et, ami alapján már adatok is kerülnek az új filerendszerbe (image létrehozásakor lehet hasznos) |
||
+ | * xfs_repair |
||
+ | ** offline javítóprogram |
||
+ | |||
+ | * ''xfsdump csomag:'' |
||
+ | * xfs_estimate: várhatóan mennyi helyet foglalna egy könyvtár, ha xfs-re másolnánk? |
||
+ | * xfs_fsr: online defragmentáló |
||
+ | * xfsdump: backup-eszköz |
||
+ | ** teljes vagy (többszintű) inkrementális |
||
+ | ** elvileg egyszerre több médiumra is tud írni, mindegyikre az fs egy-egy részét (így gyorsabb), de ez Linuxon még nincs meg |
||
+ | ** DMAPI-támogatás |
||
+ | ** megszakítható, majd folytatható |
||
+ | ** a kvótákat is menti |
||
+ | * xfsrestore: helyreállítás |
||
Mount opciók: |
Mount opciók: |
||
− | === JFS === |
+ | * logbufs=x: tuning-opció. Nagyobb érték -> több memória, de valamivel gyorsabb működés. Max. 8. (A hatást kimérhetné valaki...) |
+ | * logdev=/dev/foo: külső journal |
||
+ | * norecovery: csak a ro opcióval együtt használható. Nem játssza le a naplót mountkor, így még hozzáférünk a crash előtti állapothoz. |
||
+ | * nouuid: nem sír, ha ilyen uuid-del rendelkező filerendszer már mountolva van. Snapshot mountolásakor kell megadni. |
||
+ | * quota/usrquota: kvótakezelés bekapcsolása |
||
+ | * uqnoenforce: nem akadályozza meg a kvótatúllépést, csak számolja a helyhasználatot |
||
+ | * grpquota/gqnoenforce: mint fent, csak csoportkvótára |
||
+ | * ''mi a helyzet a projektkvótával?'' |
||
+ | |||
+ | === [http://jfs.sourceforge.net/home.html JFS] === |
||
* IBM fejlesztés |
* IBM fejlesztés |
||
255. sor: | 322. sor: | ||
* kiegyensúlyozott, jó teljesítmény |
* kiegyensúlyozott, jó teljesítmény |
||
* jó stabilitás |
* jó stabilitás |
||
− | * journaling |
+ | * journaling (''logikai vagy fizikai?'') |
− | * max. fileméret: 4 pebibyte |
+ | ** tud külső journalt |
− | * max. méret: 32 pebibyte |
+ | * 64 bites |
+ | ** max. fileméret: 512 TiB (512 byte-os blokkméret esetén) - 4 PiB (4 KiB-os blokkméret esetén) |
||
+ | ** max. méret: 32 pebibyte |
||
+ | ** minimális méret: 16 MiB |
||
* unicode kódolású |
* unicode kódolású |
||
+ | * dinamikusan allokálja az inode-okat |
||
+ | * a legfeljebb 8 bejegyzést tartalmazó könyvtárak tartalmát is a könyvtár inode-jában tárolja (ez gyors) |
||
+ | * portolták rá az xfs DMAPI-ját |
||
+ | * tud(ni fog) olyasmit, mint a Sun ZFS: egy block device-on (a JFS aggregate-nek hívja) több mountolható filerendszer (a JFS-ben fileset), amik közösen gazdálkodnak a szabad hellyel |
||
+ | * szintén támogatja a snapshot-készítést (mint az XFS) |
||
+ | * [ftp://www6.software.ibm.com/software/developer/library/jfslayout.pdf White paper], bár nem túl részletes |
||
Eszközök: |
Eszközök: |
||
+ | |||
+ | * jfs_fsck |
||
+ | ** a működéséről naplót készít, amit beleír a filerendszerbe |
||
+ | * jfs_fscklog |
||
+ | ** kiolvassa a filerendszerbe írt naplót |
||
+ | * jfs_logdump |
||
+ | ** file-ba írja a journal tartalmát - csak JFS-szakértőknek hasznos |
||
+ | * jfs_mkfs |
||
+ | ** érdekesség: -O opcióval case insensitive filerendszert csinál |
||
+ | * jfs_tune |
||
+ | * jfs_debugfs |
||
+ | ** a szokásos |
||
+ | * jfsutils csomag |
||
Mount opciók: |
Mount opciók: |
||
+ | |||
+ | * iocharset=utf8: hogyan képezzük le a Unicode fileneveket (itt utf8, de megadhatunk mást is) |
||
+ | * resize: remountoláskor megnöveli a filerendszert (zsugorítani nem lehet) |
||
+ | * nointegrity: naplózás kikapcsolása; backup visszaállításakor lehet érdemes használni (gyorsabb) |
||
== Attribútumok == |
== Attribútumok == |
||
− | Az ext2-es és ext3-as filerendszerben mindenféle attribútumai lehetnek a file-oknak; ennek semmi köze a bővített attribútumokhoz. |
+ | Néhány filerendszerben mindenféle attribútumai lehetnek a file-oknak; ennek semmi köze a bővített attribútumokhoz. Nem minden fs ismeri az alábbiak közül az összeset. (''Mit tud ebből a reiserfs és a jfs? A jfs látszólag semmit.'') |
* lsattr |
* lsattr |
||
* chattr |
* chattr |
||
+ | * xfs_io |
||
− | * A: atime ne módosuljon |
+ | * A: atime ne módosuljon (ext2, ext3, xfs) |
− | * a: csak hozzáfűzni lehet |
+ | * a: csak hozzáfűzni lehet (ext2, ext3, xfs) |
− | * c: röptömörített |
+ | * c: röptömörített (ext2, ext3 - de csak patchel) |
− | * D: könyvtáron: mintha dirsync opcióval mountoltuk volna az fs-t |
+ | * D: könyvtáron: mintha dirsync opcióval mountoltuk volna az fs-t (ext2, ext3) |
− | * d: ne backupolódjon (nyilván programfüggő, hogy nézi-e) |
+ | * d: ne backupolódjon (nyilván programfüggő, hogy nézi-e) (ext2, ext3, xfs) |
− | * E: tömörítési hibát tartalmaz |
+ | * f: no-defrag: a file-t nem szabad defragmentálni. Könyvtár esetén a file-ok öröklik. (xfs) |
− | * I: hashed tree-t használ a könyvtár |
+ | * i: immutable. Nem módosítható, nem törölhető, nem hardlinkelhető file. (ext2, ext3, xfs) |
− | * i: immutable. Nem módosítható, nem törölhető, nem hardlinkelhető file. |
+ | * j: a file úgy viselkedik, mintha data=journal opcióval mountoltuk volna az fs-t. Logfile-okra jó lehet. (ext3) |
− | * j: a file úgy viselkedik, mintha data=journal opcióval mountoltuk volna az fs-t. Logfile-okra jó lehet. |
+ | * n: a könyvtárban nem lehet symlinket létrehozni (mindenki által írható könyvtárakban bizonyos támadások elkerülésére jó) (xfs) |
− | * s: törléskor nullázódik a tartalma |
+ | * P: project inheritance. A könyvtárban létrehozott új file-ok öröklik a project ID-t a könyvtártól (xfs, kvóta) |
− | * S: szinkron írandó file |
+ | * s: törléskor nullázódik a tartalma (ext2, ext3) |
− | * T: rejtélyes funkciójú ext2/ext3 tuning-attribútum (A directory with the 'T' attribute will be deemed to be the top of directory hierarchies for the purposes of the Orlov block allocator). |
+ | * S: szinkron írandó file (ext2, ext3, xfs) |
− | * t: mintha notail opcióval mountoltuk volna (noha az ext2/3-ban egyelőre nincs tail packing/merging) |
+ | * T: rejtélyes funkciójú ext2/ext3 tuning-attribútum (A directory with the 'T' attribute will be deemed to be the top of directory hierarchies for the purposes of the Orlov block allocator). (ext2, ext3) |
− | * u: törléskor a file nem törlődik valóban, hanem helyreállítható - szerintem nincs implementálva |
+ | * t: realtime inheritance. A könyvtárban létrehozott új file-ok automatikusan a realtime sectionbe kerülnek (xfs) |
− | * X: röptömörítős patch használja |
+ | * t: mintha notail opcióval mountoltuk volna (noha az ext2/3-ban egyelőre nincs tail packing/merging) (ext2, ext3) |
− | * Z: szintén |
+ | * u: törléskor a file nem törlődik valóban, hanem helyreállítható - szerintem nincs implementálva (ext2, ext3) |
+ | * az ext2/3-nak és az xfs-nek is van még pár, részben belső használatra szánt |
||
== Trükkök a mount körül == |
== Trükkök a mount körül == |
||
294. sor: | 385. sor: | ||
* mount --move |
* mount --move |
||
* pivot_root |
* pivot_root |
||
+ | |||
+ | <pre> |
||
+ | mount /dev/hda1 /new-root |
||
+ | cd /new-root |
||
+ | pivot_root . old-root |
||
+ | exec chroot . sh <dev/console >dev/console 2>&1 |
||
+ | umount /old-root |
||
+ | </pre> |
||
== Ajánlott irodalom == |
== Ajánlott irodalom == |
A lap 2006. október 3., 03:24-kori változata
== Filerendszerek Unix alatt ==
Unix alatt a Windows-környezetben megszokott elemeken (elsősorban könyvtár, file) kívül előfordulhat néhány további:
- block special device (háttértár file-szerű absztrakciója)
- character special device (egyéb driver, pl. hangkártya, terminál, sorosport fiel-szerű absztrakciója)
- UNIX domain socket
- olyan, mint egy hálózati kapcsolat végpontja, de csak az adott gépen belül érvényes
- lehet rajta szervert üzemeltetni
- kliens kapcsolódhat rá
- FIFO (named pipe)
- olyan csővezeték, mint ami a "|" hatására jön létre
- de nem szükséges, hogy az író és olvasó folyamatoknak közös szülője legyen
- ha valaki megnyitja olvasásra, és olvasni próbál, blokkolódik, amíg valaki más nem ír bele
- több egyidejű írás nemdeterminisztikus sorrendben hajtódik végre
- több egyidejű olvasás szintén (ha ketten is várnak olvasható adatra, elvileg bármelyik megkaphatja a következőt, amit beleírnak)
- symlink (egy név átirányít egy másikra)
- hardlink
- egy file-hoz több név
- van referenciaszámláló, a hely csak akkor szabadul fel, ha a file utolsó nevét is töröltük és így a számláló 0 lett
- sparse file
- "lukas" file
- lehetnek benne olyan részek, amik számára nincs hely allokálva a filerendszerben
- ha onnan olvasunk, 0-t kapunk
- ha oda írunk, allokálódik a hely
- disk image-nek kiváló
- fork
- több adatterület egy file-hoz
- NTFS-en is van
- az extended attribútum is ilyesmi
- négy namespace: user, trusted, security, system
Ezen túlmenően fontos különbség, hogy a filerendszer case sensitive (de ez senkinek nem szabad, hogy újdonság legyen), hogy egy-gyökerű (szintúgy), és hogy backslash ("\") karakter helyett / választja el egymástól az alkönyvtár-hierarchia szintjeit.
Tartalomjegyzék[elrejtés] |
1 A Linux filerendszerei
A Linux kernel számos filerendszert támogat; ezek között van "natív" linuxos (pl. az ext2, az ext3 és a reiserfs), és pár máshonnan importált filerendszer (pl. minix, vfat, ntfs, jfs, xfs) is.
Fontos tulajdonságok:
- naplózás
- fizikai <-> logikai
- metadata <-> teljes
- beépített <-> külső
- átméretezhetőség
- online <-> offline
- csak növelhető <-> zsugorítható is
Altalános mount opciók:
- defaults: rw, suid, dev, exec, auto, nouser, async
- async: aszinkron I/O
- auto: a mount -a mountolja (fstab alapján)
- dev: érvényesek a device típusú file-ok
- exec: a végrehajthatónak jelölt file-ok végrehajthatók
- nouser: user nem mountolhatja/umountolhatja
- rw: írható-olvasható
- suid: érvényesek a setuid és setgid bitek
- group: a device-t tulajdonló csoport tagjai mountolhatják, implikálja a nodev, nosuid opciókat
- owner: mint a group, de a device-t tulajdonló felhasználó mountolhatja
- noatime: nem frissíti az access dátumot (pl. mail spoolra vagy squid cache_dirre jó)
- noauto: nem mountolódik a mount -a hatására (pl. bootkor)
- nodev: nem érvényesek rajta a device típusú file-ok (a biztonság kedvéért)
- noexec: nehezebb programot futtatni róla (shellscriptet könnyű, binárist már nem)
- nosuid: nem érvényesek a binárisok setuid- és setgid-bitjei (suidperl esetén perlscripteken esetleg igen)
- remount: újramountolás más opciókkal
- ro: csak olvasható
- sync: szinkron I/O (elvileg mindent kiír a diszkre, mielőtt visszatér az író rendszerhívás)
- dirsync: a könyvtárakra vonatkozó írási műveletek szinkronak, a többi nem
- user: a filerendszert bárki mountolhatja, de csak az umountolhatja, aki mountolta (bekerül az uidje a /etc/mtabba)
- users: a filerendszert bárki mountolhatja és umountolhatja
1.1 ext2
- 1993 óta ez a szabványos linuxos fs, bár mostanra nagyrészt kiszorította az ext3
- max. 4 tebibyte
- fileméret max. 2 tebibyte (más forrás szerint 1 tebibyte)
- filenév max. 255 karakter
- filenévben nem lehet NULL és /
- elfogadható sebesség
- mára tud POSIX ACLeket és extended attribute-okat
- van hozzá transzparens tömörítést biztosító patch (de kit érdekel?)
- nemigen használja senki, csak esetleg nagyon kicsi filerendszeren (pl. /boot)
- offline növelhető (ez biztos, de mintha lenne online növeléshez patch)
- offline zsugorítható (patch-csel esetleg online is?)
Létrehozása:
# mke2fs /dev/...
Kapcsolódó eszközök:
- tune2fs
- e2fsck
- resize2fs
- ext2online
- ext2resize
- e2fsadm
- e2defrag
- e2undel
- mke2fs
- e2fsprogs csomag Debianon
mount opciók:
- acl: legyen POSIX ACL support
- check: mountoláskor legyen fsck
- errors= - mi történjen konzisztenciahiba észlelése esetén?
- errors=continue: folytatás
- errors=remount-ro: újramountolás csak olvasható módban és folytatás
- errors=panic: kernel panic kiváltása (alapértelmezés szerint ilyenkor megáll a kernel, de beállítható, hogy rebootoljon)
- sb=x: az 1. blokkban levő szuperblokk helyett használjuk az x. blokkban levő másolatát. 2-hatványokkal érdemes próbálkozni.
- user_xattr: támogassa a felhasználók által beállított extended attribútumokat
1.2 ext3
- Az ext2 bővítése
- journalinggal (fizikai, nem olyan jó)
- sok file-t tartalmazó könyvtár esetén gyorsabb
- online növelhető
- A 2.4.15-ös kernelben jelent meg hivatalosan (jó régen)
- Mountolható ext2-ként, ha üres a journal
- Az ext2 helyben upgrade-elhető ext3-ra
- Az ext3-ból helyben csinálható ext2
- Egész jó teljesítmény
- Jó helyreállíthatóság
- Nagyon széles körben elterjedt
- Más oprendszerek is támogatják (Windows driver is van), bár általában csak ext2-ként
- POSIX ACL, extattr
Létrehozása:
# mke2fs -j /dev/...
Kapcsolódó eszközök: mint az ext2-nél, de undelete nincs.
mount opciók:
- data= - journaling módja
- data=journal: az adatműveleteket is naplózza. Lassú, de biztos.
- data=writeback: a meta-adat-műveleteket naplózza, a többit nem. Crash esetén logfile-ok végén szemét várható.
- data=ordered: alapértelmezés. Mint a writeback, de a meta-adatok változásainak naplózása előtt az adott file-lal kapcsolatos többi puffert üríti. Crash esetén logfile-ok vége hiányozhat.
1.3 ReiserFS
- 2.4.1 óta a kernelben
- első naplózó filerendszer a Linuxban (csak metadata; logikai vagy fizikai?)
- készül a Reiser4, ezért a ReiserFS-t hívják Reiser3-nak is
- online növelhető
- offline zsugorítható
- tail packing: belső töredezettséget csökkenti, de lassú
- kis file-okra nagyon gyors
- max. méret: 16 tebibyte
- max. fileméret: 8 tebibyte
- POSIX ACL, extattr
- inode-ok lefoglalása dinamikus ("akárhány" file lehet rajta, valójában csak mintegy négymilliárd)
- delayed allocation
- íráskor csak lefoglalja a helyet, de nem dönti el azonnal, melyik blokkokba fog kerülni a file
- a blokkok hozzárendelése csak a puffer ürítésekor történik meg
- így nagyobb valószínűséggel kerül összefüggő helyre a file, kisebb a töredezettség
Gyermekbetegségek (részben megoldva):
- versenyhelyzetek
- "tree rebuild" fsck során átverhető reiserfs-image-re emlékeztető file-lal
- instabilitás
- rossz angolsággal írt dokumentáció
Eszközök:
- debugreiserfs
- Általános diagnosztikai eszköz, mindenfélének a kiolvasására
- reiserfsck
- reiserfstune
- journal-hangolás (méret, tranzakcióméret)
- journal kihelyezése külső eszközre
- resize_reiserfs
- offline zsugorítás/növelés
- online növelés
- mkreiserfs
- reiserfsprogs csomag
Fontosabb mount opciók:
- notail: tail packing kikapcsolása (pl. a LILO kedvéért)
- resize=blokkszám: remountoláskor használható a filerendszer növelésére
1.4 XFS
- SGI fejlesztés
- Az első unixos naplózó filerendszer (1994, IRIX 5.3)
- Linuxban a 2.4.25 óta (2000 körül)
- FreeBSD 2005 vége óta olvassa, a 7.0 már írja is
- max. méret: 9 exbibyte (32 biten 16 tebibyte)
- max. fileméret: 9 exbibyte (32 biten 16 tebibyte)
- metadata journal (logikai, hatékony)
- a journal-alapú helyreállítás mountkor automatikus és nagyon gyors
- crash után a nemrég írt file-okban vagy a végükön nullák lehetnek (főleg naplófile-okban)
- több allocation groupból áll
- magától felosztja magát ilyenekre
- file átlóghat egyikből a másikba
- minden AG maga gazdálkodik a saját szabad helyével és inode-jaival
- több AG párhuzamos elérése gyors, főleg ha különböző diszkeken vannak (RAID miatt)
- támogatja a csíkozást (tudja úgy szervezni magát, hogy előnyösen kihasználja az alatta levő RAID0-át)
- változó méretű blokkokban allokálja a helyet (extents)
- az alap-blokkok mérete 512 byte-tól 64K-ig terjedhet, létrehozáskor kell beállítani
- delayed allocation
- hátrány: sok írás időnként "túlfoglalja" az fs-t; azt mondja, nincs hely, pedig van; sync után tényleg van
- reisernél is jelentkezik ez?
- forkok ("villák" :)
- minden file-típusnak lehet (symlinknek is)
- valójában inkább bővített attribútumok
- direct I/O
- megkerüli az OS cache-t, közvetlenül userspace-be olvas DMA-val
- realtime I/O (garantált sávszélesség)
- DMAPI (házi feladat)
- elvileg arra jó, hogy a diszk cache-eljen egy sokkal nagyobb, mondjuk szalagos tárat, transzparensen
- snapshot support: ha LVM snapshotot csinálunk, arra az időre konzisztenssé teszi magát (Linux alatt)
- online defragmentálható (de nem nagyon kell)
- online növelhető (rendkívül gyorsan, de kell hozzá legalább minimális szabad hely)
- POSIX ACL
- dinamikusan allokálja az inode-okat (legfeljebb a teljes hely megadható hányadáig)
- fejlett kvótarendszer
- kvóta állítható:
- userenként
- csoportonként
- "projektenként" (könyvtárfánként)
- állítható soft/hard:
- helyfoglalás
- inode-szám
- helyfoglalás a realtime sectionben (még nincs implementálva)
- kvóta állítható:
Három része lehet:
- data section
- Meta-adatok
- Felhasználói adatok (file-ok, könyvtárak tartalma)
- log section
- Ez a journal
- Alapértelmezés szerint a data section része
- De lehet külső eszközön is
- realtime section
- A realtime file-ok tárolására
Hátrányok:
- a bootszektort is használja, nem rakhatunk oda bootloadert
- undelete lényegében lehetetlen
Eszközök:
- xfsprogs csomag:
- xfs_copy
- párhuzamosan akár több új eszközre (vagy sparse image file-ba) is lemásolja a filerendszert
- csak akkor használható, ha a forrás:
- nincs mountolva, vagy
- read-only van mountolva, vagy
- xfs_freeze-zel befagyasztottuk.
- a másolatok új UUID-t kapnak, hogy ugyanazon a gépen is használhassuk őket (kivéve -d kapcsoló esetén)
- nem támogatja a realtime sectiont és a külső journalt
- kis filerendszer nagyobb helyre másolásához jobb az xfsdump/xfsrestore
- xfs_db
- interaktív (de scriptelhető) diagnosztikai eszköz
- több másik xfs_* program is ezt használja a háttérben
- ~900 sornyi dokumentáció
- not for the faint of heart
- kapcsolgathatók fele opcionális featúrák, pl. extattr support
- xfs_admin
- label és UUID átállítása
- néhány opcionális featúra bekapcsolása
- unwritten extent support (mire jó?)
- log version 2
- xfs_check
- csak ellenőriz, nem javít
- xfs_ncheck
- filenév-inodeszám párok listázása, opcionálisan speciális és setuidos file-ok keresése
- mire jó? Esetleg hardlinkek keresésére (tudunk egy inode-számot, és kell hozzá az összes név). De ezt tudja a find(1) is.
- xfs_growfs
- online átméretezés (offline nem is lehet)
- elvileg tudná növelni és csökkenteni a journalt (de egyelőre nem tudja)
- az adatterületet csak növelni lehet
- a realtime sectiont csak növelni lehet
- átállítható, hogy az összes helynek legfeljebb hány százalékát használja inode-ok tárolására
- xfs_info
- mindenféle paramétert kérdez le, pl. allocation group-ok száma, mérete (mountolt fs-re működik)
- xfs_io
- diagnosztikai eszköz, mint az xfs_db, de magasabb szintű műveletekkel
- xfs_bmap
- melyik blokkokat használja az adott file?
- mire jó ez?
- xfs_freeze
- felfüggeszti az írhatóságot
- folyamatban levő tranzakciók befejeződnek
- író processzek blokkolódnak
- az immár konzisztens filerendszerről csinálhatunk snapshotot
- utána xfs_freeze -u "olvasztja ki"
- xfs_mkfile
- tetszőleges méretű file-t hoz létre, opcionálisan sparse
- miért jobb, mint a dd(1)?
- xfs_logprint
- megnézhetjük vele a journal tartalmát - csak xfs-szakértőknek mond valamit
- xfs_quota
- kvóta-adminisztráció
- xfs_rtcp
- file-okat másolhatunk vele a realime-adatterületre
- fsck.xfs
- nem csinál semmit, az fsck mountoláskor automatikus, ha piszkos a journal
- mkfs.xfs
- ez hozza létre az xfs-t
- ajánlott opció: -l version=2
- érdekes lehetőség: egy szövegfile-ban megadhatunk egyfajta template-et, ami alapján már adatok is kerülnek az új filerendszerbe (image létrehozásakor lehet hasznos)
- xfs_repair
- offline javítóprogram
- xfsdump csomag:
- xfs_estimate: várhatóan mennyi helyet foglalna egy könyvtár, ha xfs-re másolnánk?
- xfs_fsr: online defragmentáló
- xfsdump: backup-eszköz
- teljes vagy (többszintű) inkrementális
- elvileg egyszerre több médiumra is tud írni, mindegyikre az fs egy-egy részét (így gyorsabb), de ez Linuxon még nincs meg
- DMAPI-támogatás
- megszakítható, majd folytatható
- a kvótákat is menti
- xfsrestore: helyreállítás
Mount opciók:
- logbufs=x: tuning-opció. Nagyobb érték -> több memória, de valamivel gyorsabb működés. Max. 8. (A hatást kimérhetné valaki...)
- logdev=/dev/foo: külső journal
- norecovery: csak a ro opcióval együtt használható. Nem játssza le a naplót mountkor, így még hozzáférünk a crash előtti állapothoz.
- nouuid: nem sír, ha ilyen uuid-del rendelkező filerendszer már mountolva van. Snapshot mountolásakor kell megadni.
- quota/usrquota: kvótakezelés bekapcsolása
- uqnoenforce: nem akadályozza meg a kvótatúllépést, csak számolja a helyhasználatot
- grpquota/gqnoenforce: mint fent, csak csoportkvótára
- mi a helyzet a projektkvótával?
1.5 JFS
- IBM fejlesztés
- Igazából ez már a JFS2, az OS/2 Warpban jelent meg (1999-ben)
- Linuxban 2001 óta
- kiegyensúlyozott, jó teljesítmény
- jó stabilitás
- journaling (logikai vagy fizikai?)
- tud külső journalt
- 64 bites
- max. fileméret: 512 TiB (512 byte-os blokkméret esetén) - 4 PiB (4 KiB-os blokkméret esetén)
- max. méret: 32 pebibyte
- minimális méret: 16 MiB
- unicode kódolású
- dinamikusan allokálja az inode-okat
- a legfeljebb 8 bejegyzést tartalmazó könyvtárak tartalmát is a könyvtár inode-jában tárolja (ez gyors)
- portolták rá az xfs DMAPI-ját
- tud(ni fog) olyasmit, mint a Sun ZFS: egy block device-on (a JFS aggregate-nek hívja) több mountolható filerendszer (a JFS-ben fileset), amik közösen gazdálkodnak a szabad hellyel
- szintén támogatja a snapshot-készítést (mint az XFS)
- White paper, bár nem túl részletes
Eszközök:
- jfs_fsck
- a működéséről naplót készít, amit beleír a filerendszerbe
- jfs_fscklog
- kiolvassa a filerendszerbe írt naplót
- jfs_logdump
- file-ba írja a journal tartalmát - csak JFS-szakértőknek hasznos
- jfs_mkfs
- érdekesség: -O opcióval case insensitive filerendszert csinál
- jfs_tune
- jfs_debugfs
- a szokásos
- jfsutils csomag
Mount opciók:
- iocharset=utf8: hogyan képezzük le a Unicode fileneveket (itt utf8, de megadhatunk mást is)
- resize: remountoláskor megnöveli a filerendszert (zsugorítani nem lehet)
- nointegrity: naplózás kikapcsolása; backup visszaállításakor lehet érdemes használni (gyorsabb)
2 Attribútumok
Néhány filerendszerben mindenféle attribútumai lehetnek a file-oknak; ennek semmi köze a bővített attribútumokhoz. Nem minden fs ismeri az alábbiak közül az összeset. (Mit tud ebből a reiserfs és a jfs? A jfs látszólag semmit.)
- lsattr
- chattr
- xfs_io
- A: atime ne módosuljon (ext2, ext3, xfs)
- a: csak hozzáfűzni lehet (ext2, ext3, xfs)
- c: röptömörített (ext2, ext3 - de csak patchel)
- D: könyvtáron: mintha dirsync opcióval mountoltuk volna az fs-t (ext2, ext3)
- d: ne backupolódjon (nyilván programfüggő, hogy nézi-e) (ext2, ext3, xfs)
- f: no-defrag: a file-t nem szabad defragmentálni. Könyvtár esetén a file-ok öröklik. (xfs)
- i: immutable. Nem módosítható, nem törölhető, nem hardlinkelhető file. (ext2, ext3, xfs)
- j: a file úgy viselkedik, mintha data=journal opcióval mountoltuk volna az fs-t. Logfile-okra jó lehet. (ext3)
- n: a könyvtárban nem lehet symlinket létrehozni (mindenki által írható könyvtárakban bizonyos támadások elkerülésére jó) (xfs)
- P: project inheritance. A könyvtárban létrehozott új file-ok öröklik a project ID-t a könyvtártól (xfs, kvóta)
- s: törléskor nullázódik a tartalma (ext2, ext3)
- S: szinkron írandó file (ext2, ext3, xfs)
- T: rejtélyes funkciójú ext2/ext3 tuning-attribútum (A directory with the 'T' attribute will be deemed to be the top of directory hierarchies for the purposes of the Orlov block allocator). (ext2, ext3)
- t: realtime inheritance. A könyvtárban létrehozott új file-ok automatikusan a realtime sectionbe kerülnek (xfs)
- t: mintha notail opcióval mountoltuk volna (noha az ext2/3-ban egyelőre nincs tail packing/merging) (ext2, ext3)
- u: törléskor a file nem törlődik valóban, hanem helyreállítható - szerintem nincs implementálva (ext2, ext3)
- az ext2/3-nak és az xfs-nek is van még pár, részben belső használatra szánt
3 Trükkök a mount körül
- mount --bind
- mount --rbind
- mount --move
- pivot_root
mount /dev/hda1 /new-root cd /new-root pivot_root . old-root exec chroot . sh <dev/console >dev/console 2>&1 umount /old-root