VT-xとAMD-Vの仮想技術を利用し高性能の仮想CPUを作成できるという特徴があります。Qemuは仮想マシンCPU以外のシミュレート、メモリとリソース管理、外部との通信、付加ハードウェアの仮想化などを行うソフトです。今回はlibvirtとvirshも利用して複数台マシンの作成や削除などを一元管理できる方法を紹介いたします。仮想サーバーで複数台の仮想マシンを稼働し、ネットワークでそれぞれの仮想マシンを利用すると想定しています。環境構築ソフトウェア必要なソフトを以下のコマンドでインストールします。virtinst仮想用ネットワーク環境の構築libvirt-binをインストールすると自動的にvirbr0の仮想ネットワークインターフェースを作成しますが、私の場合仮想マシンをローカルのネットワークに直接接続させたいため、Linuxサーバーにブリッジネットワークインターフェースを作成しています。以下のinterfacesファイルを編集します。/etc/network/interfacesデフォルトでp3p1というEthernetのインターフェースがありますが、ブリッジネットワークを設定するためコメントアウトします。このホストサーバーに常に静的なIPアドレスを持たせるため、以下の設定を行います。0この設定を適用するためにはネットワークサービスの再起動が必要です。restat一部環境でこのコマンドが利用できない場合、Linxuを再起動してください。ゲストOSのインストール元を用意ゲストOSのインストールISOを用意する必要がありますので、sftpや他の方法でISOファイルをアップロードします。Serverをインストールした際に、サービスOpenSSHを選択するとインストーラがSSHサーバーの構築を行います。OpenSSHをインストールしていない場合、以下のコマンドでのインストールもできます。openssh-serverFileZillaというFTPクライアントはsftpに対応していますので、sftpでのアップロードが簡単にできます。sftpのログインアカウントはLinuxのログインアカウントと同じです。VNCクライアントを用意ネットワークで仮想マシンを利用するには、VNCクライアントからリモート接続してゲストOSのインストールを行います。このためVNCクライアントを用意する必要がありますので、ネコ技術では「vncviewer」という無料ソフトを利用しています。vncviewer.exe仮想マシンのインストール仮想マシンの作成ゲストOSの作成にはvirt-installというコマンドを利用します。このコマンドは仮想マシン作成の面倒な初期処理をやってくれますので仮想マシンの作成が楽になります。ゲストOSの保存用ディスクを指定します。pathで指定したファイルが存在しなければ、自動的に作成してくれます。sizeはディスクを新規作成する際の初期化サイズです。busはディスクの通信タイプです。ゲストOSを利用するネットワークを指定します。bridge=br0は上記で設定したブリッジネットワークインターフェースです。VNC(仮想ネットワークコンピュータ)の接続先情報を設定します。listenは目標IPアドレス、portはポート番号です。VNCクライアントからリモートデスクトップ接続の場合、このアドレスは接続先となります。ゲストOSのインストールISOのファイルですコマンドを実行すると以下の内容が出力されます。complete.Server版Ubuntuはxwindowをインストールしていないため「virt-viewerがインストールされていない」という警告が表示される場合があります。無視してもかまいません。VNCクライアントを起動し、接続サーバーのアドレスを入力します。接続先アドレスのフォーマットは「ipアドレス:port番号」となります。ここのipアドレスはUbuntuサーバーの外部IPアドレスです(上記で設定したブリッジネットワークインターフェースのIPアドレス)192.168.2.195:5911接続が成功した場合Windowsのインストール画面が表示されます。これで一般的な実機マシンと同じようにWindowsのインストールができます。Windowsインストールの際に、仮想マシンが複数回再起動されます。再起動の場合VNCクライアントの受信が遮断されますので、再接続が必要です。先ほど実行したvirt-installコマンドはゲストOSのインストールが完了するまで、ステータスを監視して、インストールが完了したら自動的に終了します。作成した仮想マシンの照会virt-installで作成した仮想マシンは、virshというプログラムで一元管理できます。listを実行すると現在稼働中の仮想マシンリストが表示されます。--allを実行すると全ての登録中のマシンを表示できます。シャットダウンシャットダウンはゲストOS内部で一般的な実機マシンと同じくシャットダウンボタンを押すとシャットダウンができますが、virshコマンドによって外部からのシャットダウンもできます。VPC1このコマンドは実機マシンの電源ボタンを直接押すのと同じ効果をシミュレートしています。ちなみにWindowsでリモート接続を利用する場合、シャットダウンボタンが表示されない場合があります。実行するとすぐにシャットダウンができます。startコマンドを実行し、起動したい仮想マシンの管理用名前を渡すと起動できます。VPC1強制シャットダウン仮想マシンを強制的にシャットダウンをしたい場合、以下のコマンドを実行します。listで表示する仮想マシンのリストから、指定するマシンを削除する場合、undefineコマンドを利用します。VPC1仮想マシンの設定を変更virshによって管理中の仮想マシンは、それぞれ自分のXMLファイルを生成しています。このXMLファイルにある設定を変更すると、仮想マシンの設定が変えられます。editのコマンドを利用すると、XMLファイルを直接編集することが可能です。editはvmをエディタとして利用していますが、自分の好きなエディタに変更すること可能です。~/.profile最後に以下を追加します。editを実行すると、エディタがnanoに変更されます。</os>...</domain>このXMLを編集し、仮想マシンのCPU数やメモリサイズ、ディスクファイル、CDROM、ネットワーク通信タイプなどが変更できます。dumpxmlコマンドによって外にエクスポートすることが可能です。このエクスポートは仮想マシンの設定のバックアップや移行などに活用できます。listに追加せず、直接xmlファイルから仮想マシンの作成と起動もできます。VPC1_backup.xml但し名前とマシンIDが他のマシンと一致すると同時に起動できないため、仮想マシンの名前とIDの変更が必要です。listのリストに定義のみを追加することも可能です。defineコマンドを利用します。vcpuinfoコマンドを利用すると仮想CPU毎の利用率を照会できます。VPC1仮想マシンのディスクフォーマットqemuで作成する仮想マシンは、多くのディスクフォーマットに対応しています。使われるフォーマットは以下の通りです。デフォルトのファイルフォーマットです。データの加工や圧縮などの処理をせず、ゲストOSが保存したデータをそのままサーバーのファイルに書き込みますので、性能が高いですが、ディスク領域も一番大きいです。qemuのディスクフォーマットです。圧縮、暗号化に対応し、使用領域に合わせてファイルのサイズが徐々に拡張できるという特徴があります。VirtualBoxのディスクフォーマットです。qemuではそのまま使えます。VMWareの仮想化製品のディスクフォーマットです。qemuでも利用できます。ディスクファイルの作成qemu-imgコマンドを利用してディスクファイルの作成が簡単にできます。-fパラメータでディスクを指定できます。新規作成する際にディスクのサイズを指定する必要があります。size=2147483648フォーマットがraw、サイズが2GBのディスクファイルを作成できました。以下はqcow2フォーマットのファイルを作成します。lazy_refcounts=offqcow2フォーマットはゲストOSの利用領域に合わせてファイルのサイズを拡張しますので、設定サイズ1Gのdisk2.qcow2が作成された際にわずか197KBのサイズしかありません。convertを利用して指定するディスクファイルを他の対応中のフォーマットに転換することが可能です。上記で作成したqcow2ファイルをrawフォーマットに転換するには以下のコマンドを利用します。disk2.image-fは入力フォーマット、-Oは出力フォーマットです。XMLファイルを編集します。VPC1diskの部分のXML内容をコピーし、もう一つdiskの記述を追加します。unit='0'/></disk>このXMLを修正する際に、仮想マシンをシャットダウンすることを勧めます。change-mediaを利用するとcdromのisoを簡単に変更できます。仮想化Jing北海道の田舎で暮らしているプログラマーです。最近山登りにハマりました。