KVM(Kernel-based Virtual Machine)

運用

以下のツールを利用する。virshの方が、CUIベースで多機能。
  • virt-manager
  • virsh


ゲストOSの一覧表示(virsh list)

$ sudo virsh list --all

ゲストOSの起動・停止(virsh start/shutdown/destroy)

起動
$ sudo virsh start %GUEST_NAME%

停止
$ sudo virsh shutdown %GUEST_NAME%

強制停止
$ sudo virsh destroy %GUEST_NAME%

ドメインxmlファイルの変更の反映(virsh define)

すでに他のマシン等で作成したkvmのゲストOSイメージとドメインXMLファイルがある場合、virsh defineコマンドでインポート可能。
$ sudo virsh define /etc/libvirt/qemu/%DOMAIN%.xml

ゲストOSのイメージ削除(virsh undefine)

ゲストに関連のファイルを全て削除。(動作確認したところイメージ"/var/lib/libvirt/images"以下のイメージファイルは残るようだ。)
$ sudo virsh undefine %DOMAIN%

ゲストOSのイメージインポート(virsh create)

virsh defineと同じくゲストOSのインポートを行う。virsh createは処理が成功するとゲストOSの起動を行う。
$ sudo virsh create /etc/libvirt/qemu/%DOMAIN%.xml

ゲストOSのクローン(virt-clone)

$ sudo virt-clone -o %FROM_DOMAIN% -n %CLONE_DOMAIN% -f /var/lib/libvirt/image/%CLONE_IMAGE_FILE%

ディスク拡張



KVM環境構築

fedora 16での環境構築の大まかな手順は以下の通り。
  1. SELinux無効化
  2. Network Manager無効化とNetworkサービス有効化
  3. bridge-utils 仮想ブリッジ作成
  4. ゲストOSのNICでブリッジを指定(virt-manager)
  5. KVMで外部からのVNCアクセス設定
  6. ホストOSのシャットダウンでゲストOSも自動シャットダウン

Network Manager無効化とNetworkサービス有効化

fedora 16ではsystemdベースの設定が必要。Network Manager無効化の方法は以下の通り。
$ sudo systemctl status NetworkManager.service
$ sudo systemctl stop NetworkManager.service
$ sudo systemctl disable NetworkManager.service

Networkサービス有効化は以下の通り。
$ sudo systemctl start network.service
$ sudo chkconfig network on

bridge-utils 仮想ブリッジ作成

$ cd /etc/sysconfig/network-scripts
$ sudo cp ifcfg-em1 ifcfg-br0
$ sudo vim ifcfg-br0

ブリッジ用の設定では、DEVICE=br0, TYPE=Bridge と変更する。加えて、GATEWAY0 等のように、IPADDR、GATEWAY、DNS の後に数字が付加されている場合は削除。GATEWAY0 のように数字が付加されていると NetworkManager では認識されるものの Network サービスでは認識されない。

コピー元NICの設定ではIPADDR、PREFIX、GATEWAY、DNS をコメントアウトし、BRIDGE=br0 を追記する。


KVMで外部からのVNCアクセス設定

KVMではlibvirtdを使用しており、それ自体にVNCの機能を包含しているため、別途VNCサーバーを立てる必要がない。
ただ、デフォルトだとローカルからしかアクセス出来ないので、外部からアクセス出来るように設定変更。

修正対象ファイル
  • /etc/libvirt/qemu.conf
修正内容
vnc_listern = "0.0.0.0"

cf

ホストOSのシャットダウンでゲストOSも自動シャットダウン

ホスト起動・shutdown 時のゲストへの操作はホストの /etc/init.d/libvirt-guest が操っているので、その設定ファイルの /etc/sysconfig/libvirt-guests の設定を変更して、shutdown 時にゲストにも shutdown メッセージが飛ぶようにする。

$ sudo vim /etc/sysconfig/libvirt-guests

START_DELAY=20      (VM起動時のディレイ)

ON_SHUTDOWN=shutdown     (ホスト shutdown 時にゲストも shutdown)

SHUTDOWN_TIMEOUT=180     (ゲストが shutdown するのを待機する時間)


cf

KVM link




Hyper-VゲストとしてのLinuxの設定

Hyper-VのゲストとしてLinuxを利用する場合、以下の2つのモジュールをゲストOSにインストールする必要がある。
  1. Linux統合サービス(Linux Integration Services)
  2. DKMS(Dynamic Kernel Module Support)

Linux統合サービス(Linux Integration Services)

Hyper-Vの仮想マシンとしてLinuxを利用する際、Linux統合サービス(Linux Integration Services)をインストールすることで、以下の機能が追加される。
  • ホストOSとの時刻同期
  • 準仮想化されたネットワークとストレージのドライバー
  • ホストOSのHyper-VマネージャからゲストOSのシャットダウン
  • ゲストOSの死活監視(heart beat)

Linux統合サービスはHyper-Vに添付されないため別途ダウンロードを行う必要がある。Linux統合サービスは以下の2種類が存在する。

DKMS(Dynamic Kernel Module Support)

DKMSはカーネルのアップグレード時にモジュールを簡単に再構築するためのツール。Hyper-VのゲストOSへインストールするLinux統合サービスをインストールした後、カーネルをアップグレードしても最新カーネルで起動できない現象を回避するために利用する。

ゲストOSにて以下の手順でインストールを行う。(dkms-2.2.0.2-1.noarch.rpmは、2011/10/24時点の最新)
# wget http://linux.dell.com/dkms/permalink/dkms-2.2.0.2-1.noarch.rpm
# rpm -ivh dkms-2.1.1.2-1.noarch.rpm



link




最終更新:2012年06月18日 12:26
添付ファイル