How to remove bad disk from LVM2 with the less data loss on other PVs?
I had a LVM2 volume with two disks. The larger disk became corrupt, so I cant pvmove. What is the best way to remove it from the group to save the most data from the other disk? Here is my pvdisplay output:
Couldn't find device with uuid WWeM0m-MLX2-o0da-tf7q-fJJu-eiGl-e7UmM3.
--- Physical volume ---
PV Name unknown device
VG Name media
PV Size 1,82 TiB / not usable 1,05 MiB
Allocatable yes (but full)
PE Size 4,00 MiB
Total PE 476932
Free PE 0
Allocated PE 476932
PV UUID WWeM0m-MLX2-o0da-tf7q-fJJu-eiGl-e7UmM3
--- Physical volume ---
PV Name /dev/sdb1
VG Name media
PV Size 931,51 GiB / not usable 3,19 MiB
Allocatable yes (but full)
PE Size 4,00 MiB
Total PE 238466
Free PE 0
Allocated PE 238466
PV UUID oUhOcR-uYjc-rNTv-LNBm-Z9VY-TJJ5-SYezce
So I want to remove the unknown device (not present in the system). Is it possible to do this without a new disk ? The filesystem is ext4.
# pvdisplay
Couldn't find device with uuid EvbqlT-AUsZ-MfKi-ZSOz-Lh6L-Y3xC-KiLcYx.
--- Physical volume ---
PV Name /dev/sdb1
VG Name vg_srvlinux
PV Size 931.51 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 238466
Free PE 0
Allocated PE 238466
PV UUID xhwmxE-27ue-dHYC-xAk8-Xh37-ov3t-frl20d
--- Physical volume ---
PV Name unknown device
VG Name vg_srvlinux
PV Size 465.76 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 119234
Free PE 0
Allocated PE 119234
PV UUID EvbqlT-AUsZ-MfKi-ZSOz-Lh6L-Y3xC-KiLcYx
# vgreduce --removemissing --force vg_srvlinux
Couldn't find device with uuid EvbqlT-AUsZ-MfKi-ZSOz-Lh6L-Y3xC-KiLcYx.
Removing partial LV LogVol00.
Logical volume "LogVol00" successfully removed
Wrote out consistent volume group vg_srvlinux
# pvdisplay
--- Physical volume ---
PV Name /dev/sdb1
VG Name vg_srvlinux
PV Size 931.51 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 238466
Free PE 238466
Allocated PE 0
PV UUID xhwmxE-27ue-dHYC-xAk8-Xh37-ov3t-frl20d
now all it work fine!
From the vgreduce
man page:
--removemissing
Removes all missing physical volumes from the volume group, if there are no logical volumes
allocated on those. This resumes normal operation of the volume group (new logical volumes
may again be created, changed and so on).
If this is not possible (there are logical volumes referencing the missing physical volumes)
and you cannot or do not want to remove them manually, you can run this option with --force
to have vgreduce remove any partial LVs.
Any logical volumes and dependent snapshots that were partly on the missing disks get removed
completely. This includes those parts that lie on disks that are still present.
If your logical volumes spanned several disks including the ones that are lost, you might
want to try to salvage data first by activating your logical volumes with --partial as
described in lvm (8).