SCSIPR-Tiebreaker unter Linux for System x

In System Automation for Multiplatforms Version 3.2.1.2 wurde der Tiebreakertyp SCSIPR eingeführt, der speziell für Linux auf System x gilt. Er wird unter RHEL 7, RHEL 8, SLES 12 und SLES 15 unterstützt.

Der SCSIPR-Tiebreaker verwendet persistente SCSI-3-Reservierungen auf einer SCSI-Plattenspeichereinheit als Tiebreakermechanismus. In einer Entscheidungssituation, in der die Peerdomäne in zwei Unterdomänen partitioniert wird und jede Unterdomäne exakt die Hälfte des definierten Knotens enthält, erhält die Unterdomäne, die in der Lage ist, eine exklusive persistente Reservierung der gemeinsam genutzten SCSI-Plattenspeichereinheit zu erhalten, das Quorum für den Betrieb.

Voraussetzungen

Die SCSI-Plattenspeichereinheit, die vom SCSIPR-Tiebreaker verwendet werden soll, muss das SCSI-3 -Protokoll mit dem Reservierungstyp Write Exclusive Registrants Onlyunterstützen. Diese Einheit muss von allen Systemen in der Peerdomäne gemeinsam genutzt werden und alle Systeme müssen in der Lage sein, die Einheit über das SCSI-3-Protokoll für persistente Reservierungen zu reservieren.

Der SCISPR-Tiebreaker verwendet das Dienstprogramm sg_persist. Verwenden Sie die folgenden Befehle, um zu prüfen, ob das Dienstprogramm bereits auf allen Systemen der Peerdomäne installiert ist:
which sg_persist
rpm -qf /usr/bin/sg_persist
Wenn das Dienstprogramm sg_persist noch nicht installiert ist, müssen Sie das entsprechende Linux-Paket installieren:
  • RHEL 7, RHEL 8, SLES 12 und SLES 15: sg3_utils*.rpm

Definition

Wenn Sie einen Tiebreaker des Typs SCSIPR erstellen, geben Sie mit dem persistenten Ressourcenattribut DeviceInfo die SCSI-Plattenspeichereinheit an, die vom Tiebreaker verwendet werden soll. Wenn auf den Systemen der Peerdomäne verschiedene SCSI-Konfigurationen verwendet werden, können Sie diese Unterschiede mit dem persistenten Ressourcenattribut NodeInfo widerspiegeln.

Der SCSIPR-Tiebreaker verwendet einen Reservierungs- und Freigabemechanismus und muss in regelmäßigen Abständen neu reserviert werden, damit die Reservierung bestehen bleibt. Geben Sie deshalb das persistente Ressourcenattribut HeartbeatPeriod beim Erstellen eines Tiebreakers dieses Typs an. Das persistente Ressourcenattribut HeartbeatPeriod definiert das Intervall, in dem die Reservierung wiederholt wird.
Hinweis: Beachten Sie beim Definieren von Tiebreakerressourcen, dass die Platte, auf der IBM.Tiebreaker -Ressourcen gespeichert werden, nicht auch zum Speichern von Dateisystemen verwendet wird.
Verwenden Sie eine der folgenden Optionen, um die vom Tiebreaker zu verwendende SCSI-Plattenspeichereinheit im persistenten Ressourcenattribut DeviceInfo anzugeben:
  • DEVICE=<generic or disk device name>
  • HOST=<h> CHAN=<c> ID=<i> LUN=<I>
  • WWID=<wwid as displayed by the system>
  • RDAC.WWN=<wwn as displayed by the system when using LSI RDAC multi-path driver>
Beispiel:
mkrsrc IBM.TieBreaker Name="mySCSIPRTieBreaker" Type=SCSIPR DeviceInfo="DEVICE=/dev/sdx" HeartbeatPeriod=5

Prüfung

Führen Sie die folgenden Schritte auf allen fernen Peersystemen aus, um zu prüfen, ob alle Systeme den SCSIPR-Tiebreaker mit der ausgewählten SCSI-Plattenspeichereinheit ordnungsgemäß unterstützen:
  • Reservieren Sie die Platteneinheit mit dem Befehl tb_break:
    /usr/sbin/rsct/bin/tb_break -l -t SCSIPR <DeviceInfo device specification for this system>
    Dieser Befehl muss die Platteneiheit erfolgreich reservieren können.
  • Versuchen Sie, mit dem Befehl tb_break dieselbe Platteneinheit auf allen anderen Systemen der Peerdomäne zu reservieren:
    /usr/sbin/rsct/bin/tb_break -l -t SCSIPR <DeviceInfo device specification for this system>
    Die Reservierung der Platteneinheit mit diesem Befehl muss fehlschlagen, weil die Platteneinheit bereits exklusiv vom ersten System reserviert wurde.
  • Geben Sie die Platteneinheit mit dem Befehl tb_break frei:
    /usr/sbin/rsct/bin/tb_break -u -t SCSIPR <DeviceInfo device specification for this system>
    Dieser Befehl muss die Platteneiheit erfolgreich freigeben können.
Prüfen, ob eine Reservierung besteht:
Verwenden Sie den folgenden Befehl, um zu prüfen, ob eine Reservierung für die SCSI-Plattenspeichereinheit besteht:
sg_persist --read-reservation <generic or disk device name>
Beispiel für nicht bestehende Reservierung:
sg_persist --read-reservation /dev/sdx
IBM 2145 0000
Peripheral device type: disk
PR generation=0x5, there is NO reservation held
Beispiel für bestehende Reservierung:
sg_persist --read-reservation /dev/sdx
IBM 2145 0000
Peripheral device type: disk
PR generation=0x5, Reservation follows:
Key=0x11293693fa4d5807
scope: LU_SCOPE, type: Write Exclusive, registrants only
Wenn Sie eine Platteneinheit reservieren, verwendet jedes ferne Peersystem seine RSCT-Knoten-ID als Reservierungsschlüssel. Die RSCT-Knoten-ID eines fernen Peersystems kann mit dem Befehl /usr/sbin/rsct/bin/lsnodeid angezeigt werden. Wenn eine SCSI-Plattenspeichereinheit vom SCSIPR-Tiebreaker reserviert wird, können Sie das System bestimmen, das die Reservierung hält. Bestimmen Sie den aktuellen Reservierungsschlüssel und vergleichen Sie ihn mit den RSCT-Knoten-IDs aller fernen Peersysteme.
Reservierung aufheben:
Wenn ein fernes Peersystem eine Reservierung für die SCSI-Plattenspeichereinheit hält, ist es möglich, die Reservierung über ein anderes fernes Peersystem aufzuheben. Verwenden Sie den folgenden Befehl, um das Aufheben einer vorhandenen Reservierung zu erzwingen und eine neue Reservierung anzufordern:
/usr/sbin/rsct/bin/tb_break -f -t SCSIPR <DeviceInfo device specification for this system>