Red Hat Training

A Red Hat training course is available for RHEL 8

9.18. 设置 RAID 失败策略

根据 /etc/lvm/lvm.conf 文件中的 raid_fault_policy 字段首选项,LVM RAID 会自动处理设备失败。您可以根据要求,将 raid_fault_policy 字段设置为以下任何参数之一:

warn

您可以使用此参数来手动修复失败的设备,并使用系统日志显示警告。

默认情况下,lvm.confraid_fault_policy 字段的值是 warn。如果有足够的设备工作正常,RAID 逻辑卷将继续工作。

allocate
您可以使用此参数来自动替换失败的设备。

9.18.1. 将 RAID 失败策略设置为 allocate

您可以在 /etc/lvm/lvm.conf 文件中将 raid_fault_policy 字段设置为 allocate 参数。使用这个首选项,系统会尝试使用卷组中的备用设备替换失败的设备。如果没有备用设备,系统日志会包含此信息。

流程

  1. 查看 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/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)
  2. 如果 /dev/sdb 设备失败,请查看 RAID 逻辑卷:

    # lvs --all --options name,copy_percent,devices my_vg
    
      /dev/sdb: open failed: No such device or address
      Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee.
      WARNING: Couldn't find all devices for LV my_vg/my_lv_rimage_1 while checking used and assumed devices.
      WARNING: Couldn't find all devices for LV my_vg/my_lv_rmeta_1 while checking used and assumed devices.
      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]        [unknown](1)
      [my_lv_rimage_1]        /dev/sdc1(1)
      [...]

    如果 /dev/sdb 设备失败,您还可以查看系统日志中的错误消息。

  3. lvm.conf 文件中,将 raid_fault_policy 字段设置为 allocate

     # vi /etc/lvm/lvm.conf
     raid_fault_policy = "allocate"
    注意

    如果将 raid_fault_policy 设置为 allocate,但没有备用设备,则分配会失败,逻辑卷保留原样。如果分配失败,您可以使用 lvconvert --repair 命令修复和替换失败的设备。如需更多信息,请参阅 在逻辑卷中替换失败的 RAID 设备

验证

  • 验证失败的设备现在是否被卷组中的新设备替换了:

    # lvs -a -o name,copy_percent,devices my_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/sdc1(1)
      [lv_rimage_2]        /dev/sdd1(1)
      [lv_rmeta_0]         /dev/sdh1(0)
      [lv_rmeta_1]         /dev/sdc1(0)
      [lv_rmeta_2]         /dev/sdd1(0)
    注意

    即使失败的设备现在被替换了,但显示仍然表示 LVM 没有找到失败的设备,因为该设备还没有从卷组中删除。您可以通过执行 vgreduce --removemissing my_vg 命令从卷组中删除失败的设备。

其他资源

  • lvm.conf(5) man page

9.18.2. 将 RAID 失败策略设置为 warn

您可以在lvm.conf 文件中将 raid_fault_policy 字段设置为 warn 参数。有了这个首选项,系统会在系统日志中添加了一条指示失败设备的警告。根据警告,您可以确定后续步骤。

流程

  1. 查看 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/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)
  2. 在 lvm.conf 文件中将 raid_fault_policy 字段设置为 warn :

    # vi /etc/lvm/lvm.conf
     # This configuration option has an automatic default value.
     raid_fault_policy = "warn"
  3. 如果 /dev/sdb 设备失败,请查看系统日志以显示错误消息:

    # grep lvm /var/log/messages
    
    Apr 14 18:48:59 virt-506 kernel: sd 25:0:0:0: rejecting I/O to offline device
    Apr 14 18:48:59 virt-506 kernel: I/O error, dev sdb, sector 8200 op 0x1:(WRITE) flags 0x20800 phys_seg 0 prio class 2
    [...]
    Apr 14 18:48:59 virt-506 dmeventd[91060]: WARNING: VG my_vg is missing PV 9R2TVV-bwfn-Bdyj-Gucu-1p4F-qJ2Q-82kCAF (last written to /dev/sdb).
    Apr 14 18:48:59 virt-506 dmeventd[91060]: WARNING: Couldn't find device with uuid 9R2TVV-bwfn-Bdyj-Gucu-1p4F-qJ2Q-82kCAF.
    Apr 14 18:48:59 virt-506 dmeventd[91060]: Use 'lvconvert --repair my_vg/ly_lv' to replace failed device.

    如果 /dev/sdb 设备失败,系统日志会显示错误消息。在这种情况下,LVM 将不会自动尝试通过替换其中一个镜像修复 RAID 设备。如果设备失败,您可以使用 lvconvert 命令的 --repair 参数替换该设备。如需更多信息,请参阅 在逻辑卷中替换失败的 RAID 设备

其他资源

  • lvm.conf(5) man page