Toți folosim fișiere sau fișiere în fiecare zi și cu toții îl folosim foldere sau directoare, fie că este vorba de sistemele de fișiere ale PC-ului desktop, laptopurilor, dispozitivelor mobile etc. Prin urmare, în acest articol voi explica tot ce trebuie să știți despre acest lucru, astfel încât să puteți înțelege ce sunt informațiile și cum sunt stocate in memoria.
Ce este un sistem de fișiere?
Un sistem de fișiere Sistemul de fișiere (FS) este o metodă și o structură de date pe care sistemul de operare o utilizează pentru a controla modul în care informațiile sunt stocate și recuperate. Fără un sistem de fișiere, datele stocate pe un mediu de stocare ar fi o singură entitate de date, fără nicio modalitate de a distinge unde se termină un set de date și începe următorul sau unde se află un set de date atunci când trebuie recuperat. Acestea ar fi ceea ce se numește date brute.
Când formatați o unitate de stocare folosind NTFS, FAT, ext4, btrfs, HFS+ etc., creați de fapt un sistem de fișiere pentru a gestiona datele de pe acea unitate. Cu alte cuvinte, ceea ce numim formate sunt de fapt FS.
Prin separarea datelor în blocuri și denumirea fiecărui bloc, lDatele pot fi ușor izolate și identificatePentru a face toate acestea posibile, un sistem de fișiere este alcătuit din două sau trei straturi. Uneori, aceste straturi sunt separate explicit, iar alteori, funcțiile sunt combinate. Straturile despre care vorbim sunt:
- Sistem de fișiere logic: este responsabil pentru interacțiunea cu aplicația utilizatorului. Oferă o API pentru operațiuni cu fișierele, cum ar fi Deschidere, Închidere, Citire etc.și transmite operațiunea solicitată către stratul inferior pentru procesare. Sistemul de fișiere logic gestionează intrările deschise din tabelul de fișiere și descriptorii de fișiere pentru fiecare proces. Acest strat oferă acces la fișiere, operațiuni asupra directoarelor, securitate și protecție.
- Sistem de fișiere virtualAceastă interfață permite suport pentru mai multe instanțe concurente ale sistemelor de fișiere fizice. Acest strat este opțional și nu este întotdeauna prezent.
- Sistem de fișiere fizicGestionează operațiunile fizice ale dispozitivului de stocare. Procesează blocurile fizice care sunt citite sau scrise. Se ocupă de buffering, gestionarea memoriei și este responsabil pentru plasarea fizică a blocurilor în locații specifice pe mediul de stocare. Sistemul de fișiere fizic interacționează cu driverele hardware de stocare sau cu canalul pentru a direcționa dispozitivul de stocare.
Caracteristici FS
Fiecare sistem de fișiere existent are propriile limitări și caracter pe care ar trebui să le știi, cum ar fi:
- Gestionarea sau alocarea spațiului: Sistemele de fișiere alocă spațiul granular, de obicei pe mai multe unități fizice de pe dispozitiv. Sistemele de fișiere sunt responsabile pentru organizarea fișierelor și directoarelor și pentru urmărirea zonelor din suportul media căror fișiere le aparțin și a celor neutilizate.
- Fragmentare: Acest lucru se întâmplă atunci când același fișier este stocat în diferite părți ale unității de stocare, ceea ce înseamnă că părțile individuale ale fișierului nu sunt contigue. Pe măsură ce fișierele sunt create, modificate și șterse, acest lucru poate duce la zone de spațiu utilizat și neutilizat de diferite dimensiuni. Nu numai atât, dar acest lucru afectează și unele sisteme de stocare (de exemplu, FAT și NTFS de la Microsoft), încetinind citirea fișierelor.
- Nume fișiere: Sistemele de fișiere gestionează restricțiile de lungime, sensibilitatea la majuscule/minuscule și utilizarea caracterelor speciale în numele fișierelor.
- Directoare: Adesea au directoare pentru a organiza fișierele în colecții separate. Pot fi plate sau ierarhice. Voi discuta acest lucru mai detaliat mai târziu, deoarece despre asta este vorba...
- Metadate: Are informații de metadate asociate, care includ detalii precum lungimea datelor, marcajele temporale, permisiunile de acces și atributele fișierului.
- Utilități și acces: Acestea sunt utilizate pentru inițializarea, modificarea și ștergerea instanțelor sistemului de fișiere, precum și pentru crearea, redenumirea și ștergerea directoarelor și fișierelor, criptarea, stabilirea cotelor, migrarea, conversia, copierea de rezervă etc.
- Integritate și gestionarea defecțiunilor: FS trebuie să mențină integritatea structurilor sistemului de fișiere pe stocarea secundară sau pe unități externe, chiar și în cazul unor defecțiuni ale sistemului de operare sau pene de curent.
- Date utilizator: trebuie să permită gestionarea datelor utilizatorilor, inclusiv stocarea, recuperarea și actualizarea datelor.
- Sisteme de fișiere multiple: Este posibil să aveți mai multe sisteme de fișiere pe un singur sistem.
- Limitări de proiectare: Sistemele de fișiere au limitări funcționale care definesc capacitatea maximă de stocare din cadrul sistemului respectiv, dimensiunea maximă a fișierelor, numărul de fișiere etc.
Ce este o partiție?
o perete despărțitor O partiție este o secțiune logică sau o subdiviziune a unui dispozitiv de stocare a datelor, cum ar fi un HDD, SSD, o unitate flash etc. Această partiție servește mai multor scopuri, permițând o mai bună organizare și gestionare a datelor stocate. De exemplu, fiecare partiție ar putea fi utilizată într-un scop specific, ar putea fi instalate mai multe sisteme de operare pe ea etc.
Este important de menționat că crearea, ștergerea și redimensionarea Modificările partițiilor pot duce la pierderea datelor, așa că este important să efectuați aceste operațiuni cu precauție și să creați copii de rezervă ale datelor critice înainte de a face modificări majore la structura partițiilor.
Pe de altă parte, pe scurt, ar trebui să înțelegeți și că există diverse tipuri de partiții fundamental în sistemul MBR (posibilitățile sunt extinse în GPT, cu până la 128 de partiții posibile pe aceeași unitate, deși acesta este un alt subiect…):
- Partiție primară: Fiecare unitate de stocare poate avea până la patru partiții primare. Acestea sunt partițiile principale pe care sunt instalate sistemele de operare și unde se află datele. Una dintre partițiile primare poate fi desemnată ca partiție activă sau de boot, de pe care pornește sistemul de operare.
- Partiție extinsă: O partiție extinsă este o partiție primară specială utilizată pentru a crea partiții logice suplimentare în cadrul acesteia. Nu conține direct date, ci acționează ca un container pentru partiții logice. Puteți avea mai multe partiții logice într-o partiție extinsă. Acest lucru vă permite să depășiți limitarea a patru partiții primare pe un hard disk.
- Partiție logică: Acestea sunt create în cadrul unei partiții extinse. Nu sunt folosite pentru a porni sistemul de operare și sunt în general folosite pentru a organiza date sau fișiere. Puteți avea mai multe partiții logice în cadrul unei partiții extinse, ceea ce facilitează organizarea datelor.
Ce este o tabelă de partiții?
La tabelă de partiții Este o structură de date situată la începutul unui hard disk și conține informații despre modul în care unitatea este împărțită în partiții. De obicei, este stocată în sectorul de boot principal (MBR) pe sistemele bazate pe BIOS sau în GPT (GUID Partition Table) pe sistemele mai moderne bazate pe UEFI. Tabela de partiții include detalii precum dimensiunea fiecărei partiții, tipul acesteia (de exemplu, NTFS, FAT32, ext4 etc.) și locația sa pe mediul de stocare.
Prin urmare, relația dintre tabela de partiții și sistemul de fișiere constă în faptul că tabela de partiții indică unde începe și se termină fiecare partiție pe discul fizic. Fiecare partiție este formatată cu un sistem de fișiere specific. Când se accesează o partiție pentru a citi sau scrie fișiere, sistemul de operare utilizează informațiile din tabela de partiții pentru a localiza și a înțelege cum este structurat sistemul de fișiere pe acea partiție.
Tipuri de sistem de fișiere
Printre diferitele sisteme de fișiere, ar trebui evidențiate următoarele tipuri:
- Sisteme de fișiere pe disc: Aceste sisteme profită de capacitatea mediilor de stocare pe disc de a accesa datele aleatoriu și rapid. Acestea permit mai multor utilizatori sau procese să acceseze datele de pe disc, indiferent de locația sa secvențială. Exemplele includ FAT, exFAT, NTFS, Reiser FS, HFS, HFS+, HPFS, APFS, UFS, ext2, ext3, ext4, XFS, btrfs, VMFS, ZFS, ReiserFS, NSS și ScoutFS. Pe lângă acestea, ar putea fi luate în considerare și următoarele:
- Discuri optice: formate comune precum ISO 9660 și Universal Disk Format (UDF) utilizate pe CD, DVD și Blu-ray.
- Sisteme de fișiere Flash: Aceste sisteme sunt concepute special pentru dispozitive de memorie flash și iau în considerare caracteristicile și restricțiile acestora. Se recomandă utilizarea sistemelor de fișiere concepute pentru dispozitive flash în locul adaptării sistemelor de disc. Câteva exemple sunt JFFS, JFFS2, YAFFS, UBIFS, LogFS și F2FS.
- Sisteme de fișiere cu bandă magnetică: Aceste sisteme gestionează stocarea pe benzi, care au timpi de acces aleatoriu mai lungi decât discurile. Ele diferă în gestionarea directoarelor și subliniază necesitatea evitării mișcărilor liniare frecvente pe benzi. Un exemplu ar fi LTFS de la IBM.
- Sisteme de fișiere cu baze de date: Sisteme de fișiere bazate pe baze de date, unde fișierele sunt identificate după caracteristici precum tipul, autorul sau metadatele. Printre exemple se numără IBM DB2.
- Sisteme de fișiere tranzacționale: Aceste sisteme garantează atomicitatea și izolarea operațiunilor asupra unui fișier. Exemplele includ NTFS în Microsoft Windows și alte prototipuri de sisteme de fișiere tranzacționale pentru UNIX/Linux, cum ar fi LFS, ext3 etc.
- Sisteme de fișiere de rețea: Sisteme de fișiere de rețea care permit accesul la fișiere de pe servere la distanță prin protocoale precum NFS, AFS, SMB, FTP și WebDAV. Adică, sunt concepute pentru calcul distribuit.
- Sisteme de fișiere partajate: Aceste sisteme permit mai multor servere să acceseze în siguranță același subsistem de disc. Printre exemple se numără GFS2, GPFS, SFS, CXFS, StorNext și ScoutFS.
- Sisteme de fișiere speciale: Acestea sunt oarecum specifice și nu au elemente de fișier ca atare, dar pot fi accesate prin API-uri. De exemplu, definim Sistemul de Fișiere al Dispozitivului ca devfs, folosit în Linux etc. Pe de altă parte, avem și altele speciale, cum ar fi configfs, sysfs și procfs, cunoscute și în lumea Linux.
- Sistem de fișiere minimalist / Stocare pe casete audio: Casetele audio au fost folosite ca sisteme de stocare a datelor pentru a alimenta unele modele de microcomputere ale vremii, cum ar fi Commodore PET.
- Sisteme de fișiere plate (Sistem de fișiere plate): Aceste sisteme nu au subdirectoare și stochează toate intrările din directoare într-un singur director principal. Exemple ale acestor sisteme de fișiere (FS) sunt cel utilizat în sistemul CP/M și sistemul de fișiere Macintosh pentru Mac-urile clasice de la Apple.
FS Technologies

