Puncte:0

Care sunt diferențele dintre aceste caracteristici ext4: dir_nlink vs large_dir

drapel sl

Din pagina de manual ext4(5):

dir_nlink
În mod normal, ext4 permite unui inod să nu aibă mai mult de 65.000 de legături hard. Acest lucru se aplică fișierelor obișnuite, precum și directoarelor, ceea ce înseamnă că nu pot exista mai mult de 64.998 de sub-directoare într-un director (deoarece fiecare dintre intrările „.” și „..”, precum și intrarea de director pentru directorul din directorul său părinte contează ca o legătură rigidă). Această caracteristică ridică această limită determinând ext4 să utilizeze un număr de linkuri de 1 pentru a indica faptul că numărul de linkuri hard către un director nu este cunoscut atunci când numărul de linkuri poate depăși limita maximă.

mare_dir
Această caracteristică mărește limita numărului de fișiere per director prin creșterea dimensiunii maxime a directoarelor și, pentru directoarele b-tree cu hash (vezi dir_index), înălțimea maximă a arborelui b hashed folosit pentru a stoca intrările de director.

Bine, hai să aruncăm o privire dir_index de asemenea.

dir_index
Utilizați arborele hash pentru a accelera căutările de nume în directoare mari. Această caracteristică este acceptată de sistemele de fișiere ext3 și ext4 și este ignorată de sistemele de fișiere ext2.


După înțelegerea mea, la pagina de manual:

  1. Când nu există niciun element într-un director, există 2 legături hard și anume . (directorul indicând spre sine) și .. (aceasta indică către directorul părinte, dar linkul dur se referă la referința de la directorul părinte la director) și valoarea st_nlink câmp în stat structura este 2. Când există 1 articol (să zicem, 1 fișier) într-un director, există 3 link-uri hard și st_nlink spune 3;
  2. Prin urmare, pentru a reprezenta numărul real de legături hard, st_nlink trebuie sa fie cel putin 2. Ca urmare, valoarea 1 este eliberat să reprezinte altceva, în loc să aibă doar 1 hard link, ceea ce nu are sens;
  3. Dacă sistemul de fișiere ext4 este formatat fără dir_nlink, atunci st_nlink nu poate fi mai mare decât 65000, iar sistemul refuză să adauge mai multe elemente când se atinge limita (am citit despre faptul că nucleele moderne se pot porni automat dir_nlink, dar să ignorăm acest lucru pentru simplitatea discuției);
  4. Dacă sistemul de fișiere ext4 este formatat cu dir_nlink, atunci când sunt mai mult decât 65000 elemente dintr-un director, valoarea 1 va fi scris la st_nlink câmp pentru a indica „număr necunoscut de linkuri hard”. Clienții (codul care utilizează sistemul de fișiere ext4) trebuie să parcurgă lista de fișiere (blocul de date al directorului) pentru a număra numărul real de articole din interiorul acesteia;
  5. mare_dir crește dimensiunea maximă a directoarelor;
  6. Dacă dir_index este folosit, mare_dir crește înălțimea maximă a arborelui B hashed.

Intrebarile mele

  1. Dacă dir_nlink este folosit singur, care este dimensiunea maximă a unui director? Credeam că este infinit atâta timp cât există suficiente blocuri de date pentru a stoca lista de fișiere din director, dar acum se pare că nu este.
  2. cred ca folosind mare_dir singur nu are sens, deoarece dimensiunea directorului este încă limitată de 65000. Am dreptate?
  3. Dacă mare_dir este utilizat, care este dimensiunea maximă a unui director?
  4. Există vreun dezavantaj în utilizare mare_dir? Motivul pentru care am această întrebare este că în Ubuntu 20.04 LTS, dir_nlink este setat implicit (vezi /etc/mke2fs.conf, este în listă la [fs_types] > ext4 > Caracteristici), dar mare_dir nu este.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.