Cum să utilizați comanda mkfs pe Linux

Înainte de a putea folosi orice unitate de stocare conectată la un sistem Linux, este necesar să creați un sistem de fișiere. Acest articol explică cum să utilizați `mkfs` și alte instrumente pentru a face acest lucru, indiferent de tipul sistemului de fișiere dorit.

Funcționalitatea comenzii `mkfs`

Comanda `mkfs` este cea care se ocupă de crearea sistemelor de fișiere. În alte sisteme de operare, această operațiune este numită „formatare”. Esențialmente, procesul pregătește o partiție, astfel încât aceasta să poată găzdui date. O partiție nu doar stochează fișiere, ci și informații despre acestea, cum ar fi numele, locația și metadatele (data creării, modificării, dimensiunea etc.). După ce `mkfs` construiește structura necesară pentru gestionarea și stocarea acestor metadate, se pot adăuga fișiere la partiție.

Sintaxa comenzii este simplă: specificați `mkfs`, partiția unde se va crea sistemul de fișiere și tipul acestuia. Sub capotă, lucrurile sunt puțin diferite. În majoritatea distribuțiilor Linux, `mkfs` este un strat peste `mke2fs`. `mkfs` apelează `mke2fs`, transferându-i opțiunile specificate. Astfel, `mke2fs` este cea care efectuează munca reală, deși nu primește la fel de multă recunoaștere.

Deși sintaxa `mkfs` a fost actualizată, ambele versiuni funcționează. În acest articol, vom utiliza sintaxa modernă.

Alegerea tipului de sistem de fișiere

Sintaxa modernă a comenzii `mkfs` este: `mkfs` urmat de numele sistemului de fișiere dorit.

Pentru a vedea lista sistemelor de fișiere suportate de `mkfs`, tastați `mkfs` și apăsați de două ori tasta Tab. Nu trebuie să existe niciun spațiu după `mkfs`.

Terminalul va afișa lista sistemelor de fișiere disponibile. Captura de ecran este de pe Ubuntu 18.04 LTS. Lista poate varia în funcție de distribuție. Vom parcurge și explica pe scurt fiecare sistem, după o scurtă discuție despre jurnalizare.

Jurnalizarea este un concept important pentru sistemele de fișiere. Un sistem de fișiere ține un jurnal al scrierilor de fișiere în așteptare. Pe măsură ce se scrie fiecare fișier, jurnalul este actualizat, la fel și înregistrările de scriere în așteptare. Acest lucru permite sistemului de fișiere să repare fișierele corupte în cazul unei probleme, cum ar fi o pană de curent. Unele sisteme de fișiere mai vechi nu au jurnalizare. Acestea scriu mai rar pe disc, deoarece nu trebuie să actualizeze jurnalul. Pot opera mai repede, dar sunt mai predispuse la coruperea datelor în cazul întreruperilor.

Ext2: Primul sistem de fișiere utilizat pe Linux a fost MINIX. Mai târziu, a fost înlocuit de Ext, primul sistem de fișiere scris special pentru Linux. Ext2 a fost succesorul lui Ext. Ext2 nu utilizează jurnalizare.

Ext3: Acesta a fost succesorul lui Ext2 și este considerat a fi Ext2 cu jurnalizare, protejând sistemul de fișiere de coruperea datelor cauzată de blocări sau pierderi bruște de energie.

Ext4: Ext4 este sistemul de fișiere standard pentru multe distribuții Linux. Este un sistem solid, fiabil, cu funcții care reduc fragmentarea fișierelor și poate fi folosit cu unități, partiții și fișiere mai mari decât Ext3.

BFS: Sistemul de fișiere Boot (Boot File System) este special conceput pentru a gestiona fișierele de pe partiția de boot. Rareori este necesar să creați manual un astfel de sistem. Procesul de instalare a Linux-ului se va ocupa de asta.

FAT: Sistemul de fișiere „File Allocation Table” a fost creat pentru dischete în 1977. Motivul pentru a folosi acest sistem de fișiere, care nu are jurnalizare, este compatibilitatea cu sistemele de operare non-Linux.

NTFS: „New Technology File System” este un sistem de fișiere cu jurnalizare creat de Microsoft, introdus cu Windows NT și succesorul lui FAT. Utilizarea acestui sistem se face tot din motive de compatibilitate cu sistemele non-Linux.

MINIX: Creat de Andrew S. Tanenbaum ca instrument educațional, MINIX este un sistem de operare „mini-Unix”, proiectat pentru toleranță la erori. Sistemul de fișiere MINIX este o versiune simplificată a sistemului de fișiere Unix. Acest sistem poate fi util în cazul dezvoltării încrucișate pe Linux pentru o platformă MINIX sau din motive de compatibilitate cu un computer MINIX. Utilizările sale pe un computer Linux nu sunt comune, dar este disponibil.

VFAT: „Virtual File Allocation Table” a fost introdus cu Windows 95, eliminând limita de opt caractere pentru numele fișierelor. Acum, numele fișierelor pot avea până la 255 de caractere. Singurul motiv pentru utilizarea VFAT este compatibilitatea cu sisteme non-Linux.

CRAMFS: „Compressed ROM File System” este un sistem de fișiere doar pentru citire, conceput pentru sisteme încorporate și utilizări speciale de tip „doar citire”, precum în procesul de pornire al sistemelor Linux. De obicei, este un sistem mic, temporar, încărcat primul, astfel încât procesele de bootstrap pot fi lansate și pregătite pentru montarea sistemului de boot „adevărat”.

MSDOS: Sistemul de fișiere al „Microsoft Disk Operating System”, lansat în 1981, este un sistem simplu. Prima versiune nici măcar nu avea directoare. Are un loc important în istoria computerelor, dar, dincolo de compatibilitatea cu sistemele vechi, nu există prea multe motive să-l folosim astăzi.

