qemu-imgで作ったディスクを手でマウントする
タイトル通り。
LVM使ってなかったら普通にoffsetつけてmountすればいいけど、ディスクイメージの中のsda2がLVMだったりした時の方法がわからなかったのでメモ。
loopデバイスにbindする。
# losetup /dev/loop0 rhel6.0-x86-base.img
partitionを読み込む
# kpartx -a /dev/loop0
vgscan
# vgscan Reading all physical volumes. This may take a while... Found volume group "vg_rhel60" using metadata type lvm2 :
見えた。
一応vgdisplayでも確認
# vgdisplay --- Volume group --- VG Name vg_rhel60 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 3.51 GB PE Size 4.00 MB Total PE 898 Alloc PE / Size 898 / 3.51 GB Free PE / Size 0 / 0 VG UUID Bm5xYQ-GM7B-b6XC-RsRP-CCLS-H2L8-jtPNUU :
ディスクイメージの中のvgをactiveに
# vgchange -ay vg_rhel60 2 logical volume(s) in volume group "vg_rhel60" now active
mount
# mount /dev/vg_rhel60/lv_root /mnt/image/
中身を確認
# ls /mnt/image/ bin cgroup etc lib media opt root selinux sys usr boot dev home lost+found mnt proc sbin srv tmp var
umountしてdeactiveして読み込んだパーティション消してloopのunbind
# umount /mnt/image/ # vgchange -an vg_rhel60 0 logical volume(s) in volume group "vg_rhel60" now active # kpartx -d /dev/loop0 # losetup -d /dev/loop0
上は簡単な例。
ディスクイメージにあるvgnameが他に見えてるvgnameと被ってると面倒臭いことになる。
例えばホストもゲストもRHEL5でVG名をデフォルトのままにしてると両方VolGroupNNとかになってて大変。
そんな時はUUIDを指定してvgnameを変更してあげればよい。
# vgdisplay --- Volume group --- VG Name VolGroup00 : VG UUID 8hHQhB-ad0O-IKv0-cW0q-4HEI-P3l5-DVRd7K # vgrename 8hHQhB-ad0O-IKv0-cW0q-4HEI-P3l5-DVRd7K YourGroup00 # vgchange -ay /dev/YourGroup00
まー、そんなことしなくてもはじめからvirt-xxxなコマンド使ってればよかったんやけど、やってしまったものはしょうがないのでこのままもう少しいじってみる。