13.3. ストレージボリュームの使用


このセクションでは、ストレージボリュームの使用方法を説明します。ここでは、概念情報と、virsh コマンドおよび Virtual Machine Manager を使用してストレージボリュームを作成、設定、および削除する方法を詳細に説明します。

13.3.1. ストレージボリュームの概念

ストレージプールは、ストレージボリューム に分類されます。ストレージボリュームは、libvirt が処理する物理パーティション、LVM 論理ボリューム、ファイルベースのディスクイメージ、その他のストレージタイプの抽象化です。ストレージボリュームは、基本となるハードウェアに関係なく、ゲスト仮想マシンにローカルストレージデバイスとして提示されます。
注記
以下のセクションでは、virsh がストレージボリュームの管理で使用するコマンドと引数をすべて含んでいるわけではありません。詳細は、「ストレージボリュームコマンド」 を参照してください。
ホストマシンでは、ストレージボリュームは、その名前と、そこから派生するストレージプールの識別子で参照されます。virsh コマンドラインでは、--pool storage_pool volume_name の形式を取ります。
たとえば、guest_images プールの firstimage という名前のボリュームの場合は以下のようになります。
# virsh vol-info --pool guest_images firstimage
  Name:           firstimage
  Type:           block
  Capacity:       20.00 GB
  Allocation:     20.00 GB
Copy to Clipboard Toggle word wrap
追加のパラメーターおよび引数は、「ボリューム情報のリスト表示」 を参照してください。

13.3.2. ストレージボリュームの作成

本セクションでは、virsh および Virtual Machine Manager を使用して、ストレージプールからストレージボリュームを作成する方法を説明します。ストレージボリュームを作成したら、ストレージデバイスをゲストに追加することができます。

13.3.2.1. virsh を使用したストレージボリュームの作成

次のいずれかを行います。
  • XML ファイルを使用してストレージボリュームを定義します。
    a.新規デバイスに必要なストレージボリューム情報を含む一時 XML ファイルを作成します。
    XML ファイルには、以下を含む特定のフィールドが含まれている必要があります。
    • 名前 - ストレージボリュームの名前。
    • 割り当て - ストレージボリュームのストレージ割り当ての合計数。
    • 容量 - ストレージボリュームの論理容量。ボリュームがスパースの場合、この値は allocation の値とは異なります。
    • ターゲット - ホストシステムのストレージボリュームのパス、さらに任意でそのパーミッションとラベル。
    以下は、ストレージボリューム定義の XML ファイルの例です。この例では、ファイルは ~/guest_volume.xml に保存されます。
      <volume>
        <name>volume1</name>
        <allocation>0</allocation>
        <capacity>20G</capacity>
        <target>
          <path>/var/lib/virt/images/sparse.img</path>
        </target>
      </volume>
    
    Copy to Clipboard Toggle word wrap
    b.virsh vol-create コマンドを使用して、XML ファイルに基づいてストレージボリュームを作成します。
    # virsh vol-create guest_images_dir ~/guest_volume.xml
      Vol volume1 created
    
    Copy to Clipboard Toggle word wrap
    c.手順 a で作成した XML ファイルを削除します。
  • virsh vol-create-as を実行して、ストレージボリュームを作成します。
    # virsh vol-create-as guest_images_dir volume1 20GB --allocation 0
    Copy to Clipboard Toggle word wrap
  • virsh vol-clone コマンドを使用して、既存のストレージボリュームのクローンを作成します。virsh vol-clone コマンドは、クローンを作成するストレージボリュームを含むストレージプールと、新しく作成したストレージボリュームの名前を指定する必要があります。
    # virsh vol-clone --pool guest_images_dir volume1 clone1
    Copy to Clipboard Toggle word wrap

13.3.2.2. Virtual Machine Manager を使用したストレージボリュームの作成

手順13.11 Virtual Machine Manager を使用したストレージボリュームの作成

  1. ストレージ設定を開く

    1. Virtual Machine ManagerEdit メニューを開き、Connection Details を選択します。
    2. Connection Details ウィンドウの Storage タブをクリックします。

      図13.11 ストレージタブ

      Connection Details ウィンドウの左側のペインには、ストレージプールのリストが表示されます。
  2. ストレージボリュームを作成するストレージプールを選択します。

    ストレージプールのリストで、ストレージボリュームを作成するストレージプールをクリックします。
    選択したストレージプールに設定したストレージボリュームは、画面下部の Volumes ペインに表示されます。
  3. 新しいストレージボリュームの追加

    Volumes リストの上にある ボタンをクリックします。Add a Storage Volume のダイアログが表示されます。

    図13.12 ストレージボリュームの作成

  4. ストレージボリュームの設定

    以下のパラメーターを使用して、ストレージボリュームを設定します。
    • Name フィールドにストレージプールの名前を入力します。
    • Format リストからストレージボリュームの形式を選択します。
    • Max Capacity フィールドに、ストレージボリュームの最大サイズを入力します。
  5. 作成を終了します。

    Finish をクリックします。Add a Storage Volume のダイアログが閉じ、ストレージボリュームが Volumes リストに表示されます。

