[dm-devel] Removing a failed device from LVM2/DM

Takahiro Yasui tyasui at redhat.com
Mon Aug 31 16:02:45 UTC 2009


On 08/31/09 11:16, Alan D. Brunelle wrote:
> I constructed a 1-copy mirror with the following commands:
> 
> # pvcreate --metadatasize 192k /dev/sdcn /dev/sdfj /dev/sdfa
>   Physical volume "/dev/sdcn" successfully created
>   Physical volume "/dev/sdfj" successfully created
>   Physical volume "/dev/sdfa" successfully created
> # vgcreate vg /dev/sdcn /dev/sdfj /dev/sdfa
>   Volume group "vg" successfully created
> # lvcreate -L 32g -m 1 -n lv vg
>   Logical volume "lv" created
> 
> The status showed:
> 
> # lvs -a -o +devices
>   LV            VG   Attr   LSize  Origin Snap%  Move Log     Copy%
> Convert Devices                      
>   lv            vg   mwi-a- 32.00G                    lv_mlog  29.72
> lv_mimage_0(0),lv_mimage_1(0)
>   [lv_mimage_0] vg   Iwi-ao
> 32.00G                                           /dev/sdcn(0)                 
>   [lv_mimage_1] vg   Iwi-ao
> 32.00G                                           /dev/sdfj(0)                 
>   [lv_mlog]     vg   lwi-ao
> 4.00M                                           /dev/sdfa(0)                 
> 
> Then I forced /dev/sdfj to fail (removing the unit from the FC SAN), and
> the state of the mirror went to:
> 
> # lvs
>   /dev/sdfj: read failed after 0 of 2048 at 0: Input/output error
>   LV   VG   Attr   LSize  Origin Snap%  Move Log Copy%  Convert
>   lv   vg   -wi-a- 32.00G           
> 
> At this point I know I can do:
> 
> # vgreduce -a vg
>   /dev/sdfj: read failed after 0 of 2048 at 0: Input/output error
>   Physical volume "/dev/sdcn" still in use
>   Removed "/dev/sdfa" from volume group "vg"
> 
> But I run into two problems:
> 
> (1) I'd like to be able to live without the constant errors
> about /dev/sdfj, and tried:
> 
> # pvremove -f /dev/sdfj
>   /dev/sdfj: read failed after 0 of 2048 at 0: Input/output error
>   No physical volume label read from /dev/sdfj
>   /dev/sdfj: read failed after 0 of 2048 at 0: Input/output error
>   Labels on physical volume "/dev/sdfj" successfully wiped
> 
> but that didn't stop it. 
> 
> and:
> 
> (2) I'd like to be able to recreate the 1-copy mirror from the currently
> linear volume, but can't (easily):
> 
> # pvcreate --metadatasize 192k /dev/sdp
>   Physical volume "/dev/sdp" successfully created
> # vgextend vg /dev/sdp
>   ... errors from sdfj omitted...
>   Volume group "vg" successfully extended
> # vgs
>   /dev/sdfj: read failed after 0 of 2048 at 0: Input/output error
>   VG   #PV #LV #SN Attr   VSize   VFree  
>   vg     2   1   0 wz--n- 542.67G 510.67G
> # lvconvert -m 1 /dev/vg/lv
>   /dev/sdfj: read failed after 0 of 2048 at 0: Input/output error
>   Insufficient suitable allocatable extents for logical volume : 8192
> more required
>   Unable to allocate extents for mirror(s).
> 
> I can use the alloc anywhere options, but I'm at a loss as to why that's
> needed:
> 
> # lvconvert -m1 --alloc anywhere /dev/vg/lv
>   /dev/sdfj: read failed after 0 of 2048 at 0: Input/output error
>   /dev/vg/lv: Converted: 1.3%
>   /dev/vg/lv: Converted: 2.6%
>   /dev/vg/lv: Converted: 3.8%
> ...
> 
> 
> Any pointers on how to remove /dev/sdfj from the scan (other than, I
> guess, updated /etc/lvm.conf to filter it out)

The following URL explains how to remove lost PVs from VG.

6.6. Removing Lost Physical Volumes from a Volume Group
http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/Cluster_Logical_Volume_Manager/lost_PV_remove_from_VG.html

I think "vgreduce --removemissing vg" will remove "/dev/sdfj."

> or an explanation as to
> why the 'alloc anywhere' is needed for the lvconvert would be muchly
> appreciated.

To create a mirror volume with disk log, three PVs are required in the VG
to allocate two mirror legs and one mirror log. But in this case, the "vg"
contains only two valid PVs (/dev/sdcn and /dev/sdp), and '--alloc anywhere'
options is necessary to allocate a mirror log on the same disk as mirror legs.

I hope this would be help.

Thanks,
Taka




More information about the dm-devel mailing list