仮想化環境ではディスクやメモリなどのリソースを必要に応じて増減できる点が魅力です。今回はKVMのゲストOSを動作させたまま、ディスクを追加する方法をご紹介します。
ディスクの動的追加について調べると、KVMの本家サイトにあるHotadd pci devicesというページに行き当たります。このページの方法を要約するとこんな感じです。
HDDはPCIのSCSIコントローラと共に動的に追加する ゲストOSはPCIカードの動的な増減を検出しなければならない そこでpci_hotplug関連のカーネルモジュールをロードする qemuのモニタからPCIカードとHDDイメージを追加すると、ゲストOSが動的に検出してくれるなるほど。ちょっと試してみましょう。
qemuモニタの使い方本論のディスク追加の前に、qemuモニタの使い方に触れておきます。
qemuモニタはホストOS上からVMを操作するためのインターフェースです。qemuモニタへのアクセス方法は、オプションの指定によって選択できるのですが、telnet経由で利用するのが手っ取り早いと思います。そのためには、以下のようなオプションを指定します。
-monitor telnet::4444,server,nowait
指定している「4444」というのはポート番号です。環境に応じて適切なポート番号を選んでください。たとえば複数のVMを起動する場合なら、それぞれ異なるポート番号を付けなければいけません。さてqemuモニタは4444番ポートで待ち受けているので、telnetを使って繋いでみます。
host# telnet localhost 4444 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. QEMU 0.12.2 monitor - type 'help' for more infomation (qemu)
以上のようにプロンプトが出て、コマンド入力待ちの状態になります。
qemuモニタは、仮想マシンであるVMに対してさまざまなコマンドを送ったり、状態を確認したりすることができます。helpコマンドを使うと長いリストが表示されるのでそれをご覧になるとよいでしょう。たとえばリセットボタンを押す(system_reset)、電源を切る(system_powerdown、quit)、VMを移動する(migrate)などのコマンドが用意されています。本稿では特に詳細の説明をしないままqemuモニタのコマンドを多用しますが、こちらのhelpを参照いただければ概要は理解していただけると思います。
本家サイトの手順を試すそれでは本家サイトの手順に沿って動的ディスクの追加を試してみましょう。まずはゲストOSを起動します。今回の実験では、ホストOSにFedora12、ゲストOSにはCentOS5.0.3を使いました。pci_hotplugというモジュールを探してみたのですが見つかりませんでした。しかし、どうやらacpiphpをロードしておけば大丈夫のようです。
guest# modprobe acpiphp guest# dmesg | less [...]