Ich habe eine ext4-Partition (LVM auf einer VM) mit einer großen Anzahl kleiner Dateien , die ich alle 3-4 Monate erweitern muss.
In Bezug auf den von den Inodes verwendeten Speicherplatz.
Verwendet eines der Dateisysteme xfs, btrfs oder ext4 weniger Speicherplatz?
Mit anderen Worten, wird das Wechseln zu btrfs oder xfs dazu führen, dass eine Partition langsamer mit Inodes gefüllt wird als mit ext4?
mkfs.ext4 -t news
um optimale Ergebnisse zu erzielen. Außerdem würde ich vorschlagen, jedes der Dateisysteme nacheinander zu testen (z. B. auf einem lvm- oder Loopback-Gerät) und Ihre realen Dateien darauf zu kopieren, bis es voll ist. Wenn es voll ist, tun Siedf -i
(oderfind | wc -l
), um herauszufinden, welche die meisten Ihrer Dateien gespeichert hat - auf diese Weise wissen Sie es mit Sicherheit.-T
mit einem Großbuchstaben T. Die Konfigurationsdatei hat auch einige andere nützliche Optionenmkfs.ext4 -T news
Antworten:
Zunächst Ihre erste Frage: Ja, eines dieser Dateisysteme benötigt weniger Speicherplatz. Selbst ohne weitere Details wäre es unwahrscheinlich, dass alle genau den gleichen Speicherplatz belegen, da sie unterschiedliche Implementierungen haben. Man muss also weniger Platz beanspruchen als alle anderen.
Btrfs verfügt über eine dynamische Inode-Zuordnung, sodass Sie nicht wie bei den Inode-Tabellen für ext4 (deren Größe zum Zeitpunkt der Erstellung des ext4-Dateisystems festgelegt ist) voll sind.
XFS ist in ähnlicher Weise dynamisch, hat jedoch ein Limit (Prozentsatz des Dateisystems, das für Inodes verwendet werden kann). Ob Sie also Ihre Inode-Berechtigung auffüllen, hängt vom festgelegten Prozentsatz sowie von der Anzahl der Dateien / Dateigrößen ab
quelle
xfs_growfs -m XX
Ja, und beachten Sie, dass alles von Ihren Bedürfnissen abhängt:
Btrfs (ausgesprochen als Butter FS, Better FS oder B-Tree FS)
In Anbetracht der Tatsache, dass das btrfs mehrere Festplatten überspannen kann, ist es ein sehr guter Punkt, dass es 16-mal mehr Speicherplatz als das ext4 unterstützt . Eine maximale Partitionsgröße des btrfs-Dateisystems beträgt 16 Exbibyte, und die maximale Dateigröße beträgt ebenfalls 16 Exbibyte.
Maximale Anzahl von Dateien: 2 ** 64
XFS
Das XFS ist ein leistungsstarkes 64-Bit-Journaling-Dateisystem. XFS unterstützt eine maximale Dateisystemgröße von 8 Exbibyte für das 64-Bit-Dateisystem. Jetzt verwendet RHEL 7.0 XFS als Standarddateisystem, einschließlich der Unterstützung für die Verwendung von XFS für die
/boot
Partition.Maximale Anzahl von Dateien: 2 ** 64
EXT4
Der ext4 ist bekannt dafür, dass er die Geschwindigkeit gegenüber ext3 verbessert. Die ext4 hat einige Grenzen. Die maximale Dateigröße beträgt 16 Tebibyte (was ungefähr 17,6 Terabyte entspricht). Das größte Volume / die größte Partition, die Sie mit ext4 haben können, ist 1 Exbibyte. Wie in den modernsten Dateisystemen handelt es sich um ein Journal-Dateisystem, das ein Journal darüber führt, wo sich die Dateien hauptsächlich auf der Festplatte befinden und über alle anderen Änderungen, die an der Festplatte vorgenommen werden. Unabhängig von all seinen Funktionen wird die transparente Komprimierung, die transparente Verschlüsselung oder die Datendeduplizierung nicht unterstützt. Die Schnappschüsse werden technisch unterstützt, aber diese Funktion ist bestenfalls experimentell.
Maximale Anzahl von Dateien: 4 Milliarden
XFS vs Btrfs
XFS hat kein RAID, während Btrfs RAID noch nicht vollständig stabil ist und sich in den Anfängen befindet. XFS ist immer ausgereifter als Btrfs , aber wir können nicht leugnen, dass Btrfs leistungsstark und ein gut wachsendes Dateisystem ist.
Im Moment ist XFS meine Wahl - zumal es das Standard-FS unter RHEL 7 ist - es sei denn, ich brauche wirklich Btrfs.
quelle
Ich nehme an, das Problem, das Sie haben, ist nicht, dass sich die Partition per se mit Inodes füllt, sondern dass die Anzahl der Inodes im Dateisystem ausgeht. ext4 reserviert die Inodes statisch, wenn das Dateisystem erstellt wird. Sie können die Nummer jedoch mit den folgenden Optionen
mkfs.ext4
festlegen :Das Handbuch gibt ausdrücklich an, dass das Verhältnis von Bytes pro Inode nach dem Erstellen des FS nicht geändert werden kann. Die Gesamtzahl wird jedoch skaliert, um das Verhältnis zu erreichen, wenn die Größe des FS geändert wird.
Sie können auch die Größe jedes Inodes festlegen . Der Standardwert beträgt 256 Byte auf "den meisten" Dateisystemen, kann jedoch auf 128 Byte reduziert werden (der Standardwert für "kleine" Dateisysteme). Der zusätzliche Speicherplatz wird zum Speichern erweiterter Attribute (z. B. SELinux-Labels) verwendet. Wenn Sie diese also nicht benötigen, sollte es sicher sein, die Größe auf ein Minimum zu reduzieren.
df -i
sollte die Anzahl der zugewiesenen und verwendeten Inodes anzeigen. Mit den Standardoptionen hatte eine 30-GB-Partition, die ich mir angesehen habe, einen Inode pro 16 KB. Wenn Ihre Dateien jedoch sehr klein sind, können Sie-i 4096
beispielsweise einen Inode für jeden Datenblock im System festlegen .Wenn Ihre Dateien kleiner als 4096 sind, können Sie auch die Blockgröße des Dateisystems reduzieren, da für alle regulären Dateien ohnehin ein vollständiger Datenblock erforderlich ist. (Das heißt, auf ext4. Ich weiß nicht, ob andere aktuelle Dateisysteme kleine Dateien packen.)
mkfs.ext4
hat auch die-T <type>
Option, die als Abkürzung für einige oder alle von diesen verwendet werden kann. Die Einstellungen sind in/etc/mke2fs.conf
, was auf meinem Debian zBmkfs.ext4 -T small
gleichbedeutend ist mitDies ist möglicherweise keine schlechte Auswahl an Optionen für viele kleine Dateien (und keine xattrs).
Wenn Ihre Dateien noch kleiner als 1 KB sind, ist ein Dateisystem möglicherweise nicht der beste Weg, um die Daten zu speichern. Möglicherweise sollte jedoch eine Datenbank oder ein anwendungsspezifisches System in Betracht gezogen werden.
quelle