我有一个用于存储的 Linux 盒子。根据我的笔记,我将其设置为:

# pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1
# vgcreate array /dev/sda1 /dev/sdb1 /dev/sdc1
# lvcreate --type raid5 -l 100%FREE --name data array
# vgchange -ay array
# mkfs.ext4 /dev/array/data
# cat /etc/fstab | grep array
/dev/array/data /mnt/data ext4 defaults  0 2

现在驱动器 sdb 已坏,未检测到任何设备,dmesg 中没有任何信息,并且将其插入电源后会变得非常热。这是一个坏掉的驱动器。

# lvscan
Couldn't find device with uuid ILT0MD-1BxM-gDR7-PJid-Vkrw-MBbZ-Y31i1t.
  inactive Original '/dev/array/data'

我有一个替换件。如何移除发生故障(不是发生故障,是发生故障!)的驱动器、添加替换件并重建阵列?

我似乎无法删除对死机驱动器的引用,但在它消失之前似乎也无法做任何事情:

# time vgreduce --removemissing --force array
  Couldn't find device with uuid ILT0MD-1BxM-gDR7-PJid-Vkrw-MBbZ-Y31i1t.
Killed

real    392m9.382s
user    20m0.648s
sys     9m16.664s


最佳答案
1

vgextend 如果尚不存在备用 PV,请添加一个。

lvconvert --repair vg/lv 即使 PV 块设备已消失,修复操作也可以替换发生故障的 RAID 映像。对完整设备重新同步提示说“是”。请注意,这是针对 LV 而不是 VG 的操作;如果您有多个 LV,请重复此操作。

vgreduce --removemissing vg 阵列修复后,允许移除缺失。LVM 将不再抱怨缺失的 PV 的 UUID,并移除故障驱动器。

如果需要,pvmove可在 PV 之间使用 LV。例如,如果您没有备用驱动器托架,并且附加了一些临时存储。

请参阅特定于故障 PV 的示例。例如,RHEL 逻辑卷,