sonyps4.ru

FreeBSD: Montarea automată a sistemelor de fișiere NFS și SMBFS folosind AMD. Sistem de fișiere Creați un sistem de fișiere în memorie

Deschid o serie de mini-manuale „pentru cei care nu știu să folosească căutarea și să pună întrebări stupide”. Subiectul de astăzi este montarea și demontarea discurilor în FreeBSD.

Așa că vrem să accesăm datele de pe un hard disk suplimentar sau pe o unitate flash. Pentru a face acest lucru, trebuie să-l conectăm (montăm) la un director gol, după care vom avea acces la datele de pe acest disc din folderul creat/existent anterior. (IMPORTANT: nu montați discul în directoare deja ocupate, veți primi conținutul discului dvs., de exemplu, în loc de conținutul folderului pentru fișierele de configurare, gândiți-vă la consecințele pentru dvs.;))

Mai întâi, creați un folder gol. Să ne imaginăm că utilizatorul shitus vrea să conecteze discul la un nou director numit pron. Pentru a face acest lucru, el creează un nou folder în directorul său principal (probabil cel mai sigur loc).

Mkdir /home/shitus/pron Următorul pas este conectarea hard disk-ului la punctul de montare (tocmai am creat un folder). Puteți găsi toate dispozitivele de pe sistemul dvs. în folderul /dev/. În cazul meu, vreau să-mi conectez dispozitivul /dev/da2 la folderul /home/shitus/pron

Montați /dev/da2 /home/shitus/pron Acum puteți vizualiza conținutul discului dvs. în directorul de mai sus.

Cum să conectați alte sisteme de fișiere non-BSD

În cazul meu, avem o unitate USB cu sistemul de fișiere Fat32. Astfel, la montarea pe BSD, trebuie să indicați clar tipul de sistem de fișiere folosit.

Mount -t msdosfs /dev/da2s1 /home/shitus/pron/

Pentru alte sisteme de fișiere, puteți consulta documentația FreeBSD, nu voi da un link, pentru că Google este totul.

Cum se demontează/demontează un sistem de fișiere

Să presupunem că doriți să deconectați/eliminați un dispozitiv de fișiere conectat. Pot exista o mulțime de motive pentru acest lucru, în principal acest lucru se face dacă doriți să ștergeți discul sau să îl reconectați la un alt punct de montare. Comanda este foarte simpla -

Umount /home/shitus/pron/

Asigurați-vă că nu vă aflați în acest folder în timp ce executați această comandă, altfel rezultatul va fi zero.

Dacă doriți să montați un disc la pornirea sistemului, atunci trebuie să îl înregistrați în fișierul /etc/fstab în același mod ca cei deja înregistrati acolo. Puteți citi mai multe despre asta și în documentație, sau într-o zi voi scrie despre asta pentru a suta oară.

Pregătirea spațiului pe disc pentru utilizare nu se termină cu crearea de partiții și sisteme de fișiere pe acestea. Toate sistemele de fișiere create trebuie, de asemenea, să fie disponibile pentru FreeBSD. De ce ar trebui să fie montate - adică incluse într-o singură ierarhie de directoare și fișiere, care este desemnată și de numele sistemului de fișiere. Cu toate acestea, dacă mai devreme vorbeam despre organizarea fizică a datelor, acum este timpul să facem cunoștință cu logica acesteia.

Logica sistemului de fișiere

În mod logic, sistemul de fișiere FreeBSD (ca orice sistem Unix) este organizat după un principiu arborescent: la baza lui se află rădăcina (directorul rădăcină, notat cu simbolul / și numit și directorul rădăcină; acesta din urmă nu trebuie confundat cu directorul rădăcină /, care servește drept director principal pentru superutilizator).

Din directorul rădăcină, care poate fi mai mult ca un trunchi de copac, există ramuri - subdirectoare imbricate în el și lăstari - fișiere obișnuite. Acestea din urmă sunt însă puține: în versiunile FreeBSD, acesta este un anumit fișier de entropie (/entropy) și un fișier care descrie dreptul de autor al sistemului /COPYRIGHT.

Dar există destul de multe subdirectoare în directorul rădăcină, iar unele dintre ele sunt aranjate foarte complex în interior, conținând un număr destul de mare de subdirectoare imbricate de niveluri mai profunde.

În principiu, ierarhia directoarelor în toate sistemele Unix este similară, deoarece este reglementată, în primul rând, de o tradiție îndelungată și, în al doilea rând, de tot felul de documente standardizate, în special, FHS (Filesystem Hierarchy Standard), care este acum disponibil în traducere rusă (pentru care mulțumesc Viktor Kostromin).

Standardul FHS a fost dezvoltat inițial pentru a organiza structura de directoare a numeroase distribuții Linux. Și abia mai târziu a fost adaptat pentru alte sisteme asemănătoare Unix (inclusiv clanul BSD). Cu toate acestea, ierarhia directoarelor FreeBSD este cea care poate servi drept exemplu pentru aderarea exemplară la spiritul FHS. Și literalmente, abaterile individuale ale acesteia de la litera sa sunt întotdeauna determinate funcțional.

Standardul FHS se bazează pe două principii fundamentale - o separare clară în ierarhia fișierelor a directoarelor partajate și nepartajate, pe de o parte, și imuabile și mutabile, pe de altă parte.

Contrastul dintre directoarele partajate și cele nepartajate se datorează naturii inerente de rețea a Unix în general și a FreeBSD în special. Adică, datele referitoare la mașina locală (de exemplu, fișierele de configurare pentru dispozitivele sale) ar trebui să fie situate în directoare separate de cele al căror conținut este accesibil de la alte mașini din rețea, locale sau globale (un exemplu din care nu este doar utilizatorul). date, dar și programe) .