Fiecare sistem de fișiere are propriile particularități și acestea suportă diferite tehnologii. Unele dintre cele mai importante sunt:
- Autovindecare: Se referă la capacitatea unui sistem de fișiere de a detecta și corecta automat erorile și problemele care pot apărea în sistemul de stocare. Aceste erori pot include sectoare defecte pe un hard disk sau alte tipuri de corupere a datelor. Când este detectată o eroare, sistemul de fișiere poate încerca să recupereze datele afectate prin restaurarea din copii de rezervă sau prin repararea datelor corupte. Acest lucru ajută la menținerea integrității datelor stocate în sistemul de fișiere.
- Comprimare: Este o funcție care vă permite să reduceți dimensiunea fișierelor și a datelor stocate în sistemul de fișiere. Comprimarea datelor poate economisi spațiu pe disc și poate accelera transferurile de fișiere. Când compresia este activată, sistemul de fișiere comprimă automat fișierele scrise pe acesta și decomprimă fișierele atunci când sunt citite. Acest lucru poate fi util pe sistemele de stocare cu resurse limitate, deși poate încetini accesul.
- Criptare: Este o tehnică utilizată pentru a proteja confidențialitatea datelor stocate în sistemul de fișiere. Datele sunt criptate înainte de a fi scrise pe disc și decriptate atunci când sunt citite. Criptarea asigură că datele sunt ilizibile pentru oricine fără cheia de decriptare corespunzătoare. Acest lucru este esențial pentru protejarea confidențialității și securității datelor sensibile. La fel ca compresia, poate încetini și accesul.
- Jurnalizare (Jurnal de tranzacții): Este o caracteristică care păstrează o evidență a tuturor operațiunilor efectuate asupra sistemului de fișiere, cum ar fi crearea, modificarea sau ștergerea fișierelor. Această înregistrare se numește „jurnal” sau „jurnal de tranzacții”. În cazul unei defecțiuni a sistemului, cum ar fi o pană de curent neașteptată, sistemul de fișiere poate utiliza jurnalul de tranzacții pentru a recupera la o stare consistentă. Acest lucru previne coruperea datelor și asigură integritatea sistemului de fișiere.
- Capacitate instantanee: Snapshot-urile sunt copii ale sistemului de fișiere la un moment dat. Aceste copii sunt snapshot-uri și sunt stocate alături de datele curente din sistemul de fișiere. Snapshot-urile permit restaurarea sistemului de fișiere la o stare anterioară dacă apar erori sau modificări nedorite. Acest lucru este util pentru backup, recuperarea datelor și testarea modificărilor înainte de implementarea lor permanentă pe sistem.
Ce este un director sau un folder?

