我是 LVM 新手,但仍然不知道删除故障磁盘/PV 的最佳实践是什么?例如:我有一个精简池my_volume_group/my_lv
。我从 raid 控制器中删除了一个磁盘 (/dev/sde),lvm 给出了以下警告:
WARNING: Couldn't find device with uuid QHOWyk-Ofjr-jnqU-iF7i-YqSJ-BeI4-UpqeI7.
WARNING: VG my_volume_group is missing PV QHOWyk-Ofjr-jnqU-iF7i-YqSJ-BeI4-UpqeI7 (last written to [unknown]).
我试过:
vgreduce --removemissing --force my_volume_group
Logical volume my_volume_group/res0_00000 is used by another device.
然后我删除该节点中的资源 res0,然后重试:
vgreduce --removemissing --force my_volume_group
Cannot activate my_volume_group/my_lv_tdata: pool incomplete.
Failed to suspend my_volume_group/my_lv with queued messages.
Failed to update pool my_volume_group/my_lv.
现在我不知道如何摆脱这种情况。
答案1
显然/dev/sde
仍然包含至少一块my_volume_group/my_lv_tdata
,这是精简池逻辑卷的重要组成部分my_volume_group/my_lv
。您能将磁盘按原来的样子重新插入吗?
然后,如果它有效并且vgchange -ay my_volume_group
成功,请使用 apvmove /dev/sde
尝试将任何剩余数据移动sde
到 的其他 PV my_volume_group
。如果成功,则在pvs
输出中, PSize 和 PFree 字段/dev/sde
应该相等,表明它的任何部分都不再使用;只有这样您才能开始删除/dev/sde
而不会丢失数据。
您提到您有一个 RAID 控制器。我在这里没有看到任何 RAID 配置的证据:如果/dev/sde
只是单个物理磁盘,那么控制器的 RAID 功能似乎确实未使用,并且没有针对单个磁盘故障的保护。那么 RAID 应该在哪里呢?
或者也许/dev/sde
最初是 RAID 1 或 RAID 5 组,但之前已经有一个磁盘发生故障,因此无法再承受更多故障。如果第一个故障没有被注意到,那么您就没有 RAID 运行状况监控:您确实需要它,因为如果没有它,每个 RAID 集中的第一个磁盘的故障可能根本没有可检测到的症状。
如果以前的磁盘/dev/sde
现在完全失效,那么您的卷组现在在精简池 LV 中存在丢失数据的漏洞my_lv
。如果您有良好的备份,删除my_lv
、重新创建它并从备份恢复其数据可能是最快、最简单的方法。
Linux 存储功能可以按任意顺序相互堆叠:这是一个强大的功能,但一开始可能会令人困惑。请记住,在设置新事物时,必须从堆栈底部开始,一次构建一层;在删除事物时,必须从顶部开始,一次拆除一层。
(如果您从堆栈中间拉出一个层,现在不受支持的较高层通常会消失如果它们当前尚未安装或正在使用,但在使用此快捷方式之前您应该非常熟悉存储配置。如果现在虚无之上的层实际上正在使用,内核将会非常不高兴。)