12.4.3. コマンドラインを使用してディスクベースのストレージを仮想マシンに接続する


仮想マシン (VM) にローカルストレージを提供する場合、ディスクベースのディスクイメージを使用できます。このタイプのディスクイメージは、ホスト上のディスクパーティションに基づいており、.qcow2 または .raw 形式を使用します。

コマンドラインを使用してディスクベースのストレージを仮想マシンに接続するには、次のいずれかの方法を使用します。

  • 新しい仮想マシンを作成する場合は、--disk オプションを使用して、virt-install コマンドによる操作の一部として新しいディスクを作成して接続します。詳細な手順は、仮想マシンの作成 を参照してください。
  • 既存の仮想マシンの場合は、ディスクベースのストレージボリュームを作成し、それを仮想マシンに接続します。次の手順を参照してください。

前提条件

  • ハイパーバイザーがディスクベースのストレージプールをサポートしていることを確認する。

    # virsh pool-capabilities | grep "'disk' supported='yes'"

    コマンドの出力が表示される場合には、ディスクベースのプールはサポートの対象です。

  • ストレージプールのベースとなるデバイスを準備する。この目的のために、パーティション (/dev/sdb1 など) または LVM ボリュームを優先します。ディスク全体またはブロックデバイス (たとえば、/dev/sdb) への書き込みアクセス権を仮想マシンに与えると、おそらく仮想マシンはそのディスクをパーティションに分割するか、その上に独自の LVM グループを作成します。これにより、ホストでシステムエラーが発生する可能性があります。

    ただし、ストレージプールにブロックデバイス全体を使用する必要がある場合、Red Hat は、デバイス上の重要なパーティションを GRUB の os-prober 機能から保護することを推奨します。これを行うには、/etc/default/grub ファイルを編集して、次のいずれかの設定を適用します。

    • os-prober を無効にします。

      GRUB_DISABLE_OS_PROBER=true
    • 使用するパーティションが os-prober によって検出されないようにします。以下に例を示します。

      GRUB_OS_PROBER_SKIP_LIST="5ef6313a-257c-4d43@/dev/sdb1"
  • ストレージプールを作成する前に、選択したストレージデバイス上のデータをバックアップする。使用されている libvirt のバージョンによっては、ディスクをストレージプール専用にすると、ディスクデバイスに現在保存されているすべてのデータが再フォーマットされ、消去される可能性があります。

手順

  1. ディスクベースのストレージプールがまだない場合は、新しいディスクベースのストレージプールを作成して設定します。

    1. ディスクタイプのストレージプールを定義および作成します。次の例では、/dev/sdb デバイスを使用し、/dev ディレクトリーにマウントされる guest_images_disk という名前のストレージプールを作成します。

      # virsh pool-define-as guest_images_disk disk --source-format=gpt --source-dev=/dev/sdb --target /dev
      Pool guest_images_disk defined
    2. フォーマット済みのファイルシステムストレージプールのストレージプールターゲットパスを作成し、ストレージソースデバイスを初期化して、データのフォーマットを定義します。

      # virsh pool-build guest_images_disk
        Pool guest_images_disk built
    3. オプション: プールが作成されたことを確認します。

      # virsh pool-list --all
      
        Name                 State      Autostart
        -----------------------------------------
        default              active     yes
        guest_images_disk    inactive   no
    4. ストレージプールを起動します。

      # virsh pool-start guest_images_disk
        Pool guest_images_disk started
      注記

      virsh pool-start コマンドは、永続ストレージプールにのみ必要です。一時的なストレージプールは、作成時に自動的に起動します。

    5. オプション: 自動起動をオンにします。

      デフォルトでは、virsh で定義したストレージプールは、仮想化サービスが起動するたびに自動的に起動するように設定されません。virsh pool-autostart コマンドを使用して、ストレージプールを自動的に起動するように設定します。

      # virsh pool-autostart guest_images_disk
        Pool guest_images_disk marked as autostarted
  2. ディスクベースのストレージボリュームを作成します。たとえば、次のコマンドは、guest_images_disk ストレージプールに基づいて、vm-disk1 という名前の 20 GB の qcow2 ボリュームを作成します。

    # virsh vol-create-as --pool guest_images_disk --name sdb1 --capacity 20GB --format extended
    
    Vol vm-disk1 created
  3. ストレージボリュームを仮想ディスクとして仮想マシンに接続します。

    1. 作成したストレージボリュームの場所を確認します。これを行うには、ボリュームが属するストレージプールを調べます。

      # virsh vol-list --pool guest_images_disk --details
      
       Name        Path                      Type   Capacity    Allocation
      ---------------------------------------------------------------------
       sdb1      /dev/sdb1                  block   20.00 GiB   20.00 GiB
    2. ディスクを接続する仮想マシンですでに使用されているターゲットデバイスを確認します。

      # virsh domblklist --details <vm-name> Type Device Target Source ---------------------------------------------------------------- file disk *vda      /home/VirtualMachines/vm-name.qcow2
       file   cdrom    vdb      -
    3. オプション: データの破損やディスクの断片化の問題を回避するために、ディスクの整合性を確認します。手順は、仮想ディスクの整合性のチェック を参照してください。
    4. virsh attach-disk コマンドを使用してディスクを仮想マシンに接続します。仮想マシンで使用されていないターゲットデバイスを指定します。

      たとえば、次のコマンドは、以前に作成した vm-disk1vdc デバイスとして testguest1 仮想マシンに接続します。

      # virsh attach-disk testguest1 /dev/sdb1 vdc --persistent

検証

  1. ディスクを接続した仮想マシンの XML 設定を調べて、設定が正しいかどうかを確認します。

    # virsh dumpxml testguest1
    
    ...
      <disk type="block" device="disk">
        <driver name="qemu" type="raw"/>
        <source dev="/dev/sdb1" index="2"/>
        <backingStore/>
        <target dev="vdc" bus="virtio"/>
        <alias name="virtio-disk2"/>
        <address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/>
      </disk>
    ...
  2. 仮想マシンのゲストオペレーティングシステムで、ディスクイメージが未フォーマットかつ未割り当てのディスクとして利用できるようになっていることを確認します。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る