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.7

25 仮想ネットワーク Edit source

一方の VM ゲスト システムから他の VM ゲスト システムやその他のネットワークと通信を行う必要がしばしば発生します。 VM ゲスト 側でのネットワークインターフェイスは独立したデバイスドライバで動作しているものであり、 Dom0 側にそれらの仮想イーサネットデバイスに対応するネットワークインターフェイスが存在していることになります。このインターフェイスは Dom0 内で動作する仮想ネットワークにアクセスするために作られています。このようなブリッジ型の仮想ネットワークは openSUSE Leap のシステム設定内に完全に統合されていて、 YaST からも設定を行うことができるようになっています。

Xen の VM ホストサーバ をインストールすると、通常のネットワーク設定の際にブリッジ型のネットワーク設定を行うよう提案が表示されます。ユーザ側ではインストール時に設定を変更することができるほか、必要に応じてカスタマイズを行うこともできます。

また、システムのインストールを行った後からでも、 YaST 内に用意された ハイパーバイザとツールのインストール を使用することで、必要に応じて Xen VM ホストサーバ をインストールすることができます。このモジュールは仮想マシンを動作させるためのシステム側の準備を行う仕組みで、既定のネットワークブリッジの構築も行うことができます。

rpmzypper などを利用して手作業で Xen VM ホストサーバ に必要なパッケージをインストールした場合、残りのシステム設定は管理者が手作業で行うか、 YaST を利用して行う必要があります。

Xen 側で提供されているネットワークスクリプトは、 openSUSE Leap の既定では使用されません。これらは念のため用意されているだけであり、無効化されています。 openSUSE Leap の Xen で使用するネットワークの設定は、通常のネットワークインターフェイス設定と同様に、 YaST のシステム設定で行います。

ネットワークブリッジの管理方法に関する一般的な情報については、 8.1.1項 「ネットワークブリッジ」 をお読みください。

25.1 ゲストシステム向けのネットワークデバイス Edit source

Xen ハイパーバイザでは、 VM ゲスト 側に提供することのできるネットワークインターフェイスの種類が複数用意されています。可能であれば準仮想化ネットワークインターフェイスを使用するのが推奨されます。これにより、最低限のシステム要件で最大の伝送速度を得ることができます。また、それぞれの VM ゲスト に対して最大で 8 個までのネットワークインターフェイスを設定することができます。

準仮想化ハードウエアに対応していないシステムの場合、準仮想化ネットワークインターフェイスを使用することができません。この場合、システムをネットワークに接続するには、完全仮想化環境での擬似ネットワークインターフェイスを使用します。下記の擬似ネットワークインターフェイスを使用することができます:

  • Realtek 8139 (PCI) (既定の擬似ネットワークカードです)

  • AMD PCnet32 (PCI)

  • NE2000 (PCI)

  • NE2000 (ISA)

  • Intel e100 (PCI)

  • Intel e1000 およびその派生ハードウエア (e1000-82540em, e1000-82544gc, e1000-82545em) (PCI)

これらのネットワークインターフェイスはいずれも、ソフトウエアインターフェイスです。それぞれのネットワークインターフェイスには、他のものと重複しないユニークな MAC アドレスを設定しなければなりませんが、 Xensource に割り当てられた MAC アドレスの中から使用することになります。

ヒント
ヒント: 仮想ネットワークインターフェイスと MAC アドレスについて

仮想環境内の MAC アドレスの設定は、既定で乱数を使用して設定され、 00:16:3E:xx:xx:xx のような値になります。通常は MAC アドレスの範囲はそれなりに大きいため、重複する可能性はほとんどありませんが、非常に大量のマシンを配置するような場合や、乱数による MAC アドレスの割り当てで発生しうる問題を完全に回避したい場合は、手作業で MAC アドレスを設定してください。

デバッグやシステム管理を行う目的で、ゲスト内で動作しているイーサネットデバイスが Dom0 内の仮想インターフェイスのどれに接続されているのかを知っておくと便利です。この情報は Dom0 内の名前付けルールから判別することができます。仮想インターフェイスの名前は、 vif<ドメイン番号>.<インターフェイス番号> の形式になります。

たとえば ID=5 の VM ゲスト の 3 番目のインターフェイス (eth2) の Dom0 でのデバイス名は、 vif5.2 になります。利用可能な全てのインターフェイスを表示したい場合は、 ip a コマンドを実行してください。

デバイスの命名では、そのインターフェイスがどのブリッジに接続されているのかを知ることができません。しかしながら、この情報は Dom0 内で管理されています。ブリッジに接続されているインターフェイスを知りたい場合は、 bridge link コマンドを実行してください。出力は下記のようになります:

> sudo bridge link
2: eth0 state DOWN : <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 1500 master br0
3: eth1 state UP : <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 master br1

上記の例では br0 , br1 , br2 の 3 つのブリッジが設定されていて、そのうち br0br1 には実際のイーサネットデバイス (eth0eth1) が接続されていることになります。

25.2 Xen でのホストベースルーティング Edit source

