- 最小構成のCentOS6.3にKVMをインストール
- WindowsからGUI(virt-manager)でKVMを管理する
- MacからGUI(virt-manager)でKVMを管理する
- コンソールからvirshでKVMを管理する
- KVMの運用
- KVMのトラブルシューティング(CentOS6系)
最小構成のCentOS 6.3 64bitにKVMをインストール
CentOS 6.3 64bitを最小構成でインストールするSELinuxを切る
Firewallを切る# setenforce 0 # vi /etc/sysconfig/selinux --- SELINUX=disabled ---
ネットワークインターフェースをブリッジにする# /etc/init.d/iptables stop # chkconfig iptables off
# vi /etc/sysconfig/network-scripts/ifcfg-eth0 --- DEVICE=eth0 ONBOOT=yes BRIDGE=br0 ---
# vi /etc/sysconfig/network-scripts/ifcfg-br0 --- DEVICE=br0 ONBOOT=yes TYPE=Bridge IPADDR=192.168.1.2 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 ---
kvmをyumで入れる# /etc/init.d/network restart # ifconfig eth0 0.0.0.0 promisc up
virt-manager用に日本語fontを入れる# yum -y groupinstall "Virtualization" "Virtualization Client" "Virtualization Platform" "Virtualization Tools" "X Window System"
mDNS クライアントの作成失敗のエラー回避のためavahiを入れる# yum -y install "vlgothic-p-fonts"
libvirtdの起動# yum -y install avahi # /etc/init.d/messagebus restart # /etc/init.d/avahi-daemon restart # chkconfig messagebus on # chkconfig avahi-daemon on # /etc/init.d/libvirtd start
# /etc/init.d/libvirtd start # chkconfig libvirtd on
WindowsからGUI(virt-manager)でKVMを管理する
Linux付属の仮想マシンマネージャ(virt-manager)を利用します。sshのX11 Forwadingという機能で、仮想マシンマネージャのX Windowをローカルに転送します。
手順
- X11サーバをクライアントに入れます (xmingがお勧め)
- X11サーバを起動します
- sshクライアントで、X11のフォワーディングを有効にする
- puttyならば「メニュー」→「接続」→「SSH」→「X11」→「X11フォワーディングを有効にする」をチェック
- teratermならば「設定」→「SSH転送」→「リモートの(X)アプリケーションをローカルのXサーバに表示する」をチェックして、設定を保存。再度teratermを立ち上げる必要あり。
- puttyならば「メニュー」→「接続」→「SSH」→「X11」→「X11フォワーディングを有効にする」をチェック
- その状態で sshでKVMホストにログイン
- ログインしたら「virt-manager」とコマンドを打てば、仮想マシンマネージャが起動します。
# virt-manager
MacからGUI(virt-manager)でKVMを管理する
Linux付属の仮想マシンマネージャ(virt-manager)を利用します。sshのX11 Forwadingという機能で、仮想マシンマネージャのX Windowをローカルに転送します。
手順
KVMにssh。その際X11を飛ばすためにオプション -Xをつける
virt-magagerを起動すると、Macに画面だけ飛んできます。# ssh -X root@(KVMホスト)
注意# virt-manager
仮想マシンのコンソールにアクセスしたときに alt+ctrlが効かなくてマウスを出せなくなるので、
ユーザのホームディレクトリに .Xmodmapを作成して、下の設定する必要があります
# vi ~/.Xmodmap --- clear Mod1 keycode 66 = Alt_L keycode 69 = Alt_R add Mod1 = Alt_L add Mod1 = Alt_R ---
コンソールからvirshでKVMを管理する
コンソールでKVMを管理する場合、Linux付属のvirshコマンドを使います起動中の仮想マシン一覧表示
# virsh list
全ての仮想マシン一覧表示
# virsh list --all
仮想マシンの情報
# virsh dominfo (仮想マシン名)
仮想マシンの起動
# virsh start (仮想マシン名)
仮想マシンの停止
# virsh shutdown (仮想マシン名)
仮想マシンの強制停止(電源OFF)
# virsh destroy (仮想マシン名)
仮想マシンの一時停止
# virsh suspend (仮想マシン名)
仮想マシンの一時停止の再開
# virsh resume (仮想マシン名)
仮想マシンの保存(メモリをファイルに書き出す)
# virsh save (仮想マシン名) (保存ファイル名)
保存した仮想マシンの復元(ファイルからメモリに戻す)
# virsh restore (保存ファイル名)
仮想マシンの構成変更(メモリ量変更など)
- 仮想マシン停止
- /etc/libvirt/qemu/(仮想マシン名).xml を変更
- 変更を反映
# virsh define /etc/libvirt/qemu/(仮想マシン名).xml
- 起動
仮想マシンのコンソールログインする設定
以下の設定を入れる これをすると、ホストOSからvirsh consoleで接続できるようになる。grubの設定ファイル変更(CentOS 5系&6系共に実施が必要)
コンソール端末を作成 (CentOS 5 系のみで必要)# vi /etc/grub.conf --- serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1 # この行を追加 terminal --timeout=5 serial console # この行を追加 title CentOS (2.6.18-128.4.1.el5) root (hd0,0) kernel /vmlinuz (中略) console=ttyS0,115200n8 # console以降を追加 initrd /initrd-2.6.18-128.4.1.el5.img ---
コンソールからrootでログインできるようにする。(CentOS 5 系のみで必要)# vi /etc/inittab --- S0:12345:respawn:/sbin/agetty ttyS0 115200 # この行を追加 1:2345:respawn:/sbin/mingetty tty1 ---
# vi /etc/securetty --- ttyS0 #追記 ---
仮想マシンのコンソールに接続
※ 抜ける場合はctrl + ]# virsh console (ドメイン名)
仮想マシンを起動&そのままコンソール接続
# virsh start (ドメイン名) --console
KVMの運用
仮想マシンのバックアップ
基本的には、以下の二つのファイルをバックアップしておけばOK- 仮想マシン設定ファイル
- /etc/libvirt/qemu/(仮想マシン名).xml
- 仮想ディスクイメージファイル
- 上記設定ファイルにイメージファイルの場所は書いてあります
- 通常は /var/lib/libvirt/images/(仮想マシン名).img
仮想マシンのバックアップからのリストア
- 仮想ディスクイメージファイルを適切な場所(設定ファイルあるパス)に置く
- 通常は /var/lib/libvirt/images/(仮想マシン名).img
- 仮想マシン設定ファイルを適切な場所に置く
- 通常は /etc/libvirt/qemu/(仮想マシン名).xml
- 以下のコマンドで仮想マシン設定ファイルの読み込み
# virsh define (仮想マシン設定ファイル)
バックアップスクリプト
rubyのバックアップスクリプト作ったので、もしよかったら使ってください→ コチラVMWareの仮想ディスクマシンをKVM用に変換
vmwareの仮想ディスクイメージ(vmdk)をkvmに変換するときは以下のコマンドを打つ。qemu-img convert (vmdkファイル) -O raw (kvmイメージファイル)
KVMのトラブルシューティング(CentOS6系)
mDNS クライアントの作成に失敗
/var/log/libvirt/libvirtd.logのエラーメッセージ対応2012-07-17 15:47:49.240+0000: 15548: info : libvirt version: 0.9.10, package: 21.el6_3.1 (CentOS BuildSystem <[http://bugs.centos.org>,] 2012-07-03-16:15:49, c6b8.bsys.dev.centos.org) 2012-07-17 15:47:49.240+0000: 15548: error : virNetServerMDNSStart:460 : 内部エラー mDNS クライアントの作成に失敗しました: Daemon not running
参考# yum -y install avahi # /etc/init.d/messagebus restart # /etc/init.d/avahi-daemon restart # /etc/init.d/libvirtd restart # chkconfig messagebus on # chkconfig avahi-daemon on # chkconfig libvirtd on
virt-managerの日本語fontが表示されない
fontが足りていない対応
# yum install "vlgothic-p-fonts"
適切なエミュレーターを見つけられない
/var/log/libvirt/libvirtd.logのエラー対応2012-07-24 01:43:07.595+0000: 2126: error : qemuCapsExtractVersion:1566 : 内部エラー x86_64 の適切なエミュレーターを見つけられません
# ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-system-x86_64 # /etc/init.d/libvirtd restart
KVMのカーネルモジュールが読み込まれない
一時的な対応はカーネルモジュールの読み込めばOKKVM を利用できません。これは KVM パッケージがインストールされていない。また は、KVM のカーネルモジュール (kvm.ko) が読み込まれていないことを意味します。 QEMU が使われるので動作が遅くなるでしょう。 warning: KVM is not available. This may mean the KVM package is not installed, or the KVM kernel modules are not loaded. Your virtual machines my perform poorly
再起動後も設定を継続させる場合は、 /etc/rc.d/rc.sysinitに以下を記載# modprobe kvm # modprobe kvm-intel
modprobe kvm modprobe kvm-intel
仮想マシンがKVMの内部のネットワークから外に出れない。
仮想マインのインターフェースがプロミスきゃすになっていない対応
# ifconfig eth0 0.0.0.0 promisc up