On Thu, Jan 10, 2013 at 06:55:22PM -0600, Stan Hoeppner wrote:
> On 1/10/2013 4:12 PM, Dave Chinner wrote:
> > On Thu, Jan 10, 2013 at 03:29:29PM -0600, Stan Hoeppner wrote:
> >> On 1/10/2013 1:19 AM, Alexey Zilber wrote:
> >>> Hi Stan,
> >>> Thanks for the details btw, really appreciate it. Responses inline
> >>> below:
> >>> >>
> >>>>> Only the sw=3 is no longer valid, correct? There's no way to add sw=5?
> >>>> You don't have a 5 spindle array. You have a 3 spindle array and a 2
> >>>> spindle array. Block striping occurs WITHIN an array, not ACROSS arrays.
> >>> That's correct, but I was going with the description of the sw option as
> >>> "number of data disks" which is constantly increasing as you're adding
> >> That is correct. But "data disks" is in the context of a single striped
> >> array. Remember, what you're doing here is aligning XFS write out to
> >> the stripe size of the array.
> >>> disks. I realize that block striping occurs independently within each
> >>> array, but I do not know how that translates into parity with the way xfs
> >>> works with the logical disks.
> >> The takeaway here is this: If you concatenate two or more striped
> >> arrays together with a single XFS atop, you must use identical arrays,
> >> or at least arrays with the same overall stripe size. Otherwise you
> >> cannot achieve or maintain alignment with XFS.
> > Hi Stan - excellent information dump,
> Thanks Dave.
> > but there's one important
> > aspect of growing filesystems like this that you missed -
> Yes, I most certainly did. Which is why I like knowing you're always
> standing over my shoulder. ;)
> > the _end_ of
> > each volume must also be stripe aligned so that when you concatenate
> > the new one it starts at an aligned address. If the end of the
> > existing volume is not aligned, then it's very hard to align the new
> > volume correctly....
> So the obvious followup question is: How does one determine if the end
> of an XFS volume is still aligned at the end of the underlying device?
Make sure the size of the volume reported by /proc/partitions is a
multiple of the stripe width. Then when you add the new device, it
starts aligned to the existing volume. i.e. you have to size the
device correctly initially with lvm or whatever partitioning program