13.13. LVM RAID 故障排除
您可以对 LVM RAID 设备中的多个问题进行故障排除,修正数据错误、恢复设备或者替换失败的设备。
13.13.1. 检查 RAID 逻辑卷中数据的一致性 复制链接链接已复制到粘贴板!
LVM 提供对 RAID 逻辑卷的清理支持。RAID 清理是读取阵列中的所有数据和奇偶校验块的过程,并检查它们是否是分配的。lvchange --syncaction repair
命令对阵列启动后台同步操作。
流程
可选:通过设置以下选项之一来控制 RAID 逻辑卷初始化的速率:
-
--maxrecoveryrate Rate[bBsSkKmMgG]
为 RAID 逻辑卷设置最大恢复率,使其不会驱逐正常的 I/O 操作。 --minrecoveryrate Rate[bBsSkKmMgG]
设置 RAID 逻辑卷的最小恢复率,以确保 sync 操作的 I/O 达到最小吞吐量,即使存在大量标准 I/O 时lvchange --maxrecoveryrate 4K my_vg/my_lv
# lvchange --maxrecoveryrate 4K my_vg/my_lv Logical volume _my_vg/my_lv_changed.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用恢复率值替换 4K,它是阵列中每个设备的每秒的量。如果没有后缀,选项会假定为 kiB/每秒/每个设备。
lvchange --syncaction repair my_vg/my_lv
# lvchange --syncaction repair my_vg/my_lv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当您执行 RAID 清理操作时,
sync
操作所需的后台 I/O 可能会将其他 I/O 分离到 LVM 设备,如对卷组元数据的更新。这可能导致其它 LVM 操作速度下降。注意您还可以在创建 RAID 设备时使用这些最大和最小 I/O 速率。例如,
lvcreate --type raid10 -i 2 -m 1 -L 10G --maxrecoveryrate 128 -n my_lv my_vg
创建一个双向 RAID10 阵列 my_lv,它在卷组 my_vg 中,有大小为 10G,最大恢复率为 128 kiB/sec/device 的 3 个条带。
-
显示阵列中未修复的差异的数量,没有修复它们:
lvchange --syncaction check my_vg/my_lv
# lvchange --syncaction check my_vg/my_lv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令对阵列启动后台同步操作。
-
可选:查看
var/log/syslog
文件以了解内核消息。 修正阵列中的差异:
lvchange --syncaction repair my_vg/my_lv
# lvchange --syncaction repair my_vg/my_lv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令修复或者替换 RAID 逻辑卷中失败的设备。您可以在执行此命令后查看
var/log/syslog
文件以了解内核消息。
验证
显示有关清理操作的信息:
lvs -o +raid_sync_action,raid_mismatch_count my_vg/my_lv
# 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.13.2. 在逻辑卷中替换失败的 RAID 设备 复制链接链接已复制到粘贴板!
RAID 与传统的 LVM 镜像不同。如果是 LVM 镜像,请删除失败的设备。否则,当 RAID 阵列继续使用失败的设备运行时,镜像逻辑卷将挂起。对于 RAID1 以外的 RAID 级别,删除设备意味着转换到较低的 RAID 级别,例如从 RAID6 转换到 RAID5,或者从 RAID4 或 RAID5 转换到 RAID0。
您可以使用 lvconvert
命令的 --repair
参数替换 RAID 逻辑卷中作为物理卷的故障设备,而不是删除失败的设备并分配一个替换设备。
先决条件
卷组包含一个物理卷,它有足够的可用容量替换失败的设备。
如果卷组中没有足够空闲扩展的物理卷,请使用
vgextend
工具添加一个新的、足够大的物理卷。
流程
查看 RAID 逻辑卷:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 /dev/sdc 设备失败后查看 RAID 逻辑卷:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换失败的设备:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:手动指定替换失败设备的物理卷:
lvconvert --repair my_vg/my_lv replacement_pv
# lvconvert --repair my_vg/my_lv replacement_pv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用替换检查逻辑卷:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在您从卷组中删除失败的设备前,LVM 工具仍然指示 LVM 无法找到失败的设备。
从卷组中删除失败的设备:
vgreduce --removemissing my_vg
# vgreduce --removemissing my_vg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
删除失败的设备后查看可用的物理卷:
pvscan
# 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]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在替换失败的设备后检查逻辑卷:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow