14.10. 仮想マシンの SCSI3 永続予約の設定
SCSI3-Persistent Reservation (S3-PR) を使用することで、複数の仮想マシン (VM) が共有ストレージデバイスへのアクセスを調整できます。これは、Pacemaker などの Linux クラスタリングソリューションや、Windows Server のフェイルオーバークラスタリングに必要です。
S3-PR を使用すると、仮想マシンはストレージデバイス上の永続的な予約を登録および管理し、複数の仮想マシンが同じストレージにアクセスする際に発生する競合を防ぐことができます。
RHEL ホスト上で動作する仮想マシンでは、XML 設定ファイルを変更することで、シングルパスデバイスとマルチパスデバイスの両方に対して S3-PR を設定できます。
前提条件
ホストは以下のいずれかの CPU アーキテクチャーを使用します。
- Intel 64
- AMD64
- ARM 64
- ホストはサポートされている RHEL およびカーネルバージョンを使用しています。詳細は、仮想マシンにおける SGIO サポートに必要な RHEL バージョン を参照してください。
- ストレージバックエンドは S3-PR をサポートしています。
- マルチパス仮想ディスク (vDisk) を使用している場合、ホスト上でマルチパス設定が正しく設定されている必要があります。詳細は、デバイスマッパーのマルチパス設定を 参照してください。
手順
仮想マシンの XML 設定を開きます。
# virsh edit <vm_name><devices>セクションに、VirtIO-SCSI コントローラーの行がまだ存在しない場合は追加してください。<controller type='scsi' model='virtio-scsi' index='0'/>仮想マシンの設定を編集して、S3-PR のサポートを有効にしてください。設定は、シングルパス vDisk を使用しているかマルチパス vDisk を使用しているかによって異なります。
マルチパスデバイスの場合は、
managed='yes'を指定したreservations要素をマルチパスディスクデバイスに追加します。<disk type='block' device='lun'> <driver name='qemu' type='raw' cache='none'/> <source dev='/dev/mapper/mpatha'> <reservations managed='yes'/> </source> <target dev='sda' bus='scsi'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk>この例では、マルチパスデバイス
/dev/mapper/mpathaは S3-PR サポート付きで設定されています。-
device='lun': これは SCSI 論理ユニット番号 (LUN) デバイスであることを示します。これは、ブロックデバイスを使用した S3-PR サポートに必要です。 -
reservations managed='yes': S3-PR サポートを有効にし、libvirt が永続的な予約ヘルパーを管理できるようにします。
-
シングルパスデバイスの場合、S3-PR サポートが必要なディスクデバイスに、
managed='yes'を指定したreservations要素を追加します。<disk type='block' device='lun'> <driver name='qemu' type='raw' cache='none'/> <source dev='/dev/sdb'> <reservations managed='yes'/> </source> <target dev='sda' bus='scsi'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk>この例では、以下が適用されます。
-
type='block': デバイスがブロックデバイスであることを指定します。 -
device='lun': これは SCSI 論理ユニット番号 (LUN) デバイスであることを示します。これは、ブロックデバイスを使用した S3-PR サポートに必要です。 -
<source dev='/dev/sdb'/>: ホストブロックデバイスのパスを指定します。デバイスノード (例:/dev/sdb)を直接使用することも、再起動後もより安定した状態を維持するために/dev/disk/by-path/エントリーを使用することもできます。 -
<driver name='qemu' type='raw' cache='none'/>: 直接デバイスにアクセスするための生フォーマットの QEMU ドライバーを指定します。 -
reservations managed='yes': S3-PR サポートを有効にし、libvirt が永続的な予約ヘルパーを管理できるようにします。 - このディスクは VirtIO-SCSI バスを使用しており、これは S3-PR のサポートに必要です。
-
XML 設定を保存して、仮想マシンを起動します。
# virsh start <vm_name>
検証
実行中の仮想マシンの XML 設定を表示することで、ホスト側の設定を確認できます。
# virsh dumpxml <vm_name>ディスクデバイス設定の中で、
reservations managed='yes'という要素を探してください。RHEL 仮想マシンでは、
sg3_utilsパッケージを使用して SCSI デバイスの永続予約機能をチェックすることもできます。RHEL 仮想マシンに
sg3_utilsパッケージをインストールします。# dnf install sg3_utilsSCSI デバイスの永続予約機能を確認してください。
# sg_persist --in --report-capabilities /dev/sdaデバイスが S3-PR をサポートしている場合、出力は次のようになります。
LBP-2: 0 PTPL_C: 0 TMC: 0 [PTPL_A: 1] [PR_TYPE: 1, 3, 5]この例では、
PTPL_A: 1 はデバイスが永続的な予約をサポートしていることを示し、PR_TYPE: 1、3、5 はサポートされている予約タイプを示しています。