[linux-lvm] How can I restripe LVs on addition of extra PVs?

Daniel . constantine at soon.com
Thu Oct 14 20:10:48 UTC 2004

----- Original Message ----- 
From: AJ Lewis <alewis at redhat.com> 
To: LVM general discussion and development <linux-lvm at redhat.com> 
Subject: Re: [linux-lvm] How can I restripe LVs on addition of extra PVs? 
Date: 14 Oct 2004 08:52:36 -0500 
> Clint Byrum <cbyrum at spamaps.org> writes: 
> > On Wednesday, October 13, 2004, at 06:12 PM, Daniel . wrote: 
> >  
> > > Hi, 
> > > 
> > > [I'm only familiar with LVM1, so that's what I'm referring to in the 
> > > rest of the mail.  I probably could move to LVM2 if it solves my 
> > > problems.] 
> > > 
> > > I'm planning on using LVM to create LVs striped across multiple PVs 
> > > (which, incidentally, are RAID 1 mirrorred partitions). 
> > > In the future I will need to add extra PVs to the VG and extend the 
> > > LVs. 
> > > 
> >  
> > This just came up in #lvm on freenode today. I don't think this is at 
> > all possible with LVM1. Once the striping is done for an LV, that LV 
> > cannot be extended past the physical extents that were allocated at 
> > that time. 
> >  
> > However, with LVM2, you could write a script to do this by manually 
> > running pvmove over and over, doing something like "pvmove dev:1-8 
> > otherdev;pvmove otherdev:1-8 dev;" .. It gets rather complex to figure 
> > this out on the cmdline, but I do believe it can be done and you would 
> > end up with PE's evenly spread out over all PVs. 
> >  
> > Somebody tell me this is wrong and stupid before I try it. ;) 
> One problem I see with doing this is that your LVM metadata is going 
> to get rather large after you've done this.  Because you're mucking 
> with the segments through pvmove, lvm doesn't know that you're trying 
> to convert a stripe set of 2 to a stripe set of 4 or whatever.  I'm 
> not positive, but it seems like this could be a problem. 
Can't comment on the metadata issues... 
Being able to change a LV to stripe across a different number of PVs seems a necessity to me, and impossible to do (at least with LVM1). 
> Also, remember that stripe size is different then segment size, and 
> segment size is the level at which pvmove manipulates things.  So 
> that's probably not going to do what you want it to. 
Though, as I understand it, any extents allocated from within the segments being moved are reallocated according to the allocation policy of the LV to which they 
belong.  So, putting aside the inablity to change the stripe set size, pvmoving repeatedly should end up with the LVs extents allocated roughly evenly over all the PVs 
(maybe all-1 PVs?).  Though the extents will probably be scattered more than striped. 
In any event, it all sounds a bit dodgy, especially seen I was going to do the striping with LVM to make management easier. 
It sounds like using EVMS to manage mirroring through md, then striping through md, then sizing through LVM will be less of a headache.  And md allows stripe sizes 
greater than 512KB which I'd prefer. 
Thanks for you comments, all. 
Sign-up for Ads Free at Mail.com

More information about the linux-lvm mailing list