4.4.15.7. RAID イメージの分割とマージ
lvconvert
コマンドで --splitmirrors
引数とともに --trackchanges
引数を使用することにより、すべての変更を追跡しながら、読み取り専用に RAID1 アレイのイメージを一時的に分割することができます。これにより、イメージの分割後に変更になったアレイの部分のみを再同期する一方で、そのイメージをアレイに後でマージし直すことができます。
RAID イメージを分割する
lvconvert
コマンドの形式は、以下のとおりです。
lvconvert --splitmirrors count --trackchanges vg/lv [removable_PVs]
--trackchanges
引数を使用して RAID イメージを分割する場合、分割するイメージを指定することはできますが、分割されるボリュームの名前を変更することはできません。また、結果として生じるボリュームには以下の制約があります。
- 作成する新規ボリュームは読み取り専用です。
- 新規ボリュームのサイズは変更できません。
- 残りのアレイの名前は変更できません。
- 残りのアレイのサイズは変更できません。
- 新規のボリュームおよび残りのアレイを個別にアクティブ化することはできません。
--trackchanges
引数を使用して分割したイメージをマージするには、その後の lvconvert
コマンドで --merge
引数を指定して実行します。イメージをマージする場合、イメージが分割されてから変更されたアレイの部分のみが再同期されます。
RAID イメージをマージする
lvconvert
コマンドの形式は、以下のとおりです。
lvconvert --merge raid_image
以下の例は、残りのアレイへの変更を追跡する一方で、RAID1 論理ボリュームを作成し、そのボリュームからイメージを分割しています。
#lvcreate --type raid1 -m2 -L1G -n my_lv .vg
Logical volume "my_lv" created #lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sdb1(1) [my_lv_rimage_1] /dev/sdc1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdb1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/sdd1(0) #lvconvert --splitmirrors 1 --trackchanges my_vg/my_lv
my_lv_rimage_2 split from my_lv for read-only purposes. Use 'lvconvert --merge my_vg/my_lv_rimage_2' to merge back into my_lv #lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sdb1(1) [my_lv_rimage_1] /dev/sdc1(1) my_lv_rimage_2 /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdb1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/sdd1(0)
以下の例は、残りのアレイへの変更を追跡する一方で、RAID1 ボリュームからイメージを分割しています。その後に、ボリュームをアレイにマージし直しています。
#lvconvert --splitmirrors 1 --trackchanges my_vg/my_lv
lv_rimage_1 split from my_lv for read-only purposes. Use 'lvconvert --merge my_vg/my_lv_rimage_1' to merge back into my_lv #lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sdc1(1) my_lv_rimage_1 /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdc1(0) [my_lv_rmeta_1] /dev/sdd1(0) #lvconvert --merge my_vg/my_lv_rimage_1
my_vg/my_lv_rimage_1 successfully merged back into my_vg/my_lv #lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sdc1(1) [my_lv_rimage_1] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdc1(0) [my_lv_rmeta_1] /dev/sdd1(0)
RAID1 ボリュームからイメージを分割した後に、その分割を永続化するためには第 2 のコマンド
lvconvert --splitmirrors
を発行し、--trackchanges
引数を指定せずにイメージを分割する最初の lvconvert
コマンドを繰り返します。これで --trackchanges
引数が作成したリンクが機能しなくなります。
--trackchanges
引数を使用してイメージを分割した後は、アレイ上でその後に lvconvert --splitmirrors
コマンドを発行することはできません。ただし、追跡されるイメージを永久に分割する場合は例外です。
以下の一連のコマンドは、イメージを分割してこれを追跡してから、追跡されるイメージを永久に分割します。
#lvconvert --splitmirrors 1 --trackchanges my_vg/my_lv
my_lv_rimage_1 split from my_lv for read-only purposes. Use 'lvconvert --merge my_vg/my_lv_rimage_1' to merge back into my_lv #lvconvert --splitmirrors 1 -n new my_vg/my_lv
#lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv /dev/sdc1(1) new /dev/sdd1(1)
ただし、以下の一連のコマンドは失敗する点に注意してください。
#lvconvert --splitmirrors 1 --trackchanges my_vg/my_lv
my_lv_rimage_1 split from my_lv for read-only purposes. Use 'lvconvert --merge my_vg/my_lv_rimage_1' to merge back into my_lv #lvconvert --splitmirrors 1 --trackchanges my_vg/my_lv
Cannot track more than one split image at a time
同様に、以下の一連のコマンドも失敗します。分割されたイメージが追跡されていないためです。
#lvconvert --splitmirrors 1 --trackchanges my_vg/my_lv
my_lv_rimage_1 split from my_lv for read-only purposes. Use 'lvconvert --merge my_vg/my_lv_rimage_1' to merge back into my_lv #lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sdc1(1) my_lv_rimage_1 /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdc1(0) [my_lv_rmeta_1] /dev/sdd1(0) #lvconvert --splitmirrors 1 -n new my_vg/my_lv /dev/sdc1
Unable to split additional image from my_lv while tracking changes for my_lv_rimage_1