GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Unterschied zwischen Blockgröße und Clustergröße?

Ich habe eine Frage zur Blockgröße und Clustergröße. In Bezug auf das, was ich darüber gelesen habe, gehe ich von Folgendem aus:

  • Die Blockgröße ist die physikalische Größe eines Blocks, meist 512 Bytes. Es gibt keine Möglichkeit, dies zu ändern.
  • Die Clustergröße ist die minimale Größe eines Blocks, der vom Betriebssystem gelesen und beschrieben werden kann. Wenn ich ein neues Dateisystem erstelle, z. ext3 kann ich diese minimale Blockgröße mit dem Schalter -b festlegen. Fast alle Programme wie dumpe2fs, mke2fs verwenden die Blockgröße als Bezeichnung für die Clustergröße.

Wenn ich folgende Ausgabe bekomme:

$ stat test
File: `test'
Size: 13            Blocks: 4          IO Block: 2048   regular file
Device: 700h/1792d  Inode: 15          Links: 1

Ist es richtig, dass die Größe der tatsächliche Speicherplatz in Bytes ist, Blöcke die physisch verwendeten Blöcke sind (jeweils 512 Bytes) und IO-Block sich auf die beim Erstellen des FS angegebene Blockgröße bezieht?

Akzeptierte Antwort:

Ich glaube, Sie sind verwirrt, möglicherweise weil Sie mehrere Dokumente gelesen haben, die unterschiedliche Terminologien verwenden. Begriffe wie „Blockgröße“ und „Clustergröße“ haben selbst im Kontext der Dateisystemliteratur keine universelle Bedeutung.

Dateisysteme

Bei ext2 oder ext3 ist die Situation relativ einfach:Jede Datei belegt eine bestimmte Anzahl von Blöcken. Alle Blöcke auf einem bestimmten Dateisystem haben die gleiche Größe, normalerweise 1024, 2048 oder 4096 Bytes. Eine Datei¹, deren Größe zwischen N Blöcken plus einem Byte und N+1 Blöcken liegt, belegt N+1 Blöcke. Diese Blockgröße geben Sie mit mke2fs -b an . Es gibt keinen separaten Begriff von Clustern.

Das insbesondere von MS-DOS und frühen Windows-Versionen verwendete FAT-Dateisystem hat eine ähnlich einfache Speicherplatzzuweisung. Was ext2 Blöcke nennt, nennt FAT Cluster; das Konzept ist dasselbe.

Einige Dateisysteme haben ein ausgeklügelteres Zuordnungsschema:Sie haben Blöcke fester Größe, können aber denselben Block verwenden, um die letzten paar Bytes von mehr als einer Datei zu speichern. Dies wird als Blockunterzuordnung bezeichnet; Reiserfs und Btrfs machen das, aber nicht ext3 oder gar ext4.

Dienstprogramme

Unix-Dienstprogramme verwenden oft das Wort „Block“, um eine Einheit beliebiger Größe zu bezeichnen, typischerweise 512 Bytes oder 1 KB. Diese Verwendung steht in keinem Zusammenhang mit einem bestimmten Dateisystem oder einer bestimmten Plattenhardware. Historisch gesehen ist der 512-B-Block entstanden, weil Festplatten und Dateisysteme zu dieser Zeit oft in 512-B-Blöcken betrieben wurden, aber die moderne Verwendung ist nur willkürlich. Herkömmliche Unix-Dienstprogramme und -Schnittstellen verwenden manchmal immer noch 512-B-Blöcke, obwohl 1-kB-Blöcke jetzt oft bevorzugt werden. Sie müssen die Dokumentation jedes Dienstprogramms überprüfen, um zu erfahren, welche Blockgröße es verwendet (einige haben einen Schalter, z. B. du -B oder df -B unter Linux).

Siehe auch:Switch – der Unterschied zwischen Smart und Managed Switch?

In der GNU/Linux stat Dienstprogramm, die blocks Zahl ist die Anzahl der 512B-Blöcke, die von der Datei verwendet werden. Der IO Block Zahl ist die bevorzugte Größe für die Dateieingabe/-ausgabe, die im Prinzip nichts damit zu tun hat, aber normalerweise ein Hinweis auf die Blockgröße des zugrunde liegenden Dateisystems ist (oder Clustergröße, wenn Sie es so nennen möchten). Hier haben Sie eine 13-Byte-Datei, die einen Block im ext3-Dateisystem mit einer Blockgröße von 2048 belegt; daher belegt die Datei 4 512-Byte-Einheiten (von stat „Blöcke“ genannt ).

Festplatten

Die meisten Festplatten verfügen über eine Schnittstelle, die die Festplatte als eine Reihe von Sektoren anzeigt. Die Festplatte kann nur einen ganzen Sektor schreiben oder lesen, nicht einzelne Bits oder Bytes. Die meisten Festplatten haben 512-Byte-Sektoren, obwohl Festplatten mit 4-KB-Sektoren vor ein paar Jahren auftauchten.

Die Festplattensektorgröße steht nicht in direktem Zusammenhang mit der Blockgröße des Dateisystems, aber es ist besser für die Leistung, wenn ein Block aus einer ganzen Anzahl von Sektoren besteht.

¹ Ausnahme:Sparse-Dateien sparen Platz .


Linux
  1. Unterschied zwischen Login-Shell und Nicht-Login-Shell?

  2. Unterschied zwischen 2>&-, 2>/dev/null, |&, &>/dev/null und>/dev/null 2>&1?

  3. Was ist der Unterschied zwischen Sudo Su – und Sudo Su –?

  4. Unterschied zwischen Gtk- und Qt-Anwendungen?

  5. Unterschied zwischen Piping und Befehlserweiterung?

Unterschied zwischen apt und apt-get erklärt

Unterschied zwischen [0-9], [[:digit:]] und D?

Unterschied zwischen Snat und Maskerade?

Der Unterschied zwischen Nss und Pam?

Unterschied zwischen $HOME und '~' (Tilde)?

unterschied zwischen netstat und ss unter linux?