13.3.3. ストレージボリュームの表示

ストレージプールから複数のストレージボリュームを作成できます。virsh vol-list を使用して、ストレージプールのストレージボリュームをリスト表示することもできます。以下の例では、guest_images_disk に 3 つのボリュームが含まれています。
# virsh vol-create-as guest_images_disk volume1 8G
Vol volume1 created

# virsh vol-create-as guest_images_disk volume2 8G
Vol volume2 created

# virsh vol-create-as guest_images_disk volume3 8G
Vol volume3 created

# virsh vol-list guest_images_disk
Name                 Path
-----------------------------------------
volume1              /home/VirtualMachines/guest_images_dir/volume1
volume2              /home/VirtualMachines/guest_images_dir/volume2
volume3              /home/VirtualMachines/guest_images_dir/volume3
Copy to Clipboard Toggle word wrap

13.3.4. データの管理

このセクションでは、ストレージボリュームのデータの管理について説明します。
注記
ストレージボリュームの種類によっては、データ管理コマンドに対応していないものもあります。詳細は、以下のセクションを参照してください。

13.3.4.1. ストレージボリュームのワイプ

ストレージボリュームのデータにアクセスできないようにするには、virsh vol-wipe コマンドを使用して、ストレージボリュームをワイプできます。
virsh vol-wipe コマンドを実行して、ストレージボリュームをワイプします。
# virsh vol-wipe new-vol vdisk
Copy to Clipboard Toggle word wrap
デフォルトでは、データはゼロで上書きされます。ただし、ストレージボリュームをワイプする方法は複数指定できます。virsh vol-wipe コマンドのすべてのオプションの詳細は、「ストレージボリュームのコンテンツの削除」 を参照してください。

13.3.4.2. ストレージボリュームへのデータのアップロード

virsh vol-upload コマンドを使用すると、指定したローカルファイルからストレージボリュームにデータをアップロードできます。
# virsh vol-upload --pool pool-or-uuid --offset bytes --length bytes vol-name-or-key-or-path local-file
Copy to Clipboard Toggle word wrap
以下は、主なvirsh vol-uploadオプションです。
  • --pool pool-or-uuid - ボリュームが存在するストレージプールの名前または UUID です。
  • vol-name-or-key-or-path - アップロードするボリュームの名前または鍵またはパスです。
  • --offset bytes データの書き込みを開始するストレージボリュームの位置。
  • --length length - アップロードするデータ量の上限です。
    注記
    local-file が指定した--lengthよりも大きい場合は、エラーが発生します。

例13.1 ストレージボリュームへのデータのアップロード

# virsh vol-upload sde1 /tmp/data500m.empty disk-pool
Copy to Clipboard Toggle word wrap
この例のsde1 は、disk-pool ストレージプールのボリュームです。/tmp/data500m.empty のデータが sde1 にコピーされます。

13.3.4.3. ストレージボリュームへのデータのダウンロード

virsh vol-download を使用すると、ストレージボリュームから、指定したローカルファイルにデータをダウンロードできます。
# vol-download --pool pool-or-uuid --offset bytes --length bytes vol-name-or-key-or-path local-file
Copy to Clipboard Toggle word wrap
以下は、主なvirsh vol-downloadオプションです。
  • --pool pool-or-uuid - ボリュームが存在するストレージプールの名前または UUID です。
  • vol-name-or-key-or-path - ダウンロードするボリュームの名前、鍵、またはパスを指定します。
  • --offset - データの読み込みを開始するストレージボリュームの位置です。
  • --length length - ダウンロードするデータ量の上限です。

例13.2 ストレージボリュームからのデータのダウンロード

# virsh vol-download sde1 /tmp/data-sde1.tmp disk-pool
Copy to Clipboard Toggle word wrap
この例のsde1 は、disk-pool ストレージプールのボリュームです。sde1 のデータは、/tmp/data-sde1.tmp にダウンロードされます。

