4.4.13.5. 修改既有 RAID1 裝置中的映像檔數量

您能如在先前的 LVM 鏡射實作中一般,更改既有 RAID1 陣列中的映像檔數量,您必須藉由使用 lvconvert 指令來指定額外欲新增或移除的 metadata/data 子卷冊配對。欲取得在較早的 LVM 鏡射實作中修改卷冊配置上的相關資訊,請參閱 節 4.4.3.4, “更改鏡像卷冊配置”
當您透過 lvconvert 指令來新增映像檔至 RAID1 裝置時,您可指定最終產生之裝置的映像檔總數,或是指定欲新增至該裝置的映像檔數量。您亦可選用性地指定欲在哪個實體裝置上放置新的 metadata/data 映像檔配對。
Metadata 子卷冊(名為 *_rmeta_*)總是會位於與其資料子卷冊配對(*_rimage_*)相同的實體裝置上。Metadata/data 子卷冊配對將不會如同其它 RAID 陣列中的 metadata/data 子卷冊一般,建立在相同的實體卷冊上(除非您指定 --alloc anywhere)。
新增映像檔至 RAID1 卷冊的指令格式如下:
lvconvert -m new_absolute_count vg/lv [removable_PVs]
lvconvert -m +num_additional_images vg/lv [removable_PVs]
比方說,以下顯示了一個雙向 RAID1 陣列的 LVM 裝置 my_vg/my_lv
# lvs -a -o name,copy_percent,devices my_vg
  LV            Copy%  Devices                      
  my_lv                 6.25 my_lv_rimage_0(0),my_lv_rimage_1(0)
  [my_lv_rimage_0]        /dev/sde1(0)                 
  [my_lv_rimage_1]        /dev/sdf1(1)                 
  [my_lv_rmeta_0]         /dev/sde1(256)               
  [my_lv_rmeta_1]         /dev/sdf1(0)
下列指令會將雙向的 RAID1 裝置轉換為 my_vg/my_lv 一個三向的 RAID1 裝置:
# lvconvert -m 2 my_vg/my_lv
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices                                     
  my_lv              6.25 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
  [my_lv_rimage_0]        /dev/sde1(0)                                
  [my_lv_rimage_1]        /dev/sdf1(1)                                
  [my_lv_rimage_2]        /dev/sdg1(1)                                
  [my_lv_rmeta_0]         /dev/sde1(256)                              
  [my_lv_rmeta_1]         /dev/sdf1(0)                                
  [my_lv_rmeta_2]         /dev/sdg1(0)
當您新增了一個映像檔至 RAID1 陣列時,您可為映像檔指定實體卷冊。下列指令會將雙向 RAID1 裝置 my_vg/my_lv 轉換為一個三向的 RAID1 裝置,並指定陣列將使用實體卷冊 /dev/sdd1
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv             56.00 my_lv_rimage_0(0),my_lv_rimage_1(0)
  [my_lv_rimage_0]        /dev/sda1(1)
  [my_lv_rimage_1]        /dev/sdb1(1)
  [my_lv_rmeta_0]         /dev/sda1(0)
  [my_lv_rmeta_1]         /dev/sdb1(0)
# lvconvert -m 2 my_vg/my_lv /dev/sdd1
# lvs -a -o name,copy_percent,devices my_vg
  LV               Copy%  Devices
  my_lv             28.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
  [my_lv_rimage_0]        /dev/sda1(1)
  [my_lv_rimage_1]        /dev/sdb1(1)
  [my_lv_rimage_2]        /dev/sdd1(1)
  [my_lv_rmeta_0]         /dev/sda1(0)
  [my_lv_rmeta_1]         /dev/sdb1(0)
  [my_lv_rmeta_2]         /dev/sdd1(0)
若要由 RAID1 陣列中移除映像檔,請使用下列指令。當您透過 lvconvert 指令,由 RAID1 裝置移除映像檔時,您可為最終產生的裝置指定映像檔總數,或是指定欲由裝置上移除多少映像檔。您亦可選用性的指定欲由哪些實體卷冊移除裝置。
lvconvert -m new_absolute_count vg/lv [removable_PVs]
lvconvert -m -num_fewer_images vg/lv [removable_PVs]
此外,當有個與 metadata 子卷冊相聯的映像檔被移除時,任何編號較高的映像檔皆會被往下移,以填入空位。若您由一個包含了 lv_rimage_0lv_rimage_1lv_rimage_2 的三向 RAID1 陣列中移除了 lv_rimage_1,這將會產生一個包含 lv_rimage_0lv_rimage_1 的 RAID1 陣列。子卷冊 lv_rimage_2 將會被重新命名,並置於空位中成為 lv_rimage_1
下列範例顯示了一個三向 RAID 1 邏輯卷冊 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_2(0)
  [my_lv_rimage_0]        /dev/sde1(1)                                
  [my_lv_rimage_1]        /dev/sdf1(1)                                
  [my_lv_rimage_2]        /dev/sdg1(1)                                
  [my_lv_rmeta_0]         /dev/sde1(0)                                
  [my_lv_rmeta_1]         /dev/sdf1(0)                                
  [my_lv_rmeta_2]         /dev/sdg1(0)
下列指令會將三向的 RAID1 邏輯卷冊轉換為一個雙向的 RAID1 邏輯卷冊。
# lvconvert -m1 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/sde1(1)                 
  [my_lv_rimage_1]        /dev/sdf1(1)                 
  [my_lv_rmeta_0]         /dev/sde1(0)                 
  [my_lv_rmeta_1]         /dev/sdf1(0)
下列指令會將三向的 RAID1 邏輯卷冊轉換為一個雙向的 RAID1 邏輯卷冊,並將包含了欲移除之映像檔的實體卷冊指定為 /dev/sde1
# lvconvert -m1 my_vg/my_lv /dev/sde1
# 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/sdf1(1)                 
  [my_lv_rimage_1]        /dev/sdg1(1)                 
  [my_lv_rmeta_0]         /dev/sdf1(0)                 
  [my_lv_rmeta_1]         /dev/sdg1(0)