Experimentarea sigură cu sistemele de fișiere

Crearea unui sistem de fișiere pe o partiție șterge orice date care se află deja pe acea partiție. Cea mai bună metodă de a experimenta cu sisteme de fișiere este utilizarea unui hard disk de rezervă sau chiar a unui computer de rezervă. Dar cum puțini oameni au hardware de rezervă, vom folosi o metodă mai accesibilă: crearea unui fișier imagine și a sistemelor de fișiere în interiorul acestuia. După montare, acest fișier imagine se comportă ca o partiție obișnuită, oferind posibilitatea de a experimenta fără a pune în pericol datele de pe computerul principal. Pentru aceasta, vom folosi comanda `dd`.

Fișierul imagine este creat prin preluarea datelor sursă și plasarea lor în imagine. Trebuie să îi spunem lui `dd` de unde să-și preia datele. Vom folosi opțiunea `if` (fișier de intrare) pentru a indica `dd` să utilizeze `/dev/zero` ca sursă de date. Aceasta va fi un flux de zerouri.

Opțiunea `of` (fișier de ieșire) specifică numele fișierului imagine. Îl vom numi „wdzwdz.img”.

Mărimea fișierului imagine este determinată de dimensiunea și numărul de blocuri pe care le solicităm. Folosim opțiunea `bs` (dimensiunea blocului) pentru a solicita blocuri de 1MB, iar opțiunea `count` pentru a solicita 250 de blocuri. Asta înseamnă un fișier imagine de 250MB. Când executați comanda, ajustați numărul blocurilor în funcție de necesități și de capacitatea de stocare disponibilă pe computerul dvs. Linux.

dd if=/dev/zero of=~/wdzwdz.img bs=1M count=250

Fișierul este creat, iar `dd` raportează că a creat cele 250 de blocuri.

Putem verifica dimensiunea fișierului imagine folosind `ls`:

ls -hl

Dimensiunea de 250MB este conform așteptărilor.

Crearea sistemului de fișiere

Vom alege să folosim sistemul de fișiere Ext2, cea mai veche versiune Ext pe care o poate crea această implementare `mkfs`. Ext2 nu are jurnalizare, așa că aveți grijă să nu stocați fișiere importante fără a avea copii de rezervă în altă parte. Vom folosi comanda `mkfs.ext2` indicând ca țintă fișierul nostru imagine:

mkfs.ext2 ~/wdzwdz.img

Sistemul de fișiere este creat și sunt afișate detalii despre acesta.

După cum se vede, `mke2fs` a fost folosit.

Acum avem un container pentru sistemul de fișiere – fișierul imagine – care joacă rolul unui hard disk în acest scenariu. În interiorul acestui container, am creat un sistem de fișiere. Pentru a-l folosi, trebuie să îl montăm.

Pentru că este o configurație temporară, vom crea un punct de montare în `/mnt`, numit „tocilar”. Îl vom elimina după ce terminăm.

sudo mkdir /mnt/geek

Acum putem monta fișierul imagine.

sudo mount ~/wdzwdz.img /mnt/geek

Trebuie să schimbăm proprietatea punctului de montare astfel încât să avem acces de citire și scriere.

sudo chown dave:users /mnt/geek/

Acum putem folosi noul sistem de fișiere. Ne vom muta în sistemul de fișiere și vom copia câteva fișiere în el.

cd /mnt/geek
cp ~/Documents/Code/*.? .

Această comandă va copia toate fișierele cu extensie de o singură literă din directorul `~/Documents/Code` în noul sistem de fișiere. Vom verifica dacă s-au copiat.

ls

Fișierele au fost copiate, deci sistemul nostru a fost creat, montat și utilizat cu succes. Să verificăm încă o dată. Din directorul principal, vom demonta sistemul de fișiere (atenție, există un singur „n” în `umount`).

sudo umount /mnt/geek

Dacă ne întoarcem în `/mnt/geek` și verificăm, nu ar trebui să mai găsim niciun fișier, pentru că acestea se află în interiorul fișierului imagine care a fost demontat.

cd /mnt/geek
ls

Explorări suplimentare

Acum că știm cum funcționează, putem încerca un alt sistem de fișiere. De această dată, vom folosi MINIX. Din directorul principal, putem crea un nou sistem de fișiere în fișierul imagine existent.

Atenție! Dacă există fișiere importante în sistemul de fișiere din interiorul fișierului imagine, montați-l și recuperați-le înainte de a crea un nou sistem de fișiere.

mkfs.minix ~/wdzwdz.image

Fără niciun avertisment, noul sistem de fișiere este creat peste cel vechi. Vom monta fișierul imagine folosind aceeași comandă ca înainte:

sudo mount ~/wdzwdz.img /mnt/geek

Ne vom muta în noul sistem de fișiere de la `/mnt/geek` și vom vedea dacă putem crea un fișier.

touch geek.txt

ls -ahl geek.txt

Și la fel de simplu am creat un nou sistem de fișiere, l-am montat și îl putem folosi.

Eliminarea punctului de montare

După ce terminăm, putem elimina punctul de montare „geek”. Pentru asta vom folosi comanda `rmdir`:

cd /mnt
sudo rmdir geek

Jonglând cu focul

În Linux, ca în majoritatea lucrurilor, înveți făcând. Unele comenzi sunt distructive. Dilema este cum să exersăm folosirea lor fără a ne pune în pericol sistemul sau datele.

Acum avem o metodă simplă de a crea și încerca diferite sisteme de fișiere cu `mkfs`, fără a pune în pericol sistemul de operare.