Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
コンテンツコンテンツ
仮想化ガイド
  1. 前書き
  2. I 概要
    1. 1 仮想化技術
    2. 2 仮想化シナリオ
    3. 3 Xen 仮想化の紹介
    4. 4 KVM 仮想化の紹介
    5. 5 仮想化ツール
    6. 6 仮想化コンポーネントのインストール
  3. II libvirt を利用した仮想マシンの管理
    1. 7 libvirt デーモン
    2. 8 VM ホストサーバ の準備
    3. 9 ゲストのインストール
    4. 10 基本的な VM ゲスト の管理
    5. 11 接続と認可
    6. 12 高度なストレージ設定
    7. 13 仮想マシンマネージャ を利用した仮想マシンの設定
    8. 14 virsh を利用した仮想マシンの設定
    9. 15 AMD SEV-SNP による仮想マシンのセキュリティ強化
    10. 16 VM ゲスト の移行
    11. 17 Xen から KVM への移行ガイド
  4. III 全ハイパーバイザ共通の機能
    1. 18 ディスクのキャッシュモード
    2. 19 VM ゲスト の時刻設定
    3. 20 libguestfs
    4. 21 QEMU ゲストエージェント
    5. 22 ソフトウエア TPM エミュレータ
    6. 23 VM ゲスト に対するクラッシュダンプの作成
  5. IV Xen を利用した仮想マシンの管理
    1. 24 仮想マシンホストの設定
    2. 25 仮想ネットワーク
    3. 26 仮想環境の管理
    4. 27 Xen 内でのブロックデバイス
    5. 28 仮想化: オプション設定
    6. 29 管理作業
    7. 30 XenStore: ドメイン間で共有される設定データベース
    8. 31 Xen の高可用性仮想化ホストとしての使用
    9. 32 Xen: 準仮想化 (PV) ゲストから完全仮想化 (FV/HVM) ゲストへの変換
  6. V QEMU を利用した仮想マシンの管理
    1. 33 QEMU の概要
    2. 34 KVM VM ホストサーバ の構築
    3. 35 ゲストのインストール
    4. 36 qemu-system-ARCH を利用した仮想マシンの実行
    5. 37 QEMU モニタを利用した仮想マシンの管理
  7. VI トラブルシューティング
    1. 38 内蔵ヘルプとパッケージのドキュメンテーション
    2. 39 システム情報とログの収集
  8. 用語集
  9. A NVIDIA カードに対する GPU パススルー の設定
  10. B GNU ライセンス
ナビゲーション
適用先 openSUSE Leap 15.6

8 VM ホストサーバ の準備 Edit source

ゲスト側の仮想マシンをインストールする前に、まずは VM ホストサーバ 内に必要なリソースを用意して環境を整える必要があります。具体的には下記の設定を行う必要があります:

  • ネットワーク: ホストが提供するネットワークと接続するための機能に関する設定を行います。

  • ストレージプール: ホストが提供するストレージをゲスト側からアクセスできるようにして、ディスクイメージ等を保存できるようにします。

8.1 ネットワークの設定 Edit source

VM ゲスト に対してネットワーク機能を提供するには、下記の 2 種類の方法があります:

  • ネットワークブリッジ: ゲスト側にネットワーク接続を提供する設定の既定値で、推奨される方式です。

  • 仮想ネットワーク: 転送機能を利用してネットワーク接続を提供する方式です。

8.1.1 ネットワークブリッジ Edit source

ネットワークブリッジは、 VM ゲスト に対してレイヤ 2 スイッチの機能を提供します。レイヤ 2 スイッチは、ポート間のパケット転送の際にレイヤ 2 イーサネットパケットを利用し、 MAC アドレスをベースにして宛先を判断します。これにより、 VM ホストサーバ から VM ゲスト に対して、レイヤ 2 アクセスのネットワークを提供することになります。これは、 VM ゲスト の仮想的なイーサネットケーブルがイーサネットハブに接続され、そこからホスト自身やホスト内で動作する他の VM ゲスト に接続できる形態と同じになります。この設定は、 共有物理デバイス と称することもあります。

ネットワークブリッジは、 openSUSE Leap を KVM または Xen のハイパーバイザとして設定した際の既定の設定になっています。これは VM ゲスト と VM ホストサーバ の LAN を単純に接続できるため、お勧めの方法でもあります。

ネットワークブリッジを作成する際に使用すべきツールは、 VM ホストサーバ 側でのネットワーク接続を管理する際に使用しているサービスによって異なります:

  • ネットワーク接続を wicked で管理している場合は、 YaST またはコマンドラインツールを利用してネットワークブリッジを作成します。サーバ用途として構築した場合は、 wicked が既定で使用されます。

  • ネットワーク接続を NetworkManager で管理している場合は、コマンドラインツール nmcli でネットワークブリッジを作成します。デスクトップ環境やラップトップ環境の場合は、 NetworkManager が既定で使用されます。

8.1.1.1 YaST を利用したネットワークブリッジの管理 Edit source

本章では、 YaST を利用してネットワークブリッジを追加または削除する方法を説明しています。

8.1.1.1.1 ネットワークブリッジの追加 Edit source

VM ホストサーバ にネットワークブリッジを追加するには、下記の手順を行います:

  1. YaST › システム › ネットワークの設定 を起動します。

  2. 概要 タブに移動して 追加 を押します。

  3. デバイスの種類 では ブリッジ を選択し、 設定名 の項目にはブリッジデバイスのインターフェイス名を入力します。あとは 次へ を押します。

  4. アドレス のタブでは、 DHCP 経由でアドレスを取得するか、もしくは固定で IP アドレスを設定するかを選択し、必要であれば IP アドレスやサブネットマスク、ホスト名などをそれぞれ入力します。

    可変 IP アドレス は、ブリッジが DHCP サーバに接続されているような場合のみ有用です。

    物理的なイーサネットデバイスへの接続を持たない仮想ブリッジを作成する場合は、 固定 IP アドレス を選択します。この場合、プライベート IP アドレスの範囲から選んで使用することをお勧めします。たとえば 192.168.0.0/16 , 172.16.0.0/12 , 10.0.0.0/8 などの中から選択します。

    ホストシステムとは接続しないゲスト間のみのネットワーク接続を作成する場合は、 IP アドレスを 0.0.0.0 、サブネットマスクを 255.255.255.255 に設定します。これにより、 IP アドレスを設定しない特殊なネットワークを構成することができます。

  5. ブリッジ接続デバイス のタブでは、ネットワークブリッジに含めたいネットワークデバイスを選択します。

  6. 次へ を押すと 概要 タブに戻りますので、設定内容を確認して OK を押します。これで VM ホストサーバ 内にネットワークブリッジが作成され、有効化されます。

8.1.1.1.2 ネットワークブリッジの削除 Edit source

既存のネットワークブリッジを削除するには、下記の手順を行います:

  1. YaST › システム › ネットワークの設定 を起動します。

  2. 概要 タブで削除したいブリッジデバイスを選択します。

  3. Delete を押してブリッジを削除し、 OK を押します。