Esența contrastului dintre directoarele imuabile și cele mutabile poate fi explicată cu ușurință printr-un exemplu. Astfel, aceleași programe de utilizator trebuie, prin natura lor, să fie neschimbabile (sau mai bine zis, disponibile pentru modificare doar administratorului de sistem, dar nu și utilizatorului însuși care le folosește în munca sa). În același timp, aceste programe, în timpul funcționării lor, generează nu numai fișiere de date, să zicem, texte sau imagini (natura lor variabilă este clară fără comentarii), ci și tot felul de informații de serviciu, cum ar fi fișiere jurnal, fișiere temporare și ca). Care ar trebui grupate în directoare separate de fișierele executabile efective de programe, biblioteci, fișiere de configurare etc., necesare lansării lor.

Respectarea strictă a conceptului de separare a directoarelor partajate și nepartajate, imuabile și imuabile unele de altele permite, în cadrul unei singure ierarhii de fișiere de tip arbore, să-și izoleze fizic ramurile individuale - adică sub forma unor sisteme de fișiere independente situate pe dispozitive izolate (discuri, secțiuni de disc, partiții; în cazul general - și pe medii de la distanță, conectate la rețea, dar acest lucru nu va fi discutat acum). Există multe motive pentru aceasta - creșterea vitezei, creșterea fiabilității și pur și simplu considerații de comoditate - dar nu vom vorbi despre ele acum. Pentru că acum tot ceea ce contează pentru noi este că aceste ramuri ale arborelui de fișiere trebuie încorporate în sistemul de fișiere general.

În sistemele Unix, fiecare fișier (inclusiv un director) este recunoscut de sistem nu după numele său, ci după identificatorul unic al intrării sale în tabel. inoduri. Există instrumente pentru a vizualiza aceste ID-uri de fișiere. Una este comanda ls cu opțiunea -i, care va tipări ID-urile fiecărui fișier numit. Dat pentru directorul rădăcină -

$ ls -i /

ne va arăta o imagine oarecum neașteptată (pentru a simplifica rezultatul, informațiile despre fișierele obișnuite și legăturile simbolice din rădăcină sunt excluse din ieșire, iar directoarele rămase sunt sortate după identificatorii lor):

2 ../ 2 ./ 2 dev/ 2 home/ 2 tmp/ 2 usr/ 2 var/ 3 cdrom/ 4 mnt/ 5 root/ 8257 dist/ 8258 bin/ 8294 proc/ 8295 sbin/ 16512 stand/ 247677 etc/ cizme/

Din acest exemplu (referitor la sistemul de fișiere al mașinii pe care sunt scrise aceste linii) este clar că până la 7 directoare au aceiași identificatori digitali, egal cu 2. Întrebarea este, care este unicitatea aici?

Primele două elemente ale listei sunt ușor de înțeles: ./ reprezintă directorul curent (în acest caz, rădăcina), iar ../ este directorul părinte al celui curent; și întrucât, prin definiție, nu există nimic deasupra rădăcinii în ierarhia fișierelor, aceasta din urmă se desemnează. Deci nu este surprinzător faptul că ./ și ../ au același identificator - sunt denumiri diferite (link-uri dure sau, cu alte cuvinte, nume duplicate) pentru același director, rădăcină.

Dar la fel, așa cum pare la prima vedere, semnificația identificatorului pentru directoarele /dev, /home, /tmp, /usr, /var necesită explicații. Cu toate acestea, este simplu: toate acestea sunt directoare în care sunt montate sisteme de fișiere independente, fie situate pe dispozitive separate - partiții de disc, cum ar fi directoarele /home, /usr, /var sau sisteme de fișiere virtuale care nu se construiesc pe orice dispozitiv de disc real (directorul /dev cu sistemul de fișiere al dispozitivului și, în acest caz, directorul /tmp, în care este montat sistemul de fișiere din RAM, despre care se va discuta mai târziu). Și de la masă inoduri- diferit pentru fiecare sistem de fișiere, nu este de mirare că rădăcina fiecăruia dintre ele este identificată prin numărul 2 - numerotare inoduriîn ele merge în propriul cadru de referinţă.

Deci, montarea este includerea unui fișier din sistem în oricare dintre directoarele existente în sistemul rădăcină (nu neapărat direct în rădăcină, acesta poate fi de orice grad de imbricare, ceea ce este ilustrat mai jos). Fără aceasta, directoarele și fișierele unui astfel de sistem montat sunt pur și simplu inaccesibile. Acest lucru este important de înțeles atunci când întâlniți expresii precum „creați sistemul de fișiere /usr”. Din cele de mai sus, este evident că ceea ce este creat (prin comanda newfs) este pur și simplu un fel de sistem de fișiere abstract și își dobândește „numele” doar în momentul montării în directorul specificat.

Este interesant că identificatorul de director pentru montare (numit și punct de montare) se găsește doar în momentul montării. Pentru a verifica acest lucru, să facem un experiment simplu. În directorul /mnt, destinat special pentru montarea sistemelor de fișiere montate temporar), puteți vedea trei subdirectoare - /mnt/disk, mnt/iso, /mnt/usb (acesta este pe sistemul meu, le-am creat pentru confortul meu; inițial directorul /mnt era în FreeBSD este gol). Când sistemul pornește, nu este montat nimic în ele, iar starea lor obișnuită este să fie goală. Dacă te uiți la identificatorii lor, poți vedea ceva de genul acesta:

$ ls -i /mnt 18 disc/ 24 iso/ 19 usb/

Acum să luăm și să montăm o unitate flash cu o interfață USB în /mnt/usb (exact pentru asta am intenționat-o) și repetăm ​​vizualizarea. Si vedem:

18 disc/ 24 iso/ 2 usb/

Adica identificatorii directoarelor care au ramas goale (/mnt/disk si /mnt/iso) nu s-au schimbat, dar identificatorul de director /mnt/usb s-a schimbat magic in 2. Pentru ca in momentul montarii a devenit radacina pt. propriul sistem de fișiere și punctul de referință pentru calcul inoduri toate fișierele înregistrate pe acesta.

