XFS-Dateisystem unter Linux: Eigenschaften, Einsatz und Größenverwaltung
XFS unter Linux verständlich erklärt: Eigenschaften, Grenzen, ACLs, Quotas, Erstellung, Mounting, LVM-Erweiterung und wichtige Einschränkungen.
XFS ist ein leistungsorientiertes, journalingfähiges 64-Bit-Dateisystem für Linux. Es eignet sich besonders für große Dateien, große Dateisysteme und Server- oder Storage-Workloads. Dieser Artikel erklärt die Grundlagen, die wichtigsten Grenzen sowie das Erstellen, Einbinden und Erweitern von XFS.
Für die praktischen Beispiele werden administrative Rechte und ein grundlegendes Verständnis von Blockgeräten, Mount-Punkten, /etc/fstab und optional LVM vorausgesetzt. Grundlagen zu Mount-Punkten behandelt der Beitrag Dateisysteme mounten.
Was ist XFS?
XFS wurde ursprünglich von Silicon Graphics (SGI) für das Betriebssystem IRIX entwickelt und später auf Linux portiert. Die Bezeichnung wird üblicherweise als X File System erklärt. XFS wird außerdem häufig mit Extents in Verbindung gebracht, weshalb gelegentlich die Bezeichnung „Extents File System“ verwendet wird. Fachlich entscheidend ist jedoch: XFS verwaltet Dateidaten extent-basiert.
Ein Extent ist ein zusammenhängender Bereich von Datenblöcken. Statt viele einzelne Blöcke separat zu verwalten, kann das Dateisystem einen größeren zusammenhängenden Bereich als Einheit beschreiben. Das reduziert Verwaltungsaufwand und kann bei großen Dateien und umfangreichen Datenbeständen die Leistung verbessern.
XFS ist ein 64-Bit-Dateisystem mit Journaling. Es wurde auf hohe Skalierbarkeit und gute Leistung ausgelegt und wird unter Linux häufig für Datenpartitionen, Dateiserver, virtuelle Maschinen, Datenbanken sowie große Medien- und Backup-Bestände eingesetzt.
Grundlegende Eigenschaften
Journaling und Konsistenz
Journaling bedeutet, dass wichtige Dateisystemänderungen zunächst in einem Protokoll, dem Journal, festgehalten werden. Nach einem Absturz kann XFS dadurch die Dateisystemstrukturen schneller wieder in einen konsistenten Zustand bringen.
Journaling ist kein Ersatz für ein Backup. Es schützt vor allem die Struktur des Dateisystems nach Stromausfällen oder Systemabstürzen. Es schützt nicht zuverlässig vor versehentlich gelöschten Dateien, defekten Geräten, Schadsoftware oder dem Verlust des gesamten Systems.
Extents, Leistung und Skalierung
Die extent-basierte Speicherverwaltung ist besonders bei großen Dateien und großen zusammenhängenden Speicherbereichen vorteilhaft. XFS verwendet effiziente Strukturen zur Verwaltung von freien Bereichen und Metadaten. Auf leistungsfähiger Server- und Storage-Hardware kann es hohe parallele Ein- und Ausgabe sowie große Datenmengen gut verarbeiten.
Die tatsächliche Leistung hängt trotzdem von vielen Faktoren ab: Speichergerät, RAID- oder SAN-Konfiguration, Kernel, Mount-Optionen, Dateigrößen, Zugriffsmuster und Anwendung. XFS ist daher kein automatisch schnelleres Dateisystem für jeden Zweck.
Funktionen von XFS
- ACLs: Access Control Lists erlauben zusätzliche, feinere Zugriffsregeln neben den klassischen Unix-Rechten.
- Disk Quotas: Speicherverbrauch kann für Benutzer und Gruppen begrenzt oder überwacht werden.
- LVM-Zusammenspiel: XFS kann auf Logical Volumes und anderen von Volume-Managern bereitgestellten Blockgeräten verwendet werden.
- Mehrere Mount-Punkte: Unterschiedliche XFS-Dateisysteme können beispielsweise für
/data, Backups oder einzelne Serverdienste getrennt eingebunden werden. - HSM-Szenarien: Hierarchisches Speichermanagement kann mit zusätzlichen HSM-Komponenten und passenden Richtlinien umgesetzt werden. Das ist keine vollständig eigenständige, überall gleich verfügbare XFS-Funktion; Distribution, Kernel und konkrete HSM-Implementierung müssen geprüft werden.
Ein Volume Manager ist eine zusätzliche Schicht zur flexiblen Verwaltung von Speicherbereichen. Unter Linux ist LVM besonders verbreitet: Ein Logical Volume kann vergrößert werden, bevor das darauf liegende XFS-Dateisystem die neue Kapazität übernimmt.
Wesentliche Eigenschaften und Grenzen von XFS
Die folgenden Werte sind technische Richtwerte der jeweiligen XFS-Implementierung. Die praktisch nutzbaren Grenzen können durch Kernel, Distribution, CPU-Architektur, Werkzeuge und beim Formatieren gewählte Optionen niedriger ausfallen.
| Merkmal | Wert oder Unterstützung | Bedeutung in der Praxis |
|---|---|---|
| Dateisystemtyp | 64-Bit-Journaling-Dateisystem | Geeignet für große Datenbestände und schnelle Wiederherstellung der Dateisystemstruktur. |
| Journaling | Unterstützt | Metadatenänderungen werden protokolliert; schützt nicht vor Datenverlust und ersetzt kein Backup. |
| Architektur | 64 Bit | Große Adressräume und umfangreiche Dateisysteme sind möglich. |
| Blockgrößenbereich | 512 Byte bis 64 KiB, abhängig von Kernel, Architektur und Formatierungsoptionen | Die Blockgröße sollte zur Plattform und zum Einsatzprofil passen. |
| Maximale Dateigröße | Bis zu 8 EB unter geeigneten System- und Formatierungsbedingungen | Die reale Grenze kann durch Kernel, Distribution, Architektur und gewählte Optionen kleiner sein. |
| Maximale Dateisystemgröße | Bis zu 16 EB unter geeigneten System- und Formatierungsbedingungen | Praktisch maßgeblich sind die unterstützte Umgebung und die konkrete XFS-Konfiguration. |
| Maximale Dateinamenlänge | 255 Byte | Ein einzelner Dateiname darf diese Grenze nicht überschreiten; Byte und Zeichen sind bei UTF-8 nicht identisch. |
| ACL-Unterstützung | Ja | Feingranulare Zugriffssteuerung für Dateien und Verzeichnisse. |
| Quota-Unterstützung | Benutzer- und Gruppenquotas | Speicherverbrauch kann überwacht und begrenzt werden. |
| HSM-Unterstützung | Über zusätzliche Komponenten und distributionsabhängige Lösungen | Vor der Planung müssen konkrete HSM-Werkzeuge und deren XFS-Unterstützung geprüft werden. |
| Vergrößern | Online möglich | Ein eingehängtes XFS-Dateisystem kann mit xfs_growfs erweitert werden. |
| Verkleinern | Nicht direkt unterstützt | Für ein kleineres Dateisystem ist eine Datenmigration erforderlich. |
XFS erstellen und einbinden
1. Werkzeuge und Zielgerät prüfen
Zum Erstellen und Verwalten werden die XFS-Werkzeuge aus dem Paket xfsprogs benötigt. Zuerst sollte eindeutig geprüft werden, welches Blockgerät oder Logical Volume verwendet werden soll.
lsblk -f
xfs_info -V
rpm -q xfsprogs
# Debian- oder Ubuntu-basierte Systeme:
dpkg -l xfsprogsPrüfen Sie vor dem Formatieren insbesondere den Gerätenamen. Ein Gerät wie /dev/sdb1 oder /dev/vgdata/lvdata kann vorhandene Daten enthalten.
2. XFS-Dateisystem erstellen
Achtung: mkfs.xfs erstellt ein neues Dateisystem und löscht die vorhandenen Daten auf dem angegebenen Zielgerät.
sudo mkfs.xfs /dev/sdb1
# Beispiel mit einem LVM-Logical-Volume:
sudo mkfs.xfs /dev/vgdata/lvdata3. Mount-Punkt vorbereiten und temporär mounten
Ein Mount-Punkt ist ein Verzeichnis, unter dem Linux das Dateisystem in den Verzeichnisbaum einbindet.
sudo mkdir -p /data
sudo mount /dev/vgdata/lvdata /data
findmnt /data
df -hT /data
sudo xfs_info /dataFür ein Datenvolume mit großen Mediendateien ist damit ein separater Bereich unter /data eingerichtet. Die Trennung vom Systemdateisystem erleichtert Verwaltung, Kapazitätsplanung und gegebenenfalls spätere Migration.
4. Dauerhaftes Einbinden über /etc/fstab
Für die dauerhafte Einbindung wird vorzugsweise die UUID verwendet. Sie bleibt beim normalen Neustart stabiler als ein Gerätename wie /dev/sdb1.
sudo blkid /dev/vgdata/lvdata
# Beispiel für /etc/fstab:
UUID=<uuid> /data xfs defaults 0 0
# Konfiguration testen:
sudo mount -a
findmnt /data
df -hT /dataEin fehlerhafter Eintrag in /etc/fstab kann das automatische Einhängen oder sogar den Systemstart beeinträchtigen. Nach Änderungen sollte mount -a kontrolliert ausgeführt und die Ausgabe auf Fehler geprüft werden.
Quotas für Benutzer und Gruppen
Eine Disk Quota begrenzt oder überwacht den Speicherverbrauch eines Benutzers oder einer Gruppe. Bei XFS werden Quotas typischerweise über Mount-Optionen aktiviert. Die genaue Verwaltung unterscheidet sich je nach Distribution und eingesetzter Quota-Variante.
# Beispiel in /etc/fstab:
UUID=<uuid> /data xfs defaults,uquota,gquota 0 0
# Danach neu einhängen, sofern keine offenen Zugriffe entgegenstehen:
sudo mount -o remount /data
# Quota-Status und Verbrauch prüfen, je nach Distribution:
sudo xfs_quota -x -c 'state' /data
sudo xfs_quota -x -c 'report -h' /dataMit uquota werden Benutzerquotas und mit gquota Gruppenquotas aktiviert. Für konkrete Limits können je nach Umgebung beispielsweise xfs_quota oder distributionsspezifische Quota-Werkzeuge verwendet werden. Vor dem produktiven Einsatz sollten die Manpages und die Quota-Konfiguration der eigenen Distribution geprüft werden.
XFS-Dateisystem vergrößern
Der zentrale Grundsatz lautet: XFS kann vergrößert, aber nicht verkleinert werden. Bei einer Erweiterung müssen zwei Ebenen unterschieden werden:
- Das zugrunde liegende Blockgerät oder Logical Volume erhält mehr Speicher.
- Das eingehängte XFS-Dateisystem übernimmt diesen zusätzlichen Speicher mit
xfs_growfs.
Nur das Logical Volume zu vergrößern reicht daher nicht aus. Umgekehrt kann XFS nicht über die tatsächliche Größe des darunterliegenden Geräts hinaus wachsen.
Typischer Ablauf mit LVM
| Phase | Werkzeug oder Befehl | Ergebnis |
|---|---|---|
| Speicher prüfen | vgs | Freier Speicher in der Volume Group wird sichtbar. |
| Logical Volume erweitern | lvextend -L +100G /dev/vgdata/lvdata | Das Blockgerät des Logical Volumes wird um 100 GiB vergrößert. |
| XFS-Dateisystem erweitern | xfs_growfs /data | Das eingehängte Dateisystem nutzt den zusätzlichen Speicher. |
| Ergebnis verifizieren | df -hT /dataxfs_info /data | Neue Kapazität und XFS-Informationen werden kontrolliert. |
sudo vgs
sudo lvextend -L +100G /dev/vgdata/lvdata
sudo xfs_growfs /data
df -hT /data
sudo xfs_info /dataDie Erweiterung kann bei einem eingehängten XFS-Dateisystem online erfolgen. Vorher sollten trotzdem Anwendungen, LVM-Ziel und freie Kapazität sorgfältig geprüft werden.
Fehlerbehebung bei Erstellung, Mounting und Erweiterung
xfs_growfs findet kein passendes Dateisystem
- Prüfen Sie den Mount-Punkt mit
findmnt. - Kontrollieren Sie den Dateisystemtyp mit
df -Toderfindmnt. - Prüfen Sie, ob das Logical Volume oder Blockgerät tatsächlich vergrößert wurde.
findmnt /data
df -T /data
lsblk -f
sudo lvsdf zeigt nach der Erweiterung weiterhin die alte Größe
Wahrscheinlich wurde nur das Storage- oder LVM-Volume erweitert. Führen Sie xfs_growfs für den korrekten eingehängten Mount-Punkt aus und prüfen Sie danach erneut mit df -hT.
Das Dateisystem wird nach einem Neustart nicht eingehängt
- Vergleichen Sie die UUID aus
blkidmit dem Eintrag in/etc/fstab. - Prüfen Sie, ob der Mount-Punkt existiert.
- Testen Sie die Syntax mit
mount -a. - Untersuchen Sie bei Bedarf die Systemmeldungen.
XFS-Werkzeuge fehlen
Wenn mkfs.xfs oder xfs_growfs nicht gefunden wird, ist wahrscheinlich xfsprogs nicht installiert. Installieren Sie das Paket mit der Paketverwaltung Ihrer Distribution und prüfen Sie anschließend die Version:
xfs_info -VAnalyse und Reparatur
xfs_repair dient der Analyse und Reparatur von XFS-Strukturen. Die Option -n führt eine nicht verändernde Prüfung durch. Reparaturen sollten auf einem nicht eingehängten Dateisystem erfolgen.
# Nur prüfen, ohne Änderungen vorzunehmen:
sudo xfs_repair -n /dev/vgdata/lvdata
# Reparatur nach sorgfältiger Prüfung:
sudo xfs_repair /dev/vgdata/lvdataVor Reparaturarbeiten ist ein aktuelles Backup erforderlich. Dateisystemprüfung, Reparatur und Datensicherung sind unterschiedliche Aufgaben: Eine Prüfung untersucht Strukturen, eine Reparatur korrigiert sie, ein Backup ermöglicht die Wiederherstellung von Daten.
Die Einschränkung beim Verkleinern
Ein bestehendes XFS-Dateisystem kann nicht direkt verkleinert werden. Versuchen Sie daher nicht, das darunterliegende Blockgerät einfach zu reduzieren: Dadurch würden XFS-Daten abgeschnitten und das Dateisystem beschädigt.
Der sichere Migrationsweg besteht aus diesen Schritten:
- Ein vollständiges Backup erstellen und die Wiederherstellbarkeit prüfen.
- Ein kleineres Zielgerät oder Logical Volume bereitstellen.
- Darauf ein neues, kleineres XFS-Dateisystem erstellen.
- Die Daten auf das neue Dateisystem kopieren und Eigentümer, Rechte, ACLs sowie gegebenenfalls Quotas berücksichtigen.
- Die Einbindung, beispielsweise in
/etc/fstab, auf das neue Dateisystem umstellen. - Das Ergebnis und die Daten nach der Umstellung prüfen.
Wenn eine spätere Verkleinerung wahrscheinlich ist, sollte diese Eigenschaft bereits bei der Auswahl der Dateisystemarchitektur berücksichtigt werden.
XFS im Vergleich zu anderen Linux-Dateisystemen
| Kriterium | XFS | ext4 | JFS | ReiserFS |
|---|---|---|---|---|
| Typische Einsatzbereiche | Große Datenbereiche, Server, Storage und leistungsorientierte Workloads | Allgemeine Linux-Systeme und vielseitige Standardinstallationen | Journaling und bestimmte Server- oder Spezialumgebungen | Historisches Dateisystemthema mit spezieller Verzeichnis- und Metadatenverwaltung |
| Umgang mit großen Dateien | Besonders gut für große Dateien und Volumes geeignet | Gut geeignet, häufig die einfache Standardwahl | Geeignet, aber heute weniger verbreitet | Historisch interessant, für neue Installationen sorgfältig bewerten |
| Journaling | Ja | Ja | Ja | Ja |
| Online-Vergrößerung | Ja, mit xfs_growfs | Ja, mit passenden Werkzeugen | Unterstützung abhängig von Umgebung und Werkzeugen | Abhängig von Version und Umgebung |
| Verkleinerbarkeit | Nicht direkt unterstützt | Mit geeigneten Verfahren möglich | Abhängig von Werkzeugen und Version | Für neue Systeme keine bevorzugte Planungsgrundlage |
| Aktuelle praktische Einordnung | Aktiv relevante Wahl für große und leistungsorientierte Datenbereiche | Sehr verbreitete, vielseitige Standardwahl | Historische beziehungsweise spezielle Alternative; siehe JFS-Dateisystem | Historische Alternative; siehe ReiserFS-Dateisystem |
XFS ist eine gute Wahl, wenn große Dateien, große Volumes, hohe parallele Last oder planbare Online-Erweiterungen im Vordergrund stehen. ext4 ist oft passender, wenn eine vielseitige Standardlösung benötigt wird oder eine spätere Verkleinerung relevant sein könnte. Die Entscheidung sollte auch Support, Backup-Konzept, Werkzeuge und die Anforderungen der konkreten Anwendungen einbeziehen.
Praktische Checkliste
- Ist das richtige Blockgerät oder Logical Volume identifiziert?
- Wurde vor
mkfs.xfsgeprüft, dass keine benötigten Daten auf dem Ziel liegen? - Existiert der Mount-Punkt?
- Wurde die Einbindung zunächst temporär getestet?
- Ist der
/etc/fstab-Eintrag mit UUID korrekt? - Wurde bei LVM zwischen Volume-Erweiterung und Dateisystem-Erweiterung unterschieden?
- Ist bekannt, dass XFS nicht direkt verkleinert werden kann?
- Sind Backup, Quotas, ACLs und gegebenenfalls HSM-Komponenten geplant?