Linux on System z 上の SCSIPR タイ・ブレーカー

System Automation for Multiplatforms バージョン 3.2.1.3 では、 Linux on System z で使用するためのタイブレーカー・タイプ SCSIPR が導入されました。 これは、SLES 12 および SLES 15でサポートされています。

SCSIPR タイ・ブレーカーは、タイ・ブレーク・メカニズムとして、SCSI ディスク・ストレージ・デバイス上で SCSI-3 永続的な予約を使用します。 ピア・ドメインが 2 つのサブドメインに分割され、それぞれのサブドメインに定義済みのノードがちょうど半数ずつ含まれているタイ状態の場合、共有 SCSI ディスク・ストレージ・デバイスの排他的な永続予約を取得できるサブドメインが、操作クォーラムを取得します。

前提条件

SCSIPR タイ・ブレーカーが使用する SCSI ディスク・ストレージ・デバイスは、予約タイプ Write Exclusive Registrants Onlyの SCSI-3 永続予約プロトコルをサポートする必要があります。 ピア・ドメイン内のすべてのシステムがこのデバイスを共用する必要があり、すべてのシステムが SCSI-3 永続予約プロトコルを使用して、このデバイスを予約可能であることが必要です。 SCISPR タイ・ブレーカーは sg_persist ユーティリティーを使用します。 このユーティリティーがピア・ドメインのすべてのシステムに既にインストールされているかどうかを確認するには、次のコマンドを使用します。
which sg_persist
rpm -qf /usr/bin/sg_persist
sg_persist ユーティリティーがまだインストールされていない場合は、以下の Linux パッケージの中から該当するものをインストールする必要があります。
  • RHEL 7、RHEL 8、SLES 12、および SLES 15: sg3_utils*.rpm
タイ・ブレーカーとして機能するディスクでは、N ポート ID 仮想化を有効にしておく必要があります。 有効にしない場合、それぞれの予約は、zSeries の物理的なボックスである CEC の単一の論理区画のためではなく、CEC 全体のために行われます。 zSeries での N ポート ID 仮想化について詳しくは、以下を参照してください。

定義

SCSIPR タイプのタイ・ブレーカーを作成する場合は、DeviceInfo 永続リソース属性を使用して、タイ・ブレーカーによって使用される SCSI ディスク・ストレージ・デバイスを指定します。 ピア・ドメイン・システム間で SCSI 構成が異なる場合は、NodeInfo 永続リソース属性を使用して、これらの差異を反映します。

SCSIPR タイ・ブレーカーでは、予約または解放メカニズムが使用されるため、予約を維持するためにタイ・ブレーカーを定期的に再予約する必要があります。 このため、このタイプのタイ・ブレーカーを作成するときには、HeartbeatPeriod 永続リソース属性を指定します。 HeartbeatPeriod 永続リソース属性は、予約を再試行する間隔を定義します。
注: タイブレーカー・リソースを定義する場合、 IBM.Tiebreaker リソースが保管されるディスクはファイル・システムの保管に使用されないことに注意してください。
DeviceInfo 永続リソース属性で以下のオプションのいずれかを使用して、タイ・ブレーカーによって使用される SCSI ディスク・ストレージ・デバイスを特定します。
  • DEVICE=<generic or disk device name>
  • HOST=<h> CHAN=<c> ID=<i> LUN=<l>
  • WWID=<wwid as displayed by the system>
  • RDAC.WWN=<wwn as displayed by the system when using LSI RDAC multi-path driver>
例:
mkrsrc IBM.TieBreaker Name="mySCSIPRTieBreaker" Type=SCSIPR DeviceInfo="DEVICE=/dev/sdx" HeartbeatPeriod=5

検証

以下のステップをすべてのリモート・ピア・システムで実行して、選択した SCSI ディスク・ストレージ・デバイスに対して SCSIPR タイ・ブレーカーがすべてのシステムで正しくサポートされているかどうかを検証します。
  • 次に示すように tb_break コマンドを使用して、ディスク装置を予約します。
    /usr/sbin/rsct/bin/tb_break -l -t SCSIPR <DeviceInfo device specification for this system>
    このコマンドで、ディスク装置を正常に予約できる必要があります。
  • 次に示すように、他のすべてのピア・ドメイン・システムで tb_break コマンドを使用して、同じディスク装置の予約を試行します。
    /usr/sbin/rsct/bin/tb_break -l -t SCSIPR <DeviceInfo device specification for this system>
    このコマンドによるディスク装置の予約は失敗する必要があります。なぜなら、ディスク装置は最初のシステムによって既に排他的に予約されているからです。
  • 次に示すように tb_break コマンドを使用して、ディスク装置を解放します。
    /usr/sbin/rsct/bin/tb_break -u -t SCSIPR <DeviceInfo device specification for this system>
    このコマンドで、ディスク装置を正常に解放できる必要があります。
予約が維持されているかどうかの確認:
SCSI ディスク・ストレージ・デバイスで予約が維持されているかどうかを確認するには、次のコマンドを使用します。
sg_persist --read-reservation <generic or disk device name>
例: 予約が維持されていない場合:
sg_persist --read-reservation /dev/sdx
IBM 2145 0000
Peripheral device type: disk
PR generation=0x5, there is NO reservation held
例: 予約が維持されている場合:
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
ディスク装置を予約すると、各リモート・ピア・システムはそれぞれの RSCT ノード ID を予約キーとして使用します。 /usr/sbin/rsct/bin/lsnodeid コマンドを使用すると、リモート・ピア・システムの RSCT ノード ID を表示できます。 SCSI ディスク・ストレージ・デバイスが SCSIPR タイ・ブレーカーによって予約されている場合、予約キーを調べることによって、予約を維持しているシステムを判別できます。 この予約キーを、すべてのリモート・ピア・システムの RSCT ノード ID と比較します。
予約のブレーク:
リモート・ピア・システムが SCSI ディスク・ストレージ・デバイスで予約を維持している場合、 別のリモート・ピア・システムからこの予約をブレークすることができます。 既存の予約を強制的にブレークし、新しい予約を獲得するには、次のコマンドを使用します。
/usr/sbin/rsct/bin/tb_break -f -t SCSIPR <DeviceInfo device specification for this system>