Să ne abatem puțin și să ne amintim despre link-urile hard, prin care la fel inodul iar blocurile de date asociate cu acesta pot primi nume diferite. Acum este clar de ce toate astfel de fișiere duplicate ar trebui să fie localizate în același sistem de fișiere: la urma urmei, diferite sisteme de fișiere au propria lor numerotare, care nu se potrivește inoduri, și este imposibil să le identificăm după numere (altfel, cum ar distinge sistemul între directoarele /usr și /var din exemplul nostru - la urma urmei, nu-i pasă de numele fișierelor). Pentru legăturile simbolice care au propriile lor inodul(de fapt, aproape nimic în afară de ei) cu identificatorii lor, numerotați în cadrul de referință al sistemului de fișiere în care se află, nu există o astfel de restricție. Și legăturile simbolice pot fi localizate oriunde (inclusiv pe o mașină la distanță - nu doar pe o altă partiție).

Să revenim, totuși, la exemplul directorului nostru rădăcină. Din toate punctele de vedere, este clar că o serie de ramuri ale sale se află pe partiții separate și formează propriile sisteme de fișiere (de fapt, tocmai acesta este motivul pentru care le-am creat pe ambele). Și, prin urmare, toate trebuie montate.

Practica de montaj

Scopurile de montare sunt îndeplinite de comanda mount, executată fie automat în timpul pornirii sistemului, fie manual din linia de comandă. De fapt, în sensul deplin, numai sistemul de fișiere rădăcină este montat automat în orice caz. Nu trebuie să fie pe disc - atunci când porniți de pe un CD de salvare sau alte medii de siguranță, poate fi localizat pe un disc virtual în RAM.

Cu toate acestea, procesul de montare a sistemului de fișiere rădăcină este la fel de inevitabil ca victoria socialismului la scară globală: la fel cum socialismul, fără a câștiga la scară globală, își pierde pur și simplu capacitatea de a exista (pe care am observat-o recent), la fel poate și un Sistemul de operare nu poate exista fără un sistem rădăcină. În Linux, acest lucru provoacă modul de panică a nucleului - aproximativ starea în care au căzut liderii noștri în urmă cu aproximativ 20 de ani. Adevărat, s-au dovedit a fi mai puternice decât Linux și și-au revenit destul de repede - așa că încă ne repornesc (sau repornesc? - dar suntem din ce în ce mai puternici :)). Totuși, acest lucru nu se aplică problemei de instalare pe care voi încerca să vi-o prezint acum.

Deci, pentru a monta toate sistemele de fișiere, cu excepția celui root, trebuie să faceți câțiva pași. Mai întâi ne vom uita la cum să le facem manual și apoi cum să le imortalizăm în fișierele de configurare corespunzătoare.

Deci, comanda de montare. De fapt, aceasta este o întreagă familie de programe, fiecare dintre ele concepută pentru a monta sisteme de fișiere de anumite tipuri - nu numai UFS, ci oricare dintre cele acceptate de FreeBSD. Lista acestora este destul de extinsă - vă puteți face o idee despre ea uitându-vă la directorul /sbin:

$ ls -1 /sbin/mount*

ce ne va da ca răspuns

/sbin/mount_cd9660* /sbin/mount_devfs* /sbin/mount_ext2fs* /sbin/mount_fdescfs* /sbin/mount_linprocfs* /sbin/mount_mfs* /sbin/mount_msdosfs* /sbin/mount_nfs* /sbin/mount_ntsfs* /sbin/mount_ntsfs* /sbin/mount_nullfs* /sbin/mount_procfs* /sbin/mount_std* /sbin/mount_udf* /sbin/mount_umapfs* /sbin/mount_unionfs*

Fiecare comandă din această listă este responsabilă pentru montarea unui tip diferit de sistem de fișiere, la unele dintre ele vom reveni mai târziu. Deocamdată, să notăm doar /sbin/mount în sine, conceput pentru a funcționa cu UFS și UFS2.

Apelat din linia de comandă, necesită două argumente - numele dispozitivului care urmează să fie montat și punctul de montare (adică directorul în care ar trebui montat sistemul de fișiere de bază). Numele dispozitivului ar trebui să indice o patricia deja mapată pe o porțiune BSD existentă cu un sistem de fișiere UFS2 (UFS) creat pe acesta, de exemplu,

$ mount /dev/ads0d /usr

montează sistemul de fișiere pe partiția specificată în directorul /usr al rădăcinii arborelui de fișiere. Dacă sistemul de fișiere de pe dispozitiv nu este creat sau este de alt tip decât UFS/UFS2, va apărea un mesaj de eroare care indică un super bloc incorect: spre deosebire de utilitarul Linux cu același nume, comanda de montare FreeBSD în sine nu poate recunoaște fișierul tip de sistem.

Punctul de montare i se impun următoarele cerințe: a) un director cu același nume trebuie să existe în momentul montării și b) să fie cât mai gol posibil. Primul este obligatoriu, dar al doilea nu este în întregime adevărat. Montarea într-un director cu orice fișiere se va desfășura fără probleme (îmi amintesc că în Linux nu cu mult timp în urmă acest lucru a provocat o prăbușire a sistemului), dar tot conținutul său va deveni inaccesibil până la demontare. Și dacă fișierele pe care le conține joacă un rol semnificativ pentru orice subsistem, acest lucru poate provoca tot felul de consecințe nefaste. De exemplu, dacă conținutul directorului /tmp a fost blocat prin montarea unui sistem de fișiere acolo în timp ce sistemul de ferestre X rula, rezultatul ar fi probabil o prăbușire a serverului X. Din fericire, dacă este necesar, puteți efectua o montură combinată (vezi mai jos).

În forma specificată, montarea se va efectua cu unele caracteristici implicite: sistemul de fișiere va fi citit/scriere în așa-numitul mod. noasync (același în care operațiunile de metadate sunt efectuate sincron, iar operațiunile de date sunt efectuate asincron). Această poziție poate fi modificată folosind valorile opțiunii -o. Există destul de multe dintre ele, dar practic cele principale pentru noi în această etapă vor fi:

  • asincron - va oferi un mod complet asincron (în ciuda avertismentelor îngrozitoare din postările anterioare, voi vorbi mai târziu despre situația în care acest lucru ar putea fi justificat);
  • sincronizare - dimpotrivă, permițând un mod complet sincron (deși nu înțeleg cu adevărat de ce acest lucru este practic necesar);
  • noatime este o opțiune foarte utilă care împiedică actualizarea atributului de timp al ultimului acces la fișier, ceea ce îmbunătățește foarte mult performanța;
  • rdonly - montează sistemul de fișiere în modul doar citire (uneori acest lucru este necesar);
  • union este aceeași opțiune care vă permite să efectuați o montare union, în care conținutul anterior al directorului punctelor de montare rămâne vizibil; adevărat - cu unele limitări - vezi man (8) mount .

