XFS als Dateisystem Dirk Polke
Agenda Vorstellung Was sind Journaling Dateisysteme und welche gibt es? Was ist XFS? Allgemeine Eigenschaften Besonderheiten Nachteile Installation Für Domino geeignet? Zusammenfassung
Vorstellung Dirk Polke, Dipl.-Wirtschaftsinformatiker, 43 Jahre Entwickler und Administrator für die Lotus Domino Infrastruktur bei der Fa. TAD Pharma GmbH, Cuxhaven Linux-Fan seit 1995, Kernel 1.3 und Slackware waren damals aktuell Verwende Linux seit 1996 im produktiven Einsatz Seit 2000 Lotus Domino (5.0.11) infiziert Mein Schwerpunkt liegt in der Weiterentwicklung und Optimierung unseres auf Lotus Domino basierenden CRM- Systems.
Was sind Journaling Dateisysteme und welche gibt es? Journaling Dateisysteme speichern alle Änderungen für das Dateisystem in einem Journal, um bei Ausfall eine Wiederherstellung der verlorenen Daten zu gewährleisten. Hierbei unterscheidet man 3 Arten: Writeback mode: Es werden nur Metadaten im Journal gespeichert, die Nutzdaten werden direkt auf Platte geschrieben. Hierbei kann es zu Datenverlusten kommen, wenn das System abstürzt nachdem die Daten ins Journal geschrieben wurden, aber bevor die eigentlichen Daten auf die Platte geschrieben wurden.
Was sind Journaling Dateisysteme und welche gibt es? Ordered mode: Hierbei werden die Nutzdaten zuerst auf die Platte geschrieben, anschließend werden nur die Metadaten ins Journal geschrieben. In diesem Modus ist eine Datenkonsistenz für die Daten und das Dateisystem gewährleistet. Data mode: Metadaten und Nutzdaten werden im Journal gespeichert. Dies ist die sicherste Methode, hat allerdings auch einen Performance-Nachteil, da die Änderungen der Daten zweimal geschrieben werden müssen.
Was sind Journaling Dateisysteme und welche gibt es? JFS2: Nachfolger von JFS (IBM). War das erste verfügbare Journal-Dateisystem. Einsatz in AIX 64-bit fähig Ordered journaling für hohe Performance B-Bäume für Verzeichniszugriffe
Was sind Journaling Dateisysteme und welche gibt es? Ext3: Standard-Dateisystem unter Linux Nachfolger des bewährten ext2 mit der Erweiterung von Journaling-Fähigkeiten Sehr stabil Kann auch als ext2-system gemountet werden 3 verschiedene Modis: writeback, ordered und data) Ordered mode ist Standard Geringe CPU-Belastung und wenig Speicherverbrauch gegenüber den anderen Systemen
Was sind Journaling Dateisysteme und welche gibt es? ReiserFS: Erstmalige Vorstellung 2001 Kurz nach Vorstellung, Standard-Dateisystem bei SuSE-Distributionen. Standard mode ist ordered. Optimal für die Verarbeitung kleiner Dateien, z.b. SMTP-Mailserversysteme Optimierung beim Verhindern von Fragmentierung von Dateien
Was bringt die Zukunft? Reiser4: Nachfolger von ReiserFS, wurde komplett neu entwickelt Unterstützt verzögerte Allokation Bietet Support für Kompression und Verschlüsselung Momentan für den produktiven Einsatz noch nicht geeignet. Zukunft ungewiss, aufgrund der abzubüßenden Gefängnisstrafe von Hans Reiser dem Erfinder und Hauptentwickler.
Was bringt die Zukunft? Ext4: Nachfolger von ext3. Bietet vor- und rückwärts Kompatibilität zu ext3 64-bit Max. 1 Exabyte Dateisystemgröße Verzögerte Allokation Verwendet Extends, d.h. die Größe kann erweitert werden (dann geht aber die Kompatibilität zu ext3 verloren) Checksummenprüfung im Journal
Was bringt die Zukunft ZFS: Neues Dateisystem unter Solaris, soll demnächst auch auf Mac HFS+ ersetzen, für Linux existiert ein Projekt welches ZFS über FUSE implementiert Bietet interessante Funktionen, wie z.b. integrierte LVM-Funktionalität Dynamisches wachsen und schrumpfen der logischen Partitionen Einfache Administration Max. Größe des Dateisystems 16 Exabyte Max. größe einer Datei 16 Exabyte u.v.m.
Was ist XFS? XFS ist ein Journaling-Dateisystem für Unix-basierende Betriebssysteme. 64-bit Dateisystem, welches sich durch eine robuste Struktur und hohe Geschwindigkeit auszeichnet. Viele Entwickler schätzen XFS leistungsfähiger als ReiserFS ein. Erstmals vorgestellt 1994 von der Firma Silicon Graphics für das Betriebssystem Irix. Seit 2001 ist es ab Kernel 2.4 auch für Linux quelloffen erhältlich.
Was ist XFS? Ab Kernel 2.6 ist es direkter Bestandteil der Kernelsourcen. Unterstützung erfolgt durch alle gängigen Distributionen. Einsatzgebiete: Überall dort wo große Dateien bearbeitet werden müssen. Z.B. als Streamingserver für Videodateien oder Datenbankserver.
Allgemeine Eigenschaften Max. Dateigröße 8 Exabyte Max. Dateisystemgröße 8 Exabyte Max. Dateinamenlänge 255 Byte Journal für konsistente Datenhaltung Unterstützt Blockgrößen von 512 Byte bis 64 KByte Größenänderung im laufenden Betrieb
Allgemeine Eigenschaften GRIO = Guaranteed IO Bandwith (Garantierte Schreib- und Leseraten) Unterstützung für hierarchische Speichersysteme Unterstützung für Volume Manager z.b. LVM Unterstützung von Zugriffskontrollisten (ACL) Unterstützung von Dateiquotas
Besonderheiten B-Tree verwaltete Verzeichnisinhalte für schnellen Zugriff Die max. Dateigröße von 8 Exabyte (mehr als 9 Millionen Terabyte) ist mit heutigen Betriebssystemen noch nicht anwendbar. Bis Kernel 2.4 beträgt die max. Dateigröße 16 Terabyte Das Journal wird seriell abgelegt, es erfolgt keine Ablage in speziellen Datenstrukturen wie Bäume oder Heaps). Das Journal kann unabhängig von den eigentlichen Daten auf anderen Datenträgern gespeichert werden.
Besonderheiten Allokationsgruppen (allocation groups) Sie bilden eine eigene Einheit im XFS-System und verwalten eigenständig sowohl den freien Speicher als auch die Inodes. Der Vorteil ist, dass mehrere Prozesse gleichzeitig auf das Dateisystem zugreifen. Größenbasierte Allokation Die Informationen werden in B-Bäumen abgelegt, wodurch es möglich ist, passende Speicherbereiche zu finden, so dass eine Fragmentierung größtenteils vermieden wird. Verzögerte Allokation Eine weitere Möglichkeit Fragmentierung zu vermeiden wird durch die verzögerte Allokation erreicht. Dabei werden die Daten möglichst lange im Speicher gehalten, bevor sie auf den Datenträger geschrieben werden.
Auch XFS hat Nachteile... Man kann Partitionen nicht verkleinern Einmal gelöschte Dateien sind nicht wiederherstellbar Der Linux-Bootmanager GRUB funktioniert erst ab Version 0.91 Wegen des verzögerten Schreibens von Daten sind Datenverluste bei aktuell geöffneten Dateien bei einem Systemabsturz (z.b. Stromausfall) möglicherweise größer als bei anderen Dateisystemen => Ursache Verzögerte Allokation!!! Das Journal ist auf hohe Leistung optimiert und daher architekturabhängig. Beim Umstellen der Architektur z.b. von i386 auf x86-64 muss man vor dem Einhängen des Dateisystems xfs_repair ausführen
Installation Bestandteil der bekannten Distributionen Opensuse, Fedora, Ubuntu, Debian usw. Z.B. bei Ubuntu/Debian muessen die notwendigen Tools explizit nachinstalliert werden: apt-get update apt-get install xfsprogs xfsdump Bei Suse und Fedora kann XFS auch direkt bei der Einrichtung der Partionen ausgewählt werden. Es ist ebenfalls der Einsatz als root-partition möglich
Installation
Erstellen der XFS-Partition mkfs Standardtool für die Erstellung von Dateisystemen unter Linux Festlegen der benötigten Blockgröße ab 512 Byte Standard = 4096 Byte max. = 32768 Byte Der Wert sollte für den Verwendungszweck geeignet sein!!!
Erstellen der XFS-Partition mkfs -t xfs -b size=32k /dev/sdb1 erstellt eine Partition mit der Blockgröße 32768 Byte. Bestehende Partitionen müssen mit Parameter -f explizit überschrieben werden.
Erstellen der XFS-Partition Die data section ist unterteilt in Allokationsgruppen. Je mehr Gruppen man hat, desto mehr Aufgaben können parallel abgearbeitet werden. Beispiel: Dateisystem mit 16 Allokationsgruppen mkfs -d agcount=16 device
Erstellen der XFS-Partition Info nach Erstellung der Partition:
Erstellen der XFS-Partition Externes Journal-Log: mkfs.xfs l logdev=l og_devi c e devi c e mount o logdev=l og_devi c e devi c e pat h
Erstellen der XFS-Partition Beispiel: mkfs.xfs -f -l logdev=/dev/sdc1 -b size=4096 -d agcount=16 /dev/sdb1 Wichtig!!! Die Log-Partition darf nicht größer als 65556 Blöcke sein!!!
Erstellen der XFS-Partition Ergebnis:
Erstellen der XFS-Partition Mounten der neu erstellten XFS-Partition mount -t xfs -o logdev=/dev/sdc1 /dev/sdb1 /mnt
Installation am Beispiel Debian - Demo
XFS-Tools die wichtigsten! xfs_admin - ändert Parameter wie Label oder UUID xfs_check prüft das Dateisystem auf Fehler xfs_copy kopiert oder klont ein bestehendes Dateisystem xfs_growfs vergrößert eine existierende Partition xfs_repair repariert eine fehlerhafte Partition
Für Domino geeignet? Ja, wenn große NSF-Dateien existieren z.b. > 1 GB Ja, wenn Applikationen viele Ansichten enthalten und viel indiziert werden muss updall laeuft mehrfach am Tag, Daten muessen schnell geschrieben werden Ja, wenn Massenaenderungen an Dokumenten notwendig sind Ja, wenn viel mit aktuellen Volltext-Index gearbeitet wird
Für Domino geeignet? Performancemessung! Wie? Installieren der Sysstat-Tools, enthalten iostat, vmstat, sar, sadf Iozone3 oder bonnie++ fuer die Ermittlung des Datendurchsatzes dd fuer den schnellen Vergleich!
Zusammenfassung XFS ist ein aufgrund der Reife ein stabiles und robustes Dateisystem Gut geeignet fuer Datenbankserver Geringer Speicherbedarf Geringe CPU-Belastung Optimal anpassbar an die vorhandene Hardware (SAN, Raid, etc.) Gute Schreib-/Leseperformance
Fragen? Jetzt stellen oder später - Email: dpolke@tad.de - Telefon: 04721 606-225
Quellen XFS (Dateisystem) Wikipedia - http://de.wikipedia.org/wiki/xfs_(dateisystem) XFS: A high-performance journaling filesystem - http://oss.sgi.com/projects/xfs/index.html LinuxUser Das passende Dateisystem wählen Mit System - http://www.linux-user.de/ausgabe/2006/01/046-dateisysteme/index.html Sysstat-Tools - http://pagesperso-orange.fr/sebastien.godard/tutorial.html#section1 Systemaktivität überwachen Was ist los? - ix 09/2008 Seite 148 Anatomy of Linux Journal Filesystems - http://www.ibm.com/developerworks/linux/library/l-journaling-filesystems/index.html?s_tact=105a
Referent Dirk Polke TAD Pharma GmbH Heinz-Lohmann-Str. 5 27472 Cuxhaven Email: dpolke@tad.de Tel.: 04721/606225 Mobil: 0172/4312036 Xing: https://www.xing.com/profile/dirk_polke