13.3.4.4. ストレージボリュームのサイズ変更

vol-resize コマンドを使用すると、指定したストレージボリュームの容量のサイズを変更できます。
# virsh vol-resize --pool pool-or-uuid vol-name-or-path pool-or-uuid capacity --allocate --delta --shrink
Copy to Clipboard Toggle word wrap
capacityはバイト単位で表されます。このコマンドには、ボリュームが存在するストレージプールの名前または UUID である --pool pool-or-uuid が必要です。また、このコマンドでサイズを変更するには、ボリュームのvol-name-or-key-or-path、名前、鍵、またはパスが必要です。
--allocate が指定されていない限り、新しい容量はスパースである可能性があります。通常、容量は新しいサイズになりますが、--delta が存在する場合は、既存のサイズに追加されます。--shrink が存在しない限り、ボリュームを縮小しようとすると失敗します。
--shrink が指定されていない限り、容量 を負にすることはできず、負の符号は必要ないことに注意してください。capacity はスケーリングされた整数であり、接尾辞がない場合はデフォルトでバイトになります。さらに、このコマンドは、アクティブなゲストが使用していないストレージボリュームに対してのみ安全であることに注意してください。ライブサイズの変更については、「ゲスト仮想マシンのブロックデバイスのサイズの変更」 を参照してください。

例13.3 ストレージボリュームのサイズを変更

たとえば、50M のストレージボリュームを作成した場合は、次のコマンドを使用して 100M にサイズを変更できます。
# virsh vol-resize --pool disk-pool sde1 100M
Copy to Clipboard Toggle word wrap

13.3.5. ストレージボリュームの削除

virsh または Virtual Machine Manager を使用して、ストレージボリュームを削除できます。
注記
削除するストレージボリュームを使用するゲスト仮想マシンに悪影響を及ぼさないようにするには、これを使用するリソースを解放することを推奨します。

13.3.5.1. virsh を使用したストレージボリュームの削除

virsh vol-delete コマンドを使用して、ストレージボリュームを削除します。このコマンドは、ストレージボリュームの名前またはパスと、ストレージボリュームの抽象化の元となるストレージプールを指定する必要があります。
以下の例では、guest_images_dir ストレージプールから volume_name ストレージボリュームを削除します。
# virsh vol-delete volume_name --pool guest_images_dir
  vol volume_name deleted
Copy to Clipboard Toggle word wrap

13.3.5.2. Virtual Machine Manager を使用したストレージボリュームの削除

手順13.12 Virtual Machine Manager を使用したストレージボリュームの削除

  1. ストレージ設定を開く

    1. Virtual Machine ManagerEdit メニューを開き、Connection Details を選択します。
    2. Connection Details ウィンドウの Storage タブをクリックします。

      図13.13 ストレージタブ

      Connection Details ウィンドウの左側のペインには、ストレージプールのリストが表示されます。
  2. 削除するストレージボリュームを選択します。

    1. ストレージプールのリストで、ストレージボリュームが抽象化されたストレージプールをクリックします。
      選択したストレージプールに設定されているストレージボリュームのリストが、画面下部の Volumes ペインに表示されます。
    2. 削除するストレージボリュームを選択します。
  3. ストレージボリュームを削除します。

    1. ボタン (Volumes リストの上) をクリックします。確認ダイアログが表示されます。
    2. Yes をクリックします。選択したストレージボリュームが削除されます。

13.3.6. ゲストへのストレージデバイスの追加

virsh または Virtual Machine Manager を使用して、ストレージデバイスをゲスト仮想マシンに追加できます。

13.3.6.1. virsh を使用したゲストへのストレージデバイスの追加

ストレージデバイスをゲスト仮想マシンに追加するには、attach-disk コマンドを使用します。追加するディスクに関する情報を含む引数は、XML ファイルまたはコマンドラインで指定できます。
以下は、ストレージの定義があるサンプルの XML ファイルです。
<disk type='file' device='disk>'>
  <driver name='qemu' type='raw' cache='none'/>
  <source file='/var/lib/libvirt/images/FileName.img'/>
  <target dev='vdb' bus='virtio'/>
</disk>
Copy to Clipboard Toggle word wrap
次のコマンドは、NewStorage.xml と呼ばれる XML ファイルを使用して、ディスクを Guest1 に割り当てます。
# virsh attach-disk --config Guest1 ~/NewStorage.xml
Copy to Clipboard Toggle word wrap
次のコマンドは、xml ファイルを使用せずに、ディスクを Guest1 に割り当てます。
# virsh attach-disk --config Guest1 --source /var/lib/libvirt/images/FileName.img --target vdb
Copy to Clipboard Toggle word wrap