Există câteva alte valori ale opțiunii -o care interzic plasarea anumitor tipuri de fișiere pe sistemul de fișiere montat, de exemplu, fișiere executabile (-o noexec), fișiere dispozitiv (-o nodev) sau fișiere cu astfel de -a sunat. un pic de sinucidere. Cu toate acestea, ele sunt de importanță practică în principal pentru administratorii de server și servesc scopurilor de securitate. Pe o mașină desktop, forma obișnuită de montare ar fi cam așa:

$ mount -o noatime /dev/ads0d /usr; $ mount -o noatime /dev/ads0e /var; $ mount -o noatime /dev/ads0f /home

Toate cele de mai sus se aplică numai pentru montarea sistemelor de fișiere FreeBSD. Cu toate acestea, în practică, este adesea nevoie de a încorpora alte tipuri de sisteme de fișiere în arborele său de directoare. Acest lucru este adesea necesar pentru ISO9660 (sistemul de fișiere obișnuit pentru toate CD-urile, cu excepția celor Mac) și FAT-uri de diferite tipuri. În acest caz, comanda de montare corespunzătoare trebuie apelată în mod explicit, de ex.

$ mount_cd9660 /dev/acd0 /cdrom

pentru montarea unui compact, sau

$ mount_msdosfs /dev/ad## /mnt

pentru FAT de orice fel (inclusiv FAT32).Totuși, acest lucru se poate face și indirect prin specificarea opțiunii -t file_system_type la comanda mount.Astfel, comanda

$ mount -t ext2fs /dev/ad## /mnt/linux

montează sistemul de fișiere Linux (dacă caracteristica corespunzătoare este inclusă în kernel). În acest caz, montarea standard pentru partițiile BSD este pur și simplu înlocuită de comanda /mount_ext2fs, concepută pentru a monta partițiile ext2fs (și și ext3fs - dar, desigur, fără nicio funcție de jurnalizare). Adică forma

$ mount -t fstype ......

va fi echivalentul complet al comenzii

$mount_fstype ......

Toate operațiunile de montare a sistemelor de fișiere (inclusiv pe medii amovibile) în FreeBSD necesită drepturi de superutilizator. Valorile opțiunii -o de aici, spre deosebire de versiunea Linux a comenzii mount, nu includ parametrul utilizator -o, care permite montarea utilizatorilor obișnuiți. Adevărat, există mai multe modalități de a ocoli acest lucru, așa cum se discută într-o notă specială.

Configurarea montajului automat

Cu toate acestea, în practică, se recurge la montarea manuală doar pentru sistemele de fișiere rar utilizate. Toate sistemele de fișiere care sunt fundamental importante pentru funcționarea FreeBSD sunt montate automat la pornirea sistemului, iar cele utilizate frecvent sunt montate într-un mod semi-automat, ca să spunem așa.

Pentru montarea automată, programul de montare este rulat în timpul procesului de pornire din scripturile de inițializare. Își caută fișierul de configurare - /etc/fstab și montează tot ce găsește în el, cu unele excepții (discutate mai jos).

Fișierul /etc/fstab în sine este generat automat când este instalat FreeBSD, inclusiv toate sistemele de fișiere necesare pentru a susține viața. Cu toate acestea, în viitor poate fi editat manual pentru a adăuga dispozitive noi pentru montare sau opțiuni suplimentare pentru dispozitivele deja activate.

Fișierul /etc/fstab este o bază de date simplă în format text (câmpuri separate prin spații sau file), incluzând următoarele câmpuri:

  • Dispozitiv - numele de fișier al dispozitivului pe care se află sistemul de fișiere, similar cu primul argument al comenzii mount atunci când este utilizat manual;
  • Mountpoint - punct de montare (corespunde celui de-al doilea argument al comenzii mount);
  • FStype - tipul sistemului de fișiere, specificat și ca valoare a opțiunii -t;
  • Opțiuni - opțiuni suplimentare de montare, similare cu valorile opțiunii -o;
  • Dump - condiții pentru efectuarea unei copii de siguranță a sistemului de fișiere folosind utilitarul dump;
  • Pass# - condiții pentru verificarea sistemului de fișiere cu utilitarul fsck.

Într-un FreeBSD proaspăt instalat, /etc/fstab va include în mod necesar următoarele intrări (exemplu pentru prima parte a discului Master pe primul canal IDE):

# Device Mountpoint FStype Options Dump Pass# /dev/ad0s1a / ufs rw 1 1 /dev/ad0s1b none swap sw 0 0

Dacă urmați sfaturile oamenilor rezonabili (și setările implicite ale sysinstall) și selectați unele ramuri ale sistemului de fișiere de la rădăcină, intrări precum

/dev/ad0s1d /var ufs rw 0 0 /dev/ad0s1e /usr ufs rw 0 0 /dev/ad0s1f /tmp ufs rw 0 0

/dev/ad0s1g /home ufs rw 0 0

responsabil pentru sistemul de fișiere cu directoarele de acasă ale utilizatorilor.

Evident, în câmpul Opțiuni puteți adăuga orice valori disponibile (și rezonabile) ale opțiunii -o (separate prin virgule, fără spații), de exemplu, noatime pentru toate sistemele de fișiere și pentru /tmp - de asemenea asincron, deoarece conținutul acestui director nu ar trebui să fie salvat după repornire.

