fstab (Magyar)

From ArchWiki
Revision as of 08:45, 10 September 2017 by Lahwaacz (talk | contribs) (update man page link)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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 és auto. Az auto 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 a mount -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 a noexec, nosuid és nodev 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[broken link: invalid section]).
  • 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[broken link: invalid section]).
  • 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 - A vfat 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[broken link: invalid section].

Címke

Megjegyzés: Az esetleges ütközéseket kiküszöbölendő, minden címkének egyedinek kell lennie.

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:

Tip: Ha csak az UUID-kat akarjuk listázni, használjuk a következőt:
$ 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.

Megjegyzés: Ezzel a kis trükkel a /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. Az atime 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 a relatime 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.
Megjegyzés: A noatime eleve magában foglalja a nodiratime-ot. Nem kell mindkettőt jelölni.
  • A relatime engedélyezi az elérés idejének írását, de csak akkor, ha az állomány módosul (a noatime-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 a defaults 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.

Megjegyzés: Ha systemd-t használunk, a tmpfs könyvtárakban levő ideiglenes állományokat a tmpfiles.d használatával újra létrehozhatjuk indításkor.

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 #See also[broken link: invalid section] 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

Merge-arrows-2.pngThis article or section is a candidate for merging with USB Storage Devices#Mounting USB memory.Merge-arrows-2.png

Notes: The linked section assumes that the partition on USB storage uses FAT32 or NTFS filesystem, so we have two sections covering the same topic. Either merge everything here or in the linked section. (Discuss in Talk:Fstab (Magyar)#)

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 /

Lásd még