4.4.13.8. 設定 RAID 錯誤政策

LVM RAID 會根據 lvm.conf 檔案中的 raid_fault_policy 欄位所定義的偏好設定,來以自動的方式處理裝置錯誤。
  • raid_fault_policy 欄位設為了 allocate,系統將會嘗試以來自卷冊群組中的可用裝置,來替換失效的裝置。若沒有可用裝置,此情況將會回報給系統日誌。
  • raid_fault_policy 欄位設為了 warn,系統將會產生一則警告,並且日誌將會顯示裝置已失效。這能讓使用者判斷應進行什麼樣的動作。
只要有可用裝置足以支援使用性,RAID 邏輯卷冊便會繼續進行作業。
4.4.13.8.1. 「allocate」RAID 錯誤政策
在下列範例中,lvm.conf 檔案中的 raid_fault_policy 欄位已設為 allocate。RAID 邏輯卷冊的格式如下。
# 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)
/dev/sde 裝置失效,系統日誌將會顯示錯誤訊息。
# grep lvm /var/log/messages 
Jan 17 15:57:18 bp-01 lvm[8599]: Device #0 of raid1 array, my_vg-my_lv, has failed.
Jan 17 15:57:18 bp-01 lvm[8599]: /dev/sde1: read failed after 0 of 2048 at
250994294784: Input/output error
Jan 17 15:57:18 bp-01 lvm[8599]: /dev/sde1: read failed after 0 of 2048 at
250994376704: Input/output error
Jan 17 15:57:18 bp-01 lvm[8599]: /dev/sde1: read failed after 0 of 2048 at 0:
Input/output error
Jan 17 15:57:18 bp-01 lvm[8599]: /dev/sde1: read failed after 0 of 2048 at
4096: Input/output error
Jan 17 15:57:19 bp-01 lvm[8599]: Couldn't find device with uuid
3lugiV-3eSP-AFAR-sdrP-H20O-wM2M-qdMANy.
Jan 17 15:57:27 bp-01 lvm[8599]: raid1 array, my_vg-my_lv, is not in-sync.
Jan 17 15:57:36 bp-01 lvm[8599]: raid1 array, my_vg-my_lv, is now in-sync.
因為 raid_fault_policy 欄位已設為 allocate,因此失效的裝置將會被替換為來自於卷冊群組中的新裝置。
# lvs -a -o name,copy_percent,devices vg
  Couldn't find device with uuid 3lugiV-3eSP-AFAR-sdrP-H20O-wM2M-qdMANy.
  LV            Copy%  Devices                                     
  lv            100.00 lv_rimage_0(0),lv_rimage_1(0),lv_rimage_2(0)
  [lv_rimage_0]        /dev/sdh1(1)                                
  [lv_rimage_1]        /dev/sdf1(1)                                
  [lv_rimage_2]        /dev/sdg1(1)                                
  [lv_rmeta_0]         /dev/sdh1(0)                                
  [lv_rmeta_1]         /dev/sdf1(0)                                
  [lv_rmeta_2]         /dev/sdg1(0)
請注意,即使故障的裝置已經被取代,以上訊息依舊顯示 LVM 無法找到故障的裝置。這是因為雖然故障裝置已經從 RAID 邏輯卷冊上移除,並不表示故障裝置已經從卷冊群組中移除。要從卷冊群組上移除故障的裝置,您可以執行 vgreduce --removemissing VG
raid_fault_policy 已設為 allocate,不過卻無可用裝置的話,配置將會失敗,使邏輯卷冊維持現狀。若配置失敗,您可選擇修復磁碟,然後如 節 4.4.13.8.2, “「warn」RAID 錯誤政策(Fault Policy)” 中所述地停用邏輯卷冊。此外,您亦可將失效的裝置替換掉,如 節 4.4.13.9, “替換 RAID 裝置” 中所述。