Re: Linear device of two arrays

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jul 10 2017, Veljko wrote:

> On 07/10/2017 12:37 AM, NeilBrown wrote:
>> I wasn't clear to me that I needed to chime in..  and the complete lack
>> of details (not even an "mdadm --examine" output), meant I could only
>> answer in vague generalizations.
>> However, seeing you asked.
>> If you really want to have a 'linear' of 2 RAID10s, then
>> 0/ unmount the xfs filesystem
>> 1/ backup the last few megabytes of the device
>>     dd if=/dev/mdXX of=/safe/place/backup bs=1M skip=$BIGNUM
>> 2/ create a linear array of the two RAID10s, ensuring the
>>    metadata is v1.0, and the dataoffset is zero (should be default with
>>    1.0)
>>     mdadm -C /dev/mdZZ -l linear -n 2 -e 1.0 --data-offset=0 /dev/mdXX /dev/mdYY
>> 3/ restore the saved data
>>     dd of=/dev/mdZZ if=/safe/place/backup bs=1M seek=$BIGNUM
>> 4/ grow the xfs filesystem
>> 5/ be happy.
>>
>> I cannot comment on the values of "few" and "$BUGNUM" without seeing
>> specifics.
>>
>> NeilBrown
>
> Thanks for your response, Neil!
>
> md0 is boot (raid1), md1 is root (raid10) and md2 is data (raid10) that 
> I need to expand. Here are details:

Presumably you also have an md3 raid10 which you want to attach to the
end of md2?

md2 is 5761631232 sectors.
  2880815616 kilobytes
  2813296.5 (binary)megabytes.
  
When you include that into a "linear" you will lose a few K from the
end.
It might be sensible to cause the "linear" to use whole stripes from
the raid10, where a stripe is 1M (2 512K chunks).
If you did that, you would lose a little over 1M.
So backup the last 3.5 M of the raid10.  This is much more than you need.

ie.

  dd if=/dev/md2 of=SOMEWHERE/SAFE bs=1M skip=2813293

(dd treats 'M' as 1024*1024, MB is 1000*1000)

If the file this creates is not 3.5M, then something went wrong.  Stop
here.

Just to be safe you might want to backup the first few megabytes.  You
won't need this unless something goes wrong
  dd if=/dev/md2 of=SOMEWHERE/ELSE bs=1M count=10

Now create the linear from /dev/md2 and /dev/md3(?).  Be sure to use
"-e 1.0 --data-offset=0".  This creates /dev/md4

Now restore the first backup

 dd if=SOMEWHERE/SAFE of=/dev/md4 bs=1M seek=2813293

Be sure to use the same bs= and seek= as you did the first time.
Be sure it is copying from the back and to the new linear raid.

You should now be done. Check your xfs filesystem, and maybe even mount
it and use it.

NeilBrown

>
> # mdadm --detail /dev/md2
> /dev/md2:
>          Version : 1.2
>    Creation Time : Fri Sep 14 12:40:13 2012
>       Raid Level : raid10
>       Array Size : 5761631232 (5494.72 GiB 5899.91 GB)
>    Used Dev Size : 2880815616 (2747.36 GiB 2949.96 GB)
>     Raid Devices : 4
>    Total Devices : 4
>      Persistence : Superblock is persistent
>
>      Update Time : Mon Jul 10 12:32:51 2017
>            State : clean
>   Active Devices : 4
> Working Devices : 4
>   Failed Devices : 0
>    Spare Devices : 0
>
>           Layout : near=2
>       Chunk Size : 512K
>

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux