xfs
[Top] [All Lists]

Re: Using xfs_growfs on SSD raid-10

To: Alexey Zilber <alexeyzilber@xxxxxxxxx>
Subject: Re: Using xfs_growfs on SSD raid-10
From: Stan Hoeppner <stan@xxxxxxxxxxxxxxxxx>
Date: Wed, 09 Jan 2013 21:21:32 -0600
Cc: xfs@xxxxxxxxxxx
In-reply-to: <CAGdvdE3VnYKg8OXFZ-0eALuhK=Qdt-Apj0uwrB8Yfs=4Uun3UA@xxxxxxxxxxxxxx>
References: <CAGdvdE3VnYKg8OXFZ-0eALuhK=Qdt-Apj0uwrB8Yfs=4Uun3UA@xxxxxxxxxxxxxx>
Reply-to: stan@xxxxxxxxxxxxxxxxx
User-agent: Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20130107 Thunderbird/17.0.2
On 1/9/2013 7:23 PM, Alexey Zilber wrote:
> Hi All,
> 
>   I've read the FAQ on 'How to calculate the correct sunit,swidth values
> for optimal performance' when setting up xfs on a RAID.  Thing is, I'm
> using LVM, and with the colo company we use, the easiest thing I've found,
> when adding more space, is to have another RAID added to the system, then
> I'll just pvcreate, expand the vgroup over it, lvextend and xfs_growfs and
> I'm done.  That is probably sub-optimal on an SSD raid.
> 
> Here's the example situation.  I start off with a 6 (400GB) raid-10.  It's
> got 1M stripe sizes.  So I would start with pvcreate --dataalignment 1M
> /dev/sdb
> after all the lvm stuff I would do: mkfs.xfs -L mysql -d su=1m,sw=3
> /dev/mapper/db-mysql
> (so the above reflects the 3 active drives, and 1m stripe. So far so good?)
> 
> Now, I need more space. We have a second raid-10 added, that's 4 (400gb)
> drives. So I do the same pvcreate --dataalignment 1M /dev/sdc
> then vgextend and lvextend, and finally; with xfs_growfs, there's no way to
> specify, change su/sw values.  So how do I do this?  I'd rather not use
> mount options, but is that the only way, and would that work?

It's now impossible to align the second array.  You have a couple of
options:

1.  Mount with "noalign", but that only affects data, not journal writes

2.  Forget LVM and use the old tried and true UNIX method of expansion:
 create a new XFS on the new array and simply mount it at a suitable
place in the tree.

3.  Add 2 SSDs to the new array and rebuild it as a 6 drive RAID10 to
match the current array.  This would be the obvious and preferred path,
assuming you actually mean 1MB STRIP above, not 1MB stripe.  If you
actually mean 1MB hardware RAID stripe, then the controller would have
most likely made a 768KB stripe with 256KB strip, as 1MB isn't divisible
by 3.  Thus you've told LVM to ship 1MB writes to a device expecting
256KB writes.  In that case you've already horribly misaligned your LVM
volumes to the hardware stripe, and everything is FUBAR already.  You
probably want to verify all of your strip/stripe configuration before
moving forward.

-- 
Stan


<Prev in Thread] Current Thread [Next in Thread>