CentOS6のLXCコンテナを仮想マシンに移す (lxc->kvm)


1. CentOS6のインストールCDから普通にOSインストール

  • 仮でCentOS6を入れておく。ブート出来るようにするのが目的のため設定は適当でよい。

2. lxcコンテナのファイルを全部tar.gzで固める

  • proxmoxの場合、rawイメージで格納されている。
lxcのファイルをtar.gzに固める
mkdir a
mount -o ro,loop 〜.raw a
cd a

tar czf ~/lxc.tar.gz *.tar.gz *auto

3. CentOS6をインストールした仮想マシンに 2 のtar.gzをコピー

4. CentOS6のインストールCDからレスキューモードで起動

  • ファイルシステムのマウントを求められた場合、skipにしないと以下のように青画面で再起動になる。

5. 仮想マシンの/内のものを LXCのtar.gzに差し替える

# レスキューモード環境
cd /mnt
mkdir a
## / をマウント
mount /dev/vda3 a
cd a

mkdir kvm
## 仮想マシンのファイルを全てkvmフォルダに移す
mv * .auto kvm
## lxcの中身を展開
tar xzf lxc.tar.gz

## lxcの etc/mtab /proc/mounts にシンボリックリンクが貼られているため修正
rm etc/mtab
cp kvm/etc/mtab etc/mtab
## カーネルモジュールを移植
mv kvm/lib/modules/* lib/modules/

6. 再度 レスキューCDで起動

  • 今度はファイルシステムを自動検出でマウントしてもらい、Continue押下し以下。
cd /mnt/sysimage
chroot .

grub-install /dev/vda
exit

reboot

7. CDを抜いて、仮想マシンで普通に起動できることを確認。

  • 完了