8.1.1.2 コマンドラインを利用したネットワークブリッジの管理 Edit source

本章では、コマンドラインを利用してネットワークブリッジを追加もしくは削除する方法を説明しています。

8.1.1.2.1 ネットワークブリッジの追加 Edit source

VM ホストサーバ 内にネットワークブリッジを追加するには、下記の手順を行います:

  1. ネットワークブリッジを作成したい VM ホストサーバ にログインし、 root になります。

  2. まずは新しいブリッジの名前を選択します。下記の例では、 virbr_test という名前で作成するものとします。

    # ip link add name virbr_test type bridge
  3. VM ホストサーバ でブリッジが作成されたことを確認します:

    # bridge vlan
    [...]
    virbr_test  1 PVID Egress Untagged

    virbr_test という名前が現れていますが、この時点ではどの物理ネットワークインターフェイスにも結びつけられていません。

  4. ネットワークブリッジを起動して、ブリッジにネットワークインターフェイスを追加します:

    # ip link set virbr_test up
    # ip link set eth1 master virbr_test
    重要
    重要: ネットワークインターフェイスを使用していてはならない件について

    ここで指定できるネットワークインターフェイスは、他のネットワークブリッジで使用されているものであってはなりません。

  5. なお、必要であれば STP (スパニングツリープロトコル) を有効化することもできます:

    # bridge link set dev virbr_test cost 4
8.1.1.2.2 ネットワークブリッジの削除 Edit source

コマンドラインを利用して VM ホストサーバ のネットワークブリッジを削除するには、下記の手順を行います:

  1. ネットワークブリッジを削除したい VM ホストサーバ にログインし、 root になります。

  2. まずは既存のネットワークブリッジの一覧を表示させて、名前を確認します:

    # bridge vlan
    [...]
    virbr_test  1 PVID Egress Untagged
  3. ブリッジを削除します:

    # ip link delete dev virbr_test

8.1.1.3 nmcli を利用したネットワークブリッジの作成 Edit source

本章では、 NetworkManager が提供するコマンドラインツール nmcli を利用して、ネットワークブリッジを追加する方法を説明しています。

  1. まずは既存のネットワーク接続を確認します:

    > sudo nmcli connection show --active
    NAME                   UUID                                  TYPE      DEVICE
    Ethernet connection 1  84ba4c22-0cfe-46b6-87bb-909be6cb1214  ethernet  eth0
  2. br0 という名前の新しいブリッジデバイスを作成し、確認します:

    > sudo nmcli connection add type bridge ifname br0
    Connection 'bridge-br0' (36e11b95-8d5d-4a8f-9ca3-ff4180eb89f7) \
    successfully added.
    > sudo nmcli connection show --active
    NAME                   UUID                                  TYPE      DEVICE
    bridge-br0             36e11b95-8d5d-4a8f-9ca3-ff4180eb89f7  bridge    br0
    Ethernet connection 1  84ba4c22-0cfe-46b6-87bb-909be6cb1214  ethernet  eth0
  3. 必要であれば、ブリッジの設定を表示させてもよいでしょう:

    > sudo nmcli -f bridge connection show bridge-br0
    bridge.mac-address:                     --
    bridge.stp:                             yes
    bridge.priority:                        32768
    bridge.forward-delay:                   15
    bridge.hello-time:                      2
    bridge.max-age:                         20
    bridge.ageing-time:                     300
    bridge.group-forward-mask:              0
    bridge.multicast-snooping:              yes
    bridge.vlan-filtering:                  no
    bridge.vlan-default-pvid:               1
    bridge.vlans:                           --
  4. 物理イーサネットデバイス eth0 をブリッジデバイスに繋げます:

    > sudo nmcli connection add type bridge-slave ifname eth0 master br0
  5. あとは eth0 インターフェイスを無効化し、新しいブリッジを有効化します:

    > sudo nmcli connection down "Ethernet connection 1"
    > sudo nmcli connection up bridge-br0
    Connection successfully activated (master waiting for slaves) \
    (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9)

8.1.1.4 VLAN インターフェイスの使用 Edit source

状況によっては、 2 台の VM ホストサーバ 間や VM ゲスト 間で、プライベートな接続が必要となる場合があります。たとえば VM ゲスト を異なるネットワークセグメント内にあるホストに移行させる必要がある場合や、特定の VM ゲスト のみが接続できるプライベートブリッジが必要となる場合 (異なる VM ホストサーバ 内にあってもかまいません) などがそれにあたります。このような状況下では、 VLAN ネットワークを作成するのが最も簡単です。

VLAN インターフェイスは一般に VM ホストサーバ 内で設定を行います。この VLAN インターフェイスは異なる VM ホストサーバ システム間の相互接続として使用できるほか、 VM ゲスト のみが接続されたブリッジへの物理インターフェイスとしても設定することができます。このほか、 VM ホストサーバ では IP アドレスを設定せずに VLAN を物理インターフェイスに接続することもできてしまいます。これにより、 VM ゲスト から VM ホストサーバ に接続できないように設定できることになります。

まずは YaST を起動して システム › ネットワークの設定 を選択します。あとは下記の手順で VLAN インターフェイスを設定します:

手順 8.1: YaST を利用した VLAN インターフェイスの設定
  1. 追加 を押して新しいネットワークインターフェイスを作成します。

  2. インターフェイスの追加設定 内の デバイスの種類 では、 VLAN を選択します。

  3. VLAN ID では VLAN の ID を指定します。なお、 VLAN ID 1 は通常、管理用に使用します。

  4. 次へ を押します。

  5. VLAN の実インターフェイス では、 VLAN デバイスの接続先となるインターフェイスを選択します。一覧に必要なインターフェイスが表示されていない場合は、いったんキャンセルしてから、表示させたいインターフェイスを設定してください (このとき、 IP アドレスは指定しなくてかまいません) 。

  6. さらに VLAN デバイスへの IP アドレス設定方法を選択します。

  7. 次へ を押して設定を完了してください。

VLAN インターフェイスをブリッジの物理インターフェイスとして使用することもできます。これにより、特定の VM ホストサーバ と VM ゲスト のみを接続することができるようになりますので、そのネットワークを介して VM ゲスト を移行できるようになります。

場合によっては、 YaST で IP アドレスの設定を無くすことができない場合があります。たとえば VM ゲスト のみを接続するようなネットワークがそれにあたります。このような場合は、 IP アドレスに 0.0.0.0 を、サブネットマスクに 255.255.255.255 をそれぞれ指定してください。これにより IP アドレス無しでの設定ができるようになります。

8.1.2 仮想ネットワーク Edit source

