- 物理サーバをコンテナ化 (OpenVzの例) - Qiita の逆
- CentOS6 64bit のLXCコンテナをどうにかしたかった。
- Proxmox6だとProxmox5のlxcコンテナのbackupをrestoreすると mknodで失敗する。
- 上記例はpostfixだけで済んだが、今回は/dev/以下の大量のものが該当だったため仮想マシンで動かすこととした。
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を抜いて、仮想マシンで普通に起動できることを確認。
- 完了