KVM(Kernel-based Virtual Machine)
運用
以下のツールを利用する。virshの方が、CUIベースで多機能。
ゲスト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での環境構築の大まかな手順は以下の通り。
- SELinux無効化
- Network Manager無効化とNetworkサービス有効化
- bridge-utils 仮想ブリッジ作成
- ゲストOSのNICでブリッジを指定(virt-manager)
- KVMで外部からのVNCアクセス設定
- ホスト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サーバーを立てる必要がない。
ただ、デフォルトだとローカルからしかアクセス出来ないので、外部からアクセス出来るように設定変更。
修正対象ファイル
修正内容
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にインストールする必要がある。
- Linux統合サービス(Linux Integration Services)
- 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種類が存在する。
- Linux Integration Services v2.x:CentOS6以前用
- Linux Integration Services v3.x:CentOS6以降用
DKMS(Dynamic Kernel Module Support)
DKMSはカーネルのアップグレード時にモジュールを簡単に再構築するためのツール。Hyper-VのゲストOSへインストールするLinux統合サービスをインストールした後、カーネルをアップグレードしても最新カーネルで起動できない現象を回避するために利用する。
- カーネルアップグレード後にLinux統合サービスが機能しない問題(MSサポート)
- 公式ページ(DELL)
ゲスト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