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

malahal at us.ibm.com malahal at us.ibm.com
Mon Aug 31 16:24:45 UTC 2009


Takahiro Yasui [tyasui at redhat.com] wrote:
> 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.

Or add /dev/sdfa back to your vg (you removed it, right?)




More information about the dm-devel mailing list