libvirt が管理する仮想ネットワークはブリッジ型のネットワークと似ていますが、一般的には VM ホストサーバ とのレイヤ 2 接続は行いません。 VM ホストサーバ の物理ネットワークへの接続は、レイヤ 3 転送を利用して実現します。これは VM ホストサーバ 側でパケット転送の機能を提供するもので、レイヤ 2 ブリッジ型ネットワークとは異なる方式になります。この種類の仮想ネットワークでは VM ゲスト に対して DHCP や DNS のサービスを提供することもできます。 libvirt の仮想ネットワーク機能に関する詳細は、 https://libvirt.org/formatnetwork.html にある Network XML format の章をお読みください。

openSUSE Leap で標準的な方法で libvirt のインストールを行うと、 default という名前の仮想ネットワークが作成され、 DHCP と DNS の機能がそれぞれ提供されるようになります。また、この仮想ネットワークにはアドレス変換 (NAT) 機能が提供され、 VM ホストサーバ の物理ネットワークに接続できるようになります。これはあらかじめ設定済みの形で提供されますが、管理者側で有効化する必要があります。 libvirt でサポートされている転送モードの詳細について、詳しくは https://libvirt.org/formatnetwork.html#elementsConnect にある Network XML format ドキュメンテーションをお読みください。

libvirt が管理する仮想ネットワークは幅広い用途に対応していて、必要な機能のほとんどに対応していますが、ラップトップなどの無線接続や動的な (間欠的な) 接続の場合には不十分です。また仮想ネットワークは、仮想ネットワークと VM ホストサーバ のネットワークとの間でパケット転送を行うことから、 VM ホストサーバ の接続しているネットワーク内で IP アドレス数が不足しているような環境に有用でもあります。しかしながら、サーバ用途の場合は、 VM ゲスト を VM ホストサーバ の LAN に接続するネットワークブリッジ型の構成のほうが便利ではあります。

警告
警告: 転送モードの有効化について

libvirt の仮想ネットワークに対して転送モードを有効化するには、まず /proc/sys/net/ipv4/ip_forward/proc/sys/net/ipv6/conf/all/forwarding をそれぞれ 1 に設定する必要があります。これにより、 VM ホストサーバ をルータとして動作させることができるようになります。なお、 VM ホストサーバ のネットワークを再起動してしまうと、これらの値はリセットされ転送機能が無効化されてしまいます。再起動後も転送モードを有効化したい場合は、 VM ホストサーバ 内の /etc/sysctl.conf ファイルを編集して、下記の内容を追記してください:

net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

8.1.2.1 仮想マシンマネージャ を利用した仮想ネットワークの管理 Edit source

仮想マシンマネージャ を利用することで、仮想ネットワークの作成や設定、操作などを行うことができます。

8.1.2.1.1 仮想ネットワークの作成 Edit source
  1. まずは 仮想マシンマネージャ を起動します。利用可能な接続が表示されますので、設定したい仮想ネットワークの名前を選択して 詳細 を押します。

  2. 接続の詳細 ウインドウで 仮想ネットワーク タブを選択します。ここには現在の接続で利用可能な全ての仮想ネットワークが表示されるほか、右側には選択した仮想ネットワークの詳細が表示されます。

    接続の詳細
    図 8.1: 接続の詳細
  3. 新しい仮想ネットワークを追加するには、 追加 を押します。

  4. まずは新しい仮想ネットワークの名前を指定します。

    仮想ネットワークの作成
    図 8.2: 仮想ネットワークの作成
  5. 次にネットワークモードを指定します。 NAT および ルーティング の場合は、ネットワーク通信の転送先デバイスを指定することができます。 NAT (Network Address Translation; ネットワークアドレス変換) は仮想的なネットワークアドレス領域を特定の IP アドレスに割り当てるための方式で、 1 つの IP アドレスを複数のゲストで共有することができるようになります。 ルーティング は仮想ネットワーク側からのパケットを、そのまま VM ホストサーバ の物理ネットワークに転送する方式です。

  6. IPv4 ネットワークを使用する場合は Enable IPv4 を選択して利用したい IPv4 ネットワークアドレスを入力します。 DHCP サーバが必要な場合は、 Enable DHCPv4 を選択して、割り当てるべきアドレス範囲を指定します。

  7. IPv6 ネットワークを使用する場合は Enable IPv6 を選択して利用したい IPv6 ネットワークアドレスを入力します。 DHCP サーバが必要な場合は、 Enable DHCPv6 を選択して、割り当てるべきアドレス範囲を指定します。

  8. 仮想ネットワークとは異なるドメイン名を設定したい場合は、 DNS domain nameCustom を選択し、ドメイン名を入力します。

  9. 完了 を押すと新しい仮想ネットワークを作成することができます。 VM ホストサーバ 側では新しい仮想ネットワークブリッジである virbrX が作成され、これが新しい仮想ネットワークになります。これは bridge link コマンドで確認することができます。 libvirt では自動的に iptables のルールを追加して、新しく作成した virbrX でのゲスト間の通信可否を設定します。

8.1.2.1.2 仮想ネットワークの起動 Edit source

停止済みの仮想ネットワークを起動するには、下記の手順で行います:

  1. まずは 仮想マシンマネージャ を起動します。利用可能な接続が表示されますので、設定したい仮想ネットワークの名前を選択して 詳細 を押します。

  2. 接続の詳細 ウインドウ内では 仮想ネットワーク タブを選択します。ここには現在の接続で利用可能な、全ての仮想ネットワークが一覧表示されます。

  3. 仮想ネットワークを起動するには、 開始 を押します。

8.1.2.1.3 仮想ネットワークの停止 Edit source

起動済みの仮想ネットワークを停止するには、下記の手順で行います:

  1. まずは 仮想マシンマネージャ を起動します。利用可能な接続が表示されますので、設定したい仮想ネットワークの名前を選択して 詳細 を押します。

  2. 接続の詳細 ウインドウ内では 仮想ネットワーク タブを選択します。ここには現在の接続で利用可能な、全ての仮想ネットワークが一覧表示されます。

  3. 停止させたい仮想ネットワークを選択して、 停止 を押します。

8.1.2.1.4 仮想ネットワークの削除 Edit source

VM ホストサーバ から仮想ネットワークを削除するには、下記の手順で行います:

  1. まずは 仮想マシンマネージャ を起動します。利用可能な接続が表示されますので、設定したい仮想ネットワークの名前を選択して 詳細 を押します。

  2. 接続の詳細 ウインドウ内では 仮想ネットワーク タブを選択します。ここには現在の接続で利用可能な、全ての仮想ネットワークが一覧表示されます。

  3. 削除したい仮想ネットワークを選択して 削除 を押します。

8.1.2.1.5 NAT ネットワークでの nsswitch を利用した IP アドレスの取得 (KVM) Edit source
  • VM ホストサーバ 側に libvirt-nss をインストールします。これは libvirt 向けに NSS サポートを提供するものです:

    > sudo zypper in libvirt-nss
  • /etc/nsswitch.conflibvirt を追記します:

    ...
    hosts:  files libvirt mdns_minimal [NOTFOUND=return] dns
    ...
  • NSCD を起動している場合は、再起動します:

    > sudo systemctl restart nscd

