Fstab

A HupWiki-ből...

Az /etc/fstab szerepe UNIX rendszereken, hogy az itt lefektetett szabályok megkönnyítik az állományrendszerek használatát. Megléte rendkívül fontos, mivel az fsck és a mount (tehát a boot során az automata mount is) ebből tájékozódik az elérhető állományrendszerekről.

Az állomány tartalma statikus (elvileg programok csak olvashatják) és kézzel kell elkészíteni. Jelenleg már több disztribúció képes automatikusan kezelni az fstab tartalmát. Ennek ellenére nem árt megismerkedni a felépítésével, mivel így jobban kontrollálható és egyedi elvárások is megvalósíthatóak.

Egy öszvér példa:

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc		/proc		proc	defaults	0	0
/swapfile	none		swap	sw		0	0
/dev/hda1	/		jfs	defaults,errors=remount-ro	0	1
/dev/hda5	/mnt/data	ext3    defaults	0	2
/dev/hdc	/media/cdrom0	iso9660	ro,users,noauto,utf8	0	0
/dev/fd0	/media/floppy0	auto	rw,users,noauto	0	0
/dev/hdb1	/mnt/adat	vfat	defaults,rw,users,uid=0,gid=6,umask=0003,codepage=852,utf8,noatime,quiet	0	0
/dev/hdb2	/mnt/winnt	ntfs	defaults,ro,users,uid=0,gid=6,umask=0003,utf8,noatime	0	0
/dev/sda1	/mnt/usbcam/	vfat	defaults,noauto,users,noatime   0       0

A felépítés: Minden mount point-ot (csatlakozási helyet) egy külön sor képvisel, minden opció tetszőleges mennyiségű szóközzel (vagy tabulátorral) van elválasztva. Természetesen lehet megjegyzéseket is beleszúrni, ha egy sor elejére # jelet teszel.

Az első oszlop (fs_spec) megmutatja, hogy fizikailag hol helyezkedik el a kezelendő állományrendszer. Alapesetben ez egy device (tehát a /dev-ben elhelyezkedő állomány, amely segítségével a programok képesek kommunikálni a hardwarerrel) (pld.: /dev/hda1; ezek lekérdezhetők pld. fdisk -llel), de lehet még NFS kötet (<host>:<dir>), proc állomány (pld.: maga a procfs proc néven). Kevésbé statikus megoldás (pld.: mobil rack vagy pendrive esetén nagyon hasznos), hogy a mount pontra lehet hivatkozni a volume label (kötetnév) vagy az UUID alapján (pld.: LABEL=Boot vagy '‘UUID=3e6be9de-8139-11d1-9106-a43f08d823a6’'), ezek lekérdezésére használható a disktype (disktype /dev/hdxy) vagy a hdparm (hdparm -I /dev/hdxy).

A második oszlop (fs_file) adja meg, hogy hová kerüljön mountolásra az állományrendszer (ez a mount point). A rootfs (felsőszintű állományrendszer) mindig a / -be mountolódik. Speciális a swap, aminél ez "none" értékkel rendelkezik. A merevlemezeket a /mnt könyvtárba szokás mountolni, a hordozható lemezeket a /mediaba.

Harmadik oszlop szintén perdöntő: megadja az állományrendszer típusát (fs_vfstype). Rengeteg típus támogatott, legelterjedtebbek: ext2, ext3, iso9660, jfs, reiserfs, vfat, xfs, de csak olyan típusokat állíthatsz be, amiket támogat az aktuális futó kernel, ezt a /proc/filesystems alatt lehet ellenőrizni. Erről is informál a disktype. A floppyt és más hordozható lemezeket (pld.: pendrive) autora szokás állítani a jobb kompatibilitás érdekébe. (Megj.: vesszővel elválasztva megadhatsz több fajta állományrendszert is, pld.: jfs, ext3.)

Negyedik oszlop az állományrendszer specifikus mountolási beállítások sorát tárolja (fs_mntops), itt van lehetőség egy kis tuningra. A list elemeit vesszővel kell elválasztani, a lehetőségről a mount manpage tudósít.

