はじめに
IBMではClassic環境の仮想サーバーで利用可能な補助ストレージとしてPortable Storage Volume(PSV)があります。このストレージは仮想サーバー上に最大3つまで取り付けることが可能です。
PSVの特徴として仮想サーバー上にアタッチしてあるものを別の仮想サーバーへ移行できるように切り離すことができます。
しかし、PSVを移行する際に複数PSVでLVM論理ボリュームを構築していた場合、そのままデタッチしてしまうと論理ボリューム情報が失われてしまう可能性があります。
そのため本記事ではPSV移行時にLVM論理ボリュームを保存し、移行先で再び構築する方法を記載します。
手順として以下の記事を参考に作成しました。
作業手順
本記事で実施した作業内容は以下の通りです。
- 論理ボリューム情報のエクスポート
- PSVの付け替え
- 論理ボリューム情報のインポート
使用する環境
本記事で使用する環境は以下の通りです。
- PSV移行前/後の仮想サーバー:Virtual Server for Classic(東京リージョン, OS:CentOS, 2Core, 4GB)2台
- LVM論理ボリューム構築済みのPSV:Portable SAN Storage10GB3台
- 30GBのVolume Groupから15GB, 10GB, 4GBのLogical Volumeに分割
本記事でのPV,LV,VGは以下の通りに名前をつけています。
- Pysical Volume - PV1:xvdc, PV2:xvde, PV3:xvdf
- Logical Volume - LV1:lv-15g, LV2:lv-10g, LV3:lv-5g
- Volume Group - example-vg
$ sudo lsblk
xvda 202:0 0 25G 0 disk
├─xvda1 202:1 0 1G 0 part /boot
└─xvda2 202:2 0 24G 0 part /
xvdb 202:16 0 2G 0 disk
└─xvdb1 202:17 0 2G 0 part
xvdc 202:32 0 10G 0 disk
└─example--vg-lv--15g 253:0 0 15G 0 lvm
xvde 202:64 0 10G 0 disk
├─example--vg-lv--15g 253:0 0 15G 0 lvm
├─example--vg-lv--10g 253:1 0 10G 0 lvm /mnt
└─example--vg-lv--4g 253:2 0 4G 0 lvm
xvdf 202:80 0 10G 0 disk
└─example--vg-lv--10g 253:1 0 10G 0 lvm /mnt
xvdh 202:112 0 64M 0 disk
$ pvs
PV VG Fmt Attr PSize PFree
/dev/xvdc example-vg lvm2 a-- <10.00g 0
/dev/xvde example-vg lvm2 a-- <10.00g 1012.00m
/dev/xvdf example-vg lvm2 a-- <10.00g 0
$ lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv-10g example-vg -wi-ao---- 10.00g
lv-15g example-vg -wi-a----- 15.00g
lv-4g example-vg -wi-a----- 4.00g
また、LVM論理ボリューム内にテストの為テキストファイルを保存しておきます。
$ cat /mnt/sample.txt
hello
1. 論理ボリューム情報のエクスポート
移行前にまずはアンマウントを実施します。
$ umount /dev/example-vg/lv-10g
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
xvda 202:0 0 25G 0 disk
├─xvda1 202:1 0 1G 0 part /boot
└─xvda2 202:2 0 24G 0 part /
xvdb 202:16 0 2G 0 disk
└─xvdb1 202:17 0 2G 0 part
xvdc 202:32 0 10G 0 disk
└─example--vg-lv--15g 253:0 0 15G 0 lvm
xvde 202:64 0 10G 0 disk
├─example--vg-lv--15g 253:0 0 15G 0 lvm
├─example--vg-lv--10g 253:1 0 10G 0 lvm
└─example--vg-lv--4g 253:2 0 4G 0 lvm
xvdf 202:80 0 10G 0 disk
└─example--vg-lv--10g 253:1 0 10G 0 lvm
xvdh 202:112 0 64M 0 disk
続いてVGであるexample-vg
の不活性化をします。
$ vgchange -a n example-vg
0 logical volume(s) in volume group "example-vg" now active
$ lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv-10g example-vg -wi------- 10.00g
lv-15g example-vg -wi------- 15.00g
lv-4g example-vg -wi------- 4.00g
lvs
で確認するとAttrの項目のaがなくなっている(活性ではない)ことが確認できます。
そして、VG情報のエクスポートを実施します。
$ vgexport example-vg
Volume group "example-vg" successfully exported
$ pvscan
PV /dev/xvdc is in exported VG example-vg [<10.00 GiB / 0 free]
PV /dev/xvde is in exported VG example-vg [<10.00 GiB / 1012.00 MiB free]
PV /dev/xvdf is in exported VG example-vg [<10.00 GiB / 0 free]
確認のため、pvscan
を実施するとVGがエクスポートされていることが確認できます。
2. PVSの付け替え
VGのエクスポートが完了したため、次にPVSを移行先のサーバーに付け替えます。
IBM Cloudのポータル画面の仮想サーバーの画面からストレージ→ポータブル・ストレージの右側のアクションメニューからスワップを選択します。
スワップ先としてデバイス一覧が表示されるのでスワップしたいサーバーに対し、スワップボタンを選択します。
数分待つとスワップが完了し、移行先のサーバーにportable storageが移行できていることが確認できます。
3. 論理ボリューム情報のインポート
最後に移行先のサーバーで論理ボリューム情報をインポートします。
はじめに移行先のサーバーでもLVMが認識できているかを確認します。
$ pvscan
PV /dev/xvdc is in exported VG example-vg [<10.00 GiB / 0 free]
PV /dev/xvde is in exported VG example-vg [<10.00 GiB / 1012.00 MiB free]
PV /dev/xvdf is in exported VG example-vg [<10.00 GiB / 0 free]
Total: 3 [<29.99 GiB] / in use: 3 [<29.99 GiB] / in no VG: 0 [0 ]
VGのインポートを実行します。
$ vgimport example-vg
$ pvscan
PV /dev/xvdc VG example-vg lvm2 [<10.00 GiB / 0 free]
PV /dev/xvde VG example-vg lvm2 [<10.00 GiB / 1012.00 MiB free]
PV /dev/xvdf VG example-vg lvm2 [<10.00 GiB / 0 free]
Total: 3 [<29.99 GiB] / in use: 3 [<29.99 GiB] / in no VG: 0 [0 ]
VGの活性化を実施します。
$ lvchange --available y example-vg
$ lvscan
ACTIVE '/dev/example-vg/lv-15g' [15.00 GiB] inherit
ACTIVE '/dev/example-vg/lv-10g' [10.00 GiB] inherit
ACTIVE '/dev/example-vg/lv-4g' [4.00 GiB] inherit
最後にマウントを実施し、保存したテキストファイルを確認します。
$ mount /dev/example-vg/lv-10g /mnt
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
xvda 202:0 0 25G 0 disk
├─xvda1 202:1 0 1G 0 part /boot
└─xvda2 202:2 0 24G 0 part /
xvdb 202:16 0 2G 0 disk
└─xvdb1 202:17 0 2G 0 part
xvdc 202:32 0 10G 0 disk
└─example--vg-lv--15g 253:0 0 15G 0 lvm
xvde 202:64 0 10G 0 disk
├─example--vg-lv--15g 253:0 0 15G 0 lvm
├─example--vg-lv--10g 253:1 0 10G 0 lvm /mnt
└─example--vg-lv--4g 253:2 0 4G 0 lvm
xvdf 202:80 0 10G 0 disk
└─example--vg-lv--10g 253:1 0 10G 0 lvm /mnt
xvdh 202:112 0 64M 0 disk
$ cat /mnt/sample.txt
hello
保存していたファイルが無事確認できました。
以上でLVM論理ボリュームの移行は完了です。