Cele de mai sus se aplică sistemelor de fișiere care sunt montate automat la pornire. Totuși, nimeni nu te deranjează să faci intrări în /etc/fstab pentru sistemele care sunt conectate din când în când - în acest caz pot fi montate după o schemă simplificată (la asta mă refeream mai sus prin modul semi-automat). Deci, pentru o unitate CD puteți adăuga o linie (de fapt, aceasta apare automat la generarea fișierului /etc/fstab dacă CD a fost selectat ca sursă de instalare în sysinstall)

/dev/acd0 /cdrom cd9660 ro,noauto 0 0

în care opțiunile, după cum ați putea ghici, prescriu refuzul de a monta la pornire (noauto) și modul de doar citire (ro). După care, pentru a monta un CD, va fi suficient să specificați doar punctul de montare -

$mount/cdrom

sau. dimpotrivă, numele fișierului dispozitivului

$ mount /dev/acd0

Intrări similare pot fi făcute pentru toate unitățile amovibile (Zip, unități USB, chiar și dischete) și pentru partițiile non-BSD (FAT sau Ext2fs). Apropo, puteți monta sisteme de fișiere folosind o schemă simplificată imediat după ce faceți modificări în /etc/fstab, fără a aștepta ca mașina să repornească.

Demontarea

Toate sistemele de fișiere implicate trebuie demontate înainte de a opri alimentarea sau a reporni mașina. La oprirea grațioasă, acest lucru se face automat, rezultând în fiecare sistem de fișiere inscriptibil să primească un bit de demontare curat scris în propriul său superbloc. Prezența acestui bit împiedică utilitarul fsck să verifice consecvența sistemelor de fișiere data viitoare când sistemul este pornit.

Cu toate acestea, într-o serie de cazuri (de exemplu, când se conectează sau se deconectează mecanismul Soft Updates sau pentru a efectua o verificare a integrității), devine necesară demontarea manuală (și remontarea) a sistemelor de fișiere, pentru care se folosește comanda umount. Necesită un singur argument - specificând punctul de montare al sistemului de fișiere „eliminat” din arborele de directoare, de exemplu:

$umount/tmp

sau, ca și în cazul montării semi-automate, numele fișierului dispozitivului „oprire”:

$ umount /dev/ad#s#?

Puteți demonta mai multe sisteme de fișiere cu o singură linie:

$ umount /usr /var /home

Sau puteți - toate sistemele de fișiere montate sau toate sistemele de fișiere listate în fișierul /etc/fstab (cu excepția rădăcinii), care vor necesita opțiuni

$umount -A

$umount -a

respectiv. De asemenea, este posibil să demontați anumite tipuri de sisteme de fișiere prin specificarea valorilor opțiunii -t. Da, echipa

$ umount -t ufs

va demonta numai partițiile BSD, fără a afecta CD-ul și tot ceea ce este implicat în sistem.

Sistemele de fișiere nu ar trebui să fie utilizate în momentul demontării, adică nu ar trebui să existe acces la fișierele aflate pe ele. Deci, a fi în orice director al unui sistem de fișiere este un motiv suficient pentru a refuza demontarea acestuia (cu un mesaj ca dispozitivul ocupat), motiv pentru care niciuna dintre comenzile enumerate mai sus nu va putea demonta sistemul de fișiere rădăcină. Motivul pentru refuzul demontării va fi citirea fișierului de date de către orice program - ca și în cazul ștergerii unui fișier, descriptorul de fișier deschis de orice proces nu va permite acest lucru.

Cu toate acestea, puteți demonta și sistemul de fișiere pe care îl utilizați - pentru a face acest lucru, va trebui să lansați comanda umount cu opțiunea -f (din forță - adică prin forță). Adevărat, acest lucru poate duce la erori, așa că este mai bine să nu recurgeți la el decât dacă este absolut necesar. Și opțiunea de demontare forțată nu va avea niciun efect asupra sistemului de fișiere rădăcină.

Montare în vrac

Pentru a continua lucrul după efectuarea operațiunilor de nivel scăzut pe sistemele de fișiere, acestea vor trebui montate înapoi. Acest lucru se poate face nu numai fără o repornire, ci și fără o montare individuală plictisitoare. Folosiți doar opțiunea -a:

$mount -a

prin care vor fi montate toate sistemele de fișiere pentru care există intrări în /etc/fstab. În acest caz, se va încerca montarea celor care sunt marcate cu steag noauto. Pentru a evita acest lucru, puteți defini în continuare tipul sistemului de fișiere. Adică echipa

$ mount -a -t ufs

va monta doar partiții BSD, fără a încălca CD-uri sau unități flash. Sau, dimpotrivă, puteți exclude din procesul global de montare unele dintre sistemele de fișiere enumerate în /etc/fstab, de exemplu, FAT-uri care nu sunt necesare în prezent:

$ mount -a -t nomsdosfs

Preambul în loc de concluzie

Apropo, comanda mount fără opțiuni și argumente (și în această formă, spre deosebire de toate cazurile discutate mai sus, poate fi dată de un utilizator obișnuit) va afișa o listă a sistemelor de fișiere montate curent indicând punctul de montare, condițiile și mod de operare. De exemplu, pentru mașina pe care sunt scrise aceste linii, rezultatul său va arăta astfel:

/dev/ad0s1a pe / (ufs, local, noatime, soft-updates) devfs pe /dev (devfs, local) /dev/ccd0e pe /var (ufs, local, noatime, soft-updates) /dev/ccd1e pe / usr (ufs, local, noatime, soft-updates) /dev/ccd2e pe /home (ufs, local, noatime, soft-updates) /dev/md0 pe /tmp (ufs, local, noatime, asincron)

Prima linie de ieșire arată că partiția /dev/ad0s1a este montată în directorul nostru rădăcină, poartă un sistem de fișiere UFS (mai ales în acest caz - UFS2, dar în ieșirea comenzii mount nu diferă) de Soft Updates mecanism activat, este local (adică se află pe discul acestei mașini - unitățile de rețea sunt de asemenea montate cu comanda mount) și nu este supusă actualizării atributului atime.

