この説明はdomUを作るときLVMを指定した場合です。最初に
# losetup -f
でLOOPの番号を調べ、
# losetup /dev/表示されたloopナンバー /dev/VGネーム/LVネーム # ここに指定するのはオリジナルのdomUのLVM(コピーされる)
# kaprtx -a /dev/loopナンバー
とし
# ls /dev/mapper
とすると loopナンバーP1やloopナンバーP2等が表示される。
# mount/mapper/loop0p1 /temp1
temp1はマウントポイント。これは/bootになっている筈、又loop0p2 はLVMになっている筈なので、このままではmount出来ない。
# vgchange -ay
とするとloop0p2のLVMがアクティブになるので
# lvscan
をすると新しいLVがある筈。デフォルトでそのまま作ると
/dev/VolGroup00/LogVol00 と /dev/VolGroup00/LogVol01になっていると思う。
(全てデフォルトから変更をしていないとVolGroup00が重複している可能性が大。その時は、vgchange -an で一度inactiveにした後、vgrename 旧VG名 新VG名 でVG名を変更してあげればいい)
どちらかがswapで他方が / の筈なので両方を /temp2にmountしてみてmount出来る方が / 。もちろんswapは必要ない。
コピーされる領域(LVM)をマウントして置く
# mount /dev/VGrails/LVrailsboot /temp3 # VG名、LV名は自分の環境に合わせる
# mount /dev/VGrails/LVrailsroot /temp4 # VG名、LV名は自分の環境に合わせる
カレントDIRを変更し、
# cd /temp1
コピーする
# cp -pr ./ /temp3
# cd /temp2
# cp -pr ./ /temp4
domUのfstabを変更しておく
# gedit /temp4/etc/fstab
ここで /, /boot, swap を それぞれ/dev/xvdb1, /dev/xvda1, /dev/xvdc1 にして保存。
例:/dev/xvdb1 / ext3 defaults 1 1
grub.confの変更 (/boot/grub/grub.conf)
kernel /vmlinuz-バージョン ro root=/dev/xvda2 rhgb quiet を
kernel /vmlinuz-バージョン ro root=/dev/xvdb1 rhgb quiet
にエントリー分あるので変更する。
全てをアンマウントする
# cd
# umount /temp1
# umount /temp2
# umount /temp3
# umount /temp4
kpartxやlosetupを元に戻す。
# kpartx -d /dev/loopナンバー
# losetup -d /dev/loopナンバー
次にxenの設定ファイルを変更する。
# gedit /etc/xen/rails
disk = [ "phy:/dev/オリジナルのVGネーム/オリジナルのLVネーム,xvda,w" ]
の部分を
disk = [ "phy:/dev/VGrails/LVrailsboot,xvda1,w" ,"phy:/dev/VGrails/LVrailsroot,xvdb1,w" ,"phy:/dev/VGrails/LVrailsswap,xvdc1,w" ]
に変更し保存。
これでdomUを走らせればいい。
Xenの仮想化でdomUを作る時、イメージファイルやLVM,ext3等の領域は1つしか指定できませんので、新規にdomUを作ると、指定したイメージファイルや領域の中にLVMを作り、デフォルトではそこにboot用、root用、swap用の3つのLV(ロジカル・ボリューム)を作ります。
つまりLVMの中にさらにLVM(LVMを指定した時)を作るようなイメージになります。
個人的にこの2重の構造は抵抗があり、オフラインからmountするのも大変ですので、domUを作成後、3つの領域を直接LVMにします。
準備として新しくコピーされるLVM領域を作ってフォーマットしておきます。
まずPVを作る
# pvcreate /dev/sdd1 # sdd1は各自の環境による
VGを作る
# vgcreate VGネーム /dev/sdd1
LVを作る
# lvcreate -L 10G -n LVネーム VGネーム
10Gは作るLVのサイズ、私はLVrailsboot (100M), LVrailsroot (15G), LVrailsswap (2G)を作りました。
各領域をフォーマット
# mkfs.ext3 /dev/VGネーム/LVrailsboot
# mkfs.ext3 /dev/VGネーム/LVrailsroot
# mkswap /dev/VGネーム/LVrailsswap