fstab

De la ArchWikiRo
Salt la: navigare, căutare

Rezumat
Acest articol explică modul în care se configurează și utilizează fstab.
Referințe wiki
Persistent block device naming
NTFS Write Support
Firefox Ramdisk
Boot Debugging
udev

Fișierul /etc/fstab conține informații statice despre sistemul de fișiere (filesystem). Acesta definește felul în care dispozitivele și partițiile sunt montate și integrate în mare parte în sistem. Este citit de către comanda mount pentru a determina ce opțiuni să folosească atunci când montează un anumit dispozitiv sau partiție.

Cuprins

Exemplu

Un /etc/fstab simplu, care folosește numele descrise de către kernel:

/etc/fstab
# <file system>        <dir>         <type>    <options>             <dump> <pass>

tmpfs                  /tmp          tmpfs     nodev,nosuid          0      0

/dev/sda1              /             ext4      defaults,noatime      0      1
/dev/sda2              none          swap      defaults              0      0
/dev/sda3              /home         ext4      defaults,noatime      0      2

Definițiile câmpurilor

Fișierul /etc/fstab conține următoarele câmpuri separate printr-un spațiu sau tab:

 <file system>        <dir>         <type>    <options>             <dump> <pass>
  • <file system> - partiția sau dispozitivul de stocare a datelor ce urmează a fi montată.
  • <dir> - destinația unde câmpul <file system> urmează să fie montat.
  • <type> - sistemul de fișiere al partiției sau al dispozitivului de stocare ce urmează să fie montat. Există suport pentru mai multe sisteme de fișiere: ext2, ext3, ext4, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap și auto. Parametrul auto permite comenzii mount să ghicească ce fel de sistem de fișiere este folosit. Este util în cazul CD/DVD-urilor.
  • <options> - opțiunile de montare pentru sistemul de fișiere care urmează să fie folosit. De observat este că unele opțiuni de montare sunt specifice pentru anumite sisteme de fișiere. Câteva dintre opțiunile cele mai cunoscute sunt:
  • auto - Montare automată la pornire, sau atunci când mount -a este folosit.
  • noauto - Montare doar atunci când doriți.
  • exec - Permite executarea programelor/scripturilor.
  • noexec - Interzice executarea programelor/scripturilor.
  • ro - Montare a sistemului de fișiere ca Read-Only.
  • rw - Montare a sistemului de fișiere cu permisiuni de scriere.
  • user - Permite oricărui utilizator să monteze sistemul de fișiere. Aceasta implică automat noexec, nosuid, nodev, decât dacă este specificat altfel în altă parte.
  • users - Permite montarea sistemului de fișiere oricărui utilizator din grupul users.
  • nouser - Permite montarea sistemului de fișiere doar userului root.
  • owner - Dă voie proprietarului dispozitivului (owner-ul) să monteze.
  • sync - I/O în mod sincron.
  • async - I/O în mod asincron.
  • dev - Interpretarea dispozitivelor speciale (cele din folderul /dev).
  • nodev - Neinterpretarea dispozitivelor speciale.
  • suid - Permite folosirea atributelor suid și sgid. Sunt mai mult folosite pentru a permite utilizatorilor să ruleze executabile cu privilegii temporare de root pentru a realiza o sarcină specifică.
  • nosuid - Interzice folosirea atributelor suid și sgid.
  • noatime - Neactualizarea timpului de acces pe sistemul de fișiere. Poate ajuta la îmbunătățirea performanței (vedeți Opțiuni atime).
  • nodiratime - Neactualizarea timpului de acces al folderelor de pe sistemul de fișiere. Poate ajuta la îmbunătățirea performanței (vedeți Opțiuni atime).
  • relatime - Actualizarea timpului de acces relativ față de data la care conținutul a fost modificat sau data a fost schimbată. Timpul de acces este actualizat doar în cazul în care cel precedent este mai devreme decât cel recent. (E la fel ca noatime, doar că nu strică Mutt sau alte programe care țin neapărat să știe dacă un fișier a fost citit de când a fost modificat ultima oară.) Poate ajuta la îmbunătățirea performanței (vedeți Opțiuni atime).
  • flush - Împreună cu opțiunea vfat termină ce avea de scris, făcând ferestrele de copiere sau barele de progres să rămână pe ecran până când toate datele sunt scrise.
  • defaults - opțiunile default de montare folosite de către sistemul de fișiere. Opțiunile default pentru ext4 sunt: rw, suid, dev, exec, auto, nouser, async.
  • <dump> - folosit de către utilitarul dump pentru a decide când să creeze un backup. Dump verifică această coloană și folosește numărul respectiv pentru a decide dacă ar trebui să-i facă un backup sistemului de fișiere. Înregistrările posibile sunt 0 și 1. Dacă este 0, dump va ignora sistemul de fișiere; dacă este 1, dump va face un backup. Majoritatea utilizatorilor nu au nevoie să aibă dump instalat, așa că ar trebui să treacă 0 aici.
  • <pass> - folosit de către fsck pentru a decide ordinea în care sistemele de fișiere vor fi verificare. Înregistrări posibile sunt 0, 1 și 2. Rădăcina sistemului de fișiere (root) trebuie să aibă cea mai mare prioritate, notată cu 1 - restul sistemelor de fișiere trebuie să fie notate cu 2 dacă doriți ca acestea să fie verificate. Cele cu valoare 0 nu vor fi verificare de către utilitarul fsck.