Acum, că știm cum sunt stocate datele în unități de stocare și structurile de date necesare, este timpul să trecem la explicarea a ceea ce este un... folder sau director.
Un director sau un folder este un structură pentru catalogarea altor fișiere în cadrul sistemului de fișiere, oferindu-i o ierarhie sau o organizare mai intuitivă pentru utilizator sau sistemul de operare. Pentru a face acest lucru, conține referințe către alte fișiere și, eventual, către alte directoare sau foldere, numite în acest caz subdirectoare sau subfoldere.
Unele sisteme de operare cu sisteme de fișiere ierarhice, cum ar fi Unix, au de obicei o memorie cache de directoare cu căi recente stocate într-o porțiune de RAM. În Unix, această porțiune este cunoscută sub numele de DNLC (Directory Name Lookup Cache), în timp ce în Linux se numește dcache. Această porțiune de memorie este actualizată cu căile accesate cel mai recent, în timp ce în sistemele de fișiere de rețea este necesar un mecanism pentru a asigura consecvența prin gestionarea intrărilor care au fost invalidate sau create de utilizatori.
Într-un singur sistem de fișiere ierarhic Stocarea este de tip arbore. Termenii „părinte” și „copil” sunt adesea folosiți pentru a descrie relația dintre un subdirector și directorul în care este catalogat, acesta din urmă fiind părintele. Directorul cu cel mai înalt rang dintr-un astfel de sistem de fișiere, care nu are propriul părinte, se numește directorul rădăcină. Acest lucru poate fi cel mai bine observat în Unix sau Linux, unde există o anumită ierarhie, iar directorul rădăcină este root sau /, din care atârnă toate celelalte directoare, chiar dacă nu se află pe aceeași partiție.
Un director virtual este un tip de organizare a fișierelor care nu se bazează pe locația într-un arbore de directoare ierarhic. În schimb, acesta colectează rezultate dintr-o sursă de date, cum ar fi o bază de date sau un index personalizat, și le prezintă vizual în același format ca vizualizările de foldere.
Aceste foldere sau directoare poate fi gestionat folosind instrumente, atât interfață grafică (GUI), cât și interfață de comandă (CLI). De exemplu, putem folosi comenzi sau chiar managerul de fișiere pentru a crea, șterge, redenumi, muta, copia etc. Deși unele sisteme de operare pot avea anumite restricții privind permisiunile și acțiunile pe care le puteți efectua asupra anumitor foldere...
Detalii despre un folder sau director pe diferite sisteme de operare
En cada sistem de fișiere și sistem de operare, fișierele și folderele sunt tratate diferit:
- RădăcinăAcesta este punctul de la care se află restul ierarhiei de foldere a sistemului sau unde se află. În Windows, acesta este de obicei C:\, în timp ce în Unix/Linux, este partiția rădăcină sau /.
- Cale sau traseuAceasta este calea în care se află un folder sau un fișier în cadrul unui FS. De exemplu, în Windows am putea avea C:\Program Files\Office\Word.exe. În Unix/Linux, ar fi ceva de genul /home/user/example.c. După cum putem vedea, în Windows se folosește bara oblică inversată, în timp ce în lumea *nix se folosește bara oblică tradițională.
- Numele fișierului sau numele fișieruluiAcesta este numele dat fiecărui fișier dintr-un anumit sistem de fișiere (FS). Fiecare sistem de fișiere va avea propriile limitări în ceea ce privește limita maximă de caractere pentru un nume de fișier. În plus, trebuie făcută o distincție între numele de bază și extensie. Unele sisteme timpurii aveau, de asemenea, limitări privind lungimea extensiilor, în general trei. Acesta este motivul pentru care veți vedea uneori .htm în loc de .html, pentru a asigura compatibilitatea cu sistemele DOS. Un exemplu de nume de fișier ar putea fi example.txt, unde „example” este numele și „txt” este extensia, indicând în acest caz că este text.
Cazul particular al Unix/Linux
Ce este superblocul?
Un superbloc Este o structură de date fundamentală care se găsește la începutul unui sistem de fișiere. Superblocul conține informații critice despre sistemul de fișiere în sine și este utilizat pentru a gestiona și accesa datele stocate pe acel sistem de fișiere. Fiecare sistem de fișiere Unix are propriul superbloc, iar formatul său specific poate varia în funcție de sistemul de fișiere utilizat (de exemplu, ext4, XFS, UFS etc.).
La informații care sunt stocate în superbloc pot include:
- Dimensiunea sistemului de fișiere: indică dimensiunea totală a sistemului de fișiere.
- Număr de inoduri: Specifică numărul de inode-uri disponibile în sistemul de fișiere. Inode-urile sunt structuri de date care reprezintă fișiere și directoare.
- Blocuri libere: Înregistrează numărul de blocuri de date libere rămase în sistemul de fișiere pentru stocarea informațiilor.
- Punctul de montare: indică directorul în care este montat sistemul de fișiere pe sistemul de operare.
- Identificarea sistemului de fișiere: un identificator unic pentru sistemul de fișiere care îl distinge de alte sisteme de fișiere de pe același sistem.
- Data și ora adunării: înregistrează când a fost montat ultima dată sistemul de fișiere.
- Contori de inode și blocuri utilizați: ține evidența numărului de inode-uri și blocuri de date utilizate în sistemul de fișiere.
- Suma de control și alte metadate de integritate: Unele superblocuri moderne pot include informații suplimentare pentru a verifica integritatea datelor stocate în sistemul de fișiere.
Când un sistem de fișiere, adică o partiție formatată, este montat, sistemul de operare accesează superblocul pentru a obține informații vitale despre structura și starea sistemului de fișiere. Aceste informații sunt esențiale pentru citirea și scrierea datelor în sistemul de fișiere, precum și pentru asigurarea integrității și consistenței datelor stocate.
Inode-uri și directoare
En Unix/Linux, Totul este un fișier, cum ar fi partițiile, unitățile de dispozitiv etc. Acest lucru nu este valabil în alte sisteme, cum ar fi Windows. Cu toate acestea, atunci când totul este un fișier, chiar și folderele sau directoarele sunt considerate tipuri speciale de fișiere.
Prin urmare, un director este un fișier special care conține nume de fișiere (și subdirectoare) și numere de inode pentru fișiere de pe același sistem de fișiere sau nume de legături simbolice către fișiere sau directoare de pe același sistem de fișiere sau de pe sisteme de fișiere diferite. În cazul legăturilor fizice, inode-ul ține evidența numărului de intrări de director listate în el și șterge blocurile de fișiere atunci când numărul de legături ajunge la zero. Acest lucru este diferit în cazul unei legături soft sau simbolice. Ștergerea unei legături simbolice nu afectează fișierul țintă. Cu toate acestea, dacă un fișier cu legături simbolice către acesta este șters, legăturile devin inutilizabile.
În sistemele de fișiere Unix/Linux, un fișier poate avea mai multe nume, cu o intrare de director pentru fiecare nume din același directoare sau din directoare diferite, toate indicând aceeași structură de inode care menține lista blocurilor de disc unde sunt stocate datele.
Pentru a înțelege mai bine toate acestea, este important să ne amintim ce este un inode (nod index). Este o structură de date fundamentală în sistemele de fișiere *nix. Reprezintă și stochează informații esențiale pe un fișier sau director din sistemul de fișiere. Prin urmare, atât un folder, cât și un fișier vor fi văzute ca inode de către sistem.
Pentru ca acest lucru să fie posibil, fiecare inode indică către următorul informații:
- Număr inode: un identificator unic pentru fiecare fișier sau director.
- Tipul fișierului: Indică dacă inode-ul se referă la un fișier obișnuit (f), un director (d), o legătură simbolică (l) sau un alt tip de fișier.
- Dimensiune: dimensiunea curentă a fișierului în octeți.
- Permisiuni și proprietar: Informații despre cine are permisiunea de a accesa (citire, scriere, executare) și modifica fișierul, precum și proprietarul fișierului (utilizator sau root). Proprietarul poate fi chiar un utilizator care nu există ca atare, dar poate fi un dispozitiv etc.
- Data și ora creării/modificării: Înregistrează momentul în care inode-ul a fost creat inițial și momentul în care a fost modificat ultima dată. Pot fi incluse și alte metadate sau permisiuni extinse.
- Număr de legături: Indică câte nume de fișiere sau directoare sunt asociate cu acest inode. Directoarele au cel puțin două legături: una către ele însele și una către directorul părinte.
- Pointeri către blocuri de date: Conține referințe la blocuri de date de pe unitatea de stocare care stochează conținutul real al fișierului. Aceste blocuri pot fi adrese directe, indirecte sau dublu indirecte, în funcție de implementarea specifică a sistemului de fișiere și de dimensiunea fișierului.
Inode-urile sunt cruciale pentru funcționarea sistemului de fișiere, deoarece permit sistemului de operare să urmărească locația fizică și informațiile asociate cu fiecare fișier și director. Când se accesează un fișier sau director, sistemul de operare consultă numărul inode-ului corespunzător pentru a găsi locația datelor și a altor informații legate de fișierul respectiv.