fstab (Magyar)
Az /etc/fstab fájl határozza meg, hogy a lemezek partícióit, más blokkeszközöket, vagy távoli fájlrendszereket hogyan csatolunk a fájlrendszerünkbe.
Minden csatolandó fájlrendszert különálló sor ír le. Ezek a leírások rendszer indításakor dinamikusan systemd csatolási egységgé (mount unit) konvertálódnak, valamint akkor, amikor a rendszerkezelőt újratöltjük. Az alapértelmezett beállítások automatikusan ellenőrzik (fsck) és csatolják a fájlrendszereket, mielőtt az azok felcsatolását igénylő szolgáltatások elindulnának. Például a systemd magától megbizonyosodik róla, hogy a távoli fájlrendszerek, mint az NFS vagy a Samba csak azután induljanak, hogy a hálózatunk már működőképes. Ezért a helyi és távoli fájlrendszer-csatolások, melyek az /etc/fstab
-ban szerepelnek, külső beavatkozás nélkül is működőképesek. Lásd a systemd.mount(5) leírást részletekért.
A mount
parancs az fstab-ot hasznája, ha parancsként csak a könyvtárt vagy az eszköz nevét (pl. mount /dev/sdb2 vagy mount /my/mount) adjuk meg, s a parancs ilyenkor az fstab-ból keresi vissza a másik paramétert. Ha így teszünk, az fstab-ban foglalt csatolási opciók lesznek használatosak.
Példa az fstab állományra
Egyszerű /etc/fstab
fájl, mely kernel név szerinti leírókat használ:
/etc/fstab
# <file system> <dir> <type> <options> <dump> <pass> /dev/sda1 / ext4 defaults,noatime 0 1 /dev/sda2 none swap defaults 0 0 /dev/sda3 /home ext4 defaults,noatime 0 2
A mezők definíciói
Az /etc/fstab
állomány a következő szóközzel vagy tabulátorral elválasztott mezőket tartalmazza:
<file system> <dir> <type> <options> <dump> <pass>
- <file system> - (fájlrendszer) a csatolandó partíció vagy tárolóeszköz.
- <dir> - (könyvtár) a csatolási pont, ahova a <file system> csatolásra kerül.
-
<type> - (típus) a csatolandó partíció vagy tárolóeszköz fájlrendszerének típusa. Sok különböző fájlrendszer támogatott:
ext2
,ext3
,ext4
,btrfs
,reiserfs
,xfs
,jfs
,smbfs
,iso9660
,vfat
,ntfs
,swap
ésauto
. Azauto
típus a mount parancsra bízza a használandó fájlrendszer típusának meghatározását. Ez hasznos lehet az optikai adathordozók esetén (CD/DVD). - <options> - (opciók) az adott fájlrendszer csatolási opciói. Jegyezzük meg, hogy egyes csatolási opciók csak egy-egy fájlrendszerre jellemzők (mount(8)). A leggyakoribbak a következők:
-
auto
- Csatoljuk automatikusan a rendszer indításakor, vagy ha amount -a
parancs kerül használatra. -
noauto
- Csak akkor csatoljuk, ha ezt külön paranccsal kérjük. -
exec
- Engedélyezi a bináris fájlok végrehajtását a fájlrendszeren. -
noexec
- Tiltja a bináris fájlok végrehajtását a fájlrendszeren. -
ro
- Csak olvashatóan csatolja a fájlrendszert. -
rw
- Írhatóan és olvashatóan csatolja a fájlrendszert. -
user
- Bármely felhasználónak engedélyezi a fájlrendszer csatolását. Ez automatikusan maga után vonja anoexec
,nosuid
ésnodev
opciókat, kivéve, ha ezt külön jelezzük. -
users
- Bármely felhasználónak, aki része az users csoportnak, engedélyezi a fájlrendszer csatolását. -
nouser
- Csak root csatolhatja a fájlrendszert. -
owner
- Csak az eszköz tulajdonosa csatolhatja a fájlrendszert. -
sync
- Az I/O szinkronizáltan történik. -
async
- I/O nem szinkronizáltan történik. -
dev
- Értelmezi a speciális blokkeszközöket a fájlrendszeren. -
nodev
- Nem értelmezi a speciális blokkeszközöket a fájlrendszeren. -
suid
- Engedélyezi az suid és sgid bitek működését a fájlrendszeren. Ezek teszik lehetővé, hogy a felhasználók időlegesen megemelt privilégiumokkal bináris kódot hajtsanak végre egy bizonyos cél érdekében. -
nosuid
- Meggátolja az suid és sgid bitek működését. -
noatime
- Nem frissíti az inode-ok elérési idejét a fájlrendszeren - növelheti a teljesítményt, lásd #atime opciók). -
nodiratime
- Nem frissíti a könyvtár inode-ok elérési idejét a fájlrendszeren - növelheti a teljesítményt, lásd #atime opciók). -
relatime
- Az inode-ok elérési idejét a módosítás vagy változtatás idejéhez képest frissíti. Az elérési idő csak akkor frissül, ha az előző elérés előbb történt, mint a jelenlegi módosítási vagy változtatási idő. (Hasonló a noatime-hoz, de nem gátolja a mutt és a hasonló programok működését, melyeknek tudniuk kell, hogy egy állomány már olvasásra került-e a legutóbbi módosítása óta.) Növelheti a teljesítményt, lásd az atime opciókat). -
discard
- Hajtson végre TRIM parancsokat az alatta elhelyezkedő blokkeszközön, amikor blokkok szabadulnak fel. Használata erősen javasolt, ha a fájlrendszer SSD meghajtón foglal helyet. -
flush
- Avfat
opció, mellyel az adat gyakrabban kerül tisztításra, így a másolási párbeszédablakok és állapotjelző csíkok megmaradnak, míg minden adat ténylegesen írásra kerül. -
nofail
- Csatoljuk fel az eszközt, ha elérhető, de ne vegyünk róla tudomást, ha nem az. Ezzel kiküszöbölhetők a hibaüzenetek, ha hordozható eszközről indítjuk a rendszert. -
defaults
- Az adott fájlrendszer alapértelmezett csatolási opciói kerülnek használatra. Ezek például az ext4 esetén:rw
,suid
,dev
,exec
,auto
,nouser
,async
.
-
- <dump> - (kiírás) a dump eszköz használja annak eldöntésére, hogy készítsen-e biztonsági másolatot, vagy sem. A dump ellenőrzi ezt a mezőt, s annak számértékéből állapítja meg, hogy szükség van-e a fájlrendszer másolatának létrehozására. A lehetséges értékek 0 és 1. Ha 0, a dump nem vesz tudomást a fájlrendszerről; ha 1, a dump készít egy másolatot. Mivel a legtöbb felhasználó nem használ dump-ot, ez a bejegyzés 0 maradhat.
- <pass> - (menet) Az fsck eszköz használja annak megállapítására, hogy milyen sorrendben ellenőrizze le a fájlrendszereket. A lehetséges értékek a 0, 1 és a 2. A root fájlrendszeré az 1-es, legmagasabb prioritás (kivéve, ha ez btrfs fájlrendszer, amikor is ez 0) - minden más ellenőrzendő fájlrendszer prioritása legyen 2-es. Az olyan fájlrendszerek, ahol 0 értéket állítunk be, nem kerülnek ellenőrzésre.
A fájlrendszerek azonosítása
Háromféle módja van a partíciók vagy tárolóeszközök azonosításának az /etc/fstab
-ban: a rendszermag szerinti leíró (kernel name descriptor) alapján, címke vagy UUID alapján. Az UUID vagy a címkék használatának előnye az, hogy nem függenek attól a sorrendtől, ahogy a meghajtók fizikai összeköttetésbe kerültek a géppel. Mindez nagyon hasznos lehet, ha a BIOS-ban a tárolóegységek sorrendje megváltozik, vagy egyszerűen csak változtatunk a kábelezésükön. Emellett a BIOS olykor magától is megváltoztathatja a tárolóegységek sorrendjét. Erről a Persistent block device naming cikkben olvashatunk többet.
A partíciókról alapvető információt az alábbi paranccsal szerezhetünk:
$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 Arch_Linux 978e3e81-8048-4ae1-8a06-aa727458e8ff / ├─sda2 ntfs Windows 6C1093E61093B594 └─sda3 ext4 Storage f838b24e-3a66-4d02-86f4-a2e73e454336 /media/Storage sdb ├─sdb1 ntfs Games 9E68F00568EFD9D3 └─sdb2 ext4 Backup 14d50a6c-e083-42f2-b9c4-bc8bae38d274 /media/Backup sdc └─sdc1 vfat Camera 47FA-4071 /media/Camera
Rendszermag szerinti leíró
Futassuk az lsblk -f
parancsot a partíciók listázásához, és helyezzük eléjük a /dev
előtagot.
Lásd a példát.
Címke
Arról, hogy hogyan lássunk el címkével partíciókat vagy meghajtókat, Persistent block device naming#by-label cikkben olvashatunk. A root partíció újranevezését valamiféle "live" médiumról kell elvégeznünk, mert a partíciót első körben le kell választanunk.
Futtassuk az lsblk -f
parancsot a partíciók listázásához, és helyezzük eléjük a LABEL=
előtagot:
/etc/fstab
# <file system> <dir> <type> <options> <dump> <pass> LABEL=Arch_Linux / ext4 defaults,noatime 0 1 LABEL=Arch_Swap none swap defaults 0 0
UUID
Minden partíciónak és tárolóegységnek van egy egyedi UUID-je. Ezt a fájlrendszerek segédprogramjai generálják (pl.: mkfs.*
), amikor a partíciót létrehozzuk vagy formázzuk. Lássuk a Persistent block device naming#by-uuid cikket.
Futtassuk az lsblk -f
parancsot a partíciók listázásához, és lássuk el őket a UUID=
előtaggal:
$ lsblk -no UUID /dev/sda2
/etc/fstab
# <file system> <dir> <type> <options> <dump> <pass> UUID=24f28fc6-717e-4bcd-a5f7-32b959024e26 / ext4 defaults,noatime 0 1 UUID=03ec5dd3-45c0-4f95-a363-61ff321a09ff /home ext4 defaults,noatime 0 2 UUID=4209c845-f495-4c43-8a03-5363dd433153 none swap defaults 0 0
Tippek és trükkök
Automatikus csatolás systemd-vel
Ha a /home
partíciónk nagyméretű, jobb, ha a /home
-tól nem függő szolgáltatásaink már akkor is indulhatnak, míg a /home
fsck ellenőrzés alatt áll. Ezt úgy érhetjük el, hogy az alábbi opciókat adjuk az /etc/fstab
-ban a /home
partícióhoz:
noauto,x-systemd.automount
Ez akkor ellenőrzi és csatolja a /home
partíciót, amikor azt először elérjük, a kernel pedig tárolja az összes fájlelérést, míg a /home
nem áll készen.
/home
partíció fájlrendszerének típusa csatoláskor autofs
lesz, melyet az mlocate figyelmen kívül hagy. Ezáltal tehát a /home
automatikus felcsatolása a rendszerünktől függően egy-két másodperc alatt fog megtörténni, tehát lehet, hogy ez a trükk nem is túl hasznos.Ugyanez vonatkozik a távoli fájlrendszerek felcsatolására is. Ha azt akarjuk, hogy csak az első hozzáféréskor csatolódjanak, ugyanígy a noauto,x-systemd.automount
paramétereket kell használnunk. Ehhez még használhatjuk a x-systemd.device-timeout=#
opciót egy bizonyos várakozási idő megadásához, ha a hálózati erőforrás esetleg nem lenne elérhető.
Ha kulcsokkal titkosított fájlrendszereink vannak, a noauto
paramétert a megfelelő bejegyzésekhez adhatjuk az /etc/crypttab
-ban. A systemd így nem nyitja meg a titkosított eszközt a rendszer indulásakor, hanem vár, míg valaki hozzá akar férni, s megnyitja a megjelölt kulccsal, mielőtt felcsatolja. Ez induláskor megspórolhat pár másodpercet, ha például titkosított RAID eszközt használunk, mivel a systemd-nek nem kell várnia, míg az eszköz elérhető lesz. Például:
/etc/crypttab
data /dev/md0 /root/key noauto
Szóköz az elérési utakban
Ha bármely csatolási pont szóközt tartalmaz, használjuk az escape karaktert \
, melyet 040
háromjegyű nyolcas számrendszerű kód követ, hogy a szóközt emulálja:
/etc/fstab
UUID=47FA-4071 /home/username/Camera\040Pictures vfat defaults,noatime 0 0 /dev/sda7 /media/100\040GB\040(Storage) ext4 defaults,noatime,user 0 2
Külső meghajtók
A külső eszközök, melyeket jelenlétükben csatolunk, de ha nincsenek jelen, figyelmen kívül hagyunk, a nofail
opciót igénylik. Így nem kapunk hibaüzeneteket rendszerindításkor.
/etc/fstab
/dev/sdg1 /media/backup jfs defaults,nofail 0 2
atime opciók
A noatime
, nodiratime
vagy relatime
opciók használata hatással lehet a meghajtó teljesítményére.
- Az
atime
egy állomány minden egyes elérésekor frissíti annak atime-ját. Ez a leghasznosabb, ha az ember szervert üzemeltet; ám egy asztali rendszer esetében nem sok értelme van. Azatime
opció használatának egyik hátulütője az, hogy még a gyorsítótárból való olvasás (ha memóriából olvasunk a lemez helyett)is íráshoz vezet!
- A
noatime
opció teljesen kikapcsolja az elérések írását a lemezen, ahányszor csak olvasunk egy állományt. Ez legtöbbször nagyon jól működik, kivéve egyes ritka esetekben (Mutt), melyeknek épp erre az információra van szükségük. A mutt használatához arelatime
opciót kell használni.
- A
nodiratime
opció kikapcsolja az elérések írását a lemezen, de csak könyvtárak elérésekor, míg minden más állomány elérése továbbra is írásra kerül.
- A
relatime
engedélyezi az elérés idejének írását, de csak akkor, ha az állomány módosul (anoatime
-mal ellenben, ahol a hozzáférési idő nem módosul és mindig régebbi lesz, mint a módosítás ideje). A legjobb kompromisszum ezen opció használata lehet, mert a Mutt és a hozzá hasonló programok működni fognak, de bizonyos mértékben a teljesítmény is megnő, hiszen az állományaink elérési ideje csak módosításkor változik. Ez az opció használatos, ha csak adefaults
kulcsszót, vagy semmiféle opciót nem adunk meg az fstab-ban egy adott csatolási ponthoz.
tmpfs
A tmpfs egy ideiglenes fájlrendszer, mely a memóriában és/vagy a cserehelyen található, attól függően, hogy mennyire töltjük meg. Ha könyvtárakat csatolunk tmpfs fájlrendszerként, azzal jelentősen meggyorsul tartalmuk és állományaik elérési ideje; illetve ez biztossá teszi, hogy tartalmuk újraindításkor kiürüljön.
A tmpfs-ként használt könyvtárak között van például a /tmp, /var/lock és /var/run. NE HASZNÁLJUK a /var/tmp esetében, mert ebben a könyvtárban olyan ideiglenes állományok foglalnak helyet, melyeknek két újraindítás közt is meg kell őrződniük. Az Arch tmpfs-t használ a /run
könyvtárhoz, ahol a /var/run
és a /var/lock
csak symlinks-ként létezik a kompatibilitás kedvéért. A systemd alapértelmezett működése szerint a /tmp
-hez is használatos, ebben az esetben nem igényel külön bejegyzést az /etc/fstab
-ban, csak ha különösebb beállításokat igénylünk.
Alapesetben egy tmpfs partíció mérete a teljes RAM felére állítódik be, de ez igény szerint szerkeszthető. Jegyezzük meg, hogy a tényleges memória/swap fogyasztás csak a kitöltöttségtől függ, mivel a tmpfs partíciók nem fogyasztanak RAM-ot, míg ténylegesen nem szükséges.
Hogy beállítsuk a saját szükségeink szerinti méretet, ebben a példában a /tmp
csatolásán változtatva, használjuk a size
csatolási opciót:
/etc/fstab
tmpfs /tmp tmpfs nodev,nosuid,size=2G 0 0
Következzék egy kissé kihegyezettebb példa egy tmpfs csatolására. Ez hasznos lehet weboldalak, ideiglenes mysql állományok, ~/.vim/
, és sok minden más esetében. Az igazán fontos az, hogy az ideális opciókat találjuk meg ahhoz, amit csinálni szeretnénk. A cél az, hogy a beállításaink biztonságosak legyenek. Ha a méretet és a hozzáférési jogot korlátozzuk (uid és gid értékek, valamint mode érték megadásával, az nagyon biztonságos. Ebben a tárgyban tájékozódhatunk még a #Lásd még lista alapján.
/etc/fstab
tmpfs /www/cache tmpfs rw,size=1G,nr_inodes=5k,noexec,nodev,nosuid,uid=648,gid=648,mode=1700 0 0
Lásd a mount
parancs man oldalát több információért. One useful mount option in the man page is the default
option. At least understand that.
A változtatások érvénybe léptetéséhez indítsuk újra a rendszert. Jegyezzük meg, hogy bár csábító lehet a mount -a
használata az azonnali hatás érdekében, ez az említett könyvtárak állományait hozzáférhetetlenné teszi (ez különösen problémás lehet lock fájlokat használó programok esetén); ám ha mindegyik üres, biztonságos lehet a mount -a
használata (vagy egyenkénti, manuális felcsatolásuk) az újraindítás helyett.
A válzoztatások érvénybe léptetése után leellenőrizhetjük, hogy minden í kívánt módon működik-e, belenézve a /proc/mounts
-ba és a findmnt
-vel:
$ findmnt --target /tmp
TARGET SOURCE FSTYPE OPTIONS /tmp tmpfs tmpfs rw,nosuid,nodev,relatime
Használata
Általánosságban, az I/O-intenzív folyamatok és programok, melyek gyakran futtatnak írás/olvasás műveleteket, hasznot húzhatnak egy tmpfs könyvtár használatából. Bizonyos alkalmazásoknak kifejezetten az előnyére válhat, ha néhány (vagy az összes) adatuk a megosztott memóriába kerül. Így például a Firefox profil RAM-ba való áthelyezése jelentős teljesítmény-növekedést eredményez.
Fordítási idők javítása
A csomagfordítás rengeteg apró fájl kezelését és számtalan I/O műveletet igényel; ezért ez az egyik olyan folyamat, mely a legtöbb előnyét élvezi, ha #tmpfs-be helyezzük a munkakönyvtárát.
Egy munkamenetre
A BUILDDIR
értéket parancshéjban exportálhatjuk, hogy a makepkg munkakönyvtárt ideiglenesen valamely létező tmpfs-ben helyezzen el:
$ BUILDDIR=/tmp/makepkg makepkg
Véglegesítve
Csak vegyük ki a kommentet a BUILDDIR
sor elől a /etc/makepkg.conf
fájlban, lásd a Makepkg#Improving compile times cikket a részletekért.
A FAT32 írása egyszerű felhasználóként
A FAT32 partíciókra való íráshoz pár változást kell eszközölni az /etc/fstab
állományban.
/etc/fstab
/dev/sdxY /mnt/some_folder vfat user,rw,umask=000 0 0
A user
zászló annyit tesz, hogy bármely (nem root) felhasználó képes fel-, vagy lecsatolni az /dev/sdX
fájlrendszert. A rw
írás-olvasási hozzáférést ad;
umask
opció elveszi a kijelölt jogokat - például a umask=111
elveszi a végrehajtás jogát. A gond az, hogy ez elveszi a végrehajtás jogát a könyvtárakról is, ezért a dmask=000
opcióval kell korrigálnunk. Lásd Umask.
Ezen opciók nélkül minden fájl végrehajtható lenne. A showexec
opció is használható a umask és dmask helyett, mely a végrehajtható Windows fájlokat (com, exe, bat) végrehajtható színnel jelöli.
Összegzésként, ha például a FAT32 partíciónk a /dev/sda9
, és a /mnt/fat32
alá akarjuk csatolni, a következőt kell használnunk:
/etc/fstab
/dev/sda9 /mnt/fat32 vfat user,rw,umask=111,dmask=000 0 0
A root partíció újracsatolása
Ha valamilyen okból a root partíciót helytelenül csak olvashatóként csatoltuk, a következő paranccsal írható/olvasható-ként csatolhatjuk fel:
# mount -o remount,rw /