fstab
| 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ă
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= :
/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.
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.
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
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