$ mai mult /etc/fstab /dev/ad0s1b niciunul swap sw 0 0 /dev/ar0s1b niciunul swap sw 0 0 /dev/ad0s1a / ufs rw,noatime 1 1 /dev/ccd0e /var ufs rw,noatime/2 2 ccd1e /usr ufs rw,noatime 2 2 /dev/ccd2e /home ufs rw,noatime 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 0 /dev/da0s1 /mnt/usb ext2fs rw,no0auto, /0a dev/md0 /tmp mfs rw,noatime,async,-s32m 2 0

apoi vom vedea că una dintre liniile de ieșire

Devfs pe /dev (devfs, local)

Nu există nicio corespondență între înregistrările sale. Care sunt aceste dispozitive și sisteme de fișiere?

Atrag adesea atenția asupra faptului că întrebările simple sunt adesea prost acoperite pe internet. Acest lucru se datorează probabil pentru că toți guru-ii sunt siguri că nimeni nu va pune vreodată întrebări atât de stupide, pentru că toată lumea știe asta. Dar practica mea a arătat că aceste mici întrebări simple sunt cele mai frecvente nu numai în rândul începătorilor, ci și printre administratorii serioși care pur și simplu nu au avut de a face cu asta. Nici administratorii serioși nu fac asta în fiecare zi, dar, pentru a nu uita, își păstrează un fel de cheat sheet pentru ei, fără să recunoască nimănui. Să reparăm totul. Acum veți învăța cum să adăugați un hard disk la FreeBSD în 5 minute. Asa de. În primul rând, vor fi date instrucțiuni complete pentru a înțelege procesul, iar la sfârșit va exista o listă scurtă de acțiuni, care va conține doar o listă de comenzi ca o foaie de cheat.

Instrucțiuni detaliate cu explicații

Selectarea numelui unui hard disk

Mai întâi trebuie să stabilim numele dispozitivului pe care tocmai l-am adăugat. Următoarea comandă ne va ajuta în acest sens:

Lista de discuri Geom

Sau această comandă:

Camcontrol devlist

Într-un sistem real, aceste comenzi vor afișa mai multe informații utile, și anume numele dispozitivelor și numerele de serie.

Înainte de a instala noul dispozitiv, știam că sistemul nostru a fost instalat pe ada0, ceea ce înseamnă, în mod logic, noua noastră unitate este ada1. Puteți determina acest lucru după numele noului dispozitiv, numărul de serie sau volumul acestuia.

Acum să verificăm dacă există marcaje pe noul nostru disc

Gpart show ada1

Discul nu are marcaje.

Eliminarea marcajului existent

Dacă discul a fost deja folosit și este nevoie să eliminați marcajele de pe acesta, pur și simplu rulați:

Gpart distruge -F ada1

Se creează marcajul GPT

În primul rând, trebuie să creăm o partiție de disc. Vă recomand cu căldură să uitați de MBR și să treceți la unul nou, mai convenabil și mai funcțional - GPT.

Creăm marcaj GPT pe disc, apoi verificăm ce se întâmplă:

Gpart create -s gpt /dev/ada1 gpart show ada1

Acum discul nostru are marcaj GPT. Din ieșire puteți vedea că absolut întregul disc, începând de la LBA 34 și terminând cu LBA 8388541, este gol. LBA 0−33 - rezervat de sistem pentru tabelul de partiții.

Să presupunem că trebuie să creăm două partiții pe acest disc:

  • schimb- partiție de schimb
  • date- o secțiune de tip ufs pentru stocarea oricăror date de care avem nevoie.

Crearea de secțiuni (slices)

Dacă instalarea se realizează pe hard disk-uri moderne cu o dimensiune a sectorului de 4 KB, atunci trebuie utilizată alinierea la crearea partițiilor. Puteți face acest lucru în două moduri: 1) dacă specificăm parametrii secțiunii în blocuri, apoi introduceți numărul blocului ca multiplu de 8, de exemplu: -b 40; 2) dacă indicăm dimensiunea partiției în octeți sau nu indicăm deloc începutul și dimensiunea, folosiți parametrul -a 4k, care va ajusta începutul și sfârșitul secțiunii la sectoare de 4 kb în dimensiune. Deoarece în acest exemplu efectuăm o instalare de test pe un hard disk virtual, nu trebuie să facem acest lucru. În orice caz, înainte de a crea partiții, trebuie să știți exact dimensiunea sectorului unității dvs., altfel va duce la încetiniri teribile de lucru.

Acum să creăm partițiile. Pentru a face acest lucru, există o comandă gpart add cu diverși parametri. Primul parametru -t- indică tipul de sistem de fișiere creat. În cazul nostru, vor fi folosite două tipuri: freebsd-swap și freebsd-ufs. Urmează doi parametri opționali: -b- indică numărul LBA din care trebuie creată partiția. Dacă nu specificați acest parametru, partiția va fi creată automat din primul LBA gratuit. -s- indică dimensiunea partiției în LBA. Dimensiunea unui bloc LBA = 512 octeți. Este indicat să indicați în numărul de blocuri LBA, dar este posibil și în kilo/mega/giga/… octeți (sufix k/M/G). Dacă nu specificați acest parametru, partiția va fi creată la maximul LBA posibil în zona goală. De asemenea, puteți specifica eticheta secțiunii ca parametru, de exemplu: - Schimb 1- în acest caz, va fi creată eticheta /dev/gpt/swap1, care poate fi folosită pentru a accesa mai convenabil partiția. Ultimul parametru necesar este calea către disc. În cazul nostru: /dev/ada1.

Să creăm două partiții și apoi să vedem ce avem. Vom crea prima partiție fără a specifica LBA inițial, dar specificând dimensiunea de 1 GB (2097152 blocuri). Vom crea a doua partiție fără a specifica LBA inițial și fără a specifica dimensiunea - astfel va fi creată pe întreg spațiul liber.

Gpart add -t freebsd-swap -s 2097152 /dev/ada1 gpart add -t freebsd-ufs /dev/ada1 gpart show ada1