Opciók gyors áttekintése (az alapértelmezett beállítás zárójellel jelölve)

  • Általános opciók:
    • defaults: az általános működés beállításai: rw suid dev exec auto nouser async
    • sw: csak a swapnál használatos jelölés;
    • errors=continue/(remount-ro)/panic: az állományrendszer viselkedése hiba esetén: tovább fusson / csak olvasható módba váltson (megvéd további hibáktól) / lelője a rendszert
    • suid/nosuid: érvényesek lesznek a set user id (egy program meghívója felveszi az állomány tulajdonosának jogosultságait) és set group id (u.a. csoport jogaival) állomány-jelölések / ennek tiltása
    • ro/rw: csak olvasható / olvasható és írható az állományrendszer
    • auto/noauto: automatikusan mountolja a mount -a parancs (pld. boot során) / ennek tiltása
    • dev/nodev: engedélyezi u.n. block és character special állományok / ennek tiltása
    • exec/noexec: a bináris állományok futtathatóságát engedi / tiltja
    • users: bármely felhasználó (le)csatolhatja az állományrendszert és további megkötéseket érvényesít: noexec nodev nosuid
    • (async)/sync: egyszerre több írásfolyamat is hozzáférhet az állományrendszerhez (bufferelve) / egyszerre csak egy folyamat írhat (és minden bitet külön); az aszinkron írás jobban kíméli a hordozható médiumot
    • noatime: ne frissítse az utolsó hozzáférés időpontját az állományoknál (gyorsabb és kíméli a hordozható médiumot)
  • Állományrendszer specifikus:
    • Ext2/Ext3:
      • data=journal/(ordered)/writeback: a naplózás típusa (metadata mindig naplózva lesz), teljes naplózás / a metadata naplóba írása után ír az állományrendszerbe / előző fordított sorrendbe
    • ReiserFS
      • data=journal/(ordered)/writeback: lásd előző, de teljes naplózás csak 2.6 kernelben van
    • JFS
    • XFS
    • Reiser4
    • FAT: ez az állományrendszer képtelen az állományok jogait tárolni, ezért szabályokat kell létrehozni
      • uid/gid: mely tulajdonoshoz és csoporthoz tartozzanak az állományok (itt: root és disk)
      • umask: az állományok hozzáférési értékének ellentetje (itt: -rwxrwxr-- = a tulajdonos felhasználó és csoport olvashat/írhat/futtathat, mindenki más csak olvashat)
      • codepage=852,utf8: hu_HU.UTF-8 locale beállítás esetén a 8.3 magyar ékezetes állománynevek értelmezése és 8bites unicode kódolás használata a hosszú állománynevekhez; iso8859-2 locale beállítás esetén codepage=852,iocharset=iso8859-2
      • quiet: mivel a jogosultságokokat nem lehet közvetlenül átállítani, így a chown és a chgrp parancsok hibát jeleznének ez az opció nélkül
    • NTFS: szintén bütykölni kell, az opciók magyarázatát lásd a FAT résznél
      • a 2.6 kernel alatt az utf8 helyett az nls=utf8 a szabályos
    • ISO9660
      • az ékezetes karakterek megfelelő kezeléséhez itt is alkalmazni kell az utf8 vagy iocharset=iso8859-2 kapcsolót

Az ötödik és hatodik oszlop kompatibilitási okokból maradt meg. Az előbbi (fs_freq) meghatározza, hogy mely állományrendszereke legyenek a dump paranccsal backupolhatók; ha nem használod ezt a programot, akkor 0-ra állítsd ezt. Az utóbbit (fs_passno) az fsck használja annak meghatározására, hogy boot során melyik állományrendszer legyen előbb ellenőrizve; a rootfst érdemes 1-re állítani, a többi helyi állományrendszert 2-re, a nem automatán mountolódókat (pld.: floppy) 0-ra. Ennek a két utolsó opciónak jelentősége mára lecsökkent, mivel léteznek sokkal fejlettebb backup eszközök és a naplózó fájlrendszerek mountoláskor végrehajtanak önteszteket.

Megjegyzések:

  • audio cdt és dvd videót nem kell csatolni, mivel a lejátszása során a program közvetlen olvassa az adatot; ugyanez igaz az írandó cdre és dvdre is (közvetlen ír a cdre)
  • a rootfst ne mountold noatime módban, mert egyes programok (pld.: backup) az utolsó hozzáférés időpontja nélkül nem működnek megfelelően
  • többféleképp lekérdezhető a jelenleg mountolt állományrendszerek (különbözőképp formázva): mount, cat /proc/mounts, cat /etc/mtab
  • a rootfs igazán elegáns beállításához használd a rootflags=fs_mntops boot paramétert a bootloaderedben (pld.: rootflags=data=journal)
  • ha boot közben vagy mountoláskor a "FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!" figyelmeztetést kapod, akkor ellenőrizd, hogy az adott FAT állományrendszer fstab beállításánál az 'iocharset=utf8' helyett az 'utf8' opció szerepeljen

FIXME: több információ: JFS, XFS, Reiser4, NFS, ...

Kapcsolódó szócikkek