Wie bestimme ich die Blockgröße für ext4- und btrfs-Dateisysteme?

Wie bestimme ich die Blockgröße für ext4- und btrfs-Dateisysteme?

Ich suche nach Befehlen, die mir das Zuordnungsquantum auf mit ext4 bzw. btrfs formatierten Laufwerken mitteilen.

Hintergrund: Ich verwende ein Backup-System, mit dem Benutzer einzelne Dateien wiederherstellen können. Dieses System verwendet nur rsync und hat keine serverseitige Software, Backups werden nicht komprimiert. Das Ergebnis ist, dass ich etwa 3,6 TB an Dateien habe, die meisten davon klein.

Es scheint, dass die Speicherung meines Datensatzes auf einem Btrfs-Volume unter LVM viel weniger effizient ist als auf einem normalen alten Ext4-Volume, und ich vermute, dass dies mit der Mindestdateigröße und damit der Blockgröße zusammenhängt, aber ich konnte nicht herausfinden, wie ich diese Größen zu Vergleichszwecken erhalten kann. Im Btrfs-Wiki steht, dass die „Seitengröße“ verwendet wird, aber ich habe nichts darüber gefunden, wie man diese Zahl erhält.

Antwort1

Sie sollten sich die Datenblockzuordnungsgröße ansehen, also den Mindestblock, den eine Datei zuordnen kann. Große Dateien bestehen aus mehreren Blöcken. Und am Ende großer Dateien (oder aller kleinen Dateien) bleibt immer etwas „Abfall“, da der letzte Block nicht vollständig gefüllt und daher ungenutzt ist.

Soweit ich weiß, verwendet jedes gängige Linux-Dateisystem standardmäßig 4K-Blöcke, da dies die Standardseitengröße moderner CPUs ist, was bedeutet, dass eine einfache Zuordnung zwischen speicherabgebildeten Dateien und Festplattenblöcken möglich ist. Ich weiß, dass BTRFS und Ext4 standardmäßig die Seitengröße verwenden (die auf den meisten Systemen 4K beträgt).

Überprüfen Sie unter ext4 tune2fsIhre Blockgröße einfach wie folgt (ändern Sie /dev/sda1den Pfad zu Ihrem eigenen Gerät):

[root@centos8 ~]# tune2fs -l /dev/sda1 |grep "^Block size:"
Block size:               4096
[root@centos8 ~]#

Verwenden Sie auf btrfs den folgenden Befehl, um Ihre Blockgröße zu überprüfen (ändern Sie ihn /dev/mapper/cr_rootzu Ihrem eigenen Gerätepfad, dieses Beispiel verwendet einfach einen typischen verschlüsselten BTRFS-on-LUKS-Pfad):

sudo btrfs inspect-internal dump-super -f /dev/mapper/cr_root | grep "^sectorsize"

Antwort2

Sie können verwenden stat -f, um eine Antwort für jedes beliebige Dateisystem zu erhalten, zB:

% stat -f /home
  File: "/home"
    ID: 5013a37be3cd6a47 Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 113391734  Free: 472450     Available: 468304
Inodes: Total: 28868608   Free: 27969906

Antwort3

Wenn Sie sich durch eine Menge zusammenhangloser Informationen wühlen möchten, gibt es btrfs-show-super -f /dev/md1. Ansonsten stat -f …ist die Antwort zu die einfachste und allgemeingültigste.

verwandte Informationen