Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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