etc/extraction-LVM-from-loopback-mount

ループバックイメージからLVMパーティションを抜き出す方法

(書きかけ) VMware → Xen の仮想ディスク移行を行いました。

基本的には

  • qemu-img convert で raw イメージに変換
    • VMware で 2Gごとに分割されている場合は、それぞれを raw イメージに変換
  • cat [filename.002] >> [filename.001] などの方法でファイルを連結
  • 出来上がった巨大な仮想ディスクイメージが全体のディスク構成になる
fdisk -u <image file>

[mitsu@crest sip_server-01]$ sudo /sbin/fdisk -l -u -C 592  sip_server-f001.img
last_lba(): I don't know how to handle files with mode 81a4

Disk sip_server-f001.img: 0 MB, 0 bytes
255 heads, 63 sectors/track, 592 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes

              Device Boot      Start         End      Blocks   Id  System
sip_server-f001.img1   *          63      208844      104391   83  Linux
sip_server-f001.img2          208845     8385929     4088542+  8e  Linux LVM

FC6などのLVM構成のインストールがデフォルトになっているディストロの仮想ディスクイメージの場合はこの中に LVM の PV が含まれる。以下はそのPV内にある VG/LVを救うための方法。

2番目のパーティション(FC6でのデフォルト構成の場合)がPVなので、上記の sip_server-f001.img2 の開始位置をバイトに変換 (512 * 208845) したものをオフセットとしてループバックマウント。

そこから vgscan で母艦のマシンのLVMに認識させる(!) ※ 母艦のLVMに同じVG名があったらダメかも。

[mitsu@crest sip_server-01]$ sudo /sbin/losetup
usage:
  /sbin/losetup loop_device                                      # give info
  /sbin/losetup -d loop_device                                   # delete
  /sbin/losetup [ -e encryption ] [ -o offset ] loop_device file # setup

[mitsu@crest sip_server-01]$ sudo /sbin/losetup -o $((512*208845)) /dev/loop7 sip_server-f001.img
[mitsu@crest sip_server-01]$ sudo /sbin/vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "VolGroup00" using metadata type lvm2
  Found volume group "vg00" using metadata type lvm2

<マウントできない。lvdisplay すると LV Status が NOT available に>
[mitsu@crest sip_server-01]$ sudo /usr/sbin/lvchange -ay /dev/VolGroup00/LogVol00
[mitsu@crest sip_server-01]$ sudo mount /dev/VolGroup00/LogVol00 /mnt

添付ファイル