xfs(5) File Formats Manual xfs(5) BEZEICHNUNG xfs - Layout, Einhange-Optionen und unterstutzte Dateiattribute fur das XFS-Dateisystem BESCHREIBUNG Ein XFS-Dateisystem kann sich auf einer regularen Festplattenpartition befinden oder auf einem logischen Datentrager. Ein XFS-Dateisystem besteht aus bis zu drei Teilen: einer Daten-Sektion, einer Protokoll-Sektion und einer Echtzeit-Sektion. Werden die Grundeinstellungen von mkfs.xfs(8) genutzt, ist die Echtzeit-Sektion nicht vorhanden und der Protokoll-Bereich ist in der Daten-Sektion enthalten. Die Protokoll-Sektion kann entweder separat von der Daten-Sektion sein, oder darin enthalten. Die Dateisystem-Sektionen sind aufgeteilt in eine bestimmte Anzahl von Blocken, deren Grosse beim Aufruf von mkfs.xfs(8) durch die Option -b angegeben wird. Die Daten-Sektion enthalt sowohl alle Metadaten des Dateisystems (Inodes, Verzeichnisse, indirekte Blocke), wie auch die Daten von Dateien der Benutzer fur gewohnliche (nicht-Echtzeit) Dateien. Hinzu kommt der Protokollbereich, sofern das Protokoll intern zur Daten-Sektion liegt. Die Daten-Sektion ist unterteilt in eine Anzahl von Allokations-Gruppen. Die Anzahl und Grosse dieser Allokations-Gruppen werden durch mkfs.xfs(8) bestimmt, so dass im Normalfall eine kleine Anzahl gleich grosser Gruppen entsteht. Die Anzahl der Allokations-Gruppen beeinflusst den Grad der verfugbaren Parallelitat in Datei- und Blockzuweisung. Bei ausreichend Speicher und viel Allokations-Aktivitat sollte diese Anzahl gegenuber dem Ausgangswert erhoht werden. Die Anzahl der Allokations-Gruppen sollte nicht sehr hoch angesetzt werden, da dann durch das Dateisystem sehr viel CPU-Zeit in Anspruch genommen wird, besonders wenn das Dateisystem nahezu voll ist. Durch den Aufruf von xfs_growfs(8) werden mehr Allokations-Gruppen (in der Originalgrosse) hinzugefugt. Die Protokoll-Sektion (oder auch Bereich, wenn sie sich in der Daten-Sektion befindet) wird genutzt, um im laufenden Dateisystem Anderungen an den Metadaten des Dateisystems zu speichern, bis diese Anderungen auf die Daten-Sektion angewandt wurden. Im Normalbetrieb wird sequentiell geschrieben, wahrend des Einhangens ist die Protokoll-Sektion allerdings schreibgeschutzt. Wird ein Dateisystem nach einem Absturz eingehangt, wird das Protokoll gelesen, um jene Aktionen abzuschliessen, die sich zur Zeit des Absturzes in Bearbeitung befanden. Die Echtzeit-Sektion wird genutzt, um die Daten von Echtzeit-Dateien zu speichern. Durch xfsctl(3) wurde diesen Dateien nach Dateierzeugung ein Attribut-Bit gesetzt, noch bevor irgendwelche Daten in die Datei geschrieben wurden. Die Echtzeit-Sektion ist unterteilt in eine Anzahl von Extents fixer Grosse (spezifiziert zur Zeit des Aufrufs von mkfs.xfs(8)). Jede Datei in der Echtzeit-Sektion hat eine Extent-Grosse, die ein Vielfaches der Extent-Grosse der Echtzeit-Sektion ist. Jede Allokations-Gruppe beinhaltet mehrere Datenstrukturen. Der erste Sektor enthalt den Superblock. Fur alle auf die erste folgenden Allokations-Gruppen ist der Superblock nur eine Kopie und wird nicht nach einem Aufruf von mkfs.xfs(8) aktualisiert. Die nachsten drei Sektoren enthalten Informationen uber Block- und Inode-Zuweisungen innerhalb der Allokations-Gruppe. Ausserdem befinden sich noch Datenstrukturen zur Lokalisierung freier Blocke und Inodes in jeder Allokations-Gruppe; diese werden anhand ihrer Header-Strukturen ausfindig gemacht. Jedes XFS-Dateisystem ist durch einen universellen eindeutigen Identifizierer (UUID) gekennzeichnet. Diese UUID ist im Header einer jeden Allokations-Gruppe gespeichert und dient zur Unterscheidung der verschiedenen XFS-Dateisysteme, weshalb es vermieden werden sollte, XFS-Dateisysteme mit dd(1) oder anderen blockbasierten Kopierprogrammen zu kopieren. Falls zwei XFS-Dateisysteme auf der selben Maschine die selbe UUID hatten, bekame das Programm xfsdump(8) Schwierigkeiten bei der Ausfuhrung inkrementeller und wieder aufgenommener (>>resumed<<) Dumps. Um Kopien von XFS-Dateisystemen zu erstellen, werden xfsdump(8) und xfsrestore(8) empfohlen. Um einen Schnappschuss eines bereits eingehangten Dateisystems einzuhangen, konnte die Angabe der Option nouuid fur mount(8) notwendig sein. AKTIONEN Einige fur das XFS-Dateisystem spezifische Funktionen sind fur Anwendungen durch die xfsctl(3)- und open_by_handle(3)-Schnittstellen verfugbar. EINHANGEOPTIONEN Die folgenden XFS-spezifischen Einhange-Optionen konnen beim Einhangen eines XFS-Dateisystems genutzt werden. Weitere allgemeingultige Optionen stehen zur Verfugung; fur weitere Details wenden Sie sich bitte an die Handbuchseite mount(8). allocsize=Grosse Legt fur den Fall der verzogerten Allokation die Grosse der Vorabbelegung bis Dateiende fur gepufferte E/A fest. Gultige Werte fur diese Option liegen zwischen Seitengrosse (typischerweise 4 KiB) und 1 GiB inklusive - in Zweierpotenz-Schritten. Per Vorgabe wird die Grosse der Vorabbelegung bis Dateiende dynamisch zugewiesen. Dieses Verhalten nutzt eine Reihe von Heuristiken, um die Grosse der Vorabbelegung zu optimieren. Diese Heuristiken basieren auf den aktuellen Allokationsmustern innerhalb der Datei und den Zugriffsmustern auf die Datei. Ein fester Wert fur allocsize schaltet das dynamische Verhalten ab. attr2|noattr2 Hinweis: Diese Optionen wurden mit Kernelversion 5.10 als veraltet markiert. Die Option noattr2 wird nicht vor September 2025 entfernt und die Option attr2 wird die unveranderbare Vorgabe. Diese Optionen schalten eine >>opportunistische<< Verbesserung an bzw. aus, die darauf abzielt, die Art zu verandern, in der erweiterte >>inline<<-Attribute auf der Festplatte gespeichert werden. Wird die neue Form zum ersten Mal durch Ubergabe von attr2 verwendet (entweder beim Setzen oder Entfernen erweiterter Attribute), so wird im Superblock der Festplatte das entsprechende Bitfeld aktualisiert. Das Standard-Verhalten wird durch das Funktionalitats-Bit auf der Platte bestimmt. Es zeigt an, ob das attr2-Verhalten aktiviert ist. Falls eine der Einhange-Optionen gesetzt wurde, dann wird diese zum neuen Vorgabewert fur das Dateisystem. Dateisysteme mit aktiviertem CRC nutzen immer das attr2-Format, und werden daher die noattr2-Einhange-Option zuruckweisen, sofern gesetzt. dax=Wert Setzt das Verhalten des direkten CPU-Zugriffs (DAX) fur das aktuelle Dateisystem. Diese Einhangeoption akzeptiert die folgenden Werte: >>dax=inode<<: DAX wird nur auf regularen Dateien mit angewandtem FS_XFLAG_DAX aktiviert. >>dax=never<<: DAX wird fur keine Datei aktiviert. FS_XFLAG_DAX wird ignoriert. >>dax=always<<: DAX wird fur alle regularen Dateien aktiviert, unabhangig vom FS_XFLAG_DAX-Zustand. Wenn beim Einhangen eines Dateisystems auf einem DAX-fahigen Gerat keine Option verwandt wird, dann wird dax=inode als Vorgabe verwandt. Details zum DAX-Verhalten im Kernel finden Sie in der Kerneldokumentation in filesystems/dax.txt. discard|nodiscard Aktiviert/deaktiviert das Erteilen von Befehlen, mit denen das Dateisystem freien Speicher zuruckfordert. Dies ist bei SSD-Geraten nutzlich, bei >>thin provisioned<< LUNs und bei Abbildern von virtuellen Maschinen, kann allerdings Einfluss auf die Performance haben. Anmerkung: Aktuell wird empfohlen, die Anwendung fstrim(8) zu verwenden, um ungenutzte Blocke zu entfernen. Der Einfluss auf die Performance durch diese Option ist gravierend. Aus diesem Grunde is nodiscard die Vorgabe. grpid|bsdgroups|nogrpid|sysvgroups Diese Optionen bestimmen, welche Gruppen-ID eine neu erstellte Datei erhalt. Wenn grpid gesetzt ist, erhalt die Datei die Gruppen-ID des Verzeichnisses, in dem sie erzeugt wird; anderenfalls erhalt sie die fsgid des aktuellen Prozesses, sofern das Verzeichnis nicht das Setgid-Bit gesetzt hat. In diesem Fall erbt die Datei die GID des Eltern-Verzeichnisses, und auch das Setgid-Bit, falls es sich um ein Verzeichnis handelt. filestreams Veranlasst den Datenzuteiler, den Dateistrom-Allokationsmodus uber das gesamte Dateisystem hinweg zu benutzen, anstatt nur in entsprechend konfigurierten Verzeichnissen. ikeep|noikeep Hinweis: Diese Optionen wurden mit Kernelversion 5.10 als veraltet markiert. Die Option noikeep wird nicht vor September 2025 entfernt und die Option ikeep wird die unveranderbare Vorgabe. Wenn ikeep angegeben wurde, loscht XFS leere Inode-Cluster nicht und behalt sie stattdessen auf der Festplatte. Wenn noikeep angegeben wurde, werden leere Inode-Cluster zuruck in den Pool von verfugbarem Speicher gegeben. noikeep ist der Vorgabewert. inode32|inode64 Wird inode32 angegeben, zeigt es an, dass XFS das Erzeugen von Inodes auf Orte beschrankt, die keine Inode-Nummern mit einer Wertigkeit grosser als 32 Bit hervorbringen werden. Wird inode64 ubergeben, zeigt es an, dass es XFS erlaubt ist, Inodes auch an Orten im Dateisystem zu erstellen, deren Inode-Nummern mit hoherer Wertigkeit als 32 Bit sein werden. inode32 wird aus Grunden der Ruckwartskompatibilitat zu alteren Systemen und Anwendungen angeboten, da 64-Bit-grosse Inode-Nummern Probleme bei jenen Anwendungen hervorrufen konnen, die keine grossen Inode-Nummern verarbeiten konnen. Falls Anwendungen benutzt werden, die keine Inode-Nummern grosser als 32 Bit verarbeiten konnen, sollte die inode32-Option angegeben werden. Inode64 ist die Vorgabe fur Kernel v3.7 und neuer. largeio|nolargeio Falls nolargeio ubergeben wurde, wird die von stat(2) in st_blksize berichtete optimale E/A so klein wie moglich sein, um es Benutzer-Anwendungen zu ermoglichen, ineffiziente Lese-/Anderungs-/Schreib-E/A zu vermeiden. Typischerweise ist dies die Seitengrosse der Maschine, da dies die Granularitat des Seiten-Caches ist. Falls largeio angegeben wurde, wird ein Dateisystem, das mit einem Wert fur >>swidth<< erzeugt wurde, in st_blksize den Wert fur swidth in Byte zuruckgeben. Sollte das Dateisystem keinen Wert fur swidth haben, jedoch einen Wert fur >>allocsize<<, dann wird stattdessen allocsize in Byte zuruckgegeben. Anderenfalls ist das Verhalten das gleiche wie bei nolargeio. nolargeio ist die Vorgabe. logbufs=Wert Setze die Anzahl von speicherinternen Protokollpuffern. Erlaubte Werte liegen im Bereich von 2-8 einschliesslich. Der Vorgabewert ist 8 Puffer. Falls der Speicherbedarf von 8 Puffern fur kleine Systeme zu gross ist, dann kann dieser Wert, auf Kosten der Performance bei Metadaten-intensiven Arbeitslasten, reduziert werden. Die Option logbsize weiter unten regelt die Grosse jedes Puffers, und ist somit in diesem Falle auch von Bedeutung. logbsize=Wert Setzt die Grosse jedes speicherinternen Protokollpuffers. Die Grosse kann in Byte oder mit einem >>k<<-Suffix in KibiBytes (KiB) angegeben werden. Falls manuell gesetzt, muss logbsize eine der angegebenen gultigen Grossen und ganzzahliges Vielfaches der Protokoll-Stripe-Einheit sein, die bei der Ausfuhrung von Mkfs konfiguriert wurde. Gultige Grossen fur Protokolle der Versionen 1 und 2 sind 16384 (Wert=16k) und 32768 (Wert=32k). Gultige Grossen fur Protokolle der Version 2 sind ferner: 65536 (Wert=64k), 131072 (Wert=128k) und 262144 (Wert=256k). Der Vorgabewert fur Protokolle der Version 1 ist 32768, wahrend der Vorgabewert fur Protokolle der Version 2 max(32768, log_sunit) ist, selbst wenn log_sunit nicht auf einen der obigen gultigen Werte passt. logdev=Gerat und rtdev=Gerat Fur die Nutzung eines externen Protokolls (ein Metadaten-Journal) und/oder eines Echtzeit-Gerates. Ein XFS-Dateisystem besteht aus bis zu drei Teilen: einer Daten-Sektion, einer Protokoll-Sektion und einer Echtzeit-Sektion. Die Echtzeit-Sektion ist optional und die Protokoll-Sektion kann separat von der Daten-Sektion oder in ihr enthalten sein. noalign Datenallokationen werden nicht an den Grenzen der Stripe-Einheiten ausgerichtet. Dies ist nur fur Dateisysteme relevant, die mit Parametern fur die Datenausrichtung (sunit, swidth) ungleich Null durch Mkfs erzeugt wurden. norecovery Das Dateisystem wird eingehangt, ohne die Protokoll-Wiederherstellung zu starten. Falls das Dateisystem nicht sauber ausgehangt wurde, kommt es voraussichtlich zu Inkonsistenzen, sofern es im Modus >>norecovery<< eingehangt wird. Auf einige Dateien oder Verzeichnisse konnte dadurch nicht mehr zugegriffen werden. Mit >>norecovery<< eingehangte Dateisysteme mussen schreibgeschutzt eingehangt werden, oder das Einhangen wird fehlschlagen. nouuid Keine Uberprufung auf doppelt eingehangte Dateisysteme anhand der Dateisystem-UUID. Dies ist nutzlich, um LVM-Schnappschuss-Datentrager einzuhangen, und wird haufig genutzt, um in Kombination mit >>norecovery<< schreibgeschutzte Schnappschusse einzubinden. noquota Forciert das Ausschalten jeglicher Kontingent-Buchfuhrung bzw. jeglicher Kontingent-Durchsetzung innerhalb des Dateisystems. uquota/usrquota/quota/uqnoenforce/qnoenforce Aktiviert die Kontingent-Buchfuhrung je Benutzer und die Obergrenzen werden optional durchgesetzt. Weitere Details finden Sie in xfs_quota(8). gquota/grpquota/gqnoenforce Aktiviert die Kontingent-Buchfuhrung je Gruppe und die Obergrenzen werden optional durchgesetzt. Weitere Details finden Sie in xfs_quota(8). pquota/prjquota/pqnoenforce Aktiviert die Kontingent-Buchfuhrung je Projekt und die Obergrenzen werden optional durchgesetzt. Weitere Details finden Sie in xfs_quota(8). sunit=Wert and swidth=Wert Dies wird genutzt, um die Stripe-Einheit und Stripe-Breite fur ein RAID-Gerat oder einen Stripe-Datentrager festzulegen. >>Wert<< muss dabei in 512-Byte-Block-Einheiten angegeben werden. Diese Optionen sind nur fur Dateisysteme von Belang, die mit Parametern fur die Datenausrichtung ungleich Null erzeugt wurden. Die ubergebenen Parameter >>sunit<< und >>swidth<< mussen mit der vorhandenen Charakteristik der Dateisystem-Ausrichtung kompatibel sein. Allgemein bedeutet dies, dass die alleinig gultigen Anderungen an sunit eine Vergrosserung um ein Vielfaches einer Zweierpotenz sein mussen. Gultige Werte fur swidth sind ein ganzzahliges Vielfaches eines gultigen sunit-Wertes. Ublicherweise sind diese Einhange-Optionen nur in einem Fall notwendig, namlich dann, wenn die Geometrie eines darunterliegenden RAID-Gerates verandert wurde. Dies geschieht beispielsweise durch das Hinzufugen einer neuen Festplatte zu einem RAID5-LUN, mit anschliessendem Neuformen des LUNs. swalloc Datenallokationen werden aufgerundet und an die Grenzen der Stripe-Breite angepasst, wenn das aktuelle Dateiende erweitert wird, und die Dateigrosse grosser als die Stripe-Breite ist. wsync Falls angegeben, werden alle Vorgange eines Dateisystem-Namensraums synchron ausgefuhrt. Dies stellt sicher, dass sich die Veranderung an dem Namensraum auf einem stabilen Speicher befindet, wenn die Namensraum-Transaktion (create, unlink, usw.) beendet ist. Dies ist in HV-Umgebungen nutzlich, in denen ein Failover nicht dazu fuhren darf, dass den Clients wahrend oder nach dem Failover-Ereignis ein inkonsistenter Namensraum prasentiert wird. ENTFERNTE EINHANGE-OPTIONEN Die folgenden Einhange-Optionen wurden aus dem Kernel entfernt und werden bei der Verwendung Fehlverhalten hervorrufen. Einhange-Optionen gelten uber eine massvolle Dauer hinweg als veraltet, bevor sie entfernt werden. Name Entfernt ---- ------- delaylog/nodelaylog v4.0 ihashsize v4.0 irixsgid v4.0 osyncisdsync/osyncisosync v4.0 barrier/nobarrier v4.19 DATEIATTRIBUTE Das XFS-Dateisystem unterstutzt auf Linux-Systemen das Setzen folgender Datei-Attribute mittels chattr(1): a - nur anhangen A - keine Aktualisierungen der Zugriffszeit (Access-Time) d - kein Speicherauszug (no dump) i - unveranderlich (immutable) S - synchrone Aktualisierung Weitere Beschreibungen dieser Attributs-Schalter finden Sie in der Handbuchseite von chattr(1). SIEHE AUCH chattr(1), xfsctl(3), mount(8), mkfs.xfs(8), xfs_info(8), xfs_admin(8), xfsdump(8), xfsrestore(8). UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Mathias F. Popp und Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . xfs(5)