Xen では Dom0 での制御によってホストベースのルーティングを設定することができます。ですが、残念なことに YaST では十分にサポートされておらず、設定ファイルを多数手作業で編集する必要があります。そのため、この設定は知識のあるシステム管理者が行う必要があります。

下記の設定では、固定の IP アドレスを利用した設定を行っています。この設定では VM ゲスト と VM ホストサーバ との間で互いに IP アドレスを知っておく必要があることから、 DHCP 環境での使用には対応していません。

ルーティング型のゲストを構築するのに最も簡単な方法は、ブリッジ型のネットワークをルーティング型のネットワークに変更することです。下記の手順でも、 VM ゲスト に対してあらかじめブリッジ型のネットワークが構成されているものとしています。また下記の説明では、 VM ホストサーバ が earth という名前で 192.168.1.20 というアドレス、そして VM ゲスト が alice という名前で 192.168.1.21 というアドレスであるものとします。

手順 25.1: ルーティング型 IPv4 VM ゲスト の設定
  1. alice がシャットダウンされていることを確認します。 xl コマンドを実行してシャットダウンとその確認を行ってください。

  2. VM ホストサーバ earth のネットワーク設定を準備します:

    1. トラフィックをルーティングするためのホットプラグ型インターフェイスを作成します。これを実現するには、 /etc/sysconfig/network/ifcfg-alice.0 ファイルを作成して、下記の内容を記述します:

      NAME="Xen guest alice"
      BOOTPROTO="static"
      STARTMODE="hotplug"
    2. IP 転送を有効化します:

      1. YaST を起動して、 ネットワークの設定 › ルーティング を開きます。

      2. ルーティング タブ内にある IPv4 転送を有効にするIPv6 転送を有効にする をそれぞれ選択します。

      3. 設定を適用して YaST を終了します。

    3. firewalld に対して下記のとおり設定を適用します:

      • public ゾーン内のデバイスに alice.0 を追加します:

        > sudo firewall-cmd --zone=public --add-interface=alice.0
      • 転送すべきアドレスをファイアウオールに設定します:

        > sudo firewall-cmd --zone=public \
        --add-forward-port=port=80:proto=tcp:toport=80:toaddr="192.168.1.21/32,0/0"
      • 設定を恒久的に保存します:

        > sudo firewall-cmd --runtime-to-permanent
    4. alice のインターフェイスに対してスタティックルートを追加します。これを行うには、下記の内容を /etc/sysconfig/network/routes の末尾に追加します:

      192.168.1.21  -  -  alice.0
    5. VM ホストサーバ が接続しているスイッチやルータに対して、ルーティングインターフェイスであることを認識させるため、 earth 側で proxy_arp を有効化します。下記の内容を /etc/sysctl.conf に追加します:

      net.ipv4.conf.default.proxy_arp = 1
      net.ipv4.conf.all.proxy_arp = 1
    6. 下記のコマンドを実行して変更点を適用します:

      > sudo systemctl restart systemd-sysctl wicked
  3. あとは 26.1項 「xl: Xen 管理ツール」 で説明している内容に従って alice 向けの vif インターフェイス設定を変更し、 VM ゲスト の Xen 設定を行います。処理中に生成したテキストファイルに対して、下記の変更を行います:

    1. 下記の内容を削除します:

      bridge=br0
    2. 下記の内容を追加します:

      vifname=vifalice.0

      もしくは

      vifname=vifalice.0=emu

      (完全仮想化ゲストの場合)

    3. インターフェイスを設定する際のスクリプトを下記のように変更します:

      script=/etc/xen/scripts/vif-route-ifup
    4. 新しい設定を適用し、 VM ゲスト を起動します。

  4. 残りの設定作業は VM ゲスト 内から実施します。

    1. xl console 仮想マシン名 のように入力して実行し、 VM ゲスト のコンソールを開いてログインします。

    2. ゲスト側の IP アドレスが 192.168.1.21 になっていることを確認します。

    3. VM ホストサーバ に対して VM ゲスト へのホストルートとデフォルトゲートウエイを設定します。具体的には、下記の内容を /etc/sysconfig/network/routes に追加します:

      192.168.1.20 - - eth0
      default 192.168.1.20 - -
  5. 最後に VM ゲスト からインターネット側へのアクセスを確認するとともに、ネットワーク側から VM ゲスト 側へのアクセスも確認します。

25.3 マスカレード型ネットワーク設定 Edit source

マスカレード型のネットワークの設定はルーティング型の設定に似ていますが、 proxy_arp の設定が不要となるほか、いくつかのファイアウオールルールの設定が異なります。 dolly という名前のゲストが 192.168.100.1 というアドレスで存在し、外部インターフェイスと接続されているブリッジが br0 である場合、下記のように実施します。設定を簡単にするため、インストール済みのゲストに対してマスカレード型ネットワークを設定するものとします:

