Linux Deutsch

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.

MerkmalWert oder UnterstützungBedeutung in der Praxis
Dateisystemtyp64-Bit-Journaling-DateisystemGeeignet für große Datenbestände und schnelle Wiederherstellung der Dateisystemstruktur.
JournalingUnterstütztMetadatenänderungen werden protokolliert; schützt nicht vor Datenverlust und ersetzt kein Backup.
Architektur64 BitGroße Adressräume und umfangreiche Dateisysteme sind möglich.
Blockgrößenbereich512 Byte bis 64 KiB, abhängig von Kernel, Architektur und FormatierungsoptionenDie Blockgröße sollte zur Plattform und zum Einsatzprofil passen.
Maximale DateigrößeBis zu 8 EB unter geeigneten System- und FormatierungsbedingungenDie reale Grenze kann durch Kernel, Distribution, Architektur und gewählte Optionen kleiner sein.
Maximale DateisystemgrößeBis zu 16 EB unter geeigneten System- und FormatierungsbedingungenPraktisch maßgeblich sind die unterstützte Umgebung und die konkrete XFS-Konfiguration.
Maximale Dateinamenlänge255 ByteEin einzelner Dateiname darf diese Grenze nicht überschreiten; Byte und Zeichen sind bei UTF-8 nicht identisch.
ACL-UnterstützungJaFeingranulare Zugriffssteuerung für Dateien und Verzeichnisse.
Quota-UnterstützungBenutzer- und GruppenquotasSpeicherverbrauch kann überwacht und begrenzt werden.
HSM-UnterstützungÜber zusätzliche Komponenten und distributionsabhängige LösungenVor der Planung müssen konkrete HSM-Werkzeuge und deren XFS-Unterstützung geprüft werden.
VergrößernOnline möglichEin eingehängtes XFS-Dateisystem kann mit xfs_growfs erweitert werden.
VerkleinernNicht direkt unterstütztFü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 xfsprogs

Prü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/lvdata

3. 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 /data

Fü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 /data

Ein 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' /data

Mit 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:

  1. Das zugrunde liegende Blockgerät oder Logical Volume erhält mehr Speicher.
  2. 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

PhaseWerkzeug oder BefehlErgebnis
Speicher prüfenvgsFreier Speicher in der Volume Group wird sichtbar.
Logical Volume erweiternlvextend -L +100G /dev/vgdata/lvdataDas Blockgerät des Logical Volumes wird um 100 GiB vergrößert.
XFS-Dateisystem erweiternxfs_growfs /dataDas eingehängte Dateisystem nutzt den zusätzlichen Speicher.
Ergebnis verifizierendf -hT /data
xfs_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 /data

Die 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 -T oder findmnt.
  • Prüfen Sie, ob das Logical Volume oder Blockgerät tatsächlich vergrößert wurde.
findmnt /data
df -T /data
lsblk -f
sudo lvs

df 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 blkid mit 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 -V

Analyse 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/lvdata

Vor 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:

  1. Ein vollständiges Backup erstellen und die Wiederherstellbarkeit prüfen.
  2. Ein kleineres Zielgerät oder Logical Volume bereitstellen.
  3. Darauf ein neues, kleineres XFS-Dateisystem erstellen.
  4. Die Daten auf das neue Dateisystem kopieren und Eigentümer, Rechte, ACLs sowie gegebenenfalls Quotas berücksichtigen.
  5. Die Einbindung, beispielsweise in /etc/fstab, auf das neue Dateisystem umstellen.
  6. 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

KriteriumXFSext4JFSReiserFS
Typische EinsatzbereicheGroße Datenbereiche, Server, Storage und leistungsorientierte WorkloadsAllgemeine Linux-Systeme und vielseitige StandardinstallationenJournaling und bestimmte Server- oder SpezialumgebungenHistorisches Dateisystemthema mit spezieller Verzeichnis- und Metadatenverwaltung
Umgang mit großen DateienBesonders gut für große Dateien und Volumes geeignetGut geeignet, häufig die einfache StandardwahlGeeignet, aber heute weniger verbreitetHistorisch interessant, für neue Installationen sorgfältig bewerten
JournalingJaJaJaJa
Online-VergrößerungJa, mit xfs_growfsJa, mit passenden WerkzeugenUnterstützung abhängig von Umgebung und WerkzeugenAbhängig von Version und Umgebung
VerkleinerbarkeitNicht direkt unterstütztMit geeigneten Verfahren möglichAbhängig von Werkzeugen und VersionFür neue Systeme keine bevorzugte Planungsgrundlage
Aktuelle praktische EinordnungAktiv relevante Wahl für große und leistungsorientierte DatenbereicheSehr verbreitete, vielseitige StandardwahlHistorische beziehungsweise spezielle Alternative; siehe JFS-DateisystemHistorische 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.xfs geprü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?