13.3.6.2. Virtual Machine Manager を使用したゲストへのストレージデバイスの追加

ストレージボリュームをゲスト仮想マシンに追加するか、デフォルトのストレージデバイスを作成してゲスト仮想マシンに追加できます。
13.3.6.2.1. ゲストへのストレージボリュームの追加
ゲスト仮想マシンにストレージボリュームを追加するには、次のコマンドを実行します。
  1. 仮想マシンのハードウェアの詳細ウィンドウで Virtual Machine Manager を開きます。

    root で virt-manager コマンドを実行するか、Applications System Tools Virtual Machine Manager を開き、virt-manager を開きます。

    図13.14 Virtual Machine Manager ウィンドウ

    ストレージボリュームを追加するゲスト仮想マシンを選択します。
    Open をクリックします。仮想マシンのウィンドウが開きます。
    をクリックします。ハードウェアの詳細ウィンドウが表示されます。

    図13.15 Hardware Details ウィンドウ

  2. Add New Virtual Hardware ウィンドウが開きます。

    Add Hardware をクリックします。Add New Virtual Hardware ウィンドウが表示されます。
    ハードウェアタイプペインで Storage が選択されていることを確認します。

    図13.16 Add New Virtual Hardware ウィンドウ

  3. ストレージボリュームのリストを表示します。

    Select or create custom storage オプションのボタンを選択します。
    Manage をクリックします。Choose Storage Volume ダイアログが表示されます。

    図13.17 Select Storage Volume ウィンドウ

  4. ストレージボリュームを選択します。

    Select Storage Volume ウィンドウの左側にあるリストからストレージプールを選択します。選択したストレージプールのストレージボリュームのリストが、Volumes リストに表示されます。
    注記
    ストレージプールは、Select Storage Volume ウィンドウから作成できます。詳細は、「Virtual Machine Manager を使用したストレージプールの作成」 を参照してください。
    Volumes リストからストレージボリュームを選択します。
    注記
    Select Storage Volume ウィンドウから、ストレージボリュームを作成できます。詳細は、「Virtual Machine Manager を使用したストレージボリュームの作成」 を参照してください。
    Choose Volume をクリックします。Select Storage Volume ウィンドウが閉じます。
  5. ストレージボリュームの設定

    Device type リストからデバイスタイプを選択します。利用可能なタイプは、ディスクデバイス、フロッピーデバイス、および LUN パススルーです。
    Bus type リストからバスの種類を選択します。利用可能なバスの種類は、選択したデバイスタイプによって異なります。
    Cache modeリストからキャッシュモードを選択します。利用可能なキャッシュモードは次のとおりです: Hypervisor default、none、writethrough、writeback、directsync、unsafe
    Finish をクリックします。Add New Virtual Hardware ウィンドウが閉じます。
13.3.6.2.2. ゲストへのデフォルトストレージの追加
デフォルトのストレージプールは、/var/lib/libvirt/images/ ディレクトリーのファイルベースのイメージです。
ゲスト仮想マシンにデフォルトストレージを追加するには、次のコマンドを実行します。
  1. 仮想マシンのハードウェアの詳細ウィンドウで Virtual Machine Manager を開きます。

    root で virt-manager コマンドを実行するか、Applications System Tools Virtual Machine Manager を開き、virt-manager を開きます。

    図13.18 Virtual Machine Manager ウィンドウ

    ストレージボリュームを追加するゲスト仮想マシンを選択します。
    Open をクリックします。仮想マシンのウィンドウが開きます。
    をクリックします。ハードウェアの詳細ウィンドウが表示されます。

    図13.19 Hardware Details ウィンドウ

  2. Add New Virtual Hardware ウィンドウが開きます。

    Add Hardware をクリックします。Add New Virtual Hardware ウィンドウが表示されます。
    ハードウェアタイプペインで Storage が選択されていることを確認します。

    図13.20 Add New Virtual Hardware ウィンドウ

  3. ゲスト用のディスクの作成

    Create a disk image for the virtual machine が選択できることを確認します。
    Create a disk image for the virtual machine オプションボタンの下にあるテキストボックスに、作成するディスクのサイズを入力します。
    Finish をクリックします。Add New Virtual Hardware ウィンドウが閉じます。

