<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://xinux.net/index.php?action=history&amp;feed=atom&amp;title=Storage_Tools_die_man_kennen_sollte</id>
	<title>Storage Tools die man kennen sollte - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://xinux.net/index.php?action=history&amp;feed=atom&amp;title=Storage_Tools_die_man_kennen_sollte"/>
	<link rel="alternate" type="text/html" href="https://xinux.net/index.php?title=Storage_Tools_die_man_kennen_sollte&amp;action=history"/>
	<updated>2026-08-23T16:05:40Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://xinux.net/index.php?title=Storage_Tools_die_man_kennen_sollte&amp;diff=72919&amp;oldid=prev</id>
		<title>Thomas.will am 20. August 2026 um 05:44 Uhr</title>
		<link rel="alternate" type="text/html" href="https://xinux.net/index.php?title=Storage_Tools_die_man_kennen_sollte&amp;diff=72919&amp;oldid=prev"/>
		<updated>2026-08-20T05:44:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://xinux.net/index.php?title=Storage_Tools_die_man_kennen_sollte&amp;amp;diff=72919&amp;amp;oldid=72918&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
	<entry>
		<id>https://xinux.net/index.php?title=Storage_Tools_die_man_kennen_sollte&amp;diff=72918&amp;oldid=prev</id>
		<title>Thomas.will: Die Seite wurde neu angelegt: „XFS ist ein 64-Bit-Journaling-Dateisystem, ursprünglich von Silicon Graphics (SGI) in den 1990er Jahren für IRIX und High-Performance-Computing entwickelt un…“</title>
		<link rel="alternate" type="text/html" href="https://xinux.net/index.php?title=Storage_Tools_die_man_kennen_sollte&amp;diff=72918&amp;oldid=prev"/>
		<updated>2026-08-20T05:33:59Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „XFS ist ein 64-Bit-Journaling-Dateisystem, ursprünglich von Silicon Graphics (SGI) in den 1990er Jahren für IRIX und High-Performance-Computing entwickelt un…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;XFS ist ein 64-Bit-Journaling-Dateisystem, ursprünglich von Silicon Graphics (SGI) in den 1990er Jahren für IRIX und High-Performance-Computing entwickelt und seit 2001 im Linux-Kernel. Auf Red Hat, Rocky und CentOS ist es das Standard-Dateisystem. Dieser Artikel behandelt Aufbau und Besonderheiten von XFS sowie die Werkzeuge zur Administration.&lt;br /&gt;
