14.11. 仮想マシンの SCSI3-Persistent Reservation の設定


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) を使用する場合は、ホスト上でマルチパス設定が正しくセットアップされている。詳細は、Device Mapper Multipath の設定 を参照してください。

手順

  1. 仮想マシンの XML 設定を開きます。

    # virsh edit <vm_name>
  2. <devices> セクションに、VirtIO-SCSI コントローラーの行を追加します (まだない場合)。

    <controller type='scsi' model='virtio-scsi' index='0'/>
  3. 仮想マシンの設定を編集して、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'/>: 直接デバイスにアクセスするための raw 形式の QEMU ドライバーを指定します。
      • reservations managed='yes': S3-PR サポートを有効にし、libvirt が永続予約ヘルパーを管理できるようにします。
      • このディスクは VirtIO-SCSI バスを使用します。これは S3-PR サポートに必要です。
  4. XML 設定を保存して、仮想マシンを起動します。

    # virsh start <vm_name>

検証

  • 実行中の仮想マシンの XML 設定を表示することで、ホスト側の設定を確認できます。

    # virsh dumpxml <vm_name>

    ディスクデバイス設定内にある reservations managed='yes' という要素を探します。

  • RHEL 仮想マシンでは、sg3_utils パッケージを使用して SCSI デバイスの永続予約機能を確認することもできます。

    1. RHEL 仮想マシンに sg3_utils パッケージをインストールします。

      # dnf install sg3_utils
    2. SCSI デバイスの永続予約機能を確認します。

      # 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 は、サポートされている予約タイプを示しています。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る