Mărimea poate fi specificată mai degrabă în octeți decât în ​​blocuri. Este mult mai convenabil. Singurul negativ este că sistemul nu poate calcula întotdeauna corect numărul de blocuri. Pot exista cazuri când un anumit număr de blocuri vor rămâne goale pe disc atunci când se specifică dimensiunea partiției în octeți.

Crearea unui sistem de fișiere (formatare)

Nu este nevoie să formatați partițiile swap. Dar partițiile precum ufs trebuie formatate înainte de utilizare. Ar fi mai corect să spunem: pe ele ar trebui creat un sistem de fișiere.

Pentru a crea un sistem de fișiere pe a doua partiție, rulați următoarea comandă:

Newfs -U /dev/ada1p2

În acest caz, a fost folosit parametrul -U - indică faptul că mecanismul Actualizări soft ar trebui utilizat în acest sistem de fișiere. Puteți omite această opțiune pentru a evita activarea acestui mecanism.

Montare

Următorul pas este montarea partițiilor. Mai întâi, pentru a nu uita, să adăugăm noile noastre secțiuni în /etc/fstab. Fișierul meu după editare arată astfel:

Pentru a remonta toate partițiile conform fișierului /etc/fstab, pur și simplu rulați comanda:

Muntele -a

După cum puteți vedea din rezultat, partiția /dev/ada1p2 este montată. Acum să vedem ce s-a întâmplat cu secțiunea SWAP. Să rulăm comanda:

După cum puteți vedea, noua partiție SWAP nu este montată. Pentru ca SWAP să fie montat, trebuie să îl activați cu o comandă specială:

Swapon /dev/ada1p1

În același mod, folosind comanda swapoff, trebuie să dezactivați partiția SWAP înainte de a efectua orice acțiune asupra acesteia.

Acest lucru finalizează toți pașii pentru a adăuga un nou hard disk la sistem.

Instrucțiuni scurte

Dat: hard disk /dev/ada1

Ţintă: Ștergeți partiția existentă, creați o nouă partiție GPT, creați două partiții: swap și date și conectați-le la sistemul de lucru.

După fiecare acțiune, faceți spectacol gpart pentru a observa rezultatul. Secvențiere:

  1. Eliminați partiția existentă: gpart destroy -F ada1
  2. Creați o nouă partiție: gpart create -s gpt /dev/ada1
  3. Creați două partiții: swap și date: gpart add -t freebsd-swap -s 2097152 /dev/ada1 gpart add -t freebsd-ufs /dev/ada1
  4. Creați un sistem de fișiere UFSv2 pe a doua partiție: newfs -U /dev/ada1p2
  5. Adăugați linii în fișierul /etc/fstab pentru montarea automată la pornire: /dev/ada1p1 none swap sw 0 0 /dev/ada1p2 /mnt ufs rw 2 2
  6. Montați o nouă partiție (comanda montează toate partițiile din fișierul /etc/fstab): mount -a
  7. Activați noua partiție de swap cu comanda: swapon /dev/ada1p1

Aceasta completează configurarea.

Acestea trebuie montate, iar când toate acțiunile necesare sunt finalizate, trebuie demontate. De obicei, comenzile mount(8) / umount(8) sunt folosite pentru a monta/demonta și nimeni nu se gândește la automatizarea acestor operațiuni. În opinia mea, aceasta nu este cea mai optimă abordare, mai ales având în vedere faptul că sistemul de operare FreeBSD include un daemon special de montare automată.

Formularea problemei

Daemonul de montare automată al sistemului de operare FreeBSD amd(8) este proiectat să monteze în mod transparent absolut orice sisteme de fișiere pe măsură ce sunt accesate fișierele și folderele aflate pe acestea, precum și pentru a demonta ulterior aceste sisteme de fișiere dacă nu există activitate pentru o perioadă specificată de timp. Acest articol este despre configurarea amd pentru a monta automat sistemele de fișiere exportate de serverele NFS și folderele partajate furnizate de serverele SMB. În plus, descrie diagnosticarea amd folosind utilitarul amq(8) și alocarea propriului jurnal folosind instrumentele standard de gestionare a jurnalelor syslogd(8) și newsyslog(8) .

Datele inițiale

Pentru a rezolva această problemă, nu veți avea nevoie de niciun software suplimentar, dar va trebui să creați unul care să permită superutilizatorului root să monteze folderele partajate selectate furnizate de serverele SMB fără a introduce o parolă.

Montarea automată a sistemelor de fișiere NFS

Pentru a asigura montarea automată a sistemelor de fișiere NFS, pur și simplu adăugați următoarea linie în fișierul /etc/rc.conf:

Amd_enable="DA"

și porniți amd cu comanda /etc/rc.d/amd start . În mod implicit, amd va folosi folderul alternativ /.amd_mnt, va raporta starea acestuia în secțiunea demon din syslog și va permite ca sistemele de fișiere NFS să fie montate în folderele locale ale sistemului de fișiere /gazdă și /net în conformitate cu harta de montare /etc/amd .map (această hartă de montare inclusă cu sistemul de operare FreeBSD și conține reguli care guvernează modul în care sistemele de fișiere NFS pot fi montate și demontate folosind sistemul de fișiere gazdă de rețea). Dacă traducem ceea ce s-a spus în limbajul uman, atunci imediat după ce porniți amd veți putea accesa sistemul de fișiere partajat exportat de serverul NFS nfsserver ca un folder local obișnuit numit /host/nfsserver/share sau /net/nfsserver/ acțiune. Pentru orice astfel de acces și sistemul de fișiere necesar nu se află în lista sistemelor de fișiere montate, amd va crea un punct de montare /.amd_mnt/nfsserver/host/share , va monta sistemul de fișiere partajat pe acesta, va crea un folder /host/nfsserver sau /net/nfsserver și adăugați-l la acesta o legătură simbolică către punctul de montare de mai sus. Dacă folderul /host/nfsserver/share sau /net/nfsserver/share nu este folosit timp de 5 minute, amd va demonta sistemul de fișiere partajate și apoi va șterge folderele care nu mai sunt necesare și linkul simbolic.