&lt;br /&gt;
Alle Beispiele verwenden Datenpartitionen ab &amp;lt;code&amp;gt;/dev/sdb&amp;lt;/code&amp;gt;. '''&amp;lt;code&amp;gt;/dev/sda&amp;lt;/code&amp;gt; ist die Systemplatte und wird nie angefasst.'''&lt;br /&gt;
&lt;br /&gt;
=Eigenschaften von XFS=&lt;br /&gt;
&lt;br /&gt;
==Kerncharakteristik==&lt;br /&gt;
*Journaling-Dateisystem – kein Copy-on-Write wie btrfs oder ZFS.&lt;br /&gt;
*Aufbau in unabhängigen '''Allocation Groups (AGs)''' statt klassischer Block Groups.&lt;br /&gt;
*Online-Vergrößern möglich, '''Verkleinern nicht''' – weder online noch offline.&lt;br /&gt;
*Sehr gute Skalierung bei großen Dateien und hoher Parallelität, ausgelegt bis in den Exabyte-Bereich.&lt;br /&gt;
&lt;br /&gt;
==Erweiterte Funktionen==&lt;br /&gt;
*ACLs (Access Control Lists), erweiterte Attribute (xattr) und Quota-Unterstützung (User, Group, Project).&lt;br /&gt;
&lt;br /&gt;
=Architektur=&lt;br /&gt;
&lt;br /&gt;
Auch ext4 unterteilt das Volume in Gruppen. Der Unterschied liegt nicht in der Gruppierung selbst, sondern in Zweck und Locking-Granularität:&lt;br /&gt;
&lt;br /&gt;
*'''Ext4 Block Groups''' dienen vor allem der '''Lokalität''' – Inodes nah bei ihren Datenblöcken, kurze Seek-Wege auf HDDs. Die Allokation läuft faktisch über einen globalen, seriell arbeitenden Allocator.&lt;br /&gt;
*'''XFS Allocation Groups''' sind für echte '''Parallelität''' entworfen – praktisch unabhängige Mini-Dateisysteme innerhalb eines Geräts. Jede AG hat eigene AGF/AGI-Locks, sodass mehrere Threads gleichzeitig in verschiedenen AGs allozieren können, ohne sich zu blockieren.&lt;br /&gt;
&lt;br /&gt;
'''Merksatz:''' Beide haben Gruppen – ext4 nutzt sie für Lokalität (seriell), XFS für Locking-Granularität (parallel).&lt;br /&gt;
&lt;br /&gt;
{{#drawio:xfs-ag}}&lt;br /&gt;
''Abbildung 1: Aufbau der Allocation Groups''&lt;br /&gt;
&lt;br /&gt;
==Die zentralen Metadaten-Strukturen==&lt;br /&gt;
&lt;br /&gt;
*'''Superblock''' – nur in AG 0 der echte Superblock, in allen weiteren AGs eine Kopie zur Redundanz. Enthält die globalen Parameter: Blockgröße, AG-Größe, Inode-Größe, UUID.&lt;br /&gt;
*'''AGF (Allocation Group Free Space)''' – verwaltet den freien Platz innerhalb der AG über zwei parallele B+Trees: einer sortiert nach Blocknummer (Suche nach freiem Extent nahe bestehender Daten), einer nach Extent-Größe (passenden freien Extent für eine Allokation finden).&lt;br /&gt;
*'''AGI (Allocation Group Inode Information)''' – verwaltet Inodes '''ohne feste Bitmap''', dynamisch per B+Tree. Deshalb ist die Zahl der Inodes bei XFS – anders als bei ext4 – beim &amp;lt;code&amp;gt;mkfs&amp;lt;/code&amp;gt; '''nicht''' fest vorgegeben, sondern wächst mit Bedarf.&lt;br /&gt;
*'''B+Trees''' – XFS verwendet fast überall B+Trees statt linearer Bitmaps (Free Space, Inodes, Extents, große Verzeichnisse). Suchen, Einfügen und Löschen laufen in O(log n) statt linearem Scan.&lt;br /&gt;
&lt;br /&gt;
=Delayed Allocation=&lt;br /&gt;
&lt;br /&gt;
XFS reserviert beim Schreiben zunächst nur virtuell Platz im RAM (Extent-Reservierung); die tatsächliche physische Blockzuweisung erfolgt erst beim Flush auf die Platte. Dadurch werden viele kleine Schreibvorgänge zu einem großen zusammenhängenden Extent zusammengefasst – weniger Fragmentierung bei sequentiellen Lasten wie Datenbank-Dumps, Logs oder großen Kopien.&lt;br /&gt;
&lt;br /&gt;
{{#drawio:xfs-delalloc}}&lt;br /&gt;
''Abbildung 2: Delayed Allocation''&lt;br /&gt;
&lt;br /&gt;
Delayed Allocation ist kein XFS-Alleinstellungsmerkmal – ext4 nutzt dasselbe Prinzip (siehe [[ext4 Eigenschaften]]).&lt;br /&gt;
&lt;br /&gt;
=XFS ist kein Copy-on-Write=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Eigenschaft !! ext4 / XFS !! btrfs / ZFS&lt;br /&gt;
|-&lt;br /&gt;
| Schreibprinzip || Overwrite in-place || Copy-on-Write&lt;br /&gt;
|-&lt;br /&gt;
| Crash-Konsistenz || Metadaten-Journal (Redo/Replay) || alter Block bleibt bis zum Pointer-Swap gültig&lt;br /&gt;
|-&lt;br /&gt;
| Snapshots || nicht nativ (nur über LVM darunter) || nativ, quasi kostenlos&lt;br /&gt;
|-&lt;br /&gt;
| Prüfsummen je Block || nein (nur Metadaten) || ja (Standard)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Merksatz:''' CoW = nie überschreiben, immer umbiegen (btrfs/ZFS). Journaling = überschreiben, aber die Absicht vorher protokollieren (ext4/XFS).&lt;br /&gt;
&lt;br /&gt;
=Wachsen und Schrumpfen=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! ext4 !! XFS&lt;br /&gt;
|-&lt;br /&gt;
| Online vergrößern || ja (&amp;lt;code&amp;gt;resize2fs&amp;lt;/code&amp;gt;) || ja (&amp;lt;code&amp;gt;xfs_growfs&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| Offline vergrößern || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| Verkleinern || ja, aber nur offline || '''nicht unterstützt'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Einmal als XFS formatiert und zu groß gewachsen, gibt es nur den Weg über Backup, Neuformatieren und Restore. Ein &amp;lt;code&amp;gt;xfs_shrink&amp;lt;/code&amp;gt; existiert nicht.&lt;br /&gt;
&lt;br /&gt;
=Wann XFS, wann ext4?=&lt;br /&gt;
&lt;br /&gt;
*'''XFS''' bei sehr großen Volumes (Multi-TB, Datenbanken, Fileserver), hoher paralleler I/O-Last und großen Dateien mit sequentiellem Zugriff.&lt;br /&gt;
*'''ext4''' bei kleineren Partitionen, wo man Verkleinern braucht, bei geringerem RAM-/Overhead-Anspruch und didaktisch, um den Offline-Shrink mit &amp;lt;code&amp;gt;resize2fs&amp;lt;/code&amp;gt; zu zeigen.&lt;br /&gt;
&lt;br /&gt;
=Administration=&lt;br /&gt;
&lt;br /&gt;
Die folgenden Werkzeuge gehören zum täglichen Umgang mit XFS auf RHEL/Rocky.&lt;br /&gt;
&lt;br /&gt;
==Ein Dateisystem anlegen==&lt;br /&gt;
*mkfs.xfs /dev/sdb2&lt;br /&gt;
&lt;br /&gt;
Mit Label und erzwungenem Überschreiben. &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt; legt auch dann an, wenn schon ein Dateisystem existiert; &amp;lt;code&amp;gt;-L&amp;lt;/code&amp;gt; setzt ein Label (max. 12 Zeichen).&lt;br /&gt;
*mkfs.xfs -f -L test /dev/sdb2&lt;br /&gt;
&lt;br /&gt;
 meta-data=/dev/sdb2              isize=512    agcount=4, agsize=327680 blks&lt;br /&gt;
          =                       sectsz=512   attr=2, projid32bit=1&lt;br /&gt;
          =                       crc=1        finobt=1, sparse=1, rmapbt=0&lt;br /&gt;
          =                       reflink=1    bigtime=1 inobtcount=1 nrext64=0&lt;br /&gt;
 data     =                       bsize=4096   blocks=1310720, imaxpct=25&lt;br /&gt;
          =                       sunit=0      swidth=0 blks&lt;br /&gt;
 naming   =version 2              bsize=4096   ascii-ci=0, ftype=1&lt;br /&gt;
 log      =internal log           bsize=4096   blocks=16384, version=2&lt;br /&gt;
          =                       sectsz=512   sunit=0 blks, lazy-count=1&lt;br /&gt;
 realtime =none                   extsz=4096   blocks=0, rtextents=0&lt;br /&gt;
&lt;br /&gt;
In der Ausgabe sieht man &amp;lt;code&amp;gt;agcount=4&amp;lt;/code&amp;gt;: vier Allocation Groups. Das Journal (&amp;lt;code&amp;gt;log&amp;lt;/code&amp;gt;) liegt intern im Dateisystem selbst.&lt;br /&gt;
&lt;br /&gt;
==Informationen abrufen==&lt;br /&gt;
Metadaten und Aufbau anzeigen – wahlweise über das Gerät oder über den Mountpunkt.&lt;br /&gt;
*xfs_info /dev/sdb2&lt;br /&gt;
&lt;br /&gt;
Label und UUID aller Blockgeräte:&lt;br /&gt;
*lsblk -f&lt;br /&gt;
&lt;br /&gt;
==Online vergrößern==&lt;br /&gt;
Voraussetzung: das darunterliegende Blockgerät oder der LV wurde bereits vergrößert (etwa mit &amp;lt;code&amp;gt;lvextend&amp;lt;/code&amp;gt;). Wichtig: &amp;lt;code&amp;gt;xfs_growfs&amp;lt;/code&amp;gt; arbeitet auf dem '''Mountpunkt''', nicht auf dem Gerät – anders als &amp;lt;code&amp;gt;resize2fs&amp;lt;/code&amp;gt; bei ext4.&lt;br /&gt;
*xfs_growfs /mnt/work&lt;br /&gt;
&lt;br /&gt;
==Reparieren==&lt;br /&gt;
Nur im '''ausgehängten''' Zustand.&lt;br /&gt;
*umount /mnt/work&lt;br /&gt;
&lt;br /&gt;
*xfs_repair /dev/sdb2&lt;br /&gt;
&lt;br /&gt;
Bei beschädigtem Log wird es mit &amp;lt;code&amp;gt;-L&amp;lt;/code&amp;gt; verworfen. Datenverlust möglich – nur als letzter Ausweg, wenn der normale Log-Replay beim Mounten fehlschlägt.&lt;br /&gt;
*xfs_repair -L /dev/sdb2&lt;br /&gt;
&lt;br /&gt;
==Label oder UUID nachträglich ändern==&lt;br /&gt;
Ohne Neuformatieren, nur im ausgehängten Zustand.&lt;br /&gt;
*xfs_admin -L neuesLabel /dev/sdb2&lt;br /&gt;
&lt;br /&gt;
*xfs_admin -U generate /dev/sdb2&lt;br /&gt;
&lt;br /&gt;
==Fragmentierung==&lt;br /&gt;
Grad der Fragmentierung prüfen:&lt;br /&gt;
*xfs_db -c frag -r /dev/sdb2&lt;br /&gt;
&lt;br /&gt;
Defragmentieren. Ohne Geräteangabe durchsucht &amp;lt;code&amp;gt;xfs_fsr&amp;lt;/code&amp;gt; alle gemounteten XFS-Dateisysteme.&lt;br /&gt;
*xfs_fsr /dev/sdb2&lt;br /&gt;
&lt;br /&gt;
==Freeze und Unfreeze==&lt;br /&gt;
Für einen konsistenten Snapshot eines laufenden Systems, etwa vor einem LVM-Snapshot. Einfrieren:&lt;br /&gt;
*xfs_freeze -f /mnt/work&lt;br /&gt;
&lt;br /&gt;
Wieder auftauen:&lt;br /&gt;
*xfs_freeze -u /mnt/work&lt;br /&gt;
&lt;br /&gt;
==Quota==&lt;br /&gt;
Quota wird über eine Mount-Option in &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt; aktiviert: &amp;lt;code&amp;gt;uquota&amp;lt;/code&amp;gt; (User), &amp;lt;code&amp;gt;gquota&amp;lt;/code&amp;gt; (Group) oder &amp;lt;code&amp;gt;pquota&amp;lt;/code&amp;gt; (Project). Auswertung:&lt;br /&gt;
*xfs_quota -x -c 'report' /mnt/work&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Dateisysteme]]&lt;br /&gt;
[[Kategorie:Rocky Linux Kurs]]&lt;/div&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
</feed>