FS: XFS¶
Siehe auch
- Verwandte Artikel
- Offizielle Dokumentation
man xfs,man mkfs.xfs,man xfs_repair,man xfs_growfs,man xfs_quota
- Linuxfabrik
XFS wurde 1994 mit IRIX 5.3 vorgestellt, 2000 unter der GPL freigegeben und 2002 in den Linux-Kernel aufgenommen. Es ist ein 64-bittiges, journaling-basiertes Dateisystem, das auf Durchsatz und parallele Last ausgelegt ist und seit RHEL 7 der Default in RHEL und Rocky ist. Die Maximalgrössen stehen in der Limits-Tabelle in Filesysteme; Dateinamen dürfen bis zu 255 Zeichen lang sein. XFS lässt sich vergrössern, aber nicht verkleinern, und kennt keine eigenen Snapshots.
Dateisystem erstellen¶
mkfs.xfs /dev/sdb3
Standard-Geometrie (mkfs.xfs gibt sie beim Anlegen aus): Blockgrösse 4 KiB, Inode-Grösse 512 B, Sektorgrösse 512 B, vier Allocation Groups. Ein XFS-Dateisystem muss mindestens 300 MB gross sein; kleinere Geräte lehnt mkfs.xfs ab.
Für OverlayFS (und damit für Container-Storage) muss XFS mit ftype=1 formatiert sein. Das ist die Voreinstellung aktueller xfsprogs-Versionen; bei sehr alten Dateisystemen lässt es sich mit xfs_info prüfen.
Dateisystem vergrössern und verkleinern¶
XFS lässt sich nur im laufenden, gemounteten Zustand vergrössern und grundsätzlich nicht verkleinern. Wird mehr Platz gebraucht, vergrössert man das darunterliegende Block-Gerät (etwa per LVM) und zieht XFS nach:
# grow to fill the device; the filesystem must be mounted
xfs_growfs /data
# with LVM, extend logical volume and filesystem in one step
lvextend --resizefs --size +10G /dev/vg_data/lv_data
Soll ein XFS-Dateisystem kleiner werden, führt kein Weg an Neuanlegen und Zurückkopieren der Daten vorbei.
Dateisystem prüfen und reparieren¶
XFS-Dateisysteme werden mit xfs_repair geprüft und repariert, immer im ausgehängten Zustand. Ob überhaupt ein Problem vorliegt, zeigt oft schon das Kernel-Log:
dmesg | grep --ignore-case 'corrupt\|structure needs cleaning'
Dry Run ohne Änderungen, dann die eigentliche Reparatur:
# no-modify mode: only report what would be repaired
xfs_repair -n /dev/sdb
# actual repair (filesystem must be unmounted)
xfs_repair /dev/vg_data/lv_data
Lässt sich das Wurzeldateisystem nicht aushängen, hilft eine Rescue-Shell:
Maschine (neu) starten.
Boot-Menü anhalten, gewünschte Kernel-Version wählen und e für „Edit“ drücken.
Nach der Zeile beginnend mit
linux /vmlinuz...,linux16 /vmlinuz...oderlinuxefi /vmlinuz...suchen.Zeile mit
rw init=/sysroot/bin/shergänzen. Anschliessend Ctrl + x drücken.
Danach xfs_repair auf dem ausgehängten Gerät ausführen. Allerletzte Möglichkeit, wenn das Log beschädigt ist und nicht abgespielt werden kann: das Log mit xfs_repair -L nullen. Das verwirft nicht persistierte Änderungen und kann zu Datenverlust führen, deshalb nur als letztes Mittel.
xfs_repair -L /dev/vg_data/lv_data
Quota¶
XFS verwaltet Quotas im Dateisystem selbst und aktiviert sie über Mount-Optionen: uquota (User), gquota (Group) und pquota (Project). Bedient werden sie mit dem eigenen Werkzeug xfs_quota (Option -x für den Experten-Modus, in dem sich Limits setzen lassen).
echo '/dev/vdb /data xfs defaults,uquota,gquota,pquota 0 0' >> /etc/fstab
mkdir --parents /data
mount /data
# block limits accept the suffixes from mkfs.xfs(8): k, m, g, t, p, e
# set a user block limit (soft/hard)
xfs_quota -x -c 'limit -u bsoft=500m bhard=800m user1' /data
# set a group block limit
xfs_quota -x -c 'limit -g bsoft=5g bhard=6g myusergroup' /data
# project quota limits a directory tree regardless of owner:
# 1. map a project ID to a path and a name
echo '11:/data/project1' >> /etc/projects
echo 'project1:11' >> /etc/projid
# 2. initialise the project tree
xfs_quota -x -c 'project -s project1' /data
# 3. set the limit
xfs_quota -x -c 'limit -p bsoft=1g bhard=2g project1' /data
# grace period: minutes/hours/days/weeks (abbreviations m, h, d, w)
xfs_quota -x -c 'timer -u 10minutes user1' /data
# show usage and limits, human-readable (-h)
xfs_quota -c 'quota -h -u user1' /data
xfs_quota -c 'report -h' /data
# overall quota state (on/off, enforcement)
xfs_quota -x -c 'state' /data
Backup und Restore der Quota-Limits laufen über die eingebauten Kommandos dump und restore (je Quota-Typ eine Datei):
# backup user and project limits
xfs_quota -x -c 'dump -u -f /root/xfs-uquota.backup' /data
xfs_quota -x -c 'dump -p -f /root/xfs-pquota.backup' /data
# restore them
xfs_quota -x -c 'restore -u -f /root/xfs-uquota.backup' /data
xfs_quota -x -c 'restore -p -f /root/xfs-pquota.backup' /data
Snapshots¶
XFS kennt keine eigenen Snapshots. Auf der LVM-Schicht darunter lässt sich ein konsistenter Snapshot über xfs_freeze (oder das generische fsfreeze) plus lvcreate --snapshot anlegen; alternativ bietet Stratis verwaltete Snapshots über XFS. Beide Wege samt Restore stehen in Filesysteme, die Stratis-Details unter Stratis.
Troubleshooting¶
Structure needs cleaningim Kernel-LogDas Dateisystem ist beschädigt. Aushängen und mit
xfs_repairreparieren; lässt sich das Log nicht abspielen, als letztes Mittelxfs_repair -L.xfs_growfsändert die Grösse nichtxfs_growfswächst nur bis zur Grösse des darunterliegenden Geräts. Zuerst die Partition oder das Logical Volume vergrössern, dann erneutxfs_growfs.- Verkleinern gewünscht
XFS kann nicht schrumpfen. Daten sichern, kleineres Dateisystem neu anlegen, zurückkopieren.