Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
Global File System 2
Red Hat Global File System 2
Ausgabe 7
Zusammenfassung
Einführung
1. Zielgruppe
- Verfahren zur Linux-Systemadministration, einschließlich Kernel-Konfiguration
- Installation und Konfiguration von gemeinsam genutzten Speichernetzwerken, wie z. B. Fibre-Channel-SANs
2. Ergänzende Dokumentation
- Installationshandbuch – Liefert Informationen bezüglich der Installation von Red Hat Enterprise Linux 6.
- Deployment Guide – Liefert Informationen zur Bereitstellung, zur Konfiguration und zur Verwaltung von Red Hat Enterprise Linux 6.
- Storage Administration Guide – Liefert Informationen über die effiziente Verwaltung von Speichergeräten und Dateisystemen auf Red Hat Enterprise Linux 6.
- High Availability Add-On Overview – Liefert einen allgemeinen Überblick über das High Availability Add-On.
- Cluster-Administration – Liefert Informationen zur Installation, Konfiguration und Verwaltung des High Availability Add-Ons.
- Administration des Logical Volume Manager – Liefert eine Beschreibung des Logical Volume Managers (LVM), inklusive Informationen zum Einsatz von LVM in einer Cluster-Umgebung.
- DM Multipath – Liefert Informationen über die Verwendung der Device-Mapper-Multipath-Funktionen von Red Hat Enterprise Linux.
- Verwaltung des Load Balancer Add-Ons – Liefert Informationen zur Konfiguration von Hochleistungssystemen und -diensten mit dem Red Hat Load Balancer Add-On, einer Gruppe integrierter Software-Komponenten, die Linux Virtual Server (LVS) bereitstellen, um IP-Lasten über eine Gruppe realer Server zu verteilen.
- Versionshinweise – Liefert Informationen über die jeweils aktuelle Release der Red Hat Produkte.
3. Wir freuen uns auf Ihr Feedback!
rh-gfs2(EN)-6 (2014-10-8T15:15)
Kapitel 1. Überblick über GFS2
Anmerkung
Anmerkung
fsck.gfs2
-Befehls auf einem sehr großen Dateisystem kann eine lange Zeit in Anspruch nehmen und zudem viel Speicherkapazität verbrauchen. Darüber hinaus wird bei einem Ausfall der Festplatte oder eines Untersystems die Wiederherstellungszeit durch die Schnelligkeit Ihres Sicherungsmediums begrenzt. Weitere Informationen über die Menge an Arbeitsspeicher, die der fsck.gfs2
-Befehl benötigt, finden Sie in Abschnitt 4.11, »Reparieren eines Dateisystems«.
clvmd
, der logische LVM-Datenträger im Cluster verwaltet. Der Daemon erlaubt die Verwendung von LVM2, um logische Datenträger im Cluster zu verwalten, und ermöglicht es allen Knoten im Cluster, die logischen Datenträger gemeinsam zu verwenden. Weitere Informationen zur Datenträgerverwaltung mit LVM finden Sie im Handbuch Administration des Logical Volume Manager.
gfs2.ko
implementiert das GFS2-Dateisystem und wird auf GFS2-Cluster-Knoten geladen.
Anmerkung
1.1. Neue und veränderte Funktionen
1.1.1. Neue und veränderte Funktionen für Red Hat Enterprise Linux 6.0
- Für die Red Hat Enterprise Linux 6 Release unterstützt Red Hat nicht länger den Einsatz von GFS2 als Ein-Knoten-Dateisystem.
- In der Red Hat Enterprise Linux 6 Release wurde der
gfs2_convert
-Befehl zur Aktualisierung von einem GFS- auf ein GFS2-Dateisystem verbessert. Für weitere Informationen über diesen Befehl siehe Anhang B, Konvertieren eines Dateisystems von GFS auf GFS2. - Die Red Hat Enterprise Linux 6 Release unterstützt die Einhängeoptionen
discard
,nodiscard
,barrier
,nobarrier
,quota_quantum
,statfs_quantum
undstatfs_percent
. Für weitere Informationen über das Einhängen eines GFS2-Dateisystems siehe Abschnitt 4.2, »Einhängen eines Dateisystems«. - Die Red Hat Enterprise Linux 6 Version dieses Dokuments enthält einen neuen Abschnitt, Abschnitt 2.9, »GFS2-Knotensperrung«. Dieser Abschnitt beschreibt einige Interna des GFS2-Dateisystems.
1.1.2. Neue und veränderte Funktionen für Red Hat Enterprise Linux 6.1
- Ab der Red Hat Enterprise Linux 6.1 Release unterstützt GFS2 die standardmäßigen Linux-Funktionen für Festplattenkontingente. GFS2-Kontingentverwaltung ist in Abschnitt 4.5, »Verwalten von GFS2-Festplattenkontingenten« dokumentiert.In früheren Releases von Red Hat Enterprise Linux erforderte GFS2 den
gfs2_quota
-Befehl zur Verwaltung von Festplattenkontingenten. Die Dokumentation für dengfs2_quota
-Befehl finden Sie jetzt in Anhang A, GFS2-Kontingentverwaltung mit dem Befehlgfs2_quota
. - Dieses Dokument enthält nun ein neues Kapitel, Kapitel 5, Diagnose und Behebung von Problemen mit GFS2-Dateisystemen.
- Im gesamten Dokument wurden kleinere Fehler korrigiert und einige technische Sachverhalte verdeutlicht.
1.1.3. Neue und veränderte Funktionen für Red Hat Enterprise Linux 6.2
- Ab der Red Hat Enterprise Linux 6.2 Release unterstützt GFS2 den
tunegfs2
-Befehl, der einige der Funktionen desgfs2_tool
-Befehls ersetzt. Für weitere Informationen siehe die man-Seite fürtunegfs2
.Die folgenden Abschnitte wurden aktualisiert und bieten Verwaltungsverfahren, die nicht die Verwendung desgfs2_tool
-Befehls erfordern:- Abschnitt 4.5.4, »Synchronisieren von Kontingenten mit dem
quotasync
-Befehl« und Abschnitt A.3, »Synchronisieren von Kontingenten mit demgfs2_quota
-Befehl« beschreiben jetzt, wie derquota_quantum
-Parameter von seinem Standardwert von 60 Sekunden mittels Einhängeoptionquota_quantum=
geändert werden kann. - Abschnitt 4.10, »Unterbrechen der Aktivität auf einem Dateisystem« beschreibt nun, wie man Schreibaktivität auf einem Dateisystem mit dem Befehl
dmsetup
unterbrechen kann.suspend
- Dieses Dokument enthält einen neuen Anhang, Anhang C, GFS2-Tracepoints und die debugfs-Glocks-Datei. Dieser Anhang beschreibt die Glock-
debugfs
-Schnittstelle und die GFS2-Tracepoints. Er richtet sich an fortgeschrittene Benutzer, die mit Dateisysteminterna vertraut sind und die gerne mehr über den Aufbau von GFS2 und das Debugging von GFS2-spezifischen Fehlern erfahren möchten.
1.1.4. Neue und veränderte Funktionen für Red Hat Enterprise Linux 6.3
1.1.5. Neue und veränderte Funktionen für Red Hat Enterprise Linux 6.4
1.1.6. Neue und veränderte Funktionen für Red Hat Enterprise Linux 6.6
1.2. Vor der Einrichtung von GFS2
- GFS2-Knoten
- Legen Sie fest, welche Knoten im Cluster die GFS2-Dateisysteme einhängen sollen.
- Anzahl der Dateisysteme
- Legen Sie fest, wie viele GFS2-Dateisysteme zu Beginn erstellt werden sollen. (Es können später mehr Dateisysteme hinzugefügt werden.)
- Namen der Dateisysteme
- Legen Sie einen eindeutigen Namen für jedes Dateisystem fest. Jeder Name muss eindeutig für alle
lock_dlm
-Dateisysteme im Cluster sein. Jeder Dateisystemname muss in Form einer Parametervariable vorliegen. Für dieses Handbuch werden beispielsweise die Dateisystemnamenmydata1
undmydata2
für einige Beispielverfahren verwendet. - Journale
- Legen Sie die Anzahl der Journale für Ihre GFS2-Dateisysteme fest. Für jeden Knoten, der ein GFS2-Dateisystem einhängt, ist ein Journal erforderlich. GFS2 erlaubt Ihnen, Journale später dynamisch hinzuzufügen, wenn nachträglich weitere Server das Dateisystem einhängen. Informationen über das Hinzufügen von Journalen zu einem GFS2-Dateisystem finden Sie in Abschnitt 4.7, »Hinzufügen von Journalen zu einem Dateisystem«.
- Speichergeräte und Partitionen
- Legen Sie die Speichergeräte und Partitionen fest, die zum Erstellen von logischen Datenträgern (via CLVM) in den Dateisystemen verwendet werden sollen.
Anmerkung
1.3. Installation von GFS2
gfs2-utils
-Paket für GFS2 und das lvm2-cluster
-Paket für den Clustered Logical Volume Manager (CLVM) installieren. Die Pakete lvm2-cluster
und gfs2-utils
sind Teil des ResilientStorage-Channels, der vor der Installation dieser Pakete aktiviert sein muss.
yum install
Befehl verwenden, um die Software-Pakete für das Red Hat High Availability Add-On zu installieren:
# yum install rgmanager lvm2-cluster gfs2-utils
1.4. Unterschiede zwischen GFS und GFS2
gfs2_convert
-Dienstprogramms auf GFS2 konvertieren. Informationen über das gfs2_convert
-Dienstprogramm finden Sie in Anhang B, Konvertieren eines Dateisystems von GFS auf GFS2.
1.4.1. GFS2-Befehlsnamen
Tabelle 1.1. GFS- und GFS2-Befehle
GFS-Befehl | GFS2-Befehl | Beschreibung | ||||
---|---|---|---|---|---|---|
mount | mount | Einhängen eines Dateisystems. Das System ermittelt selbst, ob das Dateisystem ein GFS- oder ein GFS2-Dateisystemtyp ist. Für mehr Informationen zu den GFS2-Einhängeoptionen siehe die man-Seite für gfs2_mount(8). | ||||
umount | umount | Aushängen eines Dateisystems | ||||
|
| Überprüfen und Reparieren eines ausgehängten Dateisystems | ||||
gfs_grow | gfs2_grow | Erweitern eines eingehängten Dateisystems | ||||
gfs_jadd | gfs2_jadd | Hinzufügen eines Journals zu einem eingehängten Dateisystem | ||||
|
| Erstellen eines Dateisystems auf einem Speichergerät | ||||
gfs_quota | gfs2_quota | Verwalten von Festplattenkontingenten auf einem eingehängten Dateisystem. Ab der Red Hat Enterprise Linux 6.1 Release unterstützt GFS2 die standardmäßigen Linux-Funktionen für Festplattenkontingente. Für weitere Informationen über GFS2-Kontingentverwaltung siehe Abschnitt 4.5, »Verwalten von GFS2-Festplattenkontingenten«. | ||||
gfs_tool | tunegfs2
Einhängeparameter
dmsetup suspend
| Konfigurieren, Einstellen oder Anzeigen von Informationen über ein Dateisystem. Der tunegfs2 -Befehl wird ab der Red Hat Enterprise Linux 6.2 Release unterstützt. Es gibt auch einen gfs2_tool -Befehl. | ||||
gfs_edit | gfs2_edit | Anzeigen, Drucken oder Bearbeiten der internen Struktur eines Dateisystems. Der gfs2_edit -Befehl kann für GFS-Dateisysteme wie auch für GFS2-Dateisysteme verwendet werden | ||||
gfs_tool setflag jdata/inherit_jdata | chattr +j (bevorzugt) | Aktivieren des Journalings auf einer Datei oder einem Dateisystem | ||||
setfacl/getfacl | setfacl/getfacl | Anzeigen oder Einstellen der Zugriffskontrollliste einer Datei oder eines Verzeichnisses | ||||
setfattr/getfattr | setfattr/getfattr | Anzeigen oder Einstellen der erweiterten Parameter einer Datei |
1.4.2. Weitere Unterschiede zwischen GFS und GFS2
1.4.2.1. Kontextabhängige Pfade
bind
-Option des mount
-Befehls verwenden. Weitere Informationen über Bind Mounts und kontextabhängige Pfade in GFS2 finden Sie in Abschnitt 4.12, »Bind Mounts und kontextabhängige Pfade«.
1.4.2.2. gfs2.ko-Modul
gfs.ko
. Das Kernel-Modul, welches das GFS2-Dateisystem implementiert, ist gfs2.ko
.
1.4.2.3. Erzwingen von Speicherkontingenten in GFS2
1.4.2.4. Daten-Journaling
chattr
-Befehls, um das j
-Flag auf einer Datei oder einem Verzeichnis zu setzen bzw. zu entfernen. Wird das Flag +j
auf einer Datei gesetzt, so wird das Daten-Journaling auf dieser Datei aktiviert. Wird das Flag +j
auf einem Verzeichnis gesetzt, bedeutet dies, dass für alle nachfolgend in diesem Verzeichnis erstellten Dateien oder Verzeichnisse ebenfalls das Daten-Journaling aktiviert ist („inherit jdata“). Die Verwendung des chattr
-Befehls ist die bevorzugte Methode zum Aktivieren und Deaktivieren des Daten-Journalings auf einer Datei.
1.4.2.5. Journale dynamisch hinzufügen
1.4.2.6. atime_quantum-Parameter entfernt
atime_quantum
, der vom GFS-Dateisystem dazu verwendet werden kann, um festzulegen, wie oft atime
-Aktualisierungen erfolgen. Stattdessen unterstützt GFS2 die Einhängeoptionen relatime
und noatime
. Die relatime
-Einhängeoption wird empfohlen, um ein ähnliches Verhalten zu erreichen, wie mit dem atime_quantum
-Parameter in GFS eingestellt werden kann.
1.4.2.7. Die data= Option des mount-Befehls
data=ordered
oder data=writeback
des mount
-Befehls angeben. Wenn data=ordered
gesetzt ist, werden die Benutzerdaten, die von einer Transaktion verändert wurden, auf die Festplatte gespeichert, bevor die Transaktion auf die Festplatte festgeschrieben wird. Dies sollte verhindern, dass der Benutzer nach einem Absturz nicht initialisierte Blöcke in einer Datei sieht. Wenn data=writeback
gesetzt ist, werden die Benutzerdaten zu einem beliebigen Zeitpunkt nach deren Änderung auf die Festplatte geschrieben. Dies garantiert zwar nicht dieselbe Konsistenz wie der ordered
-Modus, sollte aber bei gewissen Workloads etwas schneller sein. Standardmäßig ist der ordered
-Modus gesetzt.
1.4.2.8. Das gfs2_tool-Befehl
gfs2_tool
-Befehl unterstützt eine andere Reihe von Optionen als der gfs_tool
-Befehl für GFS:
- Der
gfs2_tool
-Befehl unterstützt einenjournals
-Parameter, der sämtliche Informationen über die derzeit konfigurierten Journale ausgibt, einschließlich der Anzahl an Journalen auf dem Dateisystem. - Der
gfs2_tool
-Befehl unterstützt nicht dascounters
-Flag, das dergfs_tool
-Befehl zum Anzeigen von GFS-Statistiken verwendet. - Der
gfs2_tool
-Befehl unterstützt nicht dasinherit_jdata
-Flag. Um ein Verzeichnis als „inherit jdata“ zu kennzeichnen, können Sie dasjdata
-Flag auf dem Verzeichnis setzen oder Sie können denchattr
-Befehl verwenden, um das Flag+j
auf dem Verzeichnis zu setzen. Die Verwendung deschattr
-Befehls ist die bevorzugte Methode, um das Daten-Journaling auf einer Datei zu aktivieren bzw. zu deaktivieren.
Anmerkung
tunegfs2
-Befehl, der einige der Funktionen des gfs2_tool
-Befehls ersetzt. Weitere Informationen finden Sie auf der man-Seite von tunegfs2
. Die Funktionen settune
und gettune
des gfs2_tool
-Befehls wurden durch Befehlszeilenoptionen des mount
-Befehls ersetzt, was es Ihnen ermöglicht, diese bei Bedarf mithilfe der fstab
-Datei einzustellen.
1.4.2.9. Der gfs2_edit-Befehl
gfs2_edit
-Befehl unterstützt eine andere Reihe von Optionen für GFS2 als der gfs_edit
-Befehl für GFS. Weitere Informationen über die einzelnen Optionen, die jede Version des Befehls unterstützt, finden Sie auf den man-Seiten für gfs2_edit
und gfs_edit
.
1.4.3. Verbesserung der GFS2-Leistung
- Bessere Leistung bei intensiver Benutzung eines einzelnen Verzeichnisses
- Schnellere synchrone I/O-Operationen
- Schnelleres Lesen des Caches (kein Sperr-Mehraufwand)
- Schnellere direkte I/O mit bereits zugewiesenen Dateien (vorausgesetzt, der I/O-Umfang ist relativ groß, z. B. 4 M Blöcke)
- Allgemein schnellere I/O-Operationen
- Schnellere Ausführung des
df
-Befehls aufgrund von schnellerenstatfs
-Aufrufen - Verbesserter
atime
-Modus, um die Anzahl der durchatime
erzeugten Schreibvorgänge im Vergleich mit GFS zu verringern
- GFS2 ist ein Teil des Upstream-Kernels (integriert in 2.16.19)
- GFS2 unterstützt die folgenden Funktionen:
- erweiterte Dateiattribute (
xattr
) - die Attributeinstellungen
lsattr
() undchattr
() über standardmäßigeioctl
()-Aufrufe - Timestamps im Nanosekundenbereich
- GFS2 verbraucht weniger Kernel-Speicher
- GFS2 braucht keine Metadaten-GenerierungsnummernDas Zuweisen von GFS2-Metadaten erfordert keine Lesevorgänge. Kopien von Metadatenblöcken in mehreren Journalen werden gehandhabt, indem Blöcke vom Journal widerrufen werden, bevor die Sperrung aufgehoben wird.
- GFS2 beinhaltet eine deutlich einfachere Protokollverwaltung, die keine Kenntnis von nicht verlinkten Inodes oder Änderungen der Speicherkontingente hat.
- Die Befehle
gfs2_grow
undgfs2_jadd
verwenden Sperren, um zu verhindern, dass mehrere Instanzen gleichzeitig ausgeführt werden. - Der ACL-Code wurde für Aufrufe wie
creat
() undmkdir
() vereinfacht. - Nicht verlinkte Inodes, Änderungen der Festplattenkontingente und
statfs
-Änderungen werden wiederhergestellt, ohne dass das Journal neu eingehängt werden muss.
Kapitel 2. Überlegungen zur Konfiguration und zum Betrieb von GFS2
Wichtig
2.1. Überlegungen zur Formatierung
2.1.1. Dateisystemgröße: Kleiner ist besser
- Es wird weniger Zeit benötigt, um eine Sicherungskopie jedes Dateisystems zu erstellen.
- Es wird weniger Zeit benötigt, wenn Sie das Dateisystem mit dem Befehl
fsck.gfs2
überprüfen müssen. - Es wird weniger Arbeitsspeicher benötigt, wenn Sie das Dateisystem mit dem Befehl
fsck.gfs2
überprüfen müssen.
2.1.2. Blockgröße: Standardblöcke (4 K) werden bevorzugt
mkfs.gfs2
eine optimale Blockgröße basierend auf der Gerätetopologie zu schätzen. Im Allgemeinen ist 4 K die bevorzugte Blockgröße, da 4 K die standardmäßige Seitengröße (Arbeitsspeicher) für Linux ist. Im Gegensatz zu einigen anderen Dateisystemen führt GFS2 die meisten seiner Operationen mit 4-K-Kernel-Puffern durch. Wenn Ihre Blockgröße 4 K beträgt, hat der Kernel weniger Arbeit bei der Handhabung der Puffer.
2.1.3. Anzahl der Journale: Eines für jeden einhängenden Knoten
gfs2_jadd
hinzufügen. Mit GFS2 können Sie jederzeit Journale im laufenden Betrieb hinzufügen.
2.1.4. Journalgröße: Standard (128 MB) ist in der Regel optimal
mkfs.gfs2
ausführen, um ein GFS2-Dateisystem zu erstellen, können Sie die Größe der Journale festlegen. Wenn Sie keine Größe angeben, wird sie auf 128 MB festgelegt, was für die meisten Anwendungen optimal sein dürfte.
2.1.5. Größe und Anzahl der Ressourcengruppen
mkfs.gfs2
erstellt wird, teilt es den Speicher in gleichmäßige Abschnitte, die Ressourcengruppen genannt werden. Dabei wird versucht, die optimale Größe für die Ressourcengruppen (zwischen 32 MB und 2 GB) abzuschätzen. Sie können diesen Standard mit der Option -r
des Befehls mkfs.gfs2
überschreiben.
- Erstens: Wenn eine Ressourcengruppe gänzlich voll ist, merkt sich GFS2 das und versucht, diese für spätere Zuweisungen nicht mehr zu prüfen (bis ein Block freigegeben wird). Wenn Sie niemals Dateien löschen, werden die Konflikte weniger schwerwiegend sein. Wenn Ihre Anwendung allerdings ständig auf einem fast vollen Dateisystem Blöcke löscht und neue Blöcke zuweist, werden die Konflikte sehr hoch sein, was sich stark auf die Leistung auswirken wird.
- Zweitens: Wenn neue Blöcke zu einer vorhandenen Datei hinzugefügt werden (z. B. durch Anhängen), wird GFS2 versuchen, die neuen Blöcke in derselben Ressourcengruppe wie die Datei zu gruppieren. Dies geschieht, um die Leistung zu erhöhen: Auf einer sich drehenden Festplatte wird die Suche weniger Zeit benötigen, wenn die Blöcke physisch nahe beisammen liegen.
2.2. Dateisystemfragmentierung
2.3. Probleme mit der Blockzuweisung
2.3.1. Freien Speicherplatz im Dateisystem belassen
2.3.2. Dateizuweisung durch die jeweiligen Knoten, wenn möglich
2.3.3. Vorabzuweisung, wenn möglich
fallocate
(1), mit dem Sie Datenblöcke vorab zuweisen.
2.4. Cluster-Überlegungen
2.5. Überlegungen zur Verwendung
2.5.1. Einhängeoptionen: noatime und nodiratime
noatime
und nodiratime
einzuhängen. Dadurch wendet GFS2 weniger Zeit zur Aktualisierung der Festplatten-Inodes für jeden Zugriff auf.
2.5.2. DLM-Optimierungsoptionen: Erhöhen der DLM-Tabellengröße
echo 1024 > /sys/kernel/config/dlm/cluster/lkbtbl_size echo 1024 > /sys/kernel/config/dlm/cluster/rsbtbl_size echo 1024 > /sys/kernel/config/dlm/cluster/dirtbl_size
2.5.3. VFS-Optimierungsoptionen: Recherchieren und Ausprobieren
sysctl
-Befehls optimieren, um die zugrunde liegende GFS2-Leistung zu verbessern. Zum Beispiel können die Werte für dirty_background_ratio
und vfs_cache_pressure
abhängig von Ihrer Situation angepasst werden. Um die aktuellen Werte abzurufen, verwenden Sie die folgenden Befehle:
sysctl -n vm.dirty_background_ratio sysctl -n vm.vfs_cache_pressure
sysctl -w vm.dirty_background_ratio=20 sysctl -w vm.vfs_cache_pressure=500
/etc/sysctl.conf
ändern.
2.5.4. SELinux: Vermeiden von SELinux auf GFS2
2.5.5. Einrichten von NFS auf GFS2
Warnung
localflocks
einhängen. Dadurch werden POSIX-Sperren von jedem Server dazu gezwungen, lokale sperren zu sein, d. h. nicht geclustert und unabhängig voneinander. (Es können eine Reihe von Problemen auftreten, falls GFS2 versuchen sollte, POSIX-Sperren von NFS auf den Knoten in einem Cluster zu implementieren.) Für Applikationen, die auf NFS-Clients laufen, bedeuten lokale POSIX-Sperren, dass zwei Clients gleichzeitig dieselbe Sperre halten können, falls die beiden Clients von verschiedenen Servern aus einhängen. Wenn alle Clients NFS nur von einem Server aus einhängen, dann stellt sich das Problem nicht, dass verschiedene Server unabhängig voneinander dieselbe Sperre vergeben. Wenn Sie nicht sicher sind, ob Sie Ihr Dateisystem mit der localflocks
-Option einhängen sollen, dann sollten Sie die Option nicht verwenden. Es ist immer sicherer, die Sperren auf einer geclusterten Grundlage zu verwenden.
- Red Hat unterstützt nur solche Konfigurationen des Red Hat High Availability Add-Ons, die NFSv3 mit Sperren in einer Aktiv/Passiv-Konfiguration mit den folgenden Eigenschaften verwenden:
- Das zugrunde liegende Dateisystem ist ein GFS2-Dateisystem, das auf einem Cluster mit 2 bis 16 Knoten läuft.
- Ein NFSv3-Server ist als ein Dienst definiert, der das gesamte GFS2-Dateisystem zu jeder Zeit von nur einem einzigen Cluster-Knoten exportiert.
- Der NFS-Server kann im Rahmen der Ausfallsicherung von einem Cluster-Knoten auf einen anderen wechseln (Aktiv/Passiv-Konfiguration).
- Außer über den NFS-Server ist keinerlei Zugriff auf das GFS2-Dateisystem gestattet. Das betrifft sowohl lokalen GFS2-Dateisystemzugriff als auch den Zugriff über Samba oder Clustered Samba.
- Es gibt keine NFS-Kontingentunterstützung auf dem System.
Diese Konfiguration bietet Hochverfügbarkeit für das Dateisystem und reduziert Ausfallzeiten, da ein ausgefallener Knoten nicht dazu führt, dass derfsck
-Befehl ausgeführt werden muss, wenn der NFS-Server von einem Knoten auf einen anderen wechselt. - Die NFS-Option
fsid =
ist zwingend erforderlich für NFS-Exporte auf GFS2. - Falls Probleme mit Ihrem Cluster auftreten (falls z. B. der Cluster das Quorum verliert und das Fencing nicht erfolgreich ist), werden die geclusterten logischen Datenträger und das GFS2-Dateisystem eingefroren und der Zugriff ist erst wieder möglich, wenn der Cluster wieder ein Quorum erlangt. Sie sollten diese Möglichkeit bei der Entscheidung berücksichtigen, ob eine einfache Ausfallsicherungslösung, wie in diesem Verfahren beschrieben, für Ihr System geeignet ist.
2.5.6. Samba (SMB oder Windows) File Serving über GFS2
2.6. Datensicherung
echo -n 3 > /proc/sys/vm/drop_caches
rsync
-Befehl auf knotenspezifische Verzeichnisse anwendet.
-o lockproto=lock_nolock
einhängen, da es nicht Teil eines Clusters sein wird.
2.7. Hardware-Überlegungen
- Verwenden von qualitativ höherwertigen SpeicherlösungenGFS2 kann auf billigeren Hardware-Lösungen für gemeinsam verwendeten Speicher arbeiten, wie iSCSI oder Fibre Channel over Ethernet (FCoE), aber Sie erreichen eine bessere Leistung, wenn Sie Speicher höherer Qualität mit größerer Caching-Kapazität anschaffen. Red Hat führt die meisten Qualitäts-, Fehler- und Leistungstests auf SAN-Speichersystemen mit Fibre-Channel-Verbindung durch. In der Regel ist es immer besser, etwas bereitstellen, das zuvor getestet wurde.
- Prüfen der Netzwerkausrüstung vor der BereitstellungEine qualitativ höherwertige und schnellere Netzwerkausrüstung führt dazu, dass auch die Cluster-Kommunikation und GFS2 schneller und zuverlässiger läuft. Allerdings müssen Sie nicht die teuerste Hardware kaufen. Einige der teuersten Netzwerk-Switches haben Probleme beim Transport von Multicast-Paketen, die für die Weitergabe von
fcntl
-Sperren (flocks) verwendet werden, während billigere Allerwelts-Netzwerk-Switches manchmal schneller und zuverlässiger sind. Im Allgemeinen empfiehlt es sich, die Hardware zu testen, bevor sie für den vollen Einsatz in einer Produktionsumgebung implementiert wird.
2.8. Leistungsprobleme: Mehr Informationen im Red Hat Kundenportal
2.9. GFS2-Knotensperrung
write
-Systemaufruf).
Anmerkung
- Ein Inode wird auf allen Knoten nur zum Lesezugriff verwendet.
- Schreibzugriffe auf einen Inode erfolgen nur von einem einzigen Knoten aus.
mmap
() für eine Datei auf einem GFS2-Dateisystem mit einem Lese/Schreib-Mapping anwenden, diese Datei jedoch nur lesen, zählt dies als Lesevorgang. Auf GFS dagegen zählt dies als Schreibvorgang, sodass GFS2 sehr viel skalierbarer ist mit mmap
() I/O.
noatime
mount
nicht setzen, führen Lesevorgänge auch zu Schreibvorgängen, um die Timestamps der Datei zu aktualisieren. Wir empfehlen im Allgemeinen, dass alle GFS2-Benutzer mit noatime
einhängen sollten, sofern kein besonderer Grund für die Verwendung von atime
vorliegt.
2.9.1. Probleme mit Posix-Sperren
- Die Verwendung von Flocks ermöglicht eine schnellere Verarbeitung als die Verwendung von POSIX-Sperren.
- Programme, die POSIX-Sperren in GFS2 verwenden, sollten die
GETLK
-Funktion vermeiden, da sich in einer Cluster-Umgebung die Prozess-ID auf einen anderen Knoten im Cluster beziehen kann.
2.9.2. Leistungsoptimierung mit GFS2
mbox
) oder über ein Verzeichnis für jeden Benutzer, das eine Datei für jede Nachricht enthält (maildir
). Wenn Anfragen über IMAP eingehen, wird idealerweise jedem Benutzer eine Affinität zu einem bestimmten Knoten zugewiesen. Auf diese Weise werden deren Anfragen zum Ansehen und Löschen von E-Mails tendenziell vom Cache auf diesem Knoten bedient. Falls dieser Knoten ausfällt, kann die Sitzung natürlich auf einem anderen Knoten neu gestartet werden.
imap
oder smtp
) transparent.
echo -n 3 >/proc/sys/vm/drop_caches
2.9.3. Suche und Bereinigung von Problemen bei der GFS2-Leistung mit GFS2 Lock Dump
debugfs
-Datei entnommen werden, die sich im folgenden Pfad befindet, sofern debugfs
unter /sys/kernel/debug/
eingehängt ist:
/sys/kernel/debug/gfs2/fsname/glocks
cat
-Befehls eine Kopie des gesamten Inhalts der debugfs
-Datei (dies kann eine längere Zeit dauern, falls Sie eine große Menge RAM und zahlreiche gecachte Inodes haben), während bei der Applikation Probleme auftreten, und schauen Sie sich die so erstellten Daten zu einem späteren Zeitpunkt an.
Anmerkung
debugfs
-Datei zu erstellen, im Abstand von ein paar Sekunden oder ein bis zwei Minuten. Vergleichen Sie in den zwei Kopien nun die Halterinformationen derselben Glock-Nummer. Anhand dessen sollten Sie feststellen können, ob die Verarbeitung Fortschritte macht (also nur langsam ist) oder ob sie hängen geblieben ist (was immer auf einen Fehler hindeutet und umgehend dem Red Hat Support gemeldet werden sollte).
debugfs
-Datei, die mit H: (Halter) beginnt, steht für eine Sperranfrage, die entweder bereits gewährt wurde oder darauf wartet, gewährt zu werden. Das Flags-Feld auf der Halterzeile f: zeigt an, was von beidem der Fall ist: Das „W“-Flag kennzeichnet eine wartende Anfrage, das „H“-Flag kennzeichnet eine gewährte Anfrage. Diejenigen Glocks mit einer hohen Anzahl wartender Anfragen sind wahrscheinlich diejenigen mit Konflikten.
Tabelle 2.1. Glock-Flags
Flag | Name | Bedeutung |
---|---|---|
b | Blocking | Gültig, wenn das „locked“-Flag gesetzt ist. Zeigt an, dass die Operation, die vom DLM angefordert wurde, sperren könnte. Dieses Flag wird für „demote“-Operationen und für „try“-Sperren entfernt. Der Zweck dieses Flags ist es, das Sammeln von Statistiken über die DLM-Antwortzeiten zu ermöglichen, unabhängig von der Zeit, die andere Knoten zum Herabstufen von Sperren benötigen. |
d | Pending demote | Eine wartende Anfrage zum Herabstufen (remote) |
D | Demote | Eine Anfrage zum Herabstufen (lokal oder remote) |
f | Log flush | Das Protokoll muss festgeschrieben werden, bevor dieses Glock freigegeben werden kann |
F | Frozen | Antworten von Remote-Knoten werden ignoriert, eine Wiederherstellung läuft. Dieses Flag hat nichts mit dem Dateisystem-Freeze zu tun, das einen anderen Mechanismus verwendet, sondern wird nur zur Wiederherstellung verwendet. |
i | Invalidate in progress | Seiten unter diesem Glock werden derzeit ungültig gemacht (invalidiert) |
I | Initial | Gesetzt, wenn eine DLM-Sperre mit diesem Glock verknüpft ist |
l | Locked | Das Glock ändert derzeit seinen Status |
L | LRU | Gesetzt, wenn das Glock auf der LRU-Liste ist |
o | Object | Gesetzt, wenn das Glock einem Objekt zugeordnet ist (d. h. einem Inode für Typ-2-Glocks und einer Ressourcengruppe für Typ-3-Glocks) |
p | Demote in progress | Das Glock antwortet derzeit auf eine Anfrage zum Herabstufen |
q | Queued | Gesetzt, wenn ein Halter der Warteschlange eines Glocks hinzugefügt wird, und gelöscht, wenn das Glock noch gehalten wird, es jedoch keine verbleibenden Halter gibt. Verwendet als Teil des Algorithmus, der die minimale Haltezeit für ein Glock berechnet. |
r | Reply pending | Von Remote-Knoten erhaltene Antwort wartet auf Verarbeitung |
y | Dirty | Daten müssen auf die Festplatte überschrieben werden, bevor dieses Glock freigegeben werden kann |
Tabelle 2.2. Glock-Halter-Flags
Flag | Name | Bedeutung |
---|---|---|
a | Async | Nicht auf das Glock-Ergebnis warten (Ergebnis wird später abgerufen) |
A | Any | Jeder kompatible Sperrmodus ist zulässig |
c | No cache | Wenn nicht gesperrt, sofort DLM-Sperre herabstufen |
e | No expire | Nachfolgende Anfragen zur Aufhebung der Sperre ignorieren |
E | exact | Muss den exakten Sperrmodus haben |
F | First | Gesetzt, wenn der Halter der Erste ist, dem diese Sperre gewährt wird |
H | Holder | Zeigt an, dass die angeforderte Sperre gewährt wird |
p | Priority | Reiht Halter an der Spitze der Warteschlange ein |
t | Try | Eine „try“-Sperre |
T | Try 1CB | Eine „try“-Sperre, die einen Callback sendet |
W | Wait | Gesetzt, während auf den Abschluss einer Anfrage gewartet wird |
find -inum number
ausführen, wobei number die Inode-Nummer ist, die aus dem Hexadezimalformat in der Glocks-Datei in ein Dezimalformat konvertiert wurde.
Anmerkung
find
-Befehl auf einem Dateisystem durchführen, während dort Sperrkonflikte auftreten, werden Sie wahrscheinlich das Problem dadurch noch verschlimmern. Wenn Sie nach Inode-Konflikten suchen, ist es ratsam, die Applikation vor der Ausführung des find
-Befehls zu stoppen.
Tabelle 2.3. Glock-Typen
Typnummer | Sperrtyp | Verwendung |
---|---|---|
1 | Trans | Transaktionssperre |
2 | Inode | Inode-Metadaten und -Daten |
3 | Rgrp | Ressourcengruppen-Metadaten |
4 | Meta | Der Superblock |
5 | Iopen | Feststellung des letzten Schließers des Inodes |
6 | Flock | flock (2)-Systemaufruf |
8 | Quota | Kontingentoperationen |
9 | Journal | Journal-Mutex |
gfs2_grow
vergrößert wird.
Kapitel 3. Erste Schritte
3.1. Grundlegende Vorbereitungen
- Stellen Sie sicher, dass Sie sich die wesentlichen Charakteristiken der GFS2-Knoten notiert haben (siehe Abschnitt 1.2, »Vor der Einrichtung von GFS2«).
- Stellen Sie sicher, dass die Systemuhren auf den GFS2-Knoten synchronisiert sind. Es wird empfohlen, dass Sie die Network Time Protocol (NTP) Software verwenden, die in Ihrer Red Hat Enterprise Linux Distribution integriert ist.
Anmerkung
Die Systemuhren der GFS2-Knoten dürfen nur ein paar Minuten voneinander abweichen, um unnötiges Aktualisieren der Inode-Timestamps zu vermeiden. Unnötige Aktualisierungen der Inode-Timestamps haben schwerwiegende Auswirkungen auf die Leistung des Clusters. - Um GFS2 in einer Cluster-Umgebung zu verwenden, müssen Sie Ihr System zur Verwendung des Clustered Logical Volume Manager (CLVM) konfigurieren, der eine Reihe von Clustering-Erweiterungen für den LVM Logical Volume Manager bereitstellt. Um CLVM verwenden zu können, muss die Red Hat Cluster Suite Software laufen, einschließlich dem
clvmd
-Daemon. Informationen zur Verwendung von CLVM finden Sie im Handbuch Administration des Logical Volume Manager. Informationen zur Installation und Verwaltung der Red Hat Cluster Suite finden Sie im Handbuch Cluster-Administration.
3.2. Schritte zur erstmaligen Einrichtung
- Einrichten von logischen Datenträgern
- Erstellen der GFS2-Dateisysteme
- Einhängen der Dateisysteme
- Verwenden Sie LVM, um einen logischen Datenträger für jedes Red Hat GFS2-Dateisystem zu erstellen.
Anmerkung
Sie können die in der Red Hat Cluster Suite enthalteneninit.d
-Skripte verwenden, um das Aktivieren und Deaktivieren der logischen Datenträger zu automatisieren. Weitere Informationen überinit.d
-Skripte finden Sie unter Konfiguration und Verwaltung eines Red Hat Clusters. - Erzeugen Sie auf den in Schritt 1 erstellten logischen Datenträgern GFS2-Dateisysteme. Wählen Sie einen eindeutigen Namen für jedes Dateisystem. Weitere Informationen über das Erstellen von GFS2-Dateisystemen finden Sie in Abschnitt 4.1, »Erstellen eines Dateisystems«.Sie können eines der folgenden Befehlsformate verwenden, um ein geclustertes GFS2-Dateisystem zu erstellen:
mkfs.gfs2 -p lock_dlm -t
ClusterName:FSName
-jNumberJournals BlockDevice
mkfs -t gfs2 -p lock_dlm -t
LockTableName
-jNumberJournals BlockDevice
Weitere Informationen über das Erstellen von GFS2-Dateisystemen finden Sie in Abschnitt 4.1, »Erstellen eines Dateisystems«. - Hängen Sie auf jedem Knoten die GFS2-Dateisysteme ein. Weitere Informationen über das Einhängen von GFS2-Dateisystemen finden Sie in Abschnitt 4.2, »Einhängen eines Dateisystems«.Befehlsverwendung:
mount BlockDevice MountPoint
mount -o acl BlockDevice MountPoint
Die Einhängeoption
erlaubt die Veränderung der Datei-ACLs. Wird ein Dateisystem ohne die Einhängeoption-o
acl
eingehängt, können Benutzer die ACLs zwar einsehen (mittels-o
aclgetfacl
), dürfen diese jedoch nicht verändern (mittelssetfacl
).Anmerkung
Sie können die im Red Hat High Availability Add-On enthalteneninit.d
-Skripte verwenden, um das Ein- und Aushängen von GFS2-Dateisystemen zu automatisieren.
Kapitel 4. Verwaltung von GFS2
4.1. Erstellen eines Dateisystems
mkfs.gfs2
-Befehl erstellen Sie ein GFS2-Dateisystem. Sie können dazu auch den mkfs
-Befehl mit der Option -t gfs2
verwenden. Ein Dateisystem wird auf einem aktivierten LVM-Datenträger erstellt. Folgende Informationen sind erforderlich, um den mkfs.gfs2
-Befehl auszuführen:
- Sperrprotokoll/Modulname (das Sperrprotokoll für einen Cluster ist
lock_dlm
) - Clustername (falls Teil einer Cluster-Konfiguration)
- Anzahl der Journale (jeweils ein Journal ist erforderlich für jeden Knoten, der das Dateisystem einhängen soll)
mkfs.gfs2
-Befehl direkt verwenden oder Sie können den mkfs
-Befehl mit dem Parameter -t
verwenden, um den Dateisystemtyp gfs2
anzugeben, gefolgt von den GFS2-Dateisystemoptionen.
Anmerkung
mkfs.gfs2
-Befehl ein GFS2-Dateisystem erstellt haben, können Sie die Größe dieses Dateisystems nicht mehr nach unten korrigieren. Sie können ein vorhandenes Dateisystem jedoch mithilfe des Befehls gfs2_grow
vergrößern, wie in Abschnitt 4.6, »Vergrößern eines Dateisystems« beschrieben.
4.1.1. Verwendung
mkfs.gfs2 -pLockProtoName
-tLockTableName
-jNumberJournals BlockDevice
mkfs -t gfs2 -pLockProtoName
-tLockTableName
-jNumberJournals BlockDevice
Anmerkung
mkfs.gfs2 -pLockProtoName
-jNumberJournals BlockDevice
mkfs -t gfs2 -pLockProtoName
-jNumberJournals BlockDevice
Warnung
LockProtoName
und LockTableName
vertraut machen. Eine unsachgemäßge Verwendung der Parameter LockProtoName
und LockTableName
kann zur Beschädigung des Dateisystems oder des Lock Space führen.
LockProtoName
- Gibt den Namen des zu verwendenden Sperrprotokolls an. Das Sperrprotokoll für einen Cluster ist
lock_dlm
. LockTableName
- Dieser Parameter wird für ein GFS2-Dateisystem in einer Cluster-Konfiguration spezifiziert. Er besteht aus zwei Teilen, durch einen Doppelpunkt voneinander getrennt (ohne Leerstellen), also:
ClusterName:FSName
ClusterName
, der Name des Clusters, für den das GFS2-Dateisystem erstellt wird.FSName
, der Dateisystemname, darf zwischen 1 und 16 Zeichen lang sein. Der Name muss eindeutig für allelock_dlm
-Dateisysteme im Cluster sein und für alle Dateisysteme (lock_dlm
undlock_nolock
) auf jedem lokalen Knoten.
Number
- Gibt die Anzahl der Journale an, die vom
mkfs.gfs2
-Befehl erzeugt werden sollen. Es wird jeweils ein Journal für jeden Knoten benötigt, der das Dateisystem einhängt. Für GFS2-Dateisysteme können später mehr Journale hinzugefügt werden, ohne dass das Dateisystem vergrößert werden muss, wie im Abschnitt 4.7, »Hinzufügen von Journalen zu einem Dateisystem« beschrieben. BlockDevice
- Gibt einen logischen oder physischen Datenträger an.
4.1.2. Beispiele
lock_dlm
das vom Dateisystem verwendete Sperrprotokoll, da es sich hierbei um ein Cluster-Dateisystem handelt. Der Cluster-Name ist alpha
und der Dateisystemname ist mydata1
. Das Dateisystem beinhaltet 8 Journale und wird auf /dev/vg01/lvol0
erstellt.
mkfs.gfs2 -p lock_dlm -t alpha:mydata1 -j 8 /dev/vg01/lvol0
mkfs -t gfs2 -p lock_dlm -t alpha:mydata1 -j 8 /dev/vg01/lvol0
lock_dlm
-Dateisystem erstellt, das im Cluster alpha
verwendet werden kann. Der Dateisystemname lautet mydata2
. Das Dateisystem beinhaltet 8 Journale und wird auf /dev/vg01/lvol1
erstellt.
mkfs.gfs2 -p lock_dlm -t alpha:mydata2 -j 8 /dev/vg01/lvol1
mkfs -t gfs2 -p lock_dlm -t alpha:mydata2 -j 8 /dev/vg01/lvol1
4.1.3. Vollständige Optionen
mkfs.gfs2
« beschreibt die mkfs.gfs2
-Befehlsoptionen (Flags und Parameter).
Tabelle 4.1. Befehlsoptionen: mkfs.gfs2
Flag | Parameter | Beschreibung | |||||||
---|---|---|---|---|---|---|---|---|---|
-c | Megabytes | Legt die anfängliche Größe der Kontingentdatei aller Journal auf Megabytes fest. | |||||||
-D | Aktiviert Ddebugging-Ausgabe. | ||||||||
-h | Hilfe. Zeigt verfügbare Optionen an. | ||||||||
-J | MegaBytes | Gibt die Größe des Journals in Megabytes an. Die standardmäßige Journalgröße beträgt 128 Megabytes, die minimale Größe ist 8 Megabytes. Größere Journale verbessern die Leistung, allerdings verbrauchen sie mehr Speicher als kleinere Journale. | |||||||
-j | Number | Gibt die Anzahl der Journale an, die vom mkfs.gfs2 -Befehl erzeugt werden. Es wird jeweils ein Journal für jeden Knoten benötigt, der das Dateisystem einhängt. Falls diese Option nicht spezifiziert ist, wird 1 Journal angelegt. Im GFS2-Dateisystem können Sie später Journale hinzufügen, ohne dass das Dateisystem vergrößert werden muss. | |||||||
-O | Verhindert, dass der mkfs.gfs2 -Befehl nach einer Bestätigung fragt, bevor das Dateisystem geschrieben wird. | ||||||||
-p | LockProtoName |
| |||||||
-q | Es wird keinerlei Ausgabe angezeigt. | ||||||||
-r | MegaBytes | Gibt die Größe der Ressourcengruppen in Megabytes an. Die minimale Ressourcengruppengröße beträgt 32 MB, die maximale Ressourcengruppengröße 2048 MB. Eine große Ressourcengruppengröße kann unter Umständen die Leistung von sehr großen Dateisystemen steigern. Falls dies nicht spezifiziert wird, wählt mkfs.gfs2 die Ressourcengruppengröße auf Basis der Dateisystemgröße aus: Durchschnittlich große Dateisysteme erhalten 256 MB große Ressourcengruppen und größere Dateisysteme erhalten für eine bessere Leistung größere Ressourcengruppen. | |||||||
-t | LockTableName |
| |||||||
-u | MegaBytes | Gibt die anfängliche Größe der nicht verlinkten Tag-Datei jedes Journals an. | |||||||
-V | Zeigt Informationen zur Befehlsversion an. |
4.2. Einhängen eines Dateisystems
Anmerkung
cman
) nicht gestartet wurde, wird die folgende Fehlermeldung ausgegeben:
[root@gfs-a24c-01 ~]# mount -t gfs2 -o noatime /dev/mapper/mpathap1 /mnt
gfs_controld join connect error: Connection refused
error mounting lockproto lock_dlm
-o acl
einhängen. Wird ein Dateisystem ohne die Einhängeoption -o acl
eingehängt, können Benutzer die ACLs zwar einsehen (mittels getfacl
), dürfen diese jedoch nicht verändern (mittels setfacl
).
4.2.1. Verwendung
mount BlockDevice MountPoint
mount -o acl BlockDevice MountPoint
-o acl
- GFS2-spezifische Option, um Veränderungen an Datei-ACLs zu erlauben.
BlockDevice
- Gibt das Blockgerät an, auf dem sich das GFS2-Dateisystem befindet.
MountPoint
- Gibt das Verzeichnis an, in dem das GFS2-Dateisystem eingehängt werden soll.
4.2.2. Beispiel
/dev/vg01/lvol0
im /mygfs2
-Verzeichnis eingehängt.
mount /dev/vg01/lvol0 /mygfs2
4.2.3. Vollständige Verwendung
mountBlockDevice MountPoint
-ooption
-o option
enthält GFS2-spezifische Optionen (siehe Tabelle 4.2, »GFS2-spezifische Einhängeoptionen«) oder zulässige, standardmäßige Linux-Optionen für mount -o
oder einer Kombination aus beiden. Mehrere option
-Parameter werden durch ein Komma getrennt, ohne Leerzeichen.
Anmerkung
mount
-Befehl ist ein Linux-Systembefehl. Zusätzlich zu den in diesem Abschnitt beschriebenen GFS2-spezifischen Optionen können Sie weitere standardmäßige mount
-Befehlsoptionen (z. B. -r
) verwenden. Weitere Informationen über andere mount
-Befehlsoptionen für Linux finden Sie auf der man-Seite für mount
.
-o option
, die zum Zeitpunkt des Einhängens an GFS2 übergeben werden können.
Anmerkung
Tabelle 4.2. GFS2-spezifische Einhängeoptionen
Optionen | Beschreibung | ||
---|---|---|---|
acl | Erlaubt das Verändern von Datei-ACLs. Wird ein Dateisystem ohne die Einhängeoption acl eingehängt, können Benutzer die ACLs zwar einsehen (mittels getfacl ), dürfen diese jedoch nicht verändern (mittels setfacl ). | ||
data=[ordered|writeback] | Wenn data=ordered gesetzt ist, werden die Benutzerdaten, die von einer Transaktion verändert wurden, auf die Festplatte gespeichert, bevor die Transaktion auf die Festplatte festgeschrieben wird. Dies sollte verhindern, dass der Benutzer nach einem Absturz in einer Datei nicht initialisierte Blöcke sieht. Wenn dagegen data=writeback gesetzt ist, werden die Benutzerdaten zu einem beliebigen Zeitpunkt nach deren Änderung auf die Festplatte geschrieben. Dies garantiert zwar nicht dieselbe Konsistenz wie der ordered -Modus, sollte aber bei einer gewissen Auslastung etwas schneller sein. Standardmäßig ist der ordered -Modus gesetzt. | ||
| Zwingt GFS2 dazu, das Dateisystem als Multihost-Dateisystem zu behandeln. Standardmäßig schaltet lock_nolock automatisch das localflocks -Flag ein. | ||
| Teilt GFS2 mit, dass die VFS-Schicht (Virtual File System) alle flocks und fcntl ausführen soll. Das localflocks -Flag wird automatisch durch lock_nolock eingeschaltet. | ||
lockproto= LockModuleName | Erlaubt dem Benutzer die Angabe, welches Sperrprotokoll mit dem Dateisystem verwendet werden soll. Falls LockModuleName nicht spezifiziert wurde, wird der Name des Sperrprotokolls vom Dateisystem-Superblock gelesen. | ||
locktable= LockTableName | Erlaubt dem Benutzer die Angabe, welche Sperrtabelle vom Dateisystem verwendet werden soll. | ||
quota=[off/account/on] | Aktiviert oder deaktiviert Festplattenkontingente für das Dateisystem. Werden die Festplattenkontingente in den account -Status gesetzt, führt dies dazu, dass die Verbrauchsstatistiken pro UID/GID korrekt vom Dateisystem gepflegt werden; Grenzen und Warnwerte werden ignoriert. Der Standardwert ist off . | ||
errors=panic|withdraw | Wenn errors=panic spezifiziert ist, führen Fehler im Dateisystem zu einer Kernel-Panik. Standardmäßig (was der Einstellung von errors=withdraw entspricht) zieht sich das System aus dem Dateisystem zurück und macht es bis zum nächsten Neustart nicht erreichbar; in einigen Fällen kann das System weiterhin ausgeführt werden. Weitere Informationen über die GFS2-Rückzugsfunktion finden Sie in Abschnitt 4.14, »Die GFS2-Rückzugsfunktion«. | ||
discard/nodiscard | Veranlasst GFS2 dazu, „discard“ I/O-Anfragen für Blöcke zu generieren, die freigegeben wurden. Von geeigneter Hardware kann dies dazu eingesetzt werden, um „Thin Provisioning“ und ähnliche Schemata zu implementieren. | ||
barrier/nobarrier | Veranlasst GFS2 dazu, I/O-Barrieren zu senden, wenn das Journal auf die Festplatte übertragen wird. Der Standardwert lautet on . Diese Option wird automatisch auf off gesetzt, wenn das zugrunde liegende Gerät keine I/O-Barrieren unterstützt. Die Verwendung von I/O-Barrieren mit GFS2 wird grundsätzlich dringend empfohlen, es sei denn, das Blockgerät ist derart aufgebaut, dass es die Inhalte seines Schreib-Caches nicht verlieren kann (z. B. falls es an eine unterbrechungsfreie Stromversorgung angeschlossen ist oder über keinen Schreib-Cache verfügt). | ||
quota_quantum=secs | Legt die Anzahl an Sekunden fest, für die eine Änderung an den Informationen der Festplattenkontingente auf einem Knoten verbleiben darf, bevor diese in die Kontingentdatei übertragen wird. Dies ist die bevorzugte Methode zum Einstellen dieses Parameters. Der Parameter ist ein ganzzahliger Wert größer als Null. Der Standard beträgt 60 Sekunden. Kleinere Werte führen zu schnelleren Aktualisierungen der Kontingentinformationen und einer geringeren Wahrscheinlichkeit, dass Benutzer oder Gruppen ihre Kontingente überschreiten. Größere Werte machen Dateisystemoperationen mit aktiven Kontingenten schneller und effizienter. | ||
statfs_quantum=secs | Das Einstellen von statfs_quantum auf 0 ist die bevorzugte Methode zum Festlegen der langsamen Version von statfs . Der Standardwert beträgt 30 Sekunden, was die maximale Zeit festlegt, bevor statfs -Änderungen mit der Master-statfs -Datei synchronisiert werden. Dies kann angepasst werden, um schnellere, weniger genaue statfs -Werte oder langsamere, genauere Werte zu ermöglichen. Wenn diese Option auf 0 gesetzt ist, wird statfs immer die echten Werte berichten. | ||
statfs_percent=value | Implementiert eine maximale Grenze prozentualer Änderungen in den statfs -Informationen auf lokaler Basis, bevor diese mit der Master-statfs -Datei synchronisiert werden, selbst wenn die festgelegte Zeitspanne noch nicht überschritten wurde. Falls die statfs_quantum -Einstellung 0 lautet, wird diese Einstellung ignoriert. |
4.3. Aushängen eines Dateisystems
umount
-Befehls.
Anmerkung
umount
-Befehl ist ein Linux-Systembefehl. Informationen zu diesem Befehl finden Sie auf der man-Seite des umount
-Linux-Befehls.
4.3.1. Verwendung
umount MountPoint
MountPoint
- Gibt das Verzeichnis an, in dem das GFS2-Dateisystem derzeit eingehängt ist.
4.4. Spezielle Überlegungen zum Einhängen von GFS2-Dateisystemen
fstab
-Datei, sind dem System nicht bekannt, wenn dieses beim Herunterfahren die Dateisysteme aushängt. Infolgedessen wird das GFS2-Skript das GFS2-Dateisystem nicht aushängen. Nachdem das GFS2-Shutdown-Skript ausgeführt wurde, beendet der standardmäßige Shutdown-Prozess alle verbleibenden Benutzerprozesse, einschließlich der Cluster-Infrastruktur, und versucht das Dateisystem auszuhängen. Dieses Aushängen schlägt jedoch ohne die Cluster-Infrastruktur fehl, sodass sich das System aufhängt.
- Verwenden Sie grundsätzlich einen Eintrag in der
fstab
-Datei, um das GFS2-Dateisystem einzuhängen. - Falls ein GFS2-Dateisystem manuell mit dem
mount
-Befehl eingehängt wurde, hängen Sie dies auch manuell wieder mit demumount
-Befehl aus, bevor Sie einen Neustart durchführen oder das System herunterfahren.
4.5. Verwalten von GFS2-Festplattenkontingenten
quota=on
oder der quota=account
eingehängt wird, verfolgt GFS2 den Speicherverbrauch von jedem Benutzer und jeder Gruppe nach, selbst wenn keine Grenzen gesetzt wurden. GFS2 aktualisiert die Kontingentinformationen auf transaktionale Weise, sodass nach einem Systemabsturz der Kontingentverbrauch nicht rekonstruiert werden muss.
Anmerkung
gfs2_quota
-Befehl zur Verwaltung von Festplattenkontingenten. Informationen über die Verwendung des gfs2_quota
-Befehls finden Sie in Anhang A, GFS2-Kontingentverwaltung mit dem Befehl gfs2_quota
.
4.5.1. Konfigurieren von Festplattenkontingenten
- Richten Sie Kontingente im Erzwingen- oder Berechnen-Modus ein.
- Initialisieren Sie die Kontingentdatenbankdatei mit den aktuellen Informationen zum Blockverbrauch.
- Weisen Sie Kontingentrichtlinien zu. (Wurde lediglich der Berechnen-Modus eingestellt, werden diese Richtlinien jedoch nicht erzwungen.)
4.5.1.1. Einrichten von Kontingenten im Erzwingen- oder Berechnen-Modus
quota=on
ein.
quota=account
ein.
4.5.1.1.1. Verwendung
quota=on
ein.
mount -o quota=on BlockDevice MountPoint
quota=account
ein.
mount -o quota=account BlockDevice MountPoint
quota=off
ein. Dies ist die Standardeinstellung.
mount -o quota=off BlockDevice MountPoint
quota={on|off|account}
on
– Gibt an, dass Kontingente aktiviert sind, wenn das Dateisystem eingehängt wird.off
– Gibt an, dass Kontingente deaktiviert sind, wenn das Dateisystem eingehängt wird.account
– Gibt an, dass die Benutzer- und Gruppenverbrauchsstatistik im Dateisystem gepflegt werden soll, selbst wenn die Kontingentgrenzen nicht erzwungen werden.BlockDevice
- Gibt das Blockgerät an, auf dem sich das GFS2-Dateisystem befindet.
MountPoint
- Gibt das Verzeichnis an, in dem das GFS2-Dateisystem eingehängt werden soll.
4.5.1.1.2. Beispiele
/dev/vg01/lvol0
mit aktivierten Kontingenten im /mygfs2
-Verzeichnis eingehängt.
mount -o quota=on /dev/vg01/lvol0 /mygfs2
/dev/vg01/lvol0
mit Kontingentberechnung, jedoch ohne Erzwingen von Kontingentgrenzen, im /mygfs2
Verzeichnis eingehängt.
mount -o quota=account /dev/vg01/lvol0 /mygfs2
4.5.1.2. Erstellen der Kontingent-Datenbankdateien
quotacheck
-Befehls.
quotacheck
-Befehl untersucht die Dateisysteme mit aktivierten Kontingenten und erzeugt eine Tabelle des aktuellen Festplattenverbrauchs pro Dateisystem. Diese Tabelle wird dann verwendet, um für das Betriebssystem eine laufend aktualisierte Kopie des Verbrauchs zu pflegen. Zudem werden die Kontingentdateien des Dateisystems aktualisiert.
-u
und -g
des quotacheck
-Befehls; beide Optionen müssen angegeben werden, damit sowohl Benutzer- als auch Gruppenkontingente initialisiert werden. Wenn Kontingente beispielsweise auf dem /home
-Dateisystem aktiviert sind, erstellen Sie die Dateien im /home
-Verzeichnis:
quotacheck -ug /home
4.5.1.3. Kontingente pro Benutzer zuweisen
edquota
-Befehl zu. Beachten Sie, dass Kontingente nicht erzwungen werden, wenn Sie Ihr Dateisystem nur im Berechnen-Modus eingehängt haben (durch Angabe der Option quota=account
).
edquota username
/etc/fstab
-Datei Kontingente für die /home
-Partition (/dev/VolGroup00/LogVol02
im nachfolgenden Beispiel) aktiviert sind und Sie den Befehl edquota testuser
ausführen, sehen Sie Folgendes im Standard-Editor des Systems:
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440436 0 0
Anmerkung
edquota
-Befehl nutzt den Texteditor, der durch die EDITOR
-Umgebungsvariable definiert wurde. Um den Editor zu ändern, setzen Sie die EDITOR
-Umgebungsvariable in Ihrer ~/.bash_profile
-Datei auf den vollständigen Pfad zum Editor Ihrer Wahl.
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440436 500000 550000
quota testuser
4.5.1.4. Kontingente pro Gruppe zuweisen
account=on
).
devel
-Gruppe festzulegen (die Gruppe muss bereits existieren, ehe das Gruppenkontingent festgelegt werden kann), verwenden Sie den folgenden Befehl:
edquota -g devel
Disk quotas for group devel (gid 505): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440400 0 0
quota -g devel
4.5.2. Verwalten von Festplattenkontingenten
repquota
-Befehls einen Bericht des Festplattenverbrauchs generieren. Beispielsweise erzeugt der Befehl repquota /home
die folgende Ausgabe:
*** Report for user quotas on device /dev/mapper/VolGroup00-LogVol02 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 36 0 0 4 0 0 kristin -- 540 0 0 125 0 0 testuser -- 440400 500000 550000 37418 0 0
-a
) Dateisysteme mit aktivierten Kontingenten zu erhalten, führen Sie den folgenden Befehl aus:
repquota -a
--
nach jedem Benutzer bieten einen schnellen Weg, um festzustellen, ob die Blockgrenzen überschritten wurden. Falls die weiche Blockgrenze überschritten wurde, erscheint ein +
anstelle des ersten -
in der Ausgabe. Das zweite -
repräsentiert die Inode-Grenze; da GFS2-Dateisysteme jedoch keine Inode-Grenzen unterstützen, bleibt an dieser Stelle stets das Zeichen -
. GFS2-Dateisysteme unterstützen keine Schonfristen, die grace
-Spalte bleibt demzufolge leer.
repquota
-Befehl nicht über NFS unterstützt wird, unabhängig vom zugrunde liegenden Dateisystem.
4.5.3. Pflegen der Genauigkeit von Kontingenten
quotacheck
-Befehl ausführen, um die Kontingentdateien zu erstellen, zu überprüfen und zu reparieren. Außerdem sollten Sie den quotacheck
-Befehl ausführen, wenn Sie den Eindruck haben, dass Ihre Kontingentdateien nicht genau sind, was in Situationen der Fall sein kann, in denen ein Dateisystem nach einem Systemabsturz nicht ordnungsgemäß ausgehängt wurde.
quotacheck
-Befehl finden Sie auf der man-Seite für quotacheck
.
Anmerkung
quotacheck
-Befehl zu einem Zeitpunkt durch, an dem das Dateisystem auf allen Knoten relativ untätig ist, da Festplattenaktivität die Berechnung der Kontingentwerte stören kann.
4.5.4. Synchronisieren von Kontingenten mit dem quotasync
-Befehl
quota_quantum
. Sie können dessen Standardwert von 60 Sekunden mithilfe der Einhängeoption quota_quantum=
ändern, wie in Tabelle 4.2, »GFS2-spezifische Einhängeoptionen« beschrieben. Der quota_quantum
-Parameter muss auf jedem Knoten und jedes Mal, wenn das Dateisystem eingehängt wird, gesetzt werden. Änderungen am quota_quantum
-Parameter sind über Aushängevorgänge hinweg nicht persistent. Sie können den quota_quantum
-Wert mit dem Befehl mount -o remount
aktualisieren.
quotasync
-Befehl verwenden, um zwischen den automatischen Aktualisierungen durch GFS2 die Kontingentinformationen manuell von einem Knoten auf die Kontingentdatei auf der Festplatte zu synchronisieren.
4.5.4.1. Verwendung
quotasync [-ug] -a|mntpnt
...
u
- Synchronisiert die Benutzer-Kontingentdateien.
g
- Synchronisiert die Gruppen-Kontingentdateien.
a
- Synchronisiert alle Dateisysteme, die derzeit Kontingente aktiviert haben und die Synchronisation unterstützen. Wenn -a nicht angegeben ist, sollte ein Einhängepunkt im Dateisystem angegeben werden.
mntpnt
- Gibt das GFS2-Dateisystem an, auf dem diese Aktion durchzuführen ist.
mount -o quota_quantum=secs,remount BlockDevice MountPoint
MountPoint
- Gibt das GFS2-Dateisystem an, auf dem diese Aktion durchzuführen ist.
secs
- Gibt den Zeitabstand zwischen regulären Synchronisationen der Kontingentdatei durch GFS2 an. Kleinere Werte können zu mehr Konflikten führen und sich nachteilig auf die Leistung auswirken.
4.5.4.2. Beispiele
/mnt/mygfs2
.
# quotasync -ug /mnt/mygfs2
/mnt/mygfs2
beim Wiedereinhängen dieses Dateisystems auf dem logischen Datenträger /dev/volgroup/logical_volume
geändert.
# mount -o quota_quantum=3600,remount /dev/volgroup/logical_volume /mnt/mygfs2
4.6. Vergrößern eines Dateisystems
gfs2_grow
-Befehl wird zum Erweitern des GFS2-Dateisystems verwendet, nachdem der Speicher, auf dem das Dateisystem liegt, erweitert wurde. Startet man den gfs2_grow
-Befehl auf einem existierenden GFS2-Dateisystem, wird sämtlicher freier Platz zwischen dem derzeitigen Ende des Dateisystems und dem Ende des Geräts mit einer neu initialisierten GFS2-Dateisystemerweiterung gefüllt. Wenn der Füllvorgang abgeschlossen ist wird der Ressourcenindex des Dateisystems aktualisiert. Alle Knoten im Cluster können dann den zusätzlich hinzugefügten Speicherplatz verwendet.
gfs2_grow
-Befehl muss auf einem eingehängten Dateisystem laufen, braucht jedoch nur auf einem Knoten im Cluster ausgeführt zu werden. Die anderen Knoten merken, dass eine Erweiterung stattgefunden hat, und benutzen den neuen Speicherplatz automatisch.
Anmerkung
mkfs.gfs2
-Befehl erstellt haben, können Sie es nicht mehr verkleinern.
4.6.1. Verwendung
gfs2_grow MountPoint
MountPoint
- Gibt das GFS2-Dateisystem an, auf dem diese Aktion durchzuführen ist.
4.6.2. Anmerkungen
gfs2_grow
-Befehl ausführen:
- Sichern Sie alle wichtigen Daten auf dem Dateisystem.
- Ermitteln Sie den Datenträger, der von dem zu erweiternden Dateisystem verwendet wird, indem Sie den Befehl
df
ausführen.MountPoint
- Erweitern Sie den zugrunde liegenden Cluster-Datenträger mit LVM. Mehr Informationen über die Verwaltung von LVM-Datenträgern finden Sie im Handbuch Administration des Logical Volume Manager.
gfs2_grow
-Befehl nun den df
-Befehl aus, um zu überprüfen, ob der neue Speicher jetzt im Dateisystem verfügbar ist.
4.6.3. Beispiele
/mygfs2fs
-Verzeichnis erweitert.
[root@dash-01 ~]# gfs2_grow /mygfs2fs
FS: Mount Point: /mygfs2fs
FS: Device: /dev/mapper/gfs2testvg-gfs2testlv
FS: Size: 524288 (0x80000)
FS: RG size: 65533 (0xfffd)
DEV: Size: 655360 (0xa0000)
The file system grew by 512MB.
gfs2_grow complete.
4.6.4. Vollständige Verwendung
gfs2_grow [Options
] {MountPoint
|Device
} [MountPoint
|Device
]
MountPoint
- Gibt das Verzeichnis an, in dem das GFS2-Dateisystem eingehängt ist.
Device
- Gibt den Geräteknoten des Dateisystems an.
Tabelle 4.3. Verfügbare GFS2-spezifische Optionen zum Erweitern eines Dateisystems
Optionen | Beschreibung |
---|---|
-h | Hilfe. Zeigt kurze Informationen zur Verwendung an. |
-q | Verringert die Ausführlichkeit der Ausgabe. |
-r MegaBytes | Gibt die Größe der neuen Ressourcengruppe an. Die standardmäßige Größe ist 256 MB. |
-T | Test. Führt sämtliche Berechnungen durch, schreibt jedoch keine Daten auf den Datenträger und erweitert das Dateisystem nicht. |
-V | Zeigt Informationen zur Befehlsversion an. |
4.7. Hinzufügen von Journalen zu einem Dateisystem
gfs2_jadd
-Befehl wird dazu verwendet, um Journale zu einem GFS2-Dateisystem hinzuzufügen. Sie können jederzeit Journale zu einem GFS2-Dateisystem dynamisch hinzufügen, ohne den zugrunde liegenden logischen Datenträger zu erweitern. Der gfs2_jadd
-Befehl muss auf einem eingehängten Dateisystem ausgeführt werden, allerdings braucht er nur auf einem Knoten im Cluster ausgeführt zu werden. Alle anderen Knoten merken automatisch, dass eine Erweiterung stattgefunden hat.
Anmerkung
gfs2_jadd
-Befehl fehl, selbst wenn der logische Datenträger, der das Dateisystem enthält, erweitert wurde und größer als das Dateisystem ist. Der Grund hierfür liegt in den Journalen des GFS2-Dateisystems, denn bei den Journalen handelt es sich um einfache Dateien statt um eingebettete Metadaten, sodass ein einfaches Erweitern des zugrunde liegenden logischen Datenträgers nicht mehr Platz für die Journale verfügbar macht.
journals
-Option des gfs2_tool
-Befehls verwenden, um herauszufinden, wie viele Journale das GFS2-Dateisystem derzeit enthält. Das folgende Beispiel zeigt die Anzahl und die Größe der Journale im unter /mnt/gfs2
eingehängten Dateisystem an.
[root@roth-01 ../cluster/gfs2]# gfs2_tool journals /mnt/gfs2
journal2 - 128MB
journal1 - 128MB
journal0 - 128MB
3 journal(s) found.
4.7.1. Verwendung
gfs2_jadd -j Number MountPoint
Number
- Gibt die Anzahl der neu hinzuzufügenden Journale an.
MountPoint
- Gibt das Verzeichnis an, in dem das GFS2-Dateisystem eingehängt ist.
4.7.2. Beispiele
/mygfs2
-Verzeichnis hinzugefügt.
gfs2_jadd -j1 /mygfs2
/mygfs2
-Verzeichnis hinzugefügt.
gfs2_jadd -j2 /mygfs2
4.7.3. Vollständige Verwendung
gfs2_jadd [Options
] {MountPoint
|Device
} [MountPoint
|Device
]
MountPoint
- Gibt das Verzeichnis an, in dem das GFS2-Dateisystem eingehängt ist.
Device
- Gibt den Geräteknoten des Dateisystems an.
Tabelle 4.4. GFS2 spezifische Optionen zum Hinzufügen von Journalen
Flag | Parameter | Beschreibung |
---|---|---|
-h | Hilfe. Zeigt kurze Informationen zur Verwendung an. | |
-J | MegaBytes | Gibt die Größe der neuen Journale in Megabytes an. Die standardmäßige Journalgröße ist 128 Megabytes. Die minimale Größe ist 32 Megabytes. Um Journale mit verschiedenen Größen zum Dateisystem hinzuzufügen, muss der gfs2_jadd -Befehl für jede gewünschte Journalgröße ausgeführt werden. Die angegebene Größe wird abgerundet, sodass diese einem Vielfachen der Journal-Segmentgröße entspricht, die bei der Erstellung des Dateisystems festgelegt wurde. |
-j | Number | Gibt die Anzahl der neuen Journale an, die vom gfs2_jadd -Befehl hinzugefügt werden. Der standardmäßige Wert ist 1. |
-q | Verringert die Ausführlichkeit der Ausgabe. | |
-V | Zeigt Informationen zur Befehlsversion an. |
4.8. Datenjournale
fsync()
-Aufruf auf einer Datei verursacht, dass die Daten der Datei sofort auf die Platte geschrieben werden. Der Aufruf kehrt zurück, wenn die Platte meldet, dass sämtliche Daten sicher geschrieben wurden.
fsync()
-Operationen für sehr kleine Dateien verkürzen, da zusätzlich zu den Metadaten auch die Dateidaten in das Journal geschrieben werden. Dieser Vorteil verringert sich jedoch rapide bei größeren Dateien. Das Schreiben in mittlere und große Dateien ist sehr viel langsamer mit aktivierten Datenjournalen.
fsync()
zur Synchronisation von Dateidaten angewiesen sind, erzielen eine bessere Leistung durch die Verwendung von Datenjournalen. Das Datenjournaling kann automatisch für jede GFS2-Datei aktiviert werden, die in einem entsprechend gekennzeichneten Verzeichnis (und all seinen Unterverzeichnissen) erstellt wird. Vorhandene Dateien mit Null-Länge können ebenfalls das Datenjournaling aktiviert oder deaktiviert haben.
chattr
-Befehls aktivieren bzw. deaktivieren.
/mnt/gfs2/gfs2_dir/newfile
und überprüfen anschließend, ob das Flag richtig gesetzt wurde.
[root@roth-01 ~]#chattr +j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile
/mnt/gfs2/gfs2_dir/newfile
und überprüfen anschließend, ob das Flag richtig gesetzt wurde.
[root@roth-01 ~]#chattr -j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
------------- /mnt/gfs2/gfs2_dir/newfile
chattr
-Befehl auch dazu verwenden, um das j
-Flag auf einem Verzeichnis zu setzen. Wenn Sie dieses Flag auf einem Verzeichnis setzen, werden alle nachfolgend in diesem Verzeichnis erstellten Dateien und Unterverzeichnisse journalisiert. Die folgenden Befehle setzen das j
-Flag auf dem gfs2_dir
-Verzeichnis und überprüfen danach, ob das Flag richtig gesetzt wurde. Anschließend erstellen diese Befehle eine neue Datei namens newfile
im Verzeichnis /mnt/gfs2/gfs2_dir
und überprüfen danach, ob das j
-Flag für die Datei gesetzt wurde. Da das j
-Flag für das Verzeichnis gesetzt wurde, sollte auch für die newfile
-Datei das Journaling aktiviert sein.
[root@roth-01 ~]#chattr -j /mnt/gfs2/gfs2_dir
[root@roth-01 ~]#lsattr /mnt/gfs2
---------j--- /mnt/gfs2/gfs2_dir [root@roth-01 ~]#touch /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile
4.9. Konfigurieren der atime
-Aktualisierungen
ctime
– Der Zeitpunkt, an dem zum letzten Mal der Inode-Status verändert wurdemtime
– Der Zeitpunkt, an dem zum letzten Mal die Datei (oder das Verzeichnis) verändert wurdeatime
– Der Zeitpunkt, an dem zum letzten Mal auf die Datei (oder das Verzeichnis) zugegriffen wurde
atime
-Aktualisierung aktiviert ist, was standardmäßig bei GFS2 und anderen Linux-Dateisystemen der Fall ist, dann muss jedes Mal, wenn die Datei gelesen wird, dessen Inode aktualisiert werden.
atime
-Informationen nutzen, können diese Aktualisierungen eine große Menge unnötiger Schreibvorgänge und Dateisperrvorgänge verursachen. Diese Vorgänge können die Leistung beeinträchtigen, daher kann es ggf. empfehlenswert sein, die atime
-Aktualisierung zu deaktivieren oder deren Häufigkeit einzuschränken.
atime
-Aktualisierungen zu reduzieren:
- Hängen Sie das Dateisystem mit
relatime
(relative atime) ein, wodurchatime
aktualisiert wird, falls die vorherigeatime
-Aktualisierung älter als diemtime
- oder diectime
-Aktualisierung ist. - Hängen Sie das Dateisystem mit
noatime
ein, wodurchatime
-Aktualisierungen für dieses Dateisystem deaktiviert werden.
4.9.1. Einhängen mit relatime
relatime
(relative atime) kann beim Einhängen des Dateisystems angegeben werden. Dadurch wird atime
aktualisiert, falls die vorherige atime
-Aktualisierung älter als die mtime
- oder die ctime
-Aktualisierung ist.
4.9.1.1. Verwendung
mount BlockDevice MountPoint
-o relatime
BlockDevice
- Gibt das Blockgerät an, auf dem sich das GFS2-Dateisystem befindet.
MountPoint
- Gibt das Verzeichnis an, in dem das GFS2-Dateisystem eingehängt werden soll.
4.9.1.2. Beispiel
/dev/vg01/lvol0
und wird unter dem Verzeichnis /mygfs2
eingehängt. Die atime
-Aktualisierung wird nur dann durchgeführt, wenn die vorherige atime
-Aktualisierung älter als die mtime
- oder die ctime
-Aktualisierung ist.
mount /dev/vg01/lvol0 /mygfs2 -o relatime
4.9.2. Einhängen mit noatime
noatime
kann beim Einhängen des Dateisystems angegeben werden, wodurch die atime
-Aktualisierung auf diesem Dateisystem deaktiviert wird.
4.9.2.1. Verwendung
mount BlockDevice MountPoint
-o noatime
BlockDevice
- Gibt das Blockgerät an, auf dem sich das GFS2-Dateisystem befindet.
MountPoint
- Gibt das Verzeichnis an, in dem das GFS2-Dateisystem eingehängt werden soll.
4.9.2.2. Beispiel
/dev/vg01/lvol0
und wird unter dem Verzeichnis /mygfs2
mit deaktivierter atime
-Aktualisierung eingehängt.
mount /dev/vg01/lvol0 /mygfs2 -o noatime
4.10. Unterbrechen der Aktivität auf einem Dateisystem
dmsetupsuspend
benutzen. Das Unterbrechen der Schreibaktivität erlaubt die Verwendung von hardwarebasierten Geräte-Snapshots, um das Dateisystem in einem konsistenten Zustand zu erfassen. Der Befehl smsetupresume
beendet die Unterbrechung.
4.10.1. Verwendung
dmsetup suspend MountPoint
dmsetup resume MountPoint
MountPoint
- Gibt das Dateisystem an
4.10.2. Beispiele
/mygfs2
.
# dmsetup suspend /mygfs2
/mygfs2
.
# dmsetup resume /mygfs2
4.11. Reparieren eines Dateisystems
fsck.gfs2
-Befehls wiederherstellen.
Wichtig
fsck.gfs2
-Befehl darf nur auf einem Dateisystem ausgeführt werden, das auf allen Knoten ausgehängt ist.
Wichtig
fsck.gfs2
-Befehl überprüfen. Der fsck.gfs2
-Befehl kann beim Start nicht feststellen, ob das Dateisystem auf einem anderen Knoten im Cluster eingehängt ist. Sie sollten den fsck.gfs2
-Befehl erst nach dem Systemstart manuell durchführen.
fsck.gfs2
-Befehl nicht auf einem GFS2-Dateisystem beim Systemstart ausgeführt werden kann, ändern Sie die /etc/fstab
-Datei, sodass die beiden letzten Spalten für den Einhängepunkt des GFS2-Dateisystems „0 0“ statt „1 1“ anzeigen (oder beliebige andere Zahlen), wie im folgenden Beispiel:
/dev/VG12/lv_svr_home /svr_home gfs2 defaults,noatime,nodiratime,noquota 0 0
Anmerkung
fsck.gfs2
-Befehl von einigen älteren gfs_fsck
-Versionen wie folgt unterscheidet:
- Wenn Sie Strg+C während der Ausführung von
fsck.gfs2
drücken, wird die Verarbeitung unterbrochen und eine Eingabeaufforderung angezeigt, die Sie fragt, ob Sie den Befehl abbrechen möchten, den Rest des aktuellen Durchlaufs überspringen möchten oder die Verarbeitung fortsetzen möchten. - Sie können den Grad der Ausführlichkeit der Ausgabe erhöhen, indem Sie das
-v
-Flag verwenden. Ein weiteres-v
erhöht die Ausführlichkeit nochmals. - Sie können den Grad der Ausführlichkeit der Ausgabe verringern, indem Sie das
-q
-Flag verwenden. Ein weiteres-q
verringert die Ausführlichkeit nochmals. - Die Option
-n
öffnet ein Dateisystem schreibgeschützt und beantwortet alle Anfragen automatisch mitno
. Diese Option bietet eine Möglichkeit, den Befehl auszuprobieren, um Fehler aufzudecken, ohne dass derfsck.gfs2
-Befehl jedoch tatsächlich wirksam ist.
fsck.gfs2
.
fsck.gfs2
-Befehls erfordert Systemspeicher noch über den Speicher für das Betriebssystem und den Kernel hinaus. Jeder Speicherblock im GFS2-Dateisystem selbst erfordert ungefähr fünf Bits zusätzlichen Speicher oder 5/8 eines Bytes. Um abzuschätzen, wie viele Bytes an Speicher Sie zur Ausführung des fsck.gfs2
-Befehls auf Ihrem Dateisystem benötigen, bestimmen Sie, wie viele Blöcke das Dateisystem umfasst und multiplizieren Sie diese Zahl mit 5/8.
fsck.gfs2
-Befehl auf einem GFS2-Dateisystem auszuführen, das 16 TB groß ist und eine Blockgröße von 4 K aufweist, bestimmen Sie zunächst, wie viele Speicherblöcke das Dateisystem umfasst, indem Sie 16 TB durch 4 K teilen:
17592186044416 / 4096 = 4294967296
4294967296 * 5/8 = 2684354560
fsck.gfs2
-Befehl auszuführen. Beachten Sie, dass bei einer Blockgröße von 1 K zur Ausführung von fsck.gfs2
die vierfache Menge an Speicher notwendig wäre, nämlich etwa 11 GB.
4.11.1. Verwendung
fsck.gfs2 -y BlockDevice
-y
- Mit dem Flag
-y
werden alle Fragen mityes
beantwortet. Wenn Sie das Flag-y
angeben, fordert Sie derfsck.gfs2
-Befehl nicht zur Eingabe einer Antwort auf, bevor Änderungen vorgenommen werden. BlockDevice
- Gibt das Blockgerät an, auf dem sich das GFS2-Dateisystem befindet.
4.11.2. Beispiel
/dev/testvol/testlv
liegt. Alle Fragen zur Reparatur werden automatisch mit yes
beantwortet.
[root@dash-01 ~]# fsck.gfs2 -y /dev/testvg/testlv
Initializing fsck
Validating Resource Group index.
Level 1 RG check.
(level 1 passed)
Clearing journals (this may take a while)...
Journals cleared.
Starting pass1
Pass1 complete
Starting pass1b
Pass1b complete
Starting pass1c
Pass1c complete
Starting pass2
Pass2 complete
Starting pass3
Pass3 complete
Starting pass4
Pass4 complete
Starting pass5
Pass5 complete
Writing changes to disk
fsck.gfs2 complete
4.12. Bind Mounts und kontextabhängige Pfade
bind
-Option des mount
-Befehls verwenden.
bind
-Option des mount
-Befehls ermöglicht es Ihnen, einen Teil einer Dateihierachie an anderer Stelle einzuhängen, während dieser gleichzeitig weiterhin an der ursprünglichen Stelle erreichbar bleibt. Das Format des Befehls lautet wie folgt:
mount --bind olddir newdir
olddir
-Verzeichnisses von zwei Orten aus erreichbar: olddir
und newdir
. Sie können diese Option auch dazu verwenden, um eine einzelne Datei von zwei Orten aus erreichbar zu machen.
/root/tmp
-Verzeichnisses nach Ausführung des folgenden Befehls identisch mit dem Inhalt des vorher eingehängten /var/log
-Verzeichnisses.
[root@menscryfa ~]#cd ~root
[root@menscryfa ~]#mkdir ./tmp
[root@menscryfa ~]#mount --bind /var/log /root/tmp
/etc/fstab
-Datei einfügen, um beim Einhängen das gleiche Ergebnis zu erreichen. Der folgende /etc/fstab
-Eintrag führt dazu, dass die Inhalte von /root/tmp
mit den Inhalten des /var/log
-Verzeichnisses identisch sind.
/var/log /root/tmp none bind 0 0
mount
-Befehl verwenden, um zu überprüfen, ob das Dateisystem eingehängt worden ist.
[root@menscryfa ~]# mount | grep /tmp
/var/log on /root/tmp type none (rw,bind)
/bin
-Verzeichnis als kontextabhängigen Pfad definiert, der abhängig von der Systemarchitektur in einen der folgenden Pfade aufgelöst wird.
/usr/i386-bin /usr/x86_64-bin /usr/ppc64-bin
/bin
-Verzeichnis erstellen. Anschließend können Sie entweder mithilfe eines Skripts oder mithilfe eines Eintrags in der /etc/fstab
-Datei jedes der einzelnen Architekturverzeichnisse unter dem /bin
-Verzeichnis mit dem Befehl mount -bind
einhängen. Beispielsweise könnten Sie den folgenden Befehl als eine Zeile in einem Skript verwenden.
mount --bind /usr/i386-bin /bin
/etc/fstab
-Datei verwenden.
/usr/1386-bin /bin none bind 0 0
%fill
-Wert für das Dateisystem). Kontextabhängige Pfade sind dagegen eher eingeschränkt in ihren Möglichkeiten. Beachten Sie jedoch, dass Sie Ihr eigenes Skript schreiben müssen, um Dateisysteme abhängig von Kriterien wie dem %fill
-Wert einhängen zu können.
Warnung
bind
-Option einhängen und das Originaldateisystem als rw
eingehängt war, dann wird das neue Dateisystem genauso eingehängt (rw
), selbst wenn Sie das ro
-Flag verwenden. Das ro
-Flag wird ohne jegliche Meldung ignoriert. In diesem Fall kann das neue Dateisystem im /proc/mounts
-Verzeichnis unter Umständen dennoch als ro
gekennzeichnet sein, was irreführend sein kann.
4.13. Einhängereihenfolge für Bind Mounts und Dateisysteme
bind
-Option des mount
-Befehls verwenden, müssen Sie sicherstellen, dass die Dateisysteme in der richtigen Reihenfolge eingehängt werden. In dem folgenden Beispiel muss das /var/log
-Verzeichnis eingehängt werden, bevor der Bind Mount auf dem /tmp
-Verzeichnis ausgeführt wird:
# mount --bind /var/log /tmp
- Üblicherweise folgt die Reihenfolge, in der Dateisysteme eingehängt werden, der Reihenfolge, in der diese in der
fstab
-Datei aufgeführt sind. Ausnahmen davon betreffen Dateisysteme, die mit dem_netdev
-Flag eingehängt werden, oder Dateisysteme, die über eigeneinit
-Skripte verfügen. - Ein Dateisystem mit eigenem
init
-Skript wird später im Initialisierungsprozess eingehängt, nach den Dateisystemen in derfstab
-Datei. - Dateisysteme mit dem
_netdev
-Flag werden eingehängt, sobald das Netzwerk auf dem System aktiviert wurde.
fstab
-Datei wie folgt ordnen:
- Einhängen der lokalen Dateisysteme, die für den Bind Mount notwendig sind.
- Bind Mount des Verzeichnisses, auf dem das GFS2-Dateisystem eingehängt werden soll.
- Einhängen des GFS2-Dateisystems.
fstab
-Datei die Dateisysteme nicht richtig einhängen, da das GFS2-Dateisystem erst eingehängt wird, wenn das GFS2-init
-Skript ausgeführt wird. In diesem Fall sollten Sie ein init
-Skript schreiben, um den Bind Mount derart zu konfigurieren, dass der Bind Mount erst durchgeführt wird, nachdem das GFS2-Dateisystem eingehängt wurde.
init
-Skript. Dieses Skript führt einen Bind Mount von zwei Verzeichnissen auf zwei Verzeichnisse eines GFS2-Dateisystems durch. In diesem Beispiel gibt es einen vorhandenen GFS2-Einhängepunkt unter /mnt/gfs2a
, der eingehängt wird, wenn das GFS2-init
-Skript nach dem Cluster-Start ausgeführt wird.
chkconfig
-Anweisung Folgendes:
- 345 steht für die Runlevels, in denen das Skript gestartet wird
- 29 ist die Startpriorität, was in diesem Fall bedeutet, dass das Skript zum Startzeitpunkt nach dem GFS2-
init
-Skript ausgeführt wird, welches eine Startpriorität von 26 hat - 73 ist die Stopppriorität, was in diesem Fall bedeutet, dass das Skript während des Herunterfahrens vor dem GFS2-Skript gestoppt wird, welches eine Stopppriorität von 74 hat
service start
und service stop
vornehmen können. Falls das Skript beispielsweise fredwilma
heißt, können Sie service fredwilma start
ausführen.
/etc/init.d
-Verzeichnis abgelegt werden, mit denselben Berechtigungen wie die anderen Skripte in dem Verzeichnis. Sie können anschließend den Befehl chkconfig on
ausführen, um das Skript mit den angegebenen Runlevels zu verknüpfen. Falls das Skript beispielsweise fredwilma
heißt, können Sie chkconfig fredwilma on
ausführen.
#!/bin/bash # # chkconfig: 345 29 73 # description: mount/unmount my custom bind mounts onto a gfs2 subdirectory # # ### BEGIN INIT INFO # Provides: ### END INIT INFO . /etc/init.d/functions case "$1" in start) # In this example, fred and wilma want their home directories # bind-mounted over the gfs2 directory /mnt/gfs2a, which has # been mounted as /mnt/gfs2a mkdir -p /mnt/gfs2a/home/fred &> /dev/null mkdir -p /mnt/gfs2a/home/wilma &> /dev/null /bin/mount --bind /mnt/gfs2a/home/fred /home/fred /bin/mount --bind /mnt/gfs2a/home/wilma /home/wilma ;; stop) /bin/umount /mnt/gfs2a/home/fred /bin/umount /mnt/gfs2a/home/wilma ;; status) ;; restart) $0 stop $0 start ;; reload) $0 start ;; *) echo $"Usage: $0 {start|stop|restart|reload|status}" exit 1 esac exit 0
4.14. Die GFS2-Rückzugsfunktion
fsck.gfs2
-Befehl eine Wiederherstellung des Dateisystems durchführen. Die GFS-Rückzugsfunktion ist weniger schwerwiegend als eine Kernel-Panic, bei der ein anderer Knoten diesen Knoten abgrenzen würde.
gfs2
-Startup-Skript aktiviert ist und das GFS2-Dateisystem in der /etc/fstab
-Datei enthalten ist, wird das GFS2-Dateisystem bei einem Neustart neu eingehängt. Falls sich das GFS2-Dateisystem aufgrund eines beschädigten Dateisystems zurückgezogen hat, ist es empfehlenswert, den fsck.gfs2
-Befehl auszuführen, bevor Sie das Dateisystem wieder einhängen. Um in diesem Fall zu verhindern, dass Ihr Dateisystem beim Neustart wieder eingehängt wird, führen Sie die folgenden Schritte aus:
- Deaktivieren Sie vorübergehend das Startup-Skript auf dem betroffenen Knoten mit dem folgenden Befehl:
#
chkconfig gfs2 off
- Starten Sie den betroffenen Knoten neu und starten Sie die Cluster-Software. Das GFS2-Dateisystem wird nicht eingehängt werden.
- Hängen Sie das Dateisystem auf allen Knoten im Cluster aus.
- Führen Sie auf nur einem Knoten den
fsck.gfs2
-Befehl auf dem Dateisystem aus, um sicherzustellen, dass das Dateisystem nicht beschädigt ist. - Aktivieren Sie wieder das Startup-Skript auf dem betroffenen Knoten mit dem folgenden Befehl:
#
chkconfig gfs2 on
- Hängen Sie das GFS-Dateisystem auf allen Knoten im Cluster neu ein.
-o errors=panic
einhängen. Wenn diese Option angegeben wird, führen Fehler, die normalerweise zu einem Rückzug des Systems führen, stattdessen zu einer Panic des Systems. Dadurch stoppt die Cluster-Kommunikation des Knotens, woraufhin der Knoten abgegrenzt wird.
gfs_controld
sendet und den Rückzug fordert. Der Daemon gfs_controld
führt das dmsetup
-Programm aus, um das Device-Mapper Error-Ziel unter das Dateisystem zu platzieren, um weitere Zugriffe auf das Blockgerät zu verhindern. Es teilt dem Kernel mit, wenn dieser Vorgang abgeschlossen wurde. Aus diesem Grund wird zur Unterstützung von GFS2 vorausgesetzt, dass immer ein CLVM-Gerät unter GFS2 verwendet wird, denn andernfalls ist es nicht möglich, ein Device-Mapper-Ziel einzufügen.
dmsetup
-Programm nicht möglich war, das Error-Ziel wie angefordert einzufügen. Dies kann auftreten, wenn zum Zeitpunkt des Rückzugs der Speicher knapp ist und dieser Speicher aufgrund des Fehlers, der den Rückzug überhaupt erst ausgelöst hat, auch nicht neu zugewiesen werden kann.
Kapitel 5. Diagnose und Behebung von Problemen mit GFS2-Dateisystemen
5.1. GFS2-Dateisystem zeigt nur geringe Leistung
5.2. GFS2-Dateisystem hängt sich auf und erfordert Neustart eines Knotens
- Den GFS2-Sperr-Dump für das Dateisystem auf jedem Knoten:
cat /sys/kernel/debug/gfs2/fsname/glocks >glocks.fsname.nodename
- Den DLM-Sperr-Dump für das Dateisystem auf jedem Knoten. Sie erhalten diese Informationen mit
dlm_tool
:dlm_tool lockdebug -sv lsname.
In diesem Befehl ist lsname der Lockspace-Name, der von DLM für das fragliche Dateisystem genutzt wird. Sie finden diesen Wert in der Ausgabe desgroup_tool
-Befehls. - Die Ausgabe des Befehls
sysrq -t
. - Die Inhalte der
/var/log/messages
-Datei.
5.3. GFS2-Dateisystem hängt sich auf und erfordert Neustart aller Knoten
- Unter Umständen ist das Fencing fehlgeschlagen. GFS2-Dateisysteme frieren im Falle einer fehlgeschlagenen Abgrenzung ein, um die Datenintegrität zu gewährleisten. Überprüfen Sie die Protokolldateien auf Nachrichten bezüglich einer fehlgeschlagener Abgrenzung zum Zeitpunkt des Ausfalls. Vergewissern Sie sich, dass das Fencing einwandfrei konfiguriert ist.
- Das GFS2-Dateisystem hat sich unter Umständen zurückgezogen. Suchen Sie in den Nachrichtenprotokollen das Wort
withdraw
und prüfen Sie, ob Sie Nachrichten und Calltraces von GFS2 finden, die darauf hinweisen, dass das Dateisystem zurückgezogen wurde. Ein Rückzug kann auf ein schadhaftes Dateisystem, einen Speicherausfall oder einem Bug hindeuten. Hängen Sie das Dateisystem aus, aktualisieren Sie dasgfs2-utils
-Paket und führen Sie denfsck
-Befehl auf dem Dateisystem durch, um es wieder funktionsfähig zu machen. Reichen Sie beim Red Hat Support ein Support-Ticket ein. Informieren Sie den Support über den GFS2-Rückzug und stellen Sie sosreport-Daten und Protokolle zur Verfügung.Weitere Informationen über die GFS2-Rückzugsfunktion finden Sie in Abschnitt 4.14, »Die GFS2-Rückzugsfunktion«. - Dieser Fehler kann auf ein Sperrproblem oder einen Bug hindeuten. Sammeln Sie Daten, während dieser Fehler das nächste Mal auftritt, und reichen Sie beim Red Hat Support ein Ticket ein, wie in Abschnitt 5.2, »GFS2-Dateisystem hängt sich auf und erfordert Neustart eines Knotens« beschrieben.
5.4. GFS2-Dateisystem wird auf neu erstelltem Cluster-Knoten nicht eingehängt
spectator
eingehängt wurden, da diese kein Journal erfordern). Sie können mithilfe des gfs2_jadd
-Befehls Journale zu einem GFS2-Dateisystem hinzufügen, wie in Abschnitt 4.7, »Hinzufügen von Journalen zu einem Dateisystem« beschrieben.
5.5. Verbrauchter Platz in leerem Dateisystem
df
-Befehl dennoch an, dass etwas Platz verbraucht ist. Der Grund hierfür liegt in den GFS2-Dateisystem-Journalen, die eine gewisse Menge Speicherplatz verbrauchen (Anzahl der Journale * Journalgröße). Falls Sie ein GFS2-Dateisystem mit einer großen Anzahl an Journalen erstellt haben oder eine große Journalgröße festgelegt haben, dann sehen Sie den Speicherplatz (Anzahl der Journale * Journalgröße) bereits verbraucht, wenn Sie den df
-Befehl ausführen. Selbst wenn Sie weder eine große Anzahl an Journalen noch große Journale konfiguriert haben, werden kleine GFS2-Dateisysteme (in der Größenordnung von 1 GB oder kleiner) mit der standardmäßigen GFS2-Journalgröße dennoch einen großen Teil des Speicherplatzes als verbraucht ausweisen.
Kapitel 6. Konfigurieren eines GFS2-Dateisystems in einem Pacemaker-Cluster
cman
, clvmd
und pacemaker
auf jedem Knoten und erstellen Sie den Pacemaker-Cluster. Sie müssen zudem das Fencing für den Cluster konfigurieren. Informationen über die Konfiguration eines Pacemaker-Clusters finden Sie im Handbuch Konfiguration des Red Hat High Availability Add-Ons mit Pacemaker.
- Setzen Sie den globalen Pacemaker-Parameter
no_quorum_policy
auffreeze
.Anmerkung
Standardmäßig istno-quorum-policy
auf den Wertstop
festgelegt, was bewirkt, dass bei Verlust des Quorums alle Ressourcen auf der verbleibenden Partition sofort gestoppt werden. In der Regel ist diese Standardeinstellung die sicherste und beste Option, allerdings benötigt GFS2 im Gegensatz zu den meisten Ressourcen ein Quorum, um zu funktionieren. Beim Verlust des Quorums können weder die Applikationen, die die GFS2-Mounts verwenden, noch der GFS2-Mount selbst richtig gestoppt werden. Jegliche Versuche, diese Ressourcen ohne Quorum zu stoppen, werden fehlschlagen und letztlich dazu führen, dass bei jedem Quorum-Verlust der gesamte Cluster abgegrenzt wird.Um dieses Problem zu umgehen, können Sie bei der Verwendung von GFS2no-quorum-policy=freeze
einstellen. Das bedeutet, dass im Falle eines Quorum-Verlusts die verbleibende Partition nichts tun wird, bis das Quorum wieder hergestellt ist.#
pcs property set no-quorum-policy=freeze
- Vergewissern Sie sich zunächst, dass der Sperrtyp in der Datei
/etc/lvm/lvm.conf
auf 3 eingestellt ist, um geclusterte Sperren zu unterstützen. Erstellen Sie dann den geclusterten logischen Datenträger und formatieren Sie den Datenträger mit einem GFS2-Dateisystem. Stellen Sie dabei sicher, dass Sie genügend Journale für jeden Knoten in Ihrem Cluster anlegen.#
pvcreate /dev/vdb
#vgcreate -Ay -cy cluster_vg /dev/vdb
#lvcreate -L5G -n cluster_lv cluster_vg
#mkfs.gfs2 -j2 -p lock_dlm -t rhel7-demo:gfs2-demo /dev/cluster_vg/cluster_lv
- Konfigurieren Sie eine
clusterfs
-Ressource.Sie sollten das Dateisystem nicht zur Datei/etc/fstab
hinzufügen, da es als Pacemaker-Cluster-Ressource verwaltet wird. Einhängepunkte können als Teil der Ressourcenkonfiguration mitoptions=options
festgelegt werden. Führen Sie den Befehlpcs resource describe Filesystem
aus, um alle Konfigurationsoptionen zu sehen.Dieser Befehl zur Cluster-Ressourcenerstellung gibt die Einhängeoptionnoatime
an.#
pcs resource create clusterfs Filesystem device="/dev/cluster_vg/cluster_lv" directory="/var/mountpoint" fstype="gfs2" "options=noatime" op monitor interval=10s on-fail=fence clone interleave=true
- Überprüfen Sie, ob das GFS2-Dateisystem wie erwartet eingehängt wurde.
#
mount |grep /mnt/gfs2-demo
/dev/mapper/cluster_vg-cluster_lv on /mnt/gfs2-demo type gfs2 (rw,noatime,seclabel) - (Optional) Starten Sie alle Cluster-Knoten neu, um die GFS2-Persistenz und -Wiederherstellung zu testen.
Anhang A. GFS2-Kontingentverwaltung mit dem Befehl gfs2_quota
gfs2_quota
-Befehl zur Verwaltung von Festplattenkontingenten. Dieser Anhang dokumentiert die Verwendung des gfs2_quota
-Befehls zur Verwaltung von GFS2-Dateisystemkontingenten.
A.1. Kontingente festlegen mit dem Befehl gfs2_quota
gfs2_quota
festlegen. Der Befehl muss nur auf einem einzigen Knoten ausgeführt werden, auf dem GFS2 eingehängt ist.
quota=
zum mount
-Befehl, wie in Abschnitt A.4, »Erzwingen von Kontingenten aktivieren/deaktivieren« beschrieben.
A.1.1. Verwendung
gfs2_quota limit -uUser
-lSize
-fMountPoint
gfs2_quota limit -gGroup
-lSize
-fMountPoint
gfs2_quota warn -uUser
-lSize
-fMountPoint
gfs2_quota warn -gGroup
-lSize
-fMountPoint
User
- Die Benutzer-ID, für die eine Grenze festgelegt werden soll. Dabei kann es sich entweder um einen Benutzernamen aus der Passwortdatei oder um die UID-Nummer handeln.
Group
- Die Gruppen-ID, für die eine Grenze festgelegt werden soll. Dabei kann es sich entweder um einen Gruppennamen aus der Gruppendatei oder um die GID-Nummer handeln.
Size
- Legt den Wert für die harte oder weiche Grenze fest. Standardmäßig wird dieser Wert in Megabytes angegeben. Die zusätzlichen Flags
-k
,-s
oder-b
ändern die Einheit auf Kilobytes, Sektoren bzw. Dateisystemblöcke. MountPoint
- Gibt das GFS2-Dateisystem an, auf dem diese Aktion ausgeführt werden soll.
A.1.2. Beispiele
/mygfs2
fest.
# gfs2_quota limit -u Bert -l 1024 -f /mygfs2
/mygfs2
fest.
# gfs2_quota warn -g 21 -l 50 -k -f /mygfs2
A.2. Anzeigen von Kontingentgrenzen und -verbrauch mit dem gfs2_quota
-Befehl
gfs2_quota get
anzeigen. Sie können sich auch den gesamten Inhalt der Kontingentdatei mithilfe des Befehls gfs2_quota list
anzeigen lassen, wobei alle IDs angezeigt werden, die eine harte Grenze oder weiche Grenze von ungleich Null aufweisen.
A.2.1. Verwendung
gfs2_quota get -uUser
-fMountPoint
gfs2_quota get -gGroup
-fMountPoint
gfs2_quota list -f MountPoint
User
- Die Benutzer-ID eines bestimmten Benutzers, über den Informationen angezeigt werden sollen. Dabei kann es sich entweder um einen Benutzernamen aus der Passwortdatei oder um die UID-Nummer handeln.
Group
- Die Gruppen-ID einer bestimmten Gruppe, über die Informationen angezeigt werden sollen. Dabei kann es sich entweder um einen Gruppennamen aus der Gruppendatei oder um die GID-Nummer handeln.
MountPoint
- Gibt das GFS2-Dateisystem an, auf dem diese Aktion ausgeführt werden soll.
A.2.2. Befehlsausgabe
gfs2_quota
-Befehl wird folgendermaßen dargestellt:
userUser
: limit:LimitSize
warn:WarnSize
value:Value
groupGroup
: limit:LimitSize
warn:WarnSize
value:Value
LimitSize
, WarnSize
und Value
werden standardmäßig in Megabyte-Einheiten angegeben. Wenn Sie auf der Befehlszeile die Flags -k
, -s
oder -b
hinzufügen, ändert dies die Einheiten auf Kilobytes, Sektoren bzw. Dateisystemblöcke.
User
- Ein Benutzername oder eine Benutzer-ID, auf den/die sich diese Daten beziehen.
Group
- Ein Gruppenname oder eine Gruppen-ID, auf den/die sich diese Daten beziehen.
LimitSize
- Die für den Benutzer oder die Gruppe festgelegte harte Grenze. Dieser Wert ist Null, falls keine Grenze festgelegt wurde.
Value
- Der tatsächlich vom Benutzer oder von der Gruppe verwendete Festplattenplatz.
A.2.3. Anmerkungen
gfs2_quota
die UIDs und GIDs nicht in Namen auf, wenn die Option -n
auf der Befehlszeile hinzugefügt wird.
-d
auf der Befehlszeile hinzufügen. Dies ist hilfreich, wenn Sie die Werte von gfs2_quota
mit den Ergebnissen des du
-Befehls abgleichen möchten.
A.2.4. Beispiele
/mygfs2
verwenden.
# gfs2_quota list -f /mygfs2
users
auf dem Dateisystem /mygfs2
.
# gfs2_quota get -g users -f /mygfs2 -s
A.3. Synchronisieren von Kontingenten mit dem gfs2_quota
-Befehl
quota_quantum
. Sie können den Standardwert von 60 Sekunden mit der Einhängeoption quota_quantum=
ändern, wie in Tabelle 4.2, »GFS2-spezifische Einhängeoptionen« beschrieben. Der quota_quantum
-Parameter muss auf jedem Knoten und jedes Mal, wenn das Dateisystem eingehängt wird, gesetzt werden. Änderungen am quota_quantum
-Parameter gehen beim Aushängen verloren. Sie können den quota_quantum
-Wert mit dem Befehl mount -o remount
aktualisieren.
gfs2_quota sync
-Befehl verwenden, um die Kontingentinformationen zwischen den automatischen Aktualisierungen durch GFS2 von einem Knoten auf die Kontingentdatei auf der Festplatte zu synchronisieren.
A.3.1. Verwendung
gfs2_quota sync -f MountPoint
MountPoint
- Gibt das GFS2-Dateisystem an, auf dem diese Aktion ausgeführt werden soll.
mount -o quota_quantum=secs,remount BlockDevice MountPoint
MountPoint
- Gibt das GFS2-Dateisystem an, auf dem diese Aktion ausgeführt werden soll.
secs
- Gibt den neuen Zeitabstand zwischen den regulären Synchronisationen der Kontingentdatei durch GFS2 an. Kleinere Werte können vermehrt zu Konflikten und zu Leistungseinbußen führen.
A.3.2. Beispiele
/mygfs2
.
# gfs2_quota sync -f /mygfs2
/mnt/mygfs2
beim Wiedereinhängen dieses Dateisystems auf dem logischen Datenträger /dev/volgroup/logical_volume
geändert.
# mount -o quota_quantum=3600,remount /dev/volgroup/logical_volume /mnt/mygfs2
A.4. Erzwingen von Kontingenten aktivieren/deaktivieren
quota=on
an.
A.4.1. Verwendung
mount -o quota=on BlockDevice MountPoint
quota=off
an. Dies ist die Standardeinstellung.
mount -o quota=off BlockDevice MountPoint
-o quota={on|off}
- Gibt an, ob das Erzwingen von Kontingenten beim Einhängen des Dateisystems aktiviert oder deaktiviert werden soll.
BlockDevice
- Gibt das Blockgerät an, auf dem sich das GFS2-Dateisystem befindet.
MountPoint
- Gibt das Verzeichnis an, unter dem das GFS2-Dateisystem eingehängt werden soll.
A.4.2. Beispiele
/dev/vg01/lvol0
unter dem Verzeichnis /mygfs2
eingehängt und das Erzwingen von Kontingenten ist aktiviert.
# mount -o quota=on /dev/vg01/lvol0 /mygfs2
A.5. Aktivieren der Kontingentberechnung
quota=account
ein.
A.5.1. Verwendung
mount -o quota=account BlockDevice MountPoint
-o quota=account
- Gibt an, dass Verbrauchsstatistiken für Benutzer- und Gruppen vom Dateisystem gepflegt werden, ohne jedoch die Kontingentgrenzen zu erzwingen.
BlockDevice
- Gibt das Blockgerät an, auf dem sich das GFS2-Dateisystem befindet.
MountPoint
- Gibt das Verzeichnis an, unter dem das GFS2-Dateisystem eingehängt werden soll.
A.5.2. Beispiel
/dev/vg01/lvol0
unter dem Verzeichnis /mygfs2
eingehängt und die Berechnung von Kontingenten ist aktiviert.
# mount -o quota=account /dev/vg01/lvol0 /mygfs2
Anhang B. Konvertieren eines Dateisystems von GFS auf GFS2
gfs2_convert
-Befehls in GFS2-Dateisysteme konvertieren. Beachten Sie, dass Sie diesen Konvertierungsprozess auf dem Red Hat Enterprise Linux 5 System ausführen müssen, noch bevor Sie auf Red Hat Enterprise Linux 6 aktualisieren.
Warnung
gfs_fsck
-Befehl, um das Dateisystem zu überprüfen und eventuelle Fehler zu beseitigen.
fsck.gfs2
-Befehl auf dem Dateisystem auszuführen, ehe der Konvertierungsvorgang abgeschlossen wurde.
B.1. Konvertierung kontextabhängiger Pfade
bind
-Option des mount
-Befehls verwenden.
gfs2_convert
-Befehl identifiziert kontextabhängige Pfade und ersetzt sie durch leere Verzeichnisse desselben Namens. Um Bind Mounts als Ersatz für kontextabhängige Pfade zu konfigurieren, benötigen Sie die vollständigen Pfade der Link-Ziele aller kontextabhängigen Pfade, die Sie ersetzen möchten. Bevor Sie Ihr Dateisystem konvertieren, können Sie mithilfe des find
-Befehls die Links identifizieren.
hostname
verweisen:
[root@smoke-01 gfs]# find /mnt/gfs -lname @hostname
/mnt/gfs/log
find
-Befehl für andere kontextabhängige Pfade ausführen (mach
, os
, sys
, uid
, gid
, jid
). Beachten Sie, dass kontextabhängige Pfade entweder in der Form @hostname
oder {hostname}
vorliegen können, Sie müssen den find
-Befehl also für jeweils beide Varianten ausführen.
B.2. Verfahren zur Konvertierung von GFS in GFS2
- Erstellen Sie auf einem Red Hat Enterprise Linux System eine Datensicherung Ihres vorhandenen GFS-Dateisystems.
- Hängen Sie das GFS-Dateisystem auf allen Knoten im Cluster aus.
- Führen Sie den
gfs_fsck
-Befehl auf dem GFS-Dateisystem aus, um sicherzustellen, dass das Dateisystem fehlerfrei ist. - Führen Sie den Befehl
gfs2_convert
aus. Das System zeigt daraufhin Warnmeldungen und fordert zur Bestätigung auf, bevor dasgfsfilesystem
gfsfilesystem
nach GFS2 konvertiert wird. - Aktualisieren Sie auf Red Hat Enterprise Linux 6.
/dev/shell_vg/500g
in ein GFS2-Dateisystem.
[root@shell-01 ~]# /root/cluster/gfs2/convert/gfs2_convert /dev/shell_vg/500g
gfs2_convert version 2 (built May 10 2010 10:05:40)
Copyright (C) Red Hat, Inc. 2004-2006 All rights reserved.
Examining file system..................
This program will convert a gfs1 filesystem to a gfs2 filesystem.
WARNING: This can't be undone. It is strongly advised that you:
1. Back up your entire filesystem first.
2. Run gfs_fsck first to ensure filesystem integrity.
3. Make sure the filesystem is NOT mounted from any node.
4. Make sure you have the latest software versions.
Convert /dev/shell_vg/500g from GFS1 to GFS2? (y/n)y
Converting resource groups...................
Converting inodes.
24208 inodes from 1862 rgs converted.
Fixing file and directory information.
18 cdpn symlinks moved to empty directories.
Converting journals.
Converting journal space to rg space.
Writing journal #1...done.
Writing journal #2...done.
Writing journal #3...done.
Writing journal #4...done.
Building GFS2 file system structures.
Removing obsolete GFS1 file system structures.
Committing changes to disk.
/dev/shell_vg/500g: filesystem converted successfully to gfs2.
Anhang C. GFS2-Tracepoints und die debugfs-Glocks-Datei
debugfs
-Schnittstelle und die GFS2-Tracepoints. Er richtet sich an fortgeschrittene Benutzer, die mit Dateisysteminterna vertraut sind und die gerne mehr über den Aufbau von GFS2 und das Debugging von GFS2-spezifischen Fehlern erfahren möchten.
C.1. Arten von GFS2-Tracepoints
blktrace
-Infrastruktur verwendet und die blktrace
-Tracepoints können zusammen mit jenen von GFS2 verwendet werden, um ein umfassenderes Bild der Systemleistung zu erhalten. Aufgrund ihrer Funktionsebene können Tracepoints innerhalb von kürzester Zeit große Datenmengen produzieren. Zwar wurden sie so konzipiert, dass die Belastung des Systems möglichst gering ist, doch eine gewisse Auswirkung ist unvermeidlich. Es kann hilfreich sein, die Ereignisse mithilfe einer Vielzahl von Instrumenten zu filtern und so das Volumen der Daten zu verringern, um das Hauptaugenmerk auf jene Informationen zu richten, die nützlich für das Verständnis der jeweiligen Situation sind.
C.2. Tracepoints
/sys/kernel/debug/tracing/
, sofern debugfs
im standardmäßigen Verzeichnis /sys/kernel/debug
eingehängt ist. Das events
-Unterverzeichnis enthält alle Ereignisse, die nachverfolgt werden können. Sofern das gfs2
-Modul geladen ist, gibt es ebenfalls ein gfs2
-Unterverzeichnis mit weiteren Unterverzeichnissen, eins für jedes GFS2-Ereignis. Der Inhalt des Verzeichnisses /sys/kernel/debug/tracing/events/gfs2
sieht etwa wie folgt aus:
[root@chywoon gfs2]# ls
enable gfs2_bmap gfs2_glock_queue gfs2_log_flush
filter gfs2_demote_rq gfs2_glock_state_change gfs2_pin
gfs2_block_alloc gfs2_glock_put gfs2_log_blocks gfs2_promote
[root@chywoon gfs2]# echo -n 1 >/sys/kernel/debug/tracing/events/gfs2/enable
enable
-Datei in jedem der Ereignis-Unterverzeichnisse. Das gleiche gilt für die filter
-Datei, die verwendet werden kann, um eine Filterfunktion für jedes Ereignis oder eine Reihe von Ereignissen einzustellen. Die Bedeutung der einzelnen Ereignisse wird im Folgenden näher erläutert.
[root@chywoon gfs2]# cat /sys/kernel/debug/tracing/trace
/sys/kernel/debug/tracing/trace_pipe
, kann verwendet werden, wenn die gesamte Ausgabe benötigt wird. Die Ereignisse werden aus dieser Datei gelesen, wie sie auftreten, über diese Schnittstelle sind keine historischen Informationen verfügbar. Das Format der Ausgabe ist dasselbe für beide Schnittstellen und wird für jedes der GFS2-Ereignisse in den späteren Abschnitten dieses Anhangs beschrieben.
trace-cmd
zur Verfügung. Weitere Informationen zu diesem Dienstprogramm finden Sie unter dem Link in Abschnitt C.10, »Verweise«. Das trace-cmd
-Dienstprogramm kann in ähnlicher Weise wie das strace
-Dienstprogramm verwendet werden, zum Beispiel zur Ausführung eines Befehls, während Trace-Daten aus verschiedenen Quellen gesammelt werden.
C.3. Glocks
Tabelle C.1. Glock-Modus und DLM-Sperrmodus
Glock-Modus | DLM-Sperrmodus | Anmerkungen |
---|---|---|
UN | IV/NL | Nicht gesperrt (keine DLM-Sperre zu Glock oder NL-Sperre zugewiesen, abhängig vom I-Flag) |
SH | PR | Gemeinsame Sperre (geschütztes Lesen) |
EX | EX | Exklusive Sperre |
DF | CW | Zeitversetzt (gleichzeitiges Schreiben), verwendet für Direct I/O und Dateisystem-Freeze |
Anmerkung
lock_dlm
-Sperrmoduls (nicht mit dem DLM selbst zu verwechseln) in GFS2 ermöglicht.
Anmerkung
Tabelle C.2. Glock-Modi und Datentypen
Glock-Modus | Cache-Daten | Cache-Metadaten | Veränderte Daten | Veränderte Metadaten |
---|---|---|---|---|
UN | Nein | Nein | Nein | Nein |
SH | Ja | Ja | Nein | Nein |
DF | Nein | Ja | Nein | Nein |
EX | Ja | Ja | Ja | Ja |
C.4. Die Glock-debugfs-Schnittstelle
debugfs
-Schnittstelle ermöglicht die Visualisierung des internen Status der Glocks und der Halter; sie enthält in einigen Fällen auch einige zusammenfassende Daten über die Objekte, die gesperrt sind. Jede Zeile der Datei beginnt entweder mit G: ohne Einrückung und bezieht sich auf das Glock selbst, oder aber mit einem anderen Buchstaben, um ein Leerzeichen eingerückt, und bezieht sich auf die Strukturen, die mit dem Glock in der Datei unmittelbar darüber verknüpft sind (H: ist ein Halter, I: ein Inode und R: eine Ressourcengruppe). Nachfolgend sehen Sie ein Beispiel dafür, wie der Inhalt dieser Datei aussehen könnte:
G: s:SH n:5/75320 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:EX n:3/258028 f:yI t:EX d:EX/0 a:3 r:4 H: s:EX f:tH e:0 p:4466 [postmark] gfs2_inplace_reserve_i+0x177/0x780 [gfs2] R: n:258028 f:05 b:22256/22256 i:16800 G: s:EX n:2/219916 f:yfI t:EX d:EX/0 a:0 r:3 I: n:75661/219916 t:8 f:0x10 d:0x00000000 s:7522/7522 G: s:SH n:5/127205 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:EX n:2/50382 f:yfI t:EX d:EX/0 a:0 r:2 G: s:SH n:5/302519 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/313874 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/271916 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2] G: s:SH n:5/312732 f:I t:SH d:EX/0 a:0 r:3 H: s:SH f:EH e:0 p:4466 [postmark] gfs2_inode_lookup+0x14e/0x260 [gfs2]
cat /sys/kernel/debug/gfs2/unity:myfs/glocks >my.lock
in einem Durchlauf der Postmark Benchmark auf einem Ein-Knoten-GFS2-Dateisystem erstellt wurden. Die Glocks in der Abbildung wurden ausgewählt, um einige der interessantesten Merkmale der Glock-Dumps zu zeigen.
iopen
-Glock, das den Inode 75320 betrifft. Im Fall von Inode und iopen
-Glocks entspricht die Glock-Nummer immer der Festplatten-Blocknummer des Inodes.
Anmerkung
blktrace
) und mit der Ausgabe von stat
(1) verglichen werden können.
debugfs
-Schnittstelle zur Verfügung.
Tabelle C.3. Glock-Typen
Typnummer | Sperrtyp | Verwendung |
---|---|---|
1 | trans | Transaktionssperre |
2 | Inode | Inode-Metadaten und -Daten |
3 | rgrp | Ressourcengruppen-Metadaten |
4 | meta | Der Superblock |
5 | iopen | Feststellung der letzten Schließers des Inodes |
6 | flock | flock (2)-Systemaufruf |
8 | quota | Kontingentoperationen |
9 | journal | Journal-Mutex |
Tabelle C.4. Glock-Flags
Flag | Name | Bedeutung |
---|---|---|
d | Pending demote | Eine wartende Anfrage zum Herabstufen (remote) |
D | Demote | Eine Anfrage zum Herabstufen (lokal oder remote) |
f | Log flush | Das Protokoll muss festgeschrieben werden, bevor dieses Glock freigegeben werden kann |
F | Frozen | Antworten von Remote-Knoten werden ignoriert, eine Wiederherstellung läuft. |
i | Invalidate in progress | Seiten unter diesem Glock werden derzeit ungültig gemacht (invalidiert) |
I | Initial | Gesetzt, wenn eine DLM-Sperre mit diesem Glock verknüpft ist |
l | Locked | Das Glock ändert derzeit seinen Status |
L | LRU | Gesetzt, wenn das Glock auf der LRU-Liste ist |
o | Object | Gesetzt, wenn das Glock einem Objekt zugeordnet ist (d. h. einem Inode für Typ-2-Glocks und einer Ressourcengruppe für Typ-3-Glocks) |
p | Demote in progress | Das Glock antwortet derzeit auf eine Anfrage zum Herabstufen |
q | Queued | Gesetzt, wenn ein Halter der Warteschlange eines Glocks hinzugefügt wird, und gelöscht, wenn das Glock noch gehalten wird, es jedoch keine verbleibenden Halter gibt. Verwendet als Teil des Algorithmus, der die minimale Haltezeit für ein Glock berechnet. |
r | Reply pending | Von Remote-Knoten erhaltene Antwort wartet auf Verarbeitung |
y | Dirty | Daten müssen auf die Festplatte überschrieben werden, bevor dieses Glock freigegeben werden kann |
C.5. Glock-Halter
Tabelle C.5. Glock-Halter-Flags
Flag | Name | Bedeutung |
---|---|---|
a | Async | Nicht auf das Glock-Ergebnis warten (Ergebnis wird später abgerufen) |
A | Any | Jeder kompatible Sperrmodus ist zulässig |
c | No cache | Wenn nicht gesperrt, sofort DLM-Sperre herabstufen |
e | No expire | Nachfolgende Anfragen zur Aufhebung der Sperre ignorieren |
E | Exact | Muss den exakten Sperrmodus haben |
F | First | Gesetzt, wenn der Halter der Erste ist, dem diese Sperre gewährt wird |
H | Holder | Zeigt an, dass die angeforderte Sperre gewährt wird |
p | Priority | Reiht Halter an der Spitze der Warteschlange ein |
t | Try | Eine „try“-Sperre |
T | Try 1CB | Eine „try“-Sperre, die einen Callback sendet |
W | Wait | Gesetzt, während auf den Abschluss einer Anfrage gewartet wird |
try 1CB
) Sperre ist identisch mit der t-Sperre, mit dem Unterschied, dass der DLM einen einzelnen Callback an die derzeitigen Halter der inkompatiblen Sperre sendet. Ein Anwendungsfall der T (try 1CB
) Sperre ist zusammen mit den iopen
-Sperren, die verwendet werden, um zwischen den Knoten zu vermitteln, wenn die i_nlink
-Anzahl eines Inodes Null ist, um zu bestimmen, welche der Knoten für das Freigeben des Inodes verantwortlich ist. Das iopen
-Glock wird normalerweise im gemeinsam verwendeten Status gehalten, wenn jedoch die i_nlink
-Anzahl auf Null sinkt und ->delete_inode
() aufgerufen wird, fragt es eine exklusive Sperre mit gesetztem T (try 1CB
) Flag an. Es wird weiterhin den Inode freigeben, wenn die Sperre gewährt wird. Wenn die Sperre nicht gewährt wird, kennzeichnen die Knoten, die die Gewährung der Sperre verhinderten, ihre Glocks mit dem D (demote) Flag, das beim Zeitpunkt von ->drop_inode
() kontrolliert wird, um sicherzustellen, dass die Aufhebung der Zuordnung nicht vergessen wird.
close
() stattfindet. Zur selben Zeit, wie der Linkzähler des Inodes auf Null gesetzt wird, wird der Inode für den speziellen Status gekennzeichnet, dass dieser zwar die Linkanzahl Null hat, aber immer noch in der Ressourcengruppen-Bitmap im Einsatz ist. Dies ähnelt der Waisenliste (engl: orphan list) im ext3-Dateisystem insofern, als es jedem späteren Leser der Bitmap mitteilt, dass es möglicherweise Platz gibt, der zurückgefordert werden könnte, und diesen dazu auffordert, den Platz zurückzufordern.
C.6. Glock-Tracepoints
gfs2_glock_state_change
zu verstehen. Er verfolgt jede Statusänderung des Glocks von der ursprünglichen Erstellung bis hin zur endgültigen Herabstufung, die mit gfs2_glock_put
und dem endgültigen Übergang von NL auf entsperrt endet. Das Glock-Flag l (locked) ist immer gesetzt, bevor eine Statusänderung erfolgt, und wird erst gelöscht, nachdem diese abgeschlossen ist. Während einer Statusänderung gibt es niemals gewährte Halter (das Glock-Halter-Flag H). Wenn es Halter in der Warteschlange gibt, werden sie immer im W (waiting) Status sein. Wenn die Statusänderung abgeschlossen ist, dann können die Halter gewährt werden, welches die letzte Operation ist, bevor das l-Glock-Flag gelöscht wird.
gfs2_demote_rq
verfolgt Herabstufungsanfragen, sowohl lokal als auch remote. Vorausgesetzt, auf dem Knoten ist genügend Speicher vorhanden, dann treten die lokalen Herabstufungsanfragen nur selten auf. Meistens werden sie vom umount-Prozess oder durch gelegentliche Speicherrückforderungen erstellt. Die Anzahl der Remote-Herabstufungsanfragen ist ein Maß für den Konflikt zwischen den Knoten für eine bestimmte Inode- oder Ressourcengruppe.
gfs2_promote
aufgerufen. Dies geschieht in der Endphase einer Statusänderung oder wenn eine Sperre angefordert wird, die sofort gewährt werden kann, da der Glock-Status bereits eine Sperre mit einem geeigneten Modus im Cache vorhält. Falls der Halter der erste ist, der auf diesem Glock gewährt wird, dann wird das f (first) Flag auf diesem Halter gesetzt. Dies wird derzeit nur von Ressourcengruppen verwendet.
C.7. Bmap-Tracepoints
gfs2_bmap
wird zweimal für jede bmap-Operation aufgerufen: einmal zu Beginn, um die bmap-Anforderung anzuzeigen, und einmal am Ende, um das Ergebnis anzuzeigen. Dies macht es einfach, die Anforderungen und Ergebnisse einander zuzuordnen und die Zeit zu messen, die benötigt wurde, um Blöcke in verschiedenen Teilen des Dateisystems, in verschiedenen Datei-Offsets oder sogar in verschiedenen Dateien zuzuweisen. Es ist auch möglich festzustellen, welche Größen physischer Extents durchschnittlich zurückgegeben wird im Vergleich zu denen, die angefordert werden.
gfs2_block_alloc
nicht nur bei Zuweisungen, sondern auch bei der Freigabe von Blöcken aufgerufen. Da die Zuweisungen anhand des Inodes referenziert werden, für den der Block beabsichtigt ist, kann dies dazu verwendet werden, um nachzuverfolgen, welche physischen Blöcke zu welchen Dateien in einem aktiven Dateisystem gehören. Dies ist besonders in Kombination mit blktrace
nützlich, was problematische I/O-Muster zeigen kann, die dann den jeweiligen Inodes zugeordnet werden können, die über diesen Tracepoint herausgefunden werden können.
C.8. Log-Tracepoints
gfs2_pin
), sowie die benötigte Zeit, um die Transaktionen in das Protokoll zu übergeben (gfs2_log_flush
). Dies kann bei der Fehlersuche für Leistungsprobleme beim Journaling sehr nützlich sein.
gfs2_log_blocks
verfolgt die reservierten Blöcke im Protokoll, was beispielsweise helfen kann aufzuzeigen, dass das Protokoll für die Auslastung zu klein ist.
gfs2_ail_flush
(Red Hat Enterprise Linux 6.2 und höher) ähnelt dem Tracepoint gfs2_log_flush
insofern, als er den Beginn und das Ende der Leerung der AIL-Liste verfolgt. Die AIL-Liste enthält Puffer, die durch das Protokoll gegangen sind, aber noch nicht wieder an ihren Ort zurückgeschrieben wurden; diese werden regelmäßig entleert, um mehr Protokollspeicherplatz für die Verwendung durch das Dateisystem freizugeben oder wenn ein Prozess ein sync oder fsync anfordert.
C.9. Glock-Statistiken
dcount
, der die Anzahl angefragter DLM-Operationen zählt. Dies zeigt, wie viele Daten in die Berechnungen von Mittel- und Varianzwerten einfließen.qcount
, der die Anzahl angefragtersyscall
-Operationen zählt. Im Allgemeinen istqcount
gleich oder größer alsdcount
.
- srtt/srttvar: Geglättete Rundtrip-Zeit für nicht sperrende Operationen
- srttb/srttvarb: Geglättete Rundtrip-Zeit für sperrende Operationen
- irtt/irttvar: Zeit zwischen Anfragen (z. B. Zeit zwischen DLM-Anfragen)
sysfs
-Dateien gespeichert:
- Die
glstats
-Datei. Diese Datei ähnelt derglocks
-Datei, mit dem Unterschied, dass es Statistiken enthält für ein Glock pro Zeile. Die Daten werden initialisiert von „pro CPU“ Daten für den Glock-Typ, für den das Glock erstellt wurde (ausgenommen Zähler, die auf Null gesetzt werden). Diese Datei kann sehr umfangreich sein. - Die
lkstats
-Datei. Diese Datei enthält „pro CPU“ Statistiken für jeden Glock-Typ. Sie enthält eine Statistik pro Zeile, wobei jede Spalte einen CPU-Kern darstellt. Es gibt acht Zeilen pro Glock-Typ, wobei die Typen einander nachfolgen.
C.10. Verweise
glocks
-Datei finden Sie in den folgenden Quellen:
- Dieser Anhang basiert in Auszügen auf einer Veröffentlichung von Steve Whitehouse, das beim Linux Symposium 2009 veröffentlicht wurde, erhältlich unter http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/filesystems/gfs2-glocks.txt;h=04 94f78d87e40c225eb1dc1a1489acd891210761;hb=HEAD.
- Informationen über die internen Glock-Sperrregeln finden Sie unter http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/filesystems/gfs2-glocks.txt;h=0494f78d87e40c225eb1dc1a1489acd891210761;hb=HEAD.
- Informationen über Event Tracing finden Sie unter http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/trace/events.txt;h=09bd8e9029892e4e1d48078de4d076e24eff3dd2;hb=HEAD.
- Informationen über das
trace-cmd
-Dienstprogramm finden Sie unter http://lwn.net/Articles/341902/.
Anhang D. Versionsgeschichte
Versionsgeschichte | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Version 7.1-3.2 | Fri Jun 26 2015 | Hedda Peters | |||||||||||
| |||||||||||||
Version 7.1-3.1 | Fri Jun 26 2015 | Hedda Peters | |||||||||||
| |||||||||||||
Version 7.1-3 | Tue Dec 16 2014 | Steven Levine | |||||||||||
| |||||||||||||
Version 7.0-9 | Wed Oct 8 2014 | Steven Levine | |||||||||||
| |||||||||||||
Version 7.0-8 | Thu Aug 7 2014 | Steven Levine | |||||||||||
| |||||||||||||
Version 7.0-4 | Thu Jul 17 2014 | Steven Levine | |||||||||||
| |||||||||||||
Version 7.0-3 | Wed Jul 16 2014 | Steven Levine | |||||||||||
| |||||||||||||
Version 7.0-1 | Thu Jun 5 2014 | Steven Levine | |||||||||||
| |||||||||||||
Version 6.0-6 | Wed Nov 13 2013 | Steven Levine | |||||||||||
| |||||||||||||
Version 6.0-5 | Fri Sep 27 2013 | Steven Levine | |||||||||||
| |||||||||||||
Version 6.0-3 | Fri Sep 27 2013 | Steven Levine | |||||||||||
| |||||||||||||
Version 6.0-1 | Fri Sep 06 2013 | Steven Levine | |||||||||||
| |||||||||||||
Version 5.0-7 | Mon Feb 18 2013 | Steven Levine | |||||||||||
| |||||||||||||
Version 5.0-5 | Mon Nov 26 2012 | Steven Levine | |||||||||||
| |||||||||||||
Version 5.0-4 | Tue Nov 13 2012 | Steven Levine | |||||||||||
| |||||||||||||
Version 5.0-1 | Mon Oct 15 2012 | Steven Levine | |||||||||||
| |||||||||||||
Version 4.0-2 | Thu Mar 28 2012 | Steven Levine | |||||||||||
| |||||||||||||
Version 4.0-1 | Thu Mar 28 2012 | Steven Levine | |||||||||||
| |||||||||||||
Version 3.0-2 | Thu Dec 1 2011 | Steven Levine | |||||||||||
| |||||||||||||
Version 3.0-1 | Mon Sep 19 2011 | Steven Levine | |||||||||||
| |||||||||||||
Version 2.0-1 | Thu May 19 2011 | Steven Levine | |||||||||||
| |||||||||||||
Version 1.0-1 | Wed Nov 15 2010 | Steven Levine | |||||||||||
|
Stichwortverzeichnis
A
- acl-Einhängeoption, Einhängen eines Dateisystems
- Aktivität auf einem Dateisystem unterbrechen, Unterbrechen der Aktivität auf einem Dateisystem
- atime, Aktualisierungen konfigurieren, Konfigurieren der atime-Aktualisierungen
- Einhängen mit noatime , Einhängen mit noatime
- Einhängen mit relatime , Einhängen mit relatime
- Aushängen eines Dateisystems, Aushängen eines Dateisystems, Spezielle Überlegungen zum Einhängen von GFS2-Dateisystemen
- Aushängen, System hängt sich auf, Spezielle Überlegungen zum Einhängen von GFS2-Dateisystemen
B
- Bind Mount
- Einhängereihenfolge, Einhängereihenfolge für Bind Mounts und Dateisysteme
- Bind Mounts, Bind Mounts und kontextabhängige Pfade
D
- Dateisystem
- Aktivität unterbrechen, Unterbrechen der Aktivität auf einem Dateisystem
- atime, Aktualisierungen konfigurieren, Konfigurieren der atime-Aktualisierungen
- Einhängen mit noatime , Einhängen mit noatime
- Einhängen mit relatime , Einhängen mit relatime
- Aushängen, Aushängen eines Dateisystems, Spezielle Überlegungen zum Einhängen von GFS2-Dateisystemen
- Bind Mounts, Bind Mounts und kontextabhängige Pfade
- Datenjournale, Datenjournale
- Einhängen, Einhängen eines Dateisystems, Spezielle Überlegungen zum Einhängen von GFS2-Dateisystemen
- Einhängereihenfolge, Einhängereihenfolge für Bind Mounts und Dateisysteme
- Erstellen, Erstellen eines Dateisystems
- Journale hinzufügen, Hinzufügen von Journalen zu einem Dateisystem
- Kontextabhängige Pfade, Bind Mounts und kontextabhängige Pfade
- Kontingentverwaltung, Verwalten von GFS2-Festplattenkontingenten, Einrichten von Kontingenten im Erzwingen- oder Berechnen-Modus, GFS2-Kontingentverwaltung mit dem Befehl gfs2_quota
- Aktivieren der Kontingentberechnung, Aktivieren der Kontingentberechnung
- Anzeigen von Kontingentgrenzen, Anzeigen von Kontingentgrenzen und -verbrauch mit dem gfs2_quota-Befehl
- Erzwingen von Kontingenten aktivieren/deaktivieren, Erzwingen von Kontingenten aktivieren/deaktivieren
- Festlegen von Kontingenten, Kontingente festlegen mit dem Befehl gfs2_quota
- Synchronieren von Kontingenten, Synchronisieren von Kontingenten mit dem quotasync-Befehl
- Synchronisieren von Kontingenten, Synchronisieren von Kontingenten mit dem gfs2_quota-Befehl
- Reparieren, Reparieren eines Dateisystems
- Vergrößern, Vergrößern eines Dateisystems
- Datenjournale, Datenjournale
- debugfs, GFS2-Tracepoints und die debugfs-Glocks-Datei
- debugfs-Datei, Suche und Bereinigung von Problemen bei der GFS2-Leistung mit GFS2 Lock Dump
E
- Einführung, Einführung
- Zielgruppe, Zielgruppe
- Einhängen eines Dateisystems, Einhängen eines Dateisystems, Spezielle Überlegungen zum Einhängen von GFS2-Dateisystemen
- Einhängeoption quota=, Kontingente festlegen mit dem Befehl gfs2_quota
- Einhängeoptionen, Tabelle, Vollständige Verwendung
- Einrichtung, erste
- Erste Schritte, Schritte zur erstmaligen Einrichtung
- Einstellbarer Parameter quota_quantum, Synchronisieren von Kontingenten mit dem gfs2_quota-Befehl
- Erste Schritte
- Einrichtung, erste, Schritte zur erstmaligen Einrichtung
- Erstellen eines Dateisystems, Erstellen eines Dateisystems
F
- Feedback
- Kontaktinformationen für dieses Handbuch, Wir freuen uns auf Ihr Feedback!
- Festplattenkontingente
- Aktivieren, Konfigurieren von Festplattenkontingenten
- Erstellen von Kontingentdateien, Erstellen der Kontingent-Datenbankdateien
- quotacheck ausführen, Erstellen der Kontingent-Datenbankdateien
- Harte Grenze, Kontingente pro Benutzer zuweisen
- Verwaltung, Verwalten von Festplattenkontingenten
- Berichte, Verwalten von Festplattenkontingenten
- quotacheck Befehl zur Überprüfung, Pflegen der Genauigkeit von Kontingenten
- Weiche Grenze, Kontingente pro Benutzer zuweisen
- Weitere Informationsquellen, Referenzen
- Zuweisen pro Benutzer, Kontingente pro Benutzer zuweisen
- Zuweisen pro Gruppe, Kontingente pro Gruppe zuweisen
- fsck.gfs2 Befehl, Reparieren eines Dateisystems
- Funktionen, neue und veränderte, Neue und veränderte Funktionen
G
- GFS2
- atime, Aktualisierungen konfigurieren, Konfigurieren der atime-Aktualisierungen
- Einhängen mit noatime , Einhängen mit noatime
- Einhängen mit relatime , Einhängen mit relatime
- Betrieb, Überlegungen zur Konfiguration und zum Betrieb von GFS2
- Konfigurationsüberlegungen, Überlegungen zur Konfiguration und zum Betrieb von GFS2
- Kontingentverwaltung, Verwalten von GFS2-Festplattenkontingenten, Einrichten von Kontingenten im Erzwingen- oder Berechnen-Modus, GFS2-Kontingentverwaltung mit dem Befehl gfs2_quota
- Aktivieren der Kontingentberechnung, Aktivieren der Kontingentberechnung
- Anzeigen von Kontingentgrenzen, Anzeigen von Kontingentgrenzen und -verbrauch mit dem gfs2_quota-Befehl
- Erzwingen von Kontingenten aktivieren/deaktivieren, Erzwingen von Kontingenten aktivieren/deaktivieren
- Festlegen von Kontingenten, Kontingente festlegen mit dem Befehl gfs2_quota
- Synchronieren von Kontingenten, Synchronisieren von Kontingenten mit dem quotasync-Befehl
- Synchronisieren von Kontingenten, Synchronisieren von Kontingenten mit dem gfs2_quota-Befehl
- Rückzugsfunktion, Die GFS2-Rückzugsfunktion
- Verwaltung, Verwaltung von GFS2
- GFS2-Dateisystem maximale Größe, Überblick über GFS2
- GFS2-spezifische Optionen zum Erweitern von Dateisystemen, Tabelle, Vollständige Verwendung
- GFS2-spezifische Optionen zum Hinzufügen von Journalen, Tabelle, Vollständige Verwendung
- gfs2_grow Befehl, Vergrößern eines Dateisystems
- gfs2_jadd Befehl, Hinzufügen von Journalen zu einem Dateisystem
- gfs2_quota-Befehl, GFS2-Kontingentverwaltung mit dem Befehl gfs2_quota
- Glock, GFS2-Tracepoints und die debugfs-Glocks-Datei
- Glock-Flags, Suche und Bereinigung von Problemen bei der GFS2-Leistung mit GFS2 Lock Dump, Die Glock-debugfs-Schnittstelle
- Glock-Halter-Flags, Suche und Bereinigung von Problemen bei der GFS2-Leistung mit GFS2 Lock Dump, Glock-Halter
- Glock-Typen, Suche und Bereinigung von Problemen bei der GFS2-Leistung mit GFS2 Lock Dump, Die Glock-debugfs-Schnittstelle
H
- Hinzufügen von Journalen zu einem Dateisystem, Hinzufügen von Journalen zu einem Dateisystem
K
- Knotensperrung, GFS2-Knotensperrung
- Konfiguration, bevor, Vor der Einrichtung von GFS2
- Konfiguration, erstmalige, Erste Schritte
- Vorbereitungen, Grundlegende Vorbereitungen
- Konfigurationsüberlegungen, Überlegungen zur Konfiguration und zum Betrieb von GFS2
- Kontextabhängige Pfade (CDPNs)
- Konvertierung von GFS zu GFS2, Konvertierung kontextabhängiger Pfade
- Kontingentverwaltung, Verwalten von GFS2-Festplattenkontingenten, Einrichten von Kontingenten im Erzwingen- oder Berechnen-Modus, GFS2-Kontingentverwaltung mit dem Befehl gfs2_quota
- Aktivieren der Kontingentberechnung, Aktivieren der Kontingentberechnung
- Anzeigen von Kontingentgrenzen, Anzeigen von Kontingentgrenzen und -verbrauch mit dem gfs2_quota-Befehl
- Erzwingen von Kontingenten aktivieren/deaktivieren, Erzwingen von Kontingenten aktivieren/deaktivieren
- Festlegen von Kontingenten, Kontingente festlegen mit dem Befehl gfs2_quota
- Synchronisation von Kontingenten, Synchronisieren von Kontingenten mit dem quotasync-Befehl
- Synchronisieren von Kontingenten, Synchronisieren von Kontingenten mit dem gfs2_quota-Befehl
L
- Leistungsoptimierung, Leistungsoptimierung mit GFS2
M
- Maximale Größe eines GFS2-Dateisystems, Überblick über GFS2
- mkfs-Befehl, Erstellen eines Dateisystems
- mkfs.gfs2-Befehlsoptionstabelle, Vollständige Optionen
- mount-Befehl, Einhängen eines Dateisystems
O
- Optimierung, Leistung, Leistungsoptimierung mit GFS2
P
- Pfade, kontextabhängig (CDPNs), Bind Mounts und kontextabhängige Pfade
- Posix-Sperren, Probleme mit Posix-Sperren
Q
- quotacheck , Erstellen der Kontingent-Datenbankdateien
- quotacheck-Befehl
- Genauigkeit der Kontingente überprüfen mit, Pflegen der Genauigkeit von Kontingenten
- quota_quantum Einstellbarer Parameter, Synchronisieren von Kontingenten mit dem quotasync-Befehl
R
- Reparieren eines Dateisystems, Reparieren eines Dateisystems
- Rückzugsfunktion, GFS2, Die GFS2-Rückzugsfunktion
S
- System hängt sich beim Aushängen auf, Spezielle Überlegungen zum Einhängen von GFS2-Dateisystemen
T
- Tabellen
- Einhängeoptionen, Vollständige Verwendung
- GFS2-spezifische Optionen zum Erweitern von Dateisystemen, Vollständige Verwendung
- GFS2-spezifische Optionen zum Hinzufügen von Journalen, Vollständige Verwendung
- mkfs.gfs2-Befehlsoptionen, Vollständige Optionen
- Tracepoints, GFS2-Tracepoints und die debugfs-Glocks-Datei
U
- Überblick, Überblick über GFS2
- Funktionen, neue und veränderte, Neue und veränderte Funktionen
- Konfiguration, bevor, Vor der Einrichtung von GFS2
- umount-Befehl, Aushängen eines Dateisystems
V
- Vergrößern eines Dateisystems, Vergrößern eines Dateisystems
- Verwaltung von GFS2, Verwaltung von GFS2
- Vorbereitungen
- Konfiguration, erstmalige, Grundlegende Vorbereitungen
- Vorwort (Siehe Einführung)
Z
- Zielgruppe, Zielgruppe