Identificarea sistemelor de fișiere

Sunt trei caracteristici după care poate fi identificată o partiție sau un dispozitiv de stocare în /etc/fstab: după descrierea folosită de către kernel, etichetă sau UUID. Avantajul folosirii UUID-urilor sau etichetelor este că nu se ține cont de ordinea în care sunt conectate (fizic, vorbind) unitățile de stocare la calculator. Asta reprezintă un avantaj în cazul în care ordinea s-a schimbat din BIOS, sau în cazul în care cablurile au făcut schimb între ele. De asemenea, BIOS-ul ar putea schimba uneori ordinea unităților de stocare. Puteți citi mai multe despre asta în articolul Persistent block device naming.

Pentru a lista informații de bază despre partiții, executați:

$ 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

Numele dat de către kernel

Executați lsblk -f pentru a lista partițiile, și adăugați-le prefixul /dev.

Vedeți exemplul.

Etichetă

Notă: Fiecare etichetă trebuie să fie unică, pentru prevenirea oricăror eventuale conflicte.

Pentru a eticheta un dispozitiv sau partiție, vedeți acest articol. Puteți, de asemenea, instala și folosi gparted, însă redenumirea partiției root va trebui efectuată folosind o distribuție „live” de Linux (Parted Magic, Ubuntu, etc) fiindcă partiția trebuie mai întâi demontată.

Executați lsblk -f pentru a lista partițiile, și adăugați-le prefixul LABEL= :

/etc/fstab
# <file system>        <dir>         <type>    <options>             <dump> <pass>

tmpfs                  /tmp          tmpfs     nodev,nosuid          0      0
 
LABEL=Arch_Linux       /             ext4      defaults,noatime      0      1
LABEL=Arch_Swap        none          swap      defaults              0      0

UUID

Toate partițiile și dispozitivele au un cod UUID unic. Acestea sunt generate de către utilitare specifice sistemelor de fișiere (ex: mkfs.*) atunci când creați sau formatați o partiție.

Executați lsblk -f pentru a lista partițiile, și adăugați-le prefixul UUID= :

Pont: Dacă doriți să afișați doar UUID-ul unei anumite partiții:
$ lsblk -no UUID /dev/sda2
/etc/fstab
# <file system>                            <dir>     <type>    <options>             <dump> <pass>

tmpfs                                      /tmp      tmpfs     nodev,nosuid          0      0

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

Ponturi și trucuri

UUID pentru swap

În cazul în care partiția swap nu conține un UUID, acesta se poate adăuga manual. Se poate observa atunci când comanda lsblk -f nu afișează UUID-ul pentru swap. Mai jos găsiți niște pași pentru alocarea unui UUID:

Identificați partiția swap:

# swapon -s

Dezactivați swap-ul:

# swapoff /dev/sda7

Creați din nou un swap cu un UUID proaspăt alocat:

# mkswap -U random /dev/sda7

Activați swap-ul:

# swapon /dev/sda7

Spații în foldere

Dacă vreun mountpoint conține spații, folosiți caracterul \ urmat de codul din sistemul de numerație octal 040 pentru emularea acestora:

/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

Dispozitive externe

Dispozitivele externe pentru care se dorește montarea acestora atunci când sunt prezente și ignorarea lor când sunt absente ar putea avea nevoie de opțiunea nofail. Aceasta previne erorile eventuale raportate în timpul pornirii.

/etc/fstab
/dev/sdg1        /media/backup    jfs    defaults,nofail    0  2

Opțiuni atime

Folosirea opțiunilor noatime, nodiratime sau relatime pot îmbunătăți performața unităților de stocare. Inițial, Linux folosește atime, opțiune care ţine o evidenţă (prin scrierea pe drive) de fiecare dată când citeşte orice. Lucrul acesta este mai util atunci când Linux este folosit pentru servere; nu are prea mare valoare pe sisteme desktop. Partea cea mai urâtă a opțiunii atime este că, chiar dacă un fișier este citit din cache (citit din memorie în loc de pe drive) tot va rezulta într-o scriere! Prin folosirea opțiunii noatime scrierea datei accesării (acces time) va fi dezactivată complet de fiecare dată când un fișier este citit. Aceasta funcționează destul de bine pentru aproape toate programele, cu excepția unor cazuri rare precum Mutt care are nevoie de această informație. Pentru mutt, ar trebui să folosiți doar opțiunea relatime. Prin opțiunea relatime scrierea datei la care a fost accesat va avea loc doar atunci când fișierul este modificat (spre deosebire de noatime unde data accesării nu va scrisă deloc și unde aceasta va fi mai veche decât data modificării). Opțiunea nodiratime dezactivează data accesării doar pentru foldere în timp ce restul fișierelor vor conține această informație. Cel mai bun compromis ar putea consta în folosirea opțiunii relatime unde programe de genul Mutt vor continua să funcționeze, însă tot veți obține o creștere a performanței deoarece fișierele nu vor conține data accesării decât dacă au fost modificate.

Notă: Opțiunea noatime include nodiratime. Nu este necesar să le specificați pe amândouă. [1]

tmpfs

tmpfs este un sistem de fișiere temporar care locuiește în memorie și/sau în partiția(-iile) swap, în funcție de cât de încărcată este. Montarea folderelor ca tmpfs poate fi o metodă eficientă de a îmbunătăți accesul către fișierele dinăuntru, sau pentru a fi sigur că, conținutul acestora este șters la repornire.

Câteva foldere unde tmpfs este folosit în mod normal sunt /tmp, /var/lock și /var/run. Să NU îl folosiți pentru /var/tmp, deoarece acel folder este intenționat fișierelor temporare menite să fie păstrate între reporniri ale calculatorului. Arch folosește un folder tmpfs /run, pentru care /var/run și /var/lock există doar ca link-uri simbolice pentru compatibilitate. Este folosit și pentru /tmp dintr-un /etc/fstab nemodificat.

Notă: Atunci când este folosit systemd, fișierele temporare din folderele tmpfs pot fi recreate la pornire folosind tmpfiles.d.

Inițial, o partiție tmpfs are o dimensiune maximă de jumătate din totalul de memorie RAM, însă aceasta poate fi personalizată. De notat ar fi că, consumul real de memorie/swap depinde de cât încărcată este, deoarece partițiile tmpfs nu pot folosi memorie decât atunci când este într-adevăr necesar.

Pentru a folosi tmpfs pentru /tmp, adăugați această linie în /etc/fstab:

/etc/fstab
tmpfs   /tmp         tmpfs   nodev,nosuid                  0  0

Poate că doriți sau nu să specificați și dimensiunea aici, însă în acest caz ar trebui să nu vă atingeți de opțiunea mode pentru a fi sigur că fișierele dețin permisiunile (1777) corecte. În exemplul de mai sus, /tmp va fi setat să folosească până în jumătate din totalul de RAM. Pentru a seta în mod explicit dimensiunea maximă, folosiți opțiunea size la montare:

