我是 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.
现在我不知道如何摆脱这种情况。
显然
/dev/sde
仍然包含至少一块my_volume_group/my_lv_tdata
,这是精简池逻辑卷的重要组成部分my_volume_group/my_lv
。您能将磁盘按原来的样子重新插入吗?然后,如果它有效并且
vgchange -ay my_volume_group
成功,请使用 apvmove /dev/sde
尝试将任何剩余数据移动sde
到 的其他 PVmy_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 存储功能可以按任意顺序相互堆叠:这是一个强大的功能,但一开始可能会令人困惑。请记住,在设置新事物时,必须从堆栈底部开始,一次构建一层;在删除事物时,必须从顶部开始,一次拆除一层。
(如果您从堆栈中间拉出一个层,如果当前未安装或以其他方式使用,现在不受支持的较高层通常会消失,但在使用此快捷方式之前您应该非常熟悉存储配置。如果现在虚无之上的层实际上正在使用,内核将会非常不高兴。)