Montarea automată a sistemelor de fișiere SMBFS

Pentru a activa montarea automată a sistemelor de fișiere SMBFS, va trebui să creați una sau mai multe hărți de montare suplimentare, fiecare dintre acestea trebuie să conțină reguli bazate pe utilizarea sistemului de fișiere de program. Pentru a putea accesa folderele partajate folosind nume de șablon precum /smbfs/smbserver/share, ar trebui să alocați un card de montare separat pentru fiecare server SMB. De exemplu, pentru a specifica regulile de montare pentru folderele partajate share1 și share2 furnizate de serverul SMB smbserver, puteți crea o hartă de montare numită /etc/amd.map-smbserver (Puteți schimba acest nume pentru a se potrivi propriilor gusturi) și adăugați următoarele rânduri la acesta:

Share1 type:=program;fs:=$(autodir)/$(path);mount:="/sbin/mount mount -t smbfs \\\/\\\/user@smbserver/share1 $(fs)"; share2 type:=program;fs:=$(autodir)/$(path);mount:="/sbin/mount mount -t smbfs \\\/\\\/user@smbserver/share2 $(fs)";

Regulile specificate vor forța amd să monteze foldere partajate în punctul de montare $(autodir) (variabila $(autodir) conține numele folderului alternativ) cu comenzile /sbin/mount -t smbfs //user@smbserver/share ... . Absența opțiunii de demontare sau de demontare necesită utilizarea comenzilor implicite de demontare umount $(fs) (variabila $(fs) conține numele punctului de montare).
Pentru a asocia harta de montare creată cu punctul de montare /smbfs/smbserver, trebuie să adăugați următoarea linie la fișierul /etc/rc.conf:

Amd_flags="$amd_flags /smbfs/smbserver /etc/amd.map-smbserver"

și reporniți amd cu comanda /etc/rc.d/amd restart . Imediat după finalizarea acestor pași, veți putea accesa folderele partajate share1 și share2 furnizate de serverul SMB smbserver ca foldere locale normale /smbfs/smbserver/share1 și /smbfs/smbserver/share2.

Analizarea stării amd folosind utilitarul amq

Pentru a afla rapid starea actuală a amd, puteți folosi comanda amq -m, care este concepută pentru a afișa o listă de sisteme de fișiere montate, inclusiv numărul de link-uri către fiecare dintre ele și care conține informații despre erorile de montare, ceva de genul acesta :

„rădăcină” rădăcină 1 localhost este sus /etc/amd.map /host toplvl 1 localhost este sus /etc/amd.map /net toplvl 1 localhost este activ /etc/amd.map-smbserver /smbfs/smbserver toplvl 1 localhost este sus nfsserver:/host/nfsserver /.amd_mnt/nfsserver gazda 1 nfsserver este up mount -t smbfs //user@smbserver/share1 ... /.amd_mnt/smbfs/smbserver/share1 programul 1 localhost este activ

Prima coloană a acestui tabel conține numele hărții de montare pentru punctele de montare sau opțiunile de montare pentru sistemele de fișiere montate, a doua este numele punctului de montare, a treia este tipul sistemului de fișiere amd, a patra este numărul de link-uri la punctul de montare sau sistemul de fișiere, al cincilea este numele computerului pe care se află sistemul de fișiere, al șaselea este starea punctului de montare sau a sistemului de fișiere, al șaptelea este mesajele de eroare de montare (dacă nu există erori, a șaptea coloană nu este afișată). Deoarece amd și rpcbind(8) pe care le rulează acceptă TCP Wrappers, rularea comenzii amq -m poate duce la mesaje de eroare similare cu următoarele:

Amq: localhost: RPC: Eșec al mapatorului de porturi - RPC: Eroare de autentificare amq: localhost: RPC: Eroare de autentificare; de ce = Eșuat (eroare nespecificată)

Pentru a elimina aceste erori, ar trebui să adăugați reguli în fișierul /etc/hosts.allow care să permită accesul la amd și rpcbind de la localhost:

Amd: 127.0.0.1: permit amd: ALL: deny rpcbind: 127.0.0.1: allow rpcbind: ALL: deny

Furnizarea lui amd cu propriul său jurnal

Opțiunile implicite de pornire din /etc/defaults/rc.conf determină amd să raporteze starea secțiunii demon din syslog. Dacă doriți să furnizați amd un jurnal separat numit /var/log/amd.log , va trebui să redirecționați aceste mesaje către o altă secțiune syslog (local6 în cazul meu) și, de asemenea, să modificați configurația demonului syslogd în consecință.
Ținând cont de toate modificările din fișierele de configurare descrise în acest articol, pentru a redirecționa mesajele amd către jurnalul /var/log/amd.log, trebuie mai întâi să modificați definiția variabilei amd_flags din /etc/rc. conf la acest formular:

Amd_flags="-a /.amd_mnt -l syslog:local6 /host /etc/amd.map /net /etc/amd.map /smbfs/smbserver1 /etc/amd.map-smbserver1"

și reporniți amd cu comanda /etc/rc.d/amd restart și, în al doilea rând, adăugați linia în fișierul /etc/syslog.conf:

Local6.* /var/log/amd.log

creați un jurnal gol cu ​​comanda touch /var/log/amd.log și reporniți syslogd cu comanda de repornire /etc/rc.d/syslogd.
Pentru a preveni creșterea jurnalului amd, ar trebui să activați rotația acestuia folosind utilitarul newsyslog. De exemplu, pentru a trunchia zilnic jurnalul /var/log/amd.log în timp ce păstrați șapte copii anterioare comprimate cu arhivatorul bzip2(1), ar trebui să adăugați următoarea linie în fișierul /etc/newsyslog.conf:

/var/log/amd.log 644 7 * @T00 JC

Concluzie

După parcurgerea pașilor descriși în acest articol, nu va mai trebui să vă faceți griji cu privire la montarea și demontarea sistemelor de fișiere NFS și SMBFS. Sper că veți găsi această oportunitate utilă și asigurați-vă că acordați atenție amd.

din

Se încarcă...