ホストの物理NICとゲストOSが接続するtapデバイスをブリッジのインターフェイスとして設定します。これによりホストOSの接続している物理的なL2ネットワークに、ゲストOSが接続しているように機能します。そのため、外部ホストはもちろん、ゲストOS間の通信も行うことができます。
なお、ケース1〜3までは、kvmグループに所属していれば一般ユーザーで実行できましたが、ケース4で使用するtapデバイスにはroot権限が必要です。ネットワーク構成は図4です。
1)ホストOSでの設定(ブリッジの設定)
|
ホストOSも外部と通信させる場合は、br0に下記のネットワーク設定を加えます(注5)。
|
2)Guest1を起動
|
3)Guest1上でのネットワーク設定
|
4)Guest2を起動
|
5)Guest2上でのネットワーク設定
|
6)ホストOSでの設定確認
|
ブリッジbr0に、eth1、tap0、tap1がインターフェイスとして加えられていることが分かります。
注5:br0にIPアドレスとデフォルトゲートウェイを設定していない場合、ゲストOS起動時のscriptオプションで指定した/etc/kvm/kvm-ifupが正常に実行されません。具体的には、kvm-ifupの中に記載されている“/usr/sbin/brctl addif ${switch}$1”が実行されません。そのため、guest1、guest2を起動中に、ホストOS上で下記コマンドを手動で実行する必要があります。
# brctl addif br0 tap0 |
KVM/QEMUを利用する場合の多くは、ケース1、2などが多いと思います。しかし、KVMをXenやVMware ESXiのようにサーバ統合などの用途で使う場合にはケース4の構成が必要になると思われます。
今回はブリッジをレイヤ2モードで使用するケースを想定しましたが、設定方法によってはケース2や3の代わりにtapを使うこともできます。つまり、tap0、tap1をブリッジのインターフェイスにするのではなく、IPアドレスとゲストOSごとへのスタティックルートを直接設定することで、ホストOSをルータのように動かすこともできます(ただし、設定は非常に複雑です)。
利用する構成に応じていろいろ試し、用途に応じて使い分けるといいでしょう。
KVMの導入に際して想定されるハマりどころやツッコミをFAQ形式で挙げてみました。もし導入に詰まってしまったときの参考にしてください。
Q1:kvm、kvm-imgコマンドがありません。
A1:注4にも記載しましたが、ディストリビューションによって、コマンドの名称が異なります。Fedora、CentOSなどではqemu-kvm、qemu-imgコマンドになっています。導入した環境のパッケージ管理ツールで調べて、適宜読み替えてください。
Q2:使っているカーネルでは使えないみたいなんですが。
A2:まず、お使いの環境が、kernel 2.6.20以降であることを確認してください。2.6.20以降の場合は、下記オプションを有効にしてカーネルをリビルドしてください(以下は2.6.29.1での場合)。
CONFIG_KVM_CLOCK |
最後の行のオプションは、前者はIntel VTの場合、後者はAMD-Vの場合です。また、カーネルのバージョンが上がるにつれて、カーネルオプションの数も以下のように増えてきています。それぞれのオプションが何を意味するのかは、ご自身で調べてみてください。
2.6.24 | |||
|
|||
2.6.25 | |||
|
|||
2.6.26以降 | |||
|
Q3:kvm/qemuのオプションが覚えきれません。
A3:数が多くて、確かに覚えるのは大変です。今回の記事を参考にmanマニュアルを熟読して、イメージディスク作成用やゲストOS起動用のスクリプトを用意しておくといいでしょう。
Q4:QEMUコンソールでAlt+2を押したあと、元に戻れません。
A4:Ctrl+Alt+1を押すと元の画面に戻ります。
Q5:コマンドラインに拒否反応を示してしまうのですが。
A5:virt-managerやoVirtというGUIの管理ツールがあります。そちらを使ってみるといいでしょう。
Q6:それなら、最初からvirt-managerやoVirtの使い方を解説すればいいのでは?
A6:今回はGUIに頼らない基礎的な使い方を目的にしています。virt-managerもoVirtもlibvirtというAPIを使用しており、今回紹介したコマンドを直接使うわけではありませんが、コマンドベースでの使い方を理解しておけば、それらのツールの仕組みの理解にも役立つことでしょう。
KVMはQEMUに依存しているので、kvmおよびkvm-imgコマンドの使い方を覚えると、QEMUも同じように利用できるようになります。QEMUはCPUエミュレータなので、ほかのアーキテクチャの仮想環境も利用できるという点でとても便利です。
また、今回はGUIの管理ツールについては触れませんでしたが、KVMの管理の基本になるのはQEMUです。ですので、繰り返しになりますが、QEMUの操作方法を理解しておくことにより、その他のツールの裏側で行っていることを理解できるものと思います。
次回は、KVMが抱える課題と今後の方向性について紹介する予定です。
Copyright © ITmedia, Inc. All Rights Reserved.