手順 25.2: マスカレード型 IPv4 VM ゲストの設定
  1. xl shutdown 仮想マシン名 のように入力して実行し、 VM ゲスト をシャットダウンします。

  2. VM ホストサーバ 側でのネットワーク設定を行います:

    1. トラフィックをルーティングするためのホットプラグ型インターフェイスを作成します。これを実現するには、 /etc/sysconfig/network/ifcfg-dolly.0 ファイルを作成して、下記の内容を記述します:

      NAME="Xen guest dolly"
      BOOTPROTO="static"
      STARTMODE="hotplug"
    2. /etc/sysconfig/SuSEfirewall2 ファイルを編集し、下記の設定を追加します:

      • FW_DEV_DMZ のデバイス内に dolly.0 を追加します:

        FW_DEV_DMZ="dolly.0"
      • ファイアウオールでルーティングを有効化します:

        FW_ROUTE="yes"
      • ファイアウオールでマスカレードを有効化します:

        FW_MASQUERADE="yes"
      • ファイアウオールに対して、マスカレード処理を行うように指定します:

        FW_MASQ_NETS="192.168.100.1/32"
      • マスカレードの例外からネットワークを削除します:

        FW_NOMASQ_NETS=""
      • 最後にファイアウオールを再起動します:

        > sudo systemctl restart SuSEfirewall2
    3. dolly のインターフェイスに対してスタティックルートを追加します。これを行うには、下記の内容を /etc/sysconfig/network/routes の末尾に追加します:

      192.168.100.1 - - dolly.0
    4. これまでに行った変更を反映させます:

      > sudo systemctl restart wicked
  3. あとは VM ゲスト の Xen 設定を行います。

    1. あとは 26.1項 「xl: Xen 管理ツール」 で説明している内容に従って alice 向けの vif インターフェイス設定を変更します。

    2. 下記の内容を削除します:

      bridge=br0
    3. 下記の内容を追加します:

      vifname=vifdolly.0
    4. インターフェイスを設定する際のスクリプトを下記のように変更します:

      script=/etc/xen/scripts/vif-route-ifup
    5. 新しい設定を適用し、 VM ゲスト を起動します。

  4. 残りの設定作業は VM ゲスト 内から行います:

    1. xl console 仮想マシン名 のように入力して実行し、 VM ゲスト のコンソールを開いてログインします。

    2. ゲスト側の IP アドレスが 192.168.100.1 に設定されていることを確認します。

    3. VM ホストサーバ に対して VM ゲスト へのホストルートとデフォルトゲートウエイを設定します。具体的には、下記の内容を /etc/sysconfig/network/routes に追加します:

      192.168.1.20 - - eth0
      default 192.168.1.20 - -
  5. 最後に VM ゲスト からインターネット側へのアクセスを確認します。

25.4 特殊な設定 Edit source

Xen ではさまざまなネットワーク設定を行うことができます。下記の設定はいずれも、既定では有効化されていないものです:

25.4.1 仮想ネットワーク内での帯域制限 Edit source

Xen では仮想化ゲストに対して、ブリッジにアクセスする際の許可帯域を設定することができます。この設定を行うには、まず 26.1項 「xl: Xen 管理ツール」 に示している手順に従って、 VM ゲスト の設定を変更する必要があります。

設定ファイル内で、仮想ブリッジに接続されているデバイスを探します。設定は下記のようになっているはずです:

vif = [ 'mac=00:16:3e:4f:94:a9,bridge=br0' ]

最大帯域を設定するには、この設定の中に rate という項目を追加します。たとえば下記のようになります:

vif = [ 'mac=00:16:3e:4f:94:a9,bridge=br0,rate=100Mb/s' ]

なお、帯域の指定は Mb/s (メガビット毎秒) もしくは MB/s (メガバイト毎秒) の単位で指定することができます。上記の例では、仮想インターフェイスに対する最大帯域を 100 メガビット毎秒に指定しています。既定では仮想ブリッジに対するゲストの帯域制限はありません。

また、帯域計算の粒度として時間を指定して調整を図ることもできます。たとえば下記のようになります:

vif = [ 'mac=00:16:3e:4f:94:a9,bridge=br0,rate=100Mb/s@20ms' ]

25.4.2 ネットワークトラフィックの監視 Edit source

特定のインターフェイスに対してトラフィックを監視するには、 iftop というプログラムを利用して、端末内でトラフィックの監視を行うとよいでしょう。

Xen の VM ホストサーバ を動作させている場合、監視対象のインターフェイスを指定して動作させる必要があります。ここで指定するインターフェイスは、物理ネットワークが接続されているブリッジデバイスとなります (例: br0) 。そのため、インターフェイス名はシステムによって異なることになります。全ての物理インターフェイスを監視したい場合は、 root で端末を起動して、下記のコマンドを実行してください:

iftop -i br0

特定の VM ゲスト のインターフェイスのトラフィックのみを監視したい場合は、仮想インターフェイスを指定して実行します。たとえばドメイン ID が 5 の 1 つめのイーサネットデバイスを監視したい場合は、下記のようなコマンドになります:

ftop -i vif5.0

iftop を終了させるには Q キーを押します。オプションや用途に関する詳細は、 man 8 iftop で表示されるマニュアルページをお読みください。

このページを印刷