Red Hat Training
A Red Hat training course is available for RHEL 8
17.13. LVM RAID 故障排除
您可以对 LVM RAID 设备中的多个问题进行故障排除,修正数据错误、恢复设备或者替换失败的设备。
17.13.1. 检查 RAID 逻辑卷中数据一致性
LVM 提供对 RAID 逻辑卷的清理支持。RAID 清理是读取阵列中的所有数据和奇偶校验块的过程,并检查它们是否是分配的。lvchange --syncaction repair
命令在阵列上启动后台同步操作。以下属性提供有关数据一致性的详情:
raid_sync_action
字段显示当前 RAID 逻辑卷执行的同步操作。可以是以下值之一:idle
-
完成所有
同步操作
(什么都不做)。 resync
- 在未清除机器关闭后初始化或重新同步阵列。
recover
- 替换阵列中的设备。
check
- 查找阵列不一致。
repair
- 查找和修复不一致.
-
raid_mismatch_count
字段显示检查
操作过程中发现的差异数。 -
Cpy%Sync
字段显示同步
操作的进度。 lv_attr
字段提供额外的指示。这个字段中的第 9 位显示逻辑卷的健康状况,它支持以下指示:m
或mismatches
- 表示 RAID 逻辑卷中存在差异。您可以在清理操作检测到 RAID 部分后看到此字符,这些部分不一致。
R
或refresh
- 表示 RAID 阵列中失败的设备,即使 LVM 可以读取设备标签,并认为该设备可以正常工作。刷新逻辑卷通知内核该设备现在可用 ; 如果您怀疑设备失败,则替换该设备。
流程
可选:限制清理过程使用的 I/O 带宽。当您执行 RAID 清理操作时,同步操作所需的后台 I/O 可能会将其他 I/O 分离到 LVM 设备,如卷组元数据更新。
这可能导致其它 LVM 操作速度下降。
您可以使用节流功能控制清理操作的速度。您可以使用
--maxrecoveryrate Rate[bBsSkKmMgG]
或--minrecoveryrate Rate[bBsSkKmMgG]
使用lvchange --syncaction
命令设置恢复率。如需更多信息,请参阅 最小和最大 I/O 速率选项。指定比率,格式为“数量/每秒/阵列中的每个设备”。如果没有后缀,选项会假定为 kiB/每秒/每个设备。
显示阵列中未修复的差异的数量,没有修复它们:
# lvchange --syncaction check my_vg/my_lv
此命令在阵列上启动后台同步操作。
-
可选:查看内核消息的
var/log/syslog
文件。 修正阵列中的差异:
# lvchange --syncaction repair my_vg/my_lv
这个命令修复或者替换 RAID 逻辑卷中失败的设备。您可以在执行此命令后查看内核消息的
var/log/syslog
文件。
验证
显示有关清理操作的信息:
# lvs -o +raid_sync_action,raid_mismatch_count my_vg/my_lv LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert SyncAction Mismatches my_lv my_vg rwi-a-r--- 500.00m 100.00 idle 0
其他资源
-
lvchange (8)
和lvmraid (7)
man page - 最小和最大 I/O 速率选项
17.13.2. 在逻辑卷中替换失败的 RAID 设备
RAID 与传统的 LVM 镜像类似。如果是 LVM 镜像功能,请删除失败的设备。否则,当 RAID 阵列继续使用失败的设备运行时,镜像逻辑卷将挂起。对于 RAID1 以外的 RAID 级别,删除设备意味着将设备转换到较低 RAID 级别,例如从 RAID6 转换到 RAID5,或者从 RAID4 或 RAID5 转换到 RAID0。
您可以使用 lvconvert
命令的 --repair
参数替换作为 RAID 逻辑卷中物理卷的故障设备,而不是删除失败的设备并分配替换。
先决条件
卷组包含一个物理卷,它有足够的可用容量替换失败的设备。
如果卷组中没有足够可用扩展的物理卷,请使用
vgextend
程序添加新的、足够大的物理卷。
流程
查看 RAID 逻辑卷:
# lvs --all --options name,copy_percent,devices my_vg LV Cpy%Sync 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/sdc1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/sdd1(0)
在 /dev/sdc 设备失败后查看 RAID 逻辑卷:
# lvs --all --options name,copy_percent,devices my_vg /dev/sdc: 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 Cpy%Sync 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] [unknown](1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] [unknown](0) [my_lv_rmeta_2] /dev/sdd1(0)
替换失败的设备:
# lvconvert --repair my_vg/my_lv /dev/sdc: 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. Attempt to replace failed RAID images (requires full device resync)? [y/n]: y Faulty devices in my_vg/my_lv successfully replaced.
可选:手动指定替换失败设备的物理卷:
# lvconvert --repair my_vg/my_lv replacement_pv
使用替换检查逻辑卷:
# lvs --all --options name,copy_percent,devices my_vg /dev/sdc: open failed: No such device or address /dev/sdc1: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. LV Cpy%Sync Devices my_lv 43.79 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/sdb1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdb1(0) [my_lv_rmeta_2] /dev/sdd1(0)
在您从卷组中删除失败的设备前,LVM 工具仍然指示 LVM 无法找到失败的设备。
从卷组中删除失败的设备:
# vgreduce --removemissing my_vg
验证
删除失败的设备后查看可用的物理卷:
# pvscan PV /dev/sde1 VG rhel_virt-506 lvm2 [<7.00 GiB / 0 free] PV /dev/sdb1 VG my_vg lvm2 [<60.00 GiB / 59.50 GiB free] PV /dev/sdd1 VG my_vg lvm2 [<60.00 GiB / 59.50 GiB free] PV /dev/sdd1 VG my_vg lvm2 [<60.00 GiB / 59.50 GiB free]
在替换失败的设备后检查逻辑卷:
# lvs --all --options name,copy_percent,devices my_vg 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/sdb1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdb1(0) [my_lv_rmeta_2] /dev/sdd1(0)
其他资源
-
lvconvert (8)
和vgreduce (8)
手册页