仮想マシンミラーファイルのLVM論理パーティションのマウント


CentOSでのKVMのインストールと構成」という記事で説明した方法でguestオペレーティングシステムをrawファイルにインストールすると(virt-install...–disk path=/home/vpsee/centos.img...)、今後のメンテナンス中にトラブルが発生する可能性があります.例えば、この間、VpSeeはrootパスワードを忘れてこの仮想マシンのファイルシステムをマウントしshadowを復元する必要があるユーザーに遭遇しました.この場合、仮想マシンをマウントできるファイルシステムが必要です.仮想マシンのファイルシステムはrawファイル上にあり、このミラーファイルは完全にハードディスクをシミュレートしている.ハードディスクパーティションテーブルとLVM論理ボリュームが含まれているので、moutで簡単にマウントすることはできない.追加の作業が必要だ.では、このミラーファイルのLVM論理パーティションをマウントするにはどうすればいいのだろうか.
まずlosetupツールでcentos.imgファイルとloopデバイスをマッピングし、-fパラメータを使用して次の利用可能なloopデバイスを見つけます.
# losetup -f
/dev/loop0

# losetup /dev/loop0 /home/vpsee/centos.img

次に、fdisk/dev/loop 0を使用してcentos.imgのパーティションテーブルを表示します.-uパラメータは、cylinderではなくsectorを使用してオフセット量(offset)を記録することを示します.
# fdisk -u -l /dev/loop0

Disk /dev/loop0: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes

      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1   *          63      208844      104391   83  Linux
/dev/loop0p2          208845    20964824    10377990   8e  Linux LVM

各sectorは512バイト(bytes)であるため、offsetは208845 X 512=106928640に等しく、このoffsetは重要であり、以下の操作で使用される.
/dev/loop 0とcentos.imgのマッピングを解除し、offset=106928640でマッピングし直します.
# losetup -d /dev/loop0
# losetup /dev/loop0 /home/vpsee/centos.img -o 106928640

システムに2つのPV(物理ボリュームグループ)があることがわかります.1つはシステム自体で、1つはcentos.imgの中のPVです.この2つのPVの名前は同じです.システムをインストールしたときにデフォルトの名前を使っていたので、面倒になりました.後の操作でPVの名前を変えて、後続の操作を便利にしました.
# lvm pvscan
  PV /dev/sda2    VG VolGroup00   lvm2 [465.66 GB / 0    free]
  PV /dev/loop0   VG VolGroup00   lvm2 [9.88 GB / 0    free]
  Total: 2 [475.53 GB] / in use: 2 [475.53 GB] / in no VG: 0 [0   ]

# lvm vgchange -ay
  2 logical volume(s) in volume group "VolGroup00" now active
  2 logical volume(s) in volume group "VolGroup00" now active

2つの同じ名前のVolGroup 00に名前を変更するので、まず彼らの異なるUUIDを見つけなければなりません.
# vgs -v
    Finding all volume groups
    Finding volume group "VolGroup00"
    Finding volume group "VolGroup00"
  VG         Attr   Ext    #PV #LV #SN VSize   VFree VG UUID
  VolGroup00 wz--n- 32.00M   1   2   0 465.66G    0  dqfs1x-QBY1-kNRr-l0X0-RnoW-GgIR-ZfjkCS
  VolGroup00 wz--n- 32.00M   1   2   0   9.88G    0  XrQNej-Aikn-qjxy-q7Lf-mBDk-gSfs-bLEgT6

上の2つ目はcentos.imgの中のVolGroup 00(9.88 GBあれ)で、vps 01と名前を変えました.
# vgrename XrQNej-Aikn-qjxy-q7Lf-mBDk-gSfs-bLEgT6 vps01
  Volume group "VolGroup00" successfully renamed to "vps01"

ボリュームグループの名前とスペースの大きさから、LogVol 00 vps 01をマウントする必要があると判断できます(LogVol 01 vps 01はswapです):
# lvm lvs
  LV       VG         Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  LogVol00 VolGroup00 -wi-ao 460.03G
  LogVol01 VolGroup00 -wi-ao   5.62G
  LogVol00 vps01      -wi---   8.88G
  LogVol01 vps01      -wi---   1.00G

やっとcentos.imgのLVM論理パーティションをマウントできます.
# mount /dev/mapper/vps01-LogVol00 /mnt

# ls /mnt
bin   dev  home  lib64       media  opt   root  selinux  sys  usr
boot  etc  lib   lost+found  mnt    proc  sbin  srv      tmp  var

使用後、順番にきれいにアンインストールする必要があります.
# umount /mnt
# vgchange -an vps01
  0 logical volume(s) in volume group "vps01" now active
# losetup -d /dev/loop0

分類:Cloud | Virtualization | Thin|コメントなし