物理マシンを仮想マシンに移行する手順のまとめ
Linux KVM(Kernel-based Virtual Machine)の物理マシンを仮想マシンに移行する手順をまとめました。すでにある物理マシンを仮想マシンに移行する場合を考えます。仮想マシンを実行するための環境はハイパーバイザと呼びます。
ディストリビューションに依存しますが、基本的にはカーネルを取り替えるだけで動きます。
カーネル
KVMを実現するには下記の2つが必要です。ディストリビューションによっては標準で用意されています。
両者はハイパーバイザの/bootに入れておくとよいです。KVMの起動時にカーネルを指定できるので、仮想マシンにカーネルイメージが入っていなくても大丈夫です。
kvm -kernel /boot/kvm.current/vmlinuz -append root=/dev/vda
ちなみに、ハイパーバイザカーネルは下記の設定で作れます。
--- Virtualization [*] Kernel-based Virtual Machine (KVM) support [*] KVM for Intel processors support (NEW) [ ] KVM for AMD processors support (NEW) --- Networking support [*] 802.1d Ethernet Bridging --- Network device support [*] Universal TUN/TAP device driver support
ゲストカーネルは下記の設定で作れます。ディスク、ネットワーク、コンソールは実際のデバイスではなくvirtioを選ぶと性能向上が見込めます。ゲストカーネルでは必要ないオプションを無効にしておきましょう。
--- Paravirtualized guest support [ ] Xen guest support [*] KVM paravirtualized clock [*] KVM Guest support --- Block devices [*] Virtio block driver (EXPERIMENTAL) --- Network device support [*] Virtio network driver (EXPERIMENTAL) Character devices ---> [*] Virtio console
ディスク
物理マシンのパーティションをそのまま流用できます。特別な変換は必要ありません。ハイパーバイザからパーティションが読めるだけで十分です。物理マシンのパーティションが/dev/sda1であれば、
kvm -drive file=/dev/sda1,if=virtio
のように指定します。
仮想マシンのディスクはLVM上に作成しておくとよいです。QEMUイメージにすると、仮想マシンから物理マシンに戻す場合にパーティションへの書き戻しが必要になります。LVMボリュームであれば仮想マシンでも物理マシンでも起動できます。
ネットワーク
物理マシンの設定は一切変更しなくて大丈夫です。ハイパーバイザでブリッジを作成して結合します。仮想的なハブを作ってLANケーブルで接続する感じです。
KVMの起動時にネットワークカードを指定します。下記のように指定すると、ハイパーバイザ上にtap0という仮想的なLANポートが作成されます。tap0は仮想マシンのNICにつながっています。
kvm -net nic,model=virtio -net tap,ifname=tap0
物理ネットワークeth0とtap0を接続するため、ブリッジhub0を作成します。
brctl addbr hub0 brctl addif hub0 tap0 brctl show