これでホスト側からゲストを名前で接続できるようになります。

なお、 NSS モジュールの機能は完全ではありません。 dnsmasq が提供する /var/lib/libvirt/dnsmasq/*.status ファイルを読み込んで、 JSON レコード形式で記述されているホスト名と IP アドレスを検出します。ホスト名の変換は、 dnsmasq の動作している libvirt 管理下のブリッジ型ネットワークの VM ホストサーバ でのみ動作します。

8.1.2.2 virsh を利用した仮想ネットワークの管理 Edit source

libvirt が提供する仮想ネットワークは、 virsh コマンドラインツールで管理することができます。 virsh で利用可能なネットワーク関連のコマンドを一覧表示するには、下記のように入力して実行します:

> sudo virsh help network
Networking (help keyword 'network'):
    net-autostart                  ネットワークの自動起動
    net-create                     XML ファイルによるネットワークの作成
    net-define                     define (but don't start) a network from an XML file
    net-destroy                    ネットワークの強制停止
    net-dumpxml                    XML 形式のネットワーク情報
    net-edit                       ネットワークの XML 設定の編集
    net-event                      Network Events
    net-info                       ネットワーク情報
    net-list                       ネットワークの一覧表示
    net-name                       ネットワーク UUID からネットワーク名への変換
    net-start                      停止状態の(定義済み)ネットワークの起動
    net-undefine                   undefine an inactive network
    net-update                     既存のネットワーク設定の一部分の更新
    net-uuid                       ネットワーク名からネットワーク UUID への変換
    net-port-list                  list network ports
    net-port-create                create a network port from an XML file
    net-port-dumpxml               network port information in XML
    net-port-delete                delete the specified network port

virsh の特定のコマンドに対するヘルプを表示したい場合は、 virsh help コマンド のように入力して実行してください。

> sudo virsh help net-create
  名前
    net-create - XML ファイルによるネットワークの作成

  形式
    net-create <file>

  詳細
    ネットワークを作成します。

  オプション
    [--file] <string>  ネットワーク の XML 記述を含むファイル
8.1.2.2.1 ネットワークの作成 Edit source

新しい 動作中 の仮想ネットワークを作成するには、下記のように入力して実行します:

> sudo virsh net-create 定義ファイル名.xml

ここで、 定義ファイル名.xml には、 libvirt が受け入れ可能な XML 形式で記述された、仮想ネットワークの設定ファイルを指定します。

有効化せずに新しい仮想ネットワークを追加したい場合は、下記のように入力して実行します:

> sudo virsh net-define 定義ファイル名.xml

下記には、様々な種類の仮想ネットワークの設定例を示しています。

例 8.1: NAT ベースのネットワーク

下記の設定は VM ゲスト から外部に発信する通信を許可するネットワーク設定です。ただし、 VM ホストサーバ 側で外部に接続することのできる環境が必要です。 VM ホストサーバ 側にそのようなネットワークが用意されていない場合、相互に通信できるだけのネットワークになります。

<network>
<name>vnet_nated</name>1
<bridge name="virbr1"/>2
 <forward mode="nat"/>3
 <ip address="192.168.122.1" netmask="255.255.255.0">4
  <dhcp>
   <range start="192.168.122.2" end="192.168.122.254"/>5
   <host mac="52:54:00:c7:92:da" name="host1.testing.com" \
    ip="192.168.1.101"/>6
   <host mac="52:54:00:c7:92:db" name="host2.testing.com" \
    ip="192.168.1.102"/>
   <host mac="52:54:00:c7:92:dc" name="host3.testing.com" \
    ip="192.168.1.103"/>
  </dhcp>
 </ip>
</network>

1

新しい仮想ネットワークの名前です。

2

仮想ネットワークを構築する際のブリッジデバイス名を指定します。 <forward> (転送) モードが "nat" もしくは "route" のネットワークを作成する場合 (もしくは <forward> 要素を指定せず、孤立したネットワークを作成する場合) で、何も名前を指定しない場合、 libvirt が自動的にユニークな名前を生成して使用します。

3

<forward> 要素を含めることで、仮想ネットワークを物理 LAN に接続することができるようになります。 mode (モード) 属性は転送方法を指定する属性で、最もよく使用されるものが "nat" (Network Address Translation (ネットワークアドレス変換); 既定値), "route" (アドレス変換を行わずに直接物理ネットワークに転送), "bridge" (libvirt の外部で設定されるブリッジに接続) のいずれかです。 <forward> 要素を何も指定しないと、その仮想ネットワークは他のネットワークから隔離 (孤立) されることになります。それ以外の転送モードについて、詳しくは https://libvirt.org/formatnetwork.html#elementsConnect をお読みください。

4

ネットワークブリッジに設定する IP アドレスとネットマスクです。

5

仮想ネットワークに対して DHCP サーバ機能を有効化し、 start 属性と end 属性で指定した範囲の IP アドレスを提供します。

6

指定は任意ですが、 <host> 要素を設定することで、内蔵の DHCP サーバに対して割り当てるべき IP アドレスを設定することもできます。この <host> 要素では、 IPv4 の場合は割当先のホストの MAC アドレスと DHCP サーバが割り当てるべき IP アドレス、そしてホスト名をそれぞれ設定します。 IPv6 の場合は IPv4 と少し異なり、 IPv6 では使用しない mac 属性が存在しない代わりに、 name 属性でホストを識別します。 DHCPv6 の場合、 name 属性は対象の純粋なホスト名である必要があります。なお、 IPv4 でも mac の代わりにホスト名を使用することができます。

例 8.2: ルーティング型のネットワーク

下記の設定は、仮想ネットワーク内のトラフィックを LAN にそのまま (NAT を適用せずに) 転送する場合の例を示しています。 IP アドレスの範囲は、 VM ホストサーバ 側のネットワークルータであらかじめ設定されていなければなりません。

<network>
 <name>vnet_routed</name>
 <bridge name="virbr1"/>
 <forward mode="route" dev="eth1"/>1
 <ip address="192.168.122.1" netmask="255.255.255.0">
  <dhcp>
   <range start="192.168.122.2" end="192.168.122.254"/>
  </dhcp>
 </ip>
</network>

1

この例では、ゲスト側のトラフィックは VM ホストサーバ 内の eth1 デバイスを介して送信されます。

例 8.3: 孤立したネットワーク

この設定は、プライベートネットワークとして完全に孤立させる設定例となります。ゲスト同士や VM ホストサーバ との間では通信ができるものの、 LAN 内のマシンからは全く接続できなくなります。これは XML の設定内に <forward> 要素が存在していないためです。

<network>
 <name>vnet_isolated</name>
 <bridge name="virbr3"/>
 <ip address="192.168.152.1" netmask="255.255.255.0">
  <dhcp>
   <range start="192.168.152.2" end="192.168.152.254"/>
  </dhcp>
 </ip>
 </network>
例 8.4: VM ホストサーバ にある既存のブリッジの使用

この設定は、 VM ホストサーバ 内にある既存のネットワークブリッジ br0 を使用する場合の例です。 VM ゲスト は物理ネットワークに直接接続される形になります。 VM ゲスト の IP アドレスは物理ネットワークと同じサブネットでなければなりませんが、その代わり、接続に関する制限は送受信ともになくなります。

<network>
        <name>host-bridge</name>
        <forward mode="bridge"/>
        <bridge name="br0"/>
</network>
8.1.2.2.2 ネットワークの一覧表示 Edit source

libvirt で利用可能な仮想ネットワークの一覧を表示するには、下記のように入力して実行します:

> sudo virsh net-list --all

 名前                 状態       自動起動      永続
----------------------------------------------------------
 crowbar              動作中     はい (yes)    はい (yes)
 vnet_nated           動作中     はい (yes)    はい (yes)
 vnet_routed          動作中     はい (yes)    はい (yes)
 vnet_isolated        停止状態   はい (yes)    はい (yes)

利用可能なドメインの一覧を表示するには、下記のように入力して実行します:

> sudo virsh list
 Id    名前                           状態
----------------------------------------------------
 1     nated_sles12sp3                動作中
 ...

動作中のドメインのインターフェイス一覧を表示したい場合は、 domifaddr ドメイン のように入力して実行します。このとき、インターフェイス名を直接指定して実行することもできます。既定では IP アドレスと MAC アドレスがそれぞれ出力されます:

> sudo virsh domifaddr nated_sles12sp3 --interface vnet0 --source lease
 名前       MAC アドレス          Protocol     Address
-------------------------------------------------------------------------------
 vnet0      52:54:00:9e:0d:2b    ipv6         fd00:dead:beef:55::140/64
 -          -                    ipv4         192.168.100.168/24

指定したドメインに関連づけられた全ての仮想インターフェイスの概要情報を表示するには、下記のように入力して実行します:

> sudo virsh domiflist nated_sles12sp3
Interface  Type       Source       Model       MAC
---------------------------------------------------------
vnet0      network    vnet_nated   virtio      52:54:00:9e:0d:2b
8.1.2.2.3 ネットワークの関する詳細の取得 Edit source

ネットワークに関する詳細情報を取得するには、下記のように入力して実行します:

> sudo virsh net-info vnet_routed
名前:           vnet_routed
UUID:           756b48ff-d0c6-4c0a-804c-86c4c832a498
起動中:         はい (yes)
永続:           はい (yes)
自動起動:       はい (yes)
ブリッジ:         virbr5
8.1.2.2.4 ネットワークの起動 Edit source

設定済みではあるものの、現在起動していないネットワークを起動したい場合は、まず対象の名前 (もしくは識別子や UUID) を判断します。具体的には、下記のように入力して実行します:

> sudo virsh net-list --inactive
 名前                 状態        自動起動      永続
----------------------------------------------------------
 vnet_isolated        停止状態    はい (yes)    はい (yes)

あとは下記のように入力して実行します:

> sudo virsh net-start vnet_isolated
ネットワーク vnet_isolated を起動しました
8.1.2.2.5 ネットワークの停止 Edit source

動作中のネットワークを停止するには、まず対象の名前 (もしくは識別子や UUID) を判断します。具体的には、下記のように入力して実行します:

> sudo virsh net-list --inactive
 名前                 状態        自動起動      永続
----------------------------------------------------------
 vnet_isolated        動作中      はい (yes)    はい (yes)

あとは下記のように入力して実行します:

> sudo virsh net-destroy vnet_isolated
ネットワーク vnet_isolated は強制停止されました
8.1.2.2.6 ネットワークの削除 Edit source

停止したネットワークの設定を VM ホストサーバ から完全に停止したい場合は、下記のように入力して実行します:

> sudo virsh net-undefine vnet_isolated
ネットワーク vnet_isolated の定義が削除されました

8.2 ストレージプールの設定 Edit source

VM ホストサーバ 自身から VM ゲスト を管理する場合であれば、 VM ホストサーバ のファイルシステム内で任意の箇所にアクセスして仮想ハードディスクを割り当てたり作成したりすることができますし、既存のイメージを VM ゲスト に割り当てたりすることができます。しかしながら、このような機能は VM ゲスト をリモートから管理しようとしている場合には実現できません。このような理由から、 libvirt では ストレージプール と呼ばれる機能を提供して、リモートからアクセスできるようにしています。

ヒント
ヒント: CD/DVD ISO イメージ

リモートのクライアントから VM ホストサーバ 内の CD/DVD イメージにアクセスできるようにするには、まずそれらのイメージをストレージプール内に配置します。

libvirt では 2 種類のストレージを管理しています。それらはボリュームとプールと呼ばれます。

ストレージボリューム

ストレージボリュームは、ゲストに対して割り当てることのできるストレージデバイスを意味します。たとえば仮想ディスクや CD/DVD イメージのほか、フロッピィディスクイメージなども該当します。また、ストレージボリュームを物理デバイス (パーティションや論理ボリュームなど) に設定することもできますし、 VM ホストサーバ 内のファイルとして存在させることもできます。

ストレージプール

ストレージプールは VM ホストサーバ 内のストレージリソースを意味するもので、その中にストレージボリュームが存在する形になります。デスクトップマシンにおけるネットワークストレージのような存在です。物理的には下記のいずれかの形態を取ることができます:

ファイルシステム内のディレクトリ ( dir )

イメージファイルを含むディレクトリの形態です。イメージファイルにはディスク形式 (raw, qcow2) のほか、 ISO イメージであってもかまいません。

物理ディスクデバイス ( disk )

物理ディスク全体をストレージプールとして使用する形態です。その中にパーティションを作成してストレージボリュームを設定し、プールへの追加を行います。

フォーマット済みブロックデバイス ( fs )

ファイルシステムのディレクトリをストレージプールとして使用する場合と同様に、特定のパーティションをストレージプールとして使用する形態です。ただし、この方式の場合は、 libvirt 側でデバイスのマウント処理を行います。

iSCSI ターゲット (iscsi)

iSCSI ターゲット内にストレージプールを作成する形態です。この場合は、 libvirt で使用するより前に、あらかじめボリュームにログインしておく必要があります。 YaST の iSCSI イニシエータ モジュールを利用してターゲットを検出し、ログインしておいてください。 iSCSI ストレージプール内でのボリューム作成はサポートされていませんが、既存の論理ユニット番号 (LUN) そのものがボリュームそのものになります。それぞれのボリューム (LUN) を使用するには、あらかじめパーティションテーブルを作成しておくか、ディスクラベルを設定しておく必要があります。いずれも存在していない場合は、 fdisk で設定してください:

> sudo fdisk -cu /dev/disk/by-path/ip-192.168.2.100:3260-iscsi-iqn.2010-10.com.example:[...]-lun-2
デバイスには認識可能なパーティション情報が含まれていません。
新しい DOS ディスクラベルを作成しました。識別子は 0xdeadbeef です。

コマンド (m でヘルプ): w
パーティション情報が変更されました。
ディスクを同期しています。
LVM ボリュームグループ (logical)

LVM のボリュームグループをプールとして使用する形態です。設定済みのボリュームグループの中から選択するか、もしくは使用したいデバイスを指定してグループを作成することができます。ストレージボリュームは、その中のパーティションとして作成されます。

警告
警告: LVM ベースのプールの削除

LVM ベースのプールをストレージマネージャで削除した場合、ボリュームグループについても削除が行われます。そのため、プール内にあるデータは完全に削除され、復元できなくなることに注意してください!

マルチパスデバイス ( mpath )

現時点では、マルチパスデバイスへのサポートは限定的で、ゲストに対して既存のデバイスを割り当てることだけができます。 libvirt 内からマルチパスデバイスのボリュームを作成する機能は提供されていません。

ネットワーク公開ディレクトリ ( netfs )

ファイルシステムのディレクトリプール (イメージファイルをディレクトリ内に配置する) と同様に、ネットワークディレクトリを指定して、そのディレクトリ内に配置する方法です。ただし、こちらの場合は libvirt 側でマウント処理を行います。こちらは NFS に対応しています。

SCSI ホストアダプタ ( scsi )

iSCSI ターゲットと同様に SCSI ホストアダプタを使用する方法です。この場合、デバイス名に /dev/sdX ではなく、 /dev/disk/by-* を使用することをお勧めします。これは、 /dev/sdX を使用してしまうと、ハードディスクの取り付けや取り外しなどで名前が変化してしまうことがあり得るためです。 iSCSI プール内のボリューム作成には対応していませんが、既存の LUN (論理ユニット番号; Logical Unit Number) がそのままボリュームを表します。

警告
警告: セキュリティ面の考慮事項について

データの損失や破壊を防ぐため、 LVM ボリュームグループや iSCSI ターゲットなど、 VM ホストサーバ のストレージプールを構成するリソースを別目的で使用してはなりません。これらに対する必要な処理は libvirt が行いますので、 VM ホストサーバ から直接接続する必要はありませんし、 VM ホストサーバ からマウントする必要もありません。

また VM ホストサーバ では、ラベルによるマウントも行わないようにしてください。ラベルによるマウントを行ってしまうと、本来は VM ゲスト 側で使用すべきパーティションを VM ホストサーバ 側が検知して、マウントしてしまう危険性があるためです。

8.2.1 virsh を利用したストレージの管理 Edit source

コマンドラインからのストレージの管理についても、 virsh から行うことができます。ただし、ストレージプールの作成は現時点では SUSE のサポート対象外となっております。そのため、本章ではプールの起動/停止/削除のほか、ボリュームの管理に絞って説明しています。

virsh で利用可能なプール/ボリューム管理関連のサブコマンド一覧を表示するには、 virsh help pool および virsh help volume を実行します。

8.2.1.1 ブールとボリュームの一覧表示 Edit source

現時点で有効化されているプールの一覧を表示するには、下記のコマンドを入力して実行します。無効化されているプールも表示したい場合は、 --all オプションを追加してください:

> virsh pool-list --details

特定のプールに関する詳細を表示したい場合は、 pool-info サブコマンドを使用します:

> virsh pool-info プール名

既定では、ボリュームはプールごとに表示されます。プール内の全てのボリュームを表示したい場合は、下記のように入力して実行します:

> virsh vol-list --details プール名

現時点では、 virsh はゲスト側で使用されているかどうかを表示する機能は提供されていません。下記の手順を行うことで、 VM ゲスト 側で使用されている全てのプール内のボリュームを表示することができます。

手順 8.2: VM ホストサーバ で使用されている全てのストレージボリュームの一覧表示
  1. まずは下記のような内容で XSLT スタイルシートのファイルを作成します。たとえば ~/libvirt/guest_storage_list.xsl というファイル名で保存します:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="text"/>
      <xsl:template match="text()"/>
      <xsl:strip-space elements="*"/>
      <xsl:template match="disk">
        <xsl:text>  </xsl:text>
        <xsl:value-of select="(source/@file|source/@dev|source/@dir)[1]"/>
        <xsl:text>&#10;</xsl:text>
      </xsl:template>
    </xsl:stylesheet>
  2. あとは下記のようなコマンドをシェル内で実行します。なお、ゲスト側の XML 設定は全て既定の場所 ( /etc/libvirt/qemu ) に保存されているものとします。また、 xsltproclibxslt パッケージ内に含まれています。

    SSHEET="$HOME/libvirt/guest_storage_list.xsl"
    cd /etc/libvirt/qemu
    for FILE in *.xml; do
      basename $FILE .xml
      xsltproc $SSHEET $FILE
    done

8.2.1.2 プールの起動/停止/削除 Edit source

virsh pool サブコマンドを使用することで、プールの起動と停止、削除をそれぞれ行うことができます。下記では、 プール名 の箇所をプールの名前もしくは UUID に置き換えて実行してください:

プールの停止
> virsh pool-destroy プール名
注記
注記: プールの状態は割り当てられているボリュームとは無関係である件について

既に VM ゲスト に割り当てられているプール内のボリュームについては、そのプールの状態 ( 動作中 もしくは 停止 ) に関わらず、常にアクセスできる状態になります。プールの状態は、リモートから VM ゲスト のボリュームを管理する場合にのみ有効となります。

プールの削除
> virsh pool-delete プール名
警告
警告: ストレージプールの削除

警告: ストレージプールの削除 をお読みください

プールの起動
> virsh pool-start プール名
プールの自動起動の有効化
> virsh pool-autostart プール名

自動起動が有効化されたプールは、 VM ホストサーバ の起動時に自動的に起動が行われるようになります。

プールの自動起動の無効化
> virsh pool-autostart プール名 --disable

8.2.1.3 ストレージプールへのボリュームの追加 Edit source

virsh ではストレージプールにボリュームを追加するにあたって、 2 種類の方法を提供しています。 vol-create および vol-create-from を利用して、 XML 設定ファイルから追加する方法と、 vol-create-as のコマンドラインにパラメータを設定して追加する方法です。前者は現時点で SUSE 側でサポート対象となっていませんので、本章では vol-create-as を説明します。

既存のプールにボリュームを追加するには、下記のようなコマンドを入力して実行します:

> virsh vol-create-as プール名1名前2 12G --format3raw|qcow24 --allocation 4G5

1

ボリュームを追加したいプールの名前を指定します

2

ボリュームの名前を指定します

3

イメージのサイズを指定します。この例では 12 ギガバイトを指定していますが、 k (キロバイト), M (メガバイト), G (ギガバイト), T (テラバイト) の各接尾辞を指定することができます。

4

ボリュームの形式を指定します。 SUSE では rawqcow2 をサポート対象としています。

5

任意指定のパラメータです。既定では、 virsh はスパースファイルという形式でイメージファイルを作成し、必要に応じて自動的にサイズが拡張されるようになりますが、ここで指定したサイズ (この例では 4 ギガバイト) を事前に割り当てておくことができます。なお、 k (キロバイト), M (メガバイト), G (ギガバイト), T (テラバイト) の各接尾辞を指定することができます。

このパラメータを指定しない場合、事前の割り当ての無いスパースファイルを作成することになります。あらかじめ全てのサイズを割り当てておきたい (非スパースファイルを作成したい) 場合は、イメージのサイズと同じ値 (この例では 12G) を指定してください。

8.2.1.3.1 既存のボリュームの複製 Edit source

プールにボリュームを追加するもう 1 つの方法として、既存のボリュームの複製という手段があります。新しいボリュームは元のボリュームと同じプール内に作成されます。

> virsh vol-clone 既存のボリューム名1新しいボリューム名2 --pool プール3

1

複製元となる既存のボリューム名を指定します

2

新しいボリューム名を指定します

3

任意指定のパラメータです。 libvirt では既存のボリュームの配置先を自動的に判断しますが、それがうまくいかない場合に、このパラメータを指定してください。

8.2.1.4 ストレージプールからのボリュームの削除 Edit source

プールからボリュームを恒久的に削除したい場合は、 vol-delete サブコマンドを使用します:

> virsh vol-delete ボリューム名 --pool プール名

--pool は任意指定で、通常は libvirt がボリュームのプールを自動的に判断しますが、それがうまくいかない場合には、このパラメータを指定してください。

警告
警告: ボリューム削除時のチェックにいて

ボリュームは VM ゲスト 側が使用しているかどうかにかかわらず、どのような状況下であっても削除ができてしまいます。また、削除したボリュームを復元する方法はありません。

ボリュームが VM ゲスト 側で使用されているかどうかを判断したい場合は、 手順8.2「VM ホストサーバ で使用されている全てのストレージボリュームの一覧表示」 の手順を行ってください。

8.2.1.5 VM ゲスト へのボリュームの割り当て Edit source

8.2.1.3項 「ストレージプールへのボリュームの追加」 で説明している手順でボリュームを作成したら、あとは仮想マシンへの割り当てを行ってハードディスクとして使用できるようにします:

> virsh attach-disk ドメイン イメージファイル 接続先ディスクデバイス

たとえば下記のようになります:

> virsh attach-disk sles12sp3 /virt/images/example_disk.qcow2 sda2

ディスクが接続できたかどうかを確認するには、 virsh dumpxml コマンドの出力を確認します:

# virsh dumpxml sles12sp3
[...]
<disk type='file' device='disk'>
 <driver name='qemu' type='raw'/>
 <source file='/virt/images/example_disk.qcow2'/>
 <backingStore/>
 <target dev='sda2' bus='scsi'/>
 <alias name='scsi0-0-0'/>
 <address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
[...]
8.2.1.5.1 ホットプラグ (活性接続) /恒久的な変更 Edit source

ディスクの接続は、対象のドメインが動作中であっても停止済みであっても実施することができます。また、 --live--config のオプションを使用することで、それぞれ下記のような動作を行うことができます:

--live

動作中のドメインに対してディスクをホットプラグします。接続の情報はドメインの設定ファイル内には保存されません。また、ドメインが動作中ではない場合、 --live オプションを指定するとエラーになります。

--config

ドメインの設定ファイルを恒久的に変更します。接続されたディスクは次回のドメイン起動以降に利用できるようになります。

--live --config

ディスクをホットプラグで接続すると共に、ドメインの設定ファイルを恒久的に変更します。

ヒント
ヒント: virsh attach-device

virsh attach-device コマンドは virsh attach-disk コマンドのより一般的な形式です。このコマンドは、ドメインに対して様々な種類のデバイスを接続することができます。

8.2.1.6 VM ゲスト からのボリュームの接続解除 Edit source

ドメインに対してディスクへの接続を解除したい場合は、 virsh detach-disk コマンドを使用します:

# virsh detach-disk ドメイン 接続先のディスクデバイス

たとえば下記のようになります:

# virsh detach-disk sles12sp3 sda2

8.2.1.5項 「VM ゲスト へのボリュームの割り当て」 で説明しているのと同様に、こちらでも --live オプションや --config オプションで接続方式を制御することができます。

8.2.2 仮想マシンマネージャ を利用したストレージの管理 Edit source

仮想マシンマネージャ はグラフィカルインターフェイスを提供するソフトウエアで、この中のストレージマネージャの機能を使用することで、ボリュームやプールを管理することができます。ストレージマネージャにアクセスするには、接続を選択してマウスの右ボタンを押し、表示されたメニューから 詳細 を選択するか、接続を選択して 編集 › 接続の詳細 を選択します。その後 ストレージ タブを選択してください。

8.2.2.1 ストレージプールの追加 Edit source

ストレージプールを追加するには、下記の手順を行います:

  1. 左下の 追加 ボタンを押します。 新しいストレージプールを作成 というダイアログが表示されるはずです。

  2. まずはプールに対する 名前 を入力します (名前には英数字のほか、 _ , - , . の各記号を使用することができます) 。あとは 種類 を選択します。

  3. あとはプールの種類に従って詳細を指定します。それぞれ下記のようになります:

    重要
    重要

    ZFS プールには対応していません。

    種類 = dir の場合:
    • Target Path : 既存のディレクトリを選択します。

    種類 = disk の場合:
    • フォーマット : デバイスのパーティションテーブルの形式を指定します。通常は auto のままでかまいませんが、正しく検出できない場合は、 VM ホストサーバ 側で parted -l を実行して形式を判別し、指定してください。

    • ソースパス : デバイスのパスを指定します。 /dev/sdX のようなパスではなく、 /dev/disk/by-* のパスで指定することをお勧めします。これは、 /dev/sdX を使用してしまうと、ハードディスクの取り付けや取り外しなどで名前が変化してしまうことがあり得るためです。また、パーティションではなくディスク全体を表すパスを指定してください。

    種類 = fs の場合:
    • Target Path : VM ホストサーバ 内のファイルシステムでのマウントポイントを指定します。

    • フォーマット : デバイスのファイルシステム形式を指定します。既定値である auto で問題なく動作するはずです。

    • ソースパス : デバイスファイルのパスを指定します。 /dev/sdX のようなパスではなく、 /dev/disk/by-* のパスで指定することをお勧めします。これは、 /dev/sdX を使用してしまうと、ハードディスクの取り付けや取り外しなどで名前が変化してしまうことがあり得るためです。

    種類 = iscsi の場合:

    VM ホストサーバ 側で下記のコマンドを入力して実行し、必要なデータを収集してください:

    > sudo iscsiadm --mode node

    上記のように入力して実行すると、下記のような形式で iSCSI ボリュームの一覧が出力されます。下記のうち、太字の部分が必要な情報になります:

    IP_アドレス:PORT,TPGT ターゲット名_(IQN)
    • Target Path : デバイスファイルを含むディレクトリを指定します。 /dev/disk/by-path (既定値) もしくは /dev/disk/by-id のいずれかを指定してください。

    • ホスト名 : iSCSI サーバのホスト名または IP アドレスを指定します。

    • ソース IQN : iSCSI のターゲット名 (iSCSI Qualified Name (IQN)) を指定します。

    • イニシエーターの IQN : iSCSI のイニシエータ名を指定します。

    種類 = logical の場合
    • Volgroup Name : 既存のボリュームグループのデバイスパスを指定します。

    種類 = mpath の場合:
    • Target Path : マルチパス機能への対応は現在、全てのマルチパスデバイスを利用可能にする場合のみとなっています。そのため、ここで指定した任意の文字列は無視されますが、何らかの値を入力しないと XML パーサーの処理が失敗してしまいます。

    種類 = netfs の場合:
    • Target Path : VM ホストサーバ 内のファイルシステムでのマウントポイントを指定します。

    • ホスト名 : ネットワークファイルシステムを提供するサーバの IP アドレスまたはホスト名を指定します。

    • ソースパス : 公開されているサーバ内のディレクトリを指定します。

    種類 = rbd の場合:
    • ホスト名 : RADOS ブロックデバイスを提供するサーバの IP アドレスまたはホスト名を指定します。

    • Source Name : サーバ側での RADOS ブロックデバイスの名前を指定します。

    種類 = scsi の場合
    • Target Path : デバイスファイルを含むディレクトリを指定します。 /dev/disk/by-path (既定値) もしくは /dev/disk/by-id のいずれかを指定してください。

    • ソースパス : SCSI アダプタの名前を指定します。

    注記
    注記: ファイル参照について

    参照 ボタンによるファイル参照機能は、リモートから接続している場合には使用できません。

  4. 完了 を押すとストレージプールを追加することができます。

8.2.2.2 ストレージプールの管理 Edit source

仮想マシンマネージャ のストレージマネージャは、プール内にボリュームを作成したり削除したりすることができます。このほか、既存のストレージプールを一時的に無効化したり恒久的に削除したりすることもできます。なお、プールの基本的な設定の変更については、 SUSE でのサポート対象外となっています。

8.2.2.2.1 プールの起動/停止/削除 Edit source

ストレージプールは、 VM ゲスト をリモートから管理する際に、 VM ホストサーバ 内に存在するブロックデバイスを VM ゲスト に追加したり削除したりする機能を提供するものです。リモートからアクセスできないように一時的に停止したい場合は、ストレージマネージャ内の左下にある 停止 ボタンを押してください。停止されたプールは 状態: 停止 となり、左側の一覧ではグレーアウト表示されます。既定では新しく作成したプールは自動的に VM ホストサーバ 側で 自動起動 が設定され、自動的に起動するようになります。

停止されているプールを起動して、リモートからアクセスできるようにしたい場合は、ストレージマネージャ内の左下にある 開始 を押します。

注記
注記: プールの状態は割り当てられているボリュームとは無関係である件について

既に VM ゲスト に割り当てられているプール内のボリュームについては、そのプールの状態 ( 動作中 もしくは 停止 ) に関わらず、常にアクセスできる状態になります。プールの状態は、リモートから VM ゲスト のボリュームを管理する場合にのみ有効となります。

プールに対して恒久的にアクセスを停止したい場合は、ストレージマネージャ内の左下にある 削除 ボタンを押します。ただし、削除は停止されたプールにのみ実施することができます。なお、プールを削除しても、 VM ホストサーバ 内の内容が物理的に削除されることはなく、プールの設定のみが削除されます。ただし、 LVM ボリュームグループの場合は例外で、この場合は物理的にも削除されることに注意してください。

警告
警告: ストレージプールの削除

まだ VM ゲスト に割り当てられているボリュームが存在するプールの場合、 ローカルの ファイルシステムディレクトリやパーティション/ディスクをベースにしたストレージプールを削除しても、ボリュームには影響しません。

iSCSI, SCSI, LVM ボリュームグループ, ネットワーク公開ディレクトリの場合は、プールを削除すると VM ゲスト からもアクセスができなくなります。ボリュームそれ自身は削除されませんが、 VM ホストサーバ からリソースへのアクセスはできなくなります。

iSCSI/SCSI ターゲットやネットワーク公開ディレクトリの場合、新しいプールを作成し直して同じ設定を作成するか、もしくはホストシステム側から対象のリソースを直接マウントすることで、再度アクセスできるようになります。

LVM ボリュームグループベースのストレージプールの場合、 LVM のボリュームグループ設定が削除されることになりますので、ホストシステム内でも LVM ボリュームグループがアクセスできなくなります。この場合は設定の復元は不可能で、プール内のボリュームも恒久的に失われることになります。

8.2.2.2.2 ストレージプールへのボリュームの追加 Edit source

仮想マシンマネージャ ではプールの種類がマルチパス, iSCSI, SCSI である場合を除いて、全てのストレージプール内にボリュームを作成することができます。これらのプール内のボリュームは LUN と等価な存在であり、 libvirt 側では変更ができません。

  1. 新しいボリュームはストレージマネージャを利用して作成することができるほか、 VM ゲスト に新しいストレージデバイスを追加する際に作成することもできます。いずれの場合であっても、左側のパネルでストレージプールを選択して 新しいボリュームの作成 を押します。

  2. 名前 欄にイメージの名前を入力して、イメージの形式を選択します。

    SUSE では現在、 raw および qcow2 のイメージのみをサポート対象としています。また、後者は LVM ボリュームグループベースのプールの場合は選択できません。

    次に 最大容量 を指定します。ここではディスクイメージが利用可能な最大のサイズを指定します。 qcow2 形式を選択していない場合は、 割り当て の容量も設定することができます。 割り当て で指定した容量は初期の割り当てサイズとなり、 最大容量 と異なる値を設定すると、スパース形式のファイルが作成され、必要に応じてサイズが拡張されるようになります。

    qcow2 形式の場合は、 バッキングストア (バッキングファイル と呼ぶ場合もあります) を使用することもできます。これはイメージのベースとなるファイルを指定するためのもので、新しく作成した qcow2 イメージには、ベースからの変更点のみが記録されるようになります。

  3. ボリュームの作成を開始するには 完了 を押します。

8.2.2.2.3 ストレージプールからのボリュームの削除 Edit source

ボリュームの削除はストレージマネージャからのみ実施することができます。削除したいボリュームを選択して、 ボリュームの削除 を押します。確認メッセージが表示されたら はい を押してください。

警告
警告: 使用中であってもボリュームは削除可能である件について

ボリュームは動作中の VM ゲスト から使用されている状況下でも削除することができます。削除したボリュームを復元する手段はありません。

対象のボリュームが VM ゲスト から使用されているかどうかを確認したい場合は、ストレージマネージャ内の 使用中 列を確認してください。

このページを印刷