Machine)によって構築した仮想環境を利用しています。そこで、備忘録として、よく使用する基本的なKVM仮想環境の構築手順を載せておきます。KVMを使う前の確認事項KVMを使用するには、KVMを動作させるPCのCPUが、仮想化支援機構(Intel-VTもしくはAMD-V)に対応している必要があります。今回はubuntuにKVMをインストールするので、ubuntuがインストールされたPCのCPUが仮想化支援機構に対応しているかを確認します。確認方法は、IntelのCPUの場合は、ubuntuのターミナル上で以下のコマンドを実行します。/proc/cpuinfo実行した結果、下記のようにflagsから始まる出力が得られれば使っているCPUが仮想化支援機構に対応していることになります。apic...(省略)AMDのCPUの場合は以下のコマンドを実行して確認します。/proc/cpuinfoただし、CPUが仮想化支援機構に対応していても、有効になっていない場合は上記のコマンドを実行しても何も出力されません。よって、何も表示されなかった場合はBIOS設定から仮想化支援機構が有効にできるかどうかを確認すると良いと思います。BIOS設定の確認方法は下記のサイトを参考にすると良いと思います。http://www.oss-d.net/virt/kvmKVMを用いて構築する仮想環境の概要KVMを用いて構築する仮想環境のイメージ図は以下の図になります。下図のように、仮想マシンとしてubuntu1、ubuntu2、vyattaA、vyattaB、vyattaCの合計5台を作成し、ubuntu1とubuntu2同士が、vyattaA,B,Cによって構築されたネットワークを介して通信し、各ubuntuがインターネットへアクセスできる仮想環境を構築します。KVMによって構築する仮想環境イメージ図KVM仮想環境構築に必要なステップ上図の仮想環境を構築するためには、以下の8ステップが必要になります。各ステップの詳細を何回かに分けてメモしていきたいと思います。以下ではKVMのインストール手順と仮想ネットワークの作成手順について説明してきます。KVMと関連ソフトウェアをインストールubuntu12.04に以下の3つのソフトウェアをインストールします。仮想マシンのリソース使用率(CPU使用率、メモリ使用率など)を把握するためのコマンドを実行可能にするソフトウェア以下のコマンドをターミナル上で実行することによって、上記3つがインストールされます。virt-topインストール完了後、次は仮想ネットワークを作成していきます。仮想ネットワークの作成まずは仮想マシンから作成していきたいところですが、説明の便宜上、まずはじめに仮想ネットワークについて簡単に説明し、仮想ネットワークを先に作成します。KVMによる仮想ネットワークについて今回構築する仮想環境には、以下の図のように、「isolate_net1」、「isolate_net2」、「WAN1」、「default」の4つの仮想ネットワークが存在します。各仮想ネットワークのネットワークアドレスは以下のように設定します。各仮想マシンのIPアドレスは図2中のように設定します。「default」はKVMをインストールした時点でデフォルトで作成される仮想ネットワークであり、ネットワークアドレスが「192.168.122.0/24」に設定されます。(KVMインストール時点でデフォルトで作成されます)ここでは、仮想ネットワーク「isolate_net1」の作成方法について説明していきます。他の「isolate_net2」、「WAN1」についても同様の方法で作成できます。仮想ネットワークの作成手順まずubuntuのターミナル上で以下のコマンドを実行しvirt-managerを起動します。virt-managervirt-managerを起動すると、以下のような画面が表示されます。virt-managerを起動した状態で、以下のようにvirt-managerのメニューの「編集」から「接続の詳細」を開きます。「接続の詳細」を開いた後、「仮想ネットワーク」タブをクリックすると、以下のように作成済みの仮想ネットワーク一覧が表示されます。これまでに仮想ネットワークを作成していない場合は、以下のようにデフォルトで作成済みの「default」のみが表示されると思います。上の画面内の左下にある十字マークをクリックすると、以下のように「新しい仮想ネットワークの作成」というタイトルのウィンドウが表示されます。ここから新しく仮想ネットワークを作成していきます。「進む」をクリックして次に進みます。すると、以下のように「仮想ネットワークの名前の指定」というタイトルのウィンドウが表示されますので、適当な名前を入力して「進む」をクリックします。以下では「isolate_net1」という名前を指定しています。次に「IPv4アドレス領域の指定」というタイトルのウィンドウが表示されます。ここでは、これから作成する仮想ネットワークで使用するネットワークアドレスを指定します。isolate_net1は「192.168.100.0/24」に設定したいので、192.168.100.0/24を入力します。進むと次は指定した範囲のIPアドレスを割り振るDHCPサーバの設定を行います。DHCPサーバを使用しない場合は、「DHCPを有効に(E)」のチェックボックスを外して次に進みます。DHCPサーバを使用する場合は、割り振るIPアドレスの範囲を開始と終了で指定して次に進みます。「進む」をクリックすると、以下の「物理ネットワークへの接続」というタイトルの画面が表示されます。KVMでは「隔離された仮想ネットワーク」、「物理ネットワークにフォワード」を選択できます。「物理ネットワークにフォワード」を選択した場合は、さらに宛先とモードを選択します。ここでは、「隔離された仮想ネットワーク」を選択して次に進みます。「隔離された仮想ネットワーク」と「物理ネットワークにフォワード」の違いについては、後述します。進むと以下のようにこれまでの設定内容が表示されます。問題なければ完了をクリックして仮想ネットワークの作成は完了です。仮想ネットワークについて補足するために、図2の「isolate_net1」の部分を簡単なブロック図に変換すると、図3のようになります。A)を接続するための仮想スイッチ「virbr1」が作成されます。仮想ネットワークを作成することは、仮想スイッチを作成することと同義です。仮想マシンの作成の際に、作成する仮想マシンをどの仮想スイッチに接続するか、すなわち仮想マシンをどの仮想ネットワーク下に配置するかを指定することができます。isolate_net1のブロック図なお、図3中の「vnet0」は、ubuntu1がeth0を通してホストマシンと通信するためのTAPデバイスというものです。Aがeth2を通してホストマシンと通信するためのTAPデバイスです。「virbr」「vnet」についてまとめると以下のようになります。...)仮想マシンとホストマシンが通信するために使用するTAPデバイスです。仮想マシンのNIC(図中eth0、eth2)と同じ数だけ作成されます。vnetXは仮想マシンが起動すると同時に起動します。このことは、仮想マシンを起動する前後で、ホストマシンのターミナル上でifconfigコマンドを実行することで確認できます。...)仮想スイッチです。仮想ネットワークの作成順に連番が振られていきます。KVMをインストールした時点では、virbr0がデフォルトで作成されています。virbr0は仮想ネットワーク「default」の仮想スイッチです。virbrもifconfigコマンドによって確認することができ、virbrはKVMが起動した時点(通常はvirt-managerの起動と同時に)に起動します。仮想ネットワークの種類についてKVMで仮想ネットワークを作成する際、「物理ネットワークにフォワード」と「隔離された仮想ネットワーク」を選択できます。「物理ネットワークにフォワード」を選択した場合は、さらに「宛先」と「モード」を選択することができ、「モード」については「NAT」と「ルーティング」の2種類から選択できます。宛先については、ubuntuでは「いずれかの物理デバイス」しか選択できないようです。ここでは、今回使用する「隔離された仮想ネットワーク」(以下では隔離ネットワークと呼びます)と「物理ネットワークのフォワード」でモードを「NAT」(以下ではNATネットワークと呼びます)に選択した場合について説明します。「ルーティング」を選択した場合についてはまた使用した時に備忘録として載せたいと思います。2)は通信することができます。仮想マシンとホストマシン同士の通信も可能です。仮想マシンからホストマシンの外部、また、ホストマシンの外部から仮想マシンへのアクセスはできません。KVMでは仮想マシン同士が通信できる環境をホストマシンのiptablesにルールを追加することで実現しています。iptablesへのルール追加はKVMが自動的に行ってくれます。したがって、もしKVMの起動中にiptablesのルールを変更したり、iptablesを停止したりすると、別々の隔離ネットワークに属する仮想マシン同士が通信できてしまうなど、意図しないことが発生するので注意して下さい。具体的にどのようなルールがiptablesに追加されるかは後述します。172.16.10.0/24」の3つを隔離された仮想ネットワークとして作成します。隔離ネットワークのイメージ図また、隔離ネットワークを作成すると、/etc/libvirt/qemu/networks/に、以下の内容のisolate_net1.xmlというファイルが作成されます。</ip></network>上記のxmlファイルを見ると、仮想ネットワークの作成時に設定した仮想ネットワークの名前などが記述されていることが分かります。仮想ネットワークの作成時にDHCPを有効にすると、この仮想スイッチがDHCPサーバとして動作することになり、上記のようにDHCPのIPアドレスの範囲がxmlファイルに記述されます。switch)は、接続されている仮想マシン同士、仮想マシンとホストマシン同士の通信が可能なだけでなく、ホストマシンを通して外部へアクセスすることができます。隔離ネットワーク同様、KVMはこの仮想スイッチに接続された仮想マシンが外部ネットワークと通信できる環境をホストマシンのiptablesにIPマスカレードのルールを追加することで実現しています。iptablesへのIPマスカレードのルール追加はKVMが自動的に行ってくれます。KVMの起動中にiptablesのルールを初期化したり、iptablesを停止したりすると、仮想マシンは外部へアクセスできなくなるので注意して下さい。KVM上で思うような通信が出来なくなった場合は、iptablesのルールを確認すると良いかもしれません。KVMが自動的に追加するルールは後述します。「default」という名前のNATネットワークを作成します。よって、「default」に接続された仮想マシンは、ホストマシンを通してインターネットへアクセスすることができます。/etc/libvirt/qemu/networks/に、以下の内容のNAT1.xmlというファイルが作成されます。mode=’nat’/>」という行が追加されていることが分かります。この行がNATを有効にするための記述になります。KVMがiptablesに追加するルールについて上記でKVMによる仮想ネットワーク作成時には、iptablesにルールが追加されることを書きました。ここでは、具体的に隔離ネットワーク、NATネットワーク、それぞれを選択した場合にどのようなルールがiptablesに追加されるかをメモします。iptablesについて知りたい方はiptablesの概要メモ、iptablesの設定内容確認と設定例が参考になるかもしれません。隔離ネットワークを作成した場合、iptablesのfilterテーブルに以下のルールが追加されます。icmp-port-unreachableNATネットワークの場合NATネットワークを作成した場合、iptablesのfilterテーブルとnatテーブルにそれぞれ以下のルールが追加されます。!192.168.122.0/24以上のことから、図2のイメージ図をブロック図に変換すると、下の図6のようになります。(図はクリックで拡大できます)図6から分かるように、作成する仮想ネットワークの数だけ仮想スイッチ「virbrX」があり、仮想マシンのNICの数だけ「vnetY」があります。「default」の仮想マシンはホストマシンのiptablesによってインターネットへアクセスできます。以上が仮想ネットワークの作成手順になります。次回は仮想マシンの作成手順について載せたいと思います。こちらにKVMにおける仮想マシンの作成手順をメモしたので必要な方は見てみて下さい。LINK関連記事vyattaのNATの設定これまでにKVMを使って図1のような仮想環境を構築してきました。前回の仮想マシンの作成に続き、今回は以下の図中の各仮想マシンのIPアドレスとゲートウェイの設定方法をメモします。前回の仮想ネットワークの作成に続き、今回はKVMでの仮想マシンの作成手順を載せておきます。コメントをキャンセルメールアドレスが公開されることはありません。virtualiment。