13.3.6.3. ゲスト仮想マシンでのストレージコントローラーの管理

virtio ディスクとは異なり、SCSI デバイスではゲスト仮想マシンにコントローラーが存在する必要があります。本セクションでは、仮想 SCSI コントローラー ("Host Bus Adapter" または HBA とも呼ばれます) を作成し、SCSI ストレージをゲスト仮想マシンに追加するために必要な手順を詳細に説明します。

手順13.13 仮想 SCSI コントローラーの作成

  1. ゲスト仮想マシン (Guest1) の設定を表示し、以前から存在している SCSI コントローラーを検索します。
    # virsh dumpxml Guest1 | grep controller.*scsi
    Copy to Clipboard Toggle word wrap
    デバイスコントローラーが存在する場合は、このコマンドにより、次のような行が 1 つ以上出力されます。
    <controller type='scsi' model='virtio-scsi' index='0'/>
    
    Copy to Clipboard Toggle word wrap
  2. 前の手順でデバイスコントローラーが表示されなかった場合は、以下の手順に従って、新しいファイルにデバイスコントローラーの説明を作成し、仮想マシンに追加します。
    1. 新しいファイルに <controller> 要素を書き込んでデバイスコントローラーを作成し、このファイルを XML 拡張子で保存します。たとえば、virtio-scsi-controller.xml となります。
      <controller type='scsi' model='virtio-scsi'/>
      
      Copy to Clipboard Toggle word wrap
    2. virtio-scsi-controller.xml で作成したデバイスコントローラーをゲスト仮想マシン (例: Guest1) に関連付けます。
      # virsh attach-device --config Guest1 ~/virtio-scsi-controller.xml
      Copy to Clipboard Toggle word wrap
      この例では、--config オプションはディスクと同じように動作します。詳細は、「ゲストへのストレージデバイスの追加」 を参照してください。
  3. 新しい SCSI ディスクまたは CD-ROM を追加します。新規ディスクは、「ゲストへのストレージデバイスの追加」 の方法を使用して追加できます。SCSI ディスクを作成する場合は、sd で始まるターゲットデバイス名を指定します。
    注記
    各コントローラーでサポートされる制限は 1024 virtio-scsi ディスクですが、ホストで利用可能なその他のリソース (ファイル記述子など) が使い切られ、ディスクが少なくなる可能性があります。
    詳細は、次の Red Hat Enterprise Linux 6 ホワイトペーパーを参照してください: The next-generation storage interface for the Red Hat Enterprise Linux Kernel Virtual Machine: virtio-scsi
    # virsh attach-disk Guest1 /var/lib/libvirt/images/FileName.img sdb --cache none
    Copy to Clipboard Toggle word wrap
    ゲスト仮想マシンのドライバーのバージョンによっては、実行中のゲスト仮想マシンで新しいディスクがすぐに検出されない場合があります。Red Hat Enterprise Linux Storage Administration Guide の手順に従います。

13.3.7. ゲストからのストレージデバイスの削除

virsh または Virtual Machine Manager を使用して、仮想ゲストマシンからストレージデバイスを削除できます。

13.3.7.1. virsh を使用した仮想マシンからのストレージの削除

以下の例では、Guest1 仮想マシンから vdb ストレージボリュームを削除します。
# virsh detach-disk Guest1 vdb
Copy to Clipboard Toggle word wrap

13.3.7.2. Virtual Machine Manager を使用した仮想マシンからのストレージの削除

手順13.14 Virtual Machine Manager を使用した仮想マシンからのストレージの削除

Virtual Machine Manager を使用してゲスト仮想マシンからストレージを削除するには、次のコマンドを実行します。
  1. 仮想マシンのハードウェアの詳細ウィンドウで Virtual Machine Manager を開きます。

    root で virt-manager コマンドを実行するか、Applications System Tools Virtual Machine Manager を開き、virt-manager を開きます。
    ストレージデバイスを削除するゲスト仮想マシンを選択します。
    Open をクリックします。仮想マシンのウィンドウが開きます。
    をクリックします。ハードウェアの詳細ウィンドウが表示されます。
  2. ゲスト仮想マシンからストレージを削除します。

    ハードウェアの詳細ペインの左側にあるハードウェアのリストから、ストレージデバイスを選択します。
    削除 をクリックします。確認ダイアログが表示されます。
    Yes をクリックします。ストレージがゲスト仮想マシンから削除されます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

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

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

会社概要

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

Theme

© 2025 Red Hat