/etc/fstab
tmpfs   /tmp         tmpfs   nodev,nosuid,size=2G          0  0

Mai jos găsiți un exemplu mai avansat despre montarea tmpfs specifică pentru un utilizator. Este folositoare pentru website-uri, fișiere temporare mysql, ~/.vim/ și altele. Este important să treceți aici opțiunile de montare ideale pentru ceea ce încercați să realizați. Scopul este să aveți niște setări pe cât se poate de securizate pentru a preveni abuzul. Limitarea mărimii, și specificarea uid și gid + mode este considerată o protecție foarte bună. Mai multe informații.

/etc/fstab
tmpfs   /www/cache    tmpfs  rw,size=1G,nr_inodes=5k,noexec,nodev,nosuid,uid=648,gid=648,mode=1700   0  0

Pentru mai multe informații citiți manualul comenzii mount. Una dintre opțiunile de montare folositoare din acest manual este opțiunea default. Măcar înțelegeți ce face aceasta.

Dați restart pentru ca schimbările să aibă loc. Observați că deși ar fi tentant să executați un simplu mount -a pentru ca schimbările să aibă loc imediat, aceasta va face ca toate fișierele aflate în folderele respective să devină inaccesibile (problematic mai ales pentru programe care folosesc fișiere lockfiles, de exemplu). Totuși, dacă toate folderele sunt goale, ați putea executa mount -a în siguranță în loc să dați restart la calculator (sau să le montați pe rând).

După aplicarea modificărilor, ar fi bine să verificați dacă acestea au avut loc examinând fișierul /proc/mounts și folosind findmnt:

$ findmnt --target /tmp
TARGET SOURCE FSTYPE OPTIONS
/tmp   tmpfs  tmpfs  rw,nosuid,nodev,relatime

Modul de folosire

În general, sarcinile cu I/O intensiv și programele care execută frecvent operațiuni de citire/scriere pot beneficia prin folosirea unui folder tmpfs. Pentru unele aplicații se poate obține chiar și un câștig substanțial prin descărcarea parțială (sau completă) a datelor acestora pe memoria partajată. Spre exemplu, mutarea în RAM a profilului din Firefox] dă dovadă de o îmbunătățire semnificativă a performanței.

Îmbunătățirea timpului de construire
Notă: Folderul tmpfs (/tmp, în cazul acesta) trebuie să fie montat fără noexec, altfel va fi prevenită execuția utilitarelor și a scripturilor de construire. De asemenea, după cum este menționat mai sus, dimensiunea inițială este de jumătate din totalul de memorie RAM disponibilă. Este posibil să rămâneți fără spațiu.

Puteți executa makepkg folosind un folder tmpfs pe post de director de construire (setare prezentă și în /etc/makepkg.conf):

$ BUILDDIR=/tmp/makepkg makepkg

Scrierea pe FAT32 ca utilizator obişnuit

Pentru a scrie pe o partiție FAT32, trebuie să aplicați câteva modificări fișierului /etc/fstab.

/etc/fstab
/dev/sdxY    /mnt/some_folder  vfat   user,rw,umask=000              0  0

Opțiunea user înseamnă că orice utilizator (chiar dacă nu are privilegii de root) poate monta și demonta partiția /dev/sdX. rw permite accesul scriere-citire (read-write); opțiunea umask suprimă privilegiile selectate - spre exemplu, umask=111 suprimă privilegiile de execuție. Problema este că acest marcaj va suprima privilegiile de execuție și pentru foldere, așa că ar trebui corectată folosind dmask=000. Care este motivul folosirii acestor opțiuni? Fără acestea toate fișierele vor fi executabile. Puteți folosi opțiunea showexec în loc de umask și dmask, astfel afișând executabilele de Windows (com, exe, bat) în culorile specifice pentru executabile.

De exemplu, dacă partiția FAT32 este prezentă ca /dev/sda9, și doriți să o montați ca /mnt/fat32, atunci veți folosi:

/etc/fstab
/dev/sda9    /mnt/fat32        vfat   user,rw,umask=111,dmask=000    0  0

Alte resurse

Unelte personale