KVMで仮想マシンのメモリサイズを変更する (手動変更)


以前、こちらでゲストOSのメモリサイズ変更方法を書いたが、たまにうまく動かないことがある。理由はわからんけど、コマンドそのものは正常終了しているのに反映されなかったり、ゲストOSを起動している間でないと反映されなかったり(ありえねー)・・・。

というわけで、どうにかならんものかとググったら枯山水のメーリングリストが引っかかったが、
調査したところ、libvirt(0.8.2-0.8.3)のqemuドライバでは、domainSetMaxMemory APIは
未サポートのようでした。(xenドライバではサポートされています。)
とのこと。うちのは libvirt-0.8.2-15.el5.3 だったんだけど、この辺とか見てると未だ対応中?ということで手動でゲストOSのメモリサイズを変更してみた。流れは以下のとおり。
1) メモリサイズを変更したいマシンをシャットダウンする

$ ssh hogehoge.example.com
$ sudo /sbin/shutdown -h now
または
$ su -
# shutdown -h now

2) エディタでxmlファイルを編集しメモリの上限サイズを変更する

$ sudo cp -p /etc/libvirt/qemu/hogehoge.example.com.xml /etc/libvirt/qemu/hogehoge.example.com.xml.orig

$ sudo vi /etc/libvirt/qemu/hogehoge.example.com.xml
変えるところは以下の2行。
  262144
  262144
ここの数値はキロバイト単位なので、1024で割ったら256MBになるって寸法。xmlファイルの先頭4~5行目にあるので、すぐに見つけられるはず。
 
 
3) 母艦マシンのvirshコマンドで反映させる
対象ゲストOSのxmlファイルを編集し終わったら、以下のコマンドで反映させる。
$ sudo virsh define /etc/libvirt/qemu/hogehoge.example.com.xml
4) 母艦マシンのvirshコマンドでマシンを起動する
$  sudo /usr/bin/virsh start hogehoge.example.com

作業前後で仮想マシンにログインしてfreeコマンドやtopコマンドで確認して、期待通りであればOKです。
ね、簡単でしょ?