Thread (1 message) 1 message, 1 author, 2010-03-06
  • (off-list ancestor, not in this archive)
  • Re: Removing drives · Michael Evans <hidden> · 2010-03-06

Re: Removing drives

From: Michael Evans <hidden>
Date: 2010-03-06 06:43:28

On Fri, Mar 5, 2010 at 8:51 PM, Timothy D. Lenz [off-list ref] wrote:

On 3/5/2010 1:22 PM, Michael Evans wrote:
quoted
On Fri, Mar 5, 2010 at 11:00 AM, Timothy D. Lenz[off-list ref]  wrote:
quoted
Current setup, 3 500gb sata drives, each with 3 partitions.
The first partition of each drive make up raid1 md0 boot and most
software
The next partition of each drive make up raid1 md1 swap
The 3rd partition of each drive make up raid5 md2 main data storage

There is also a 40gb ide drive with 2 partitions, boot/software and swap.
It
was used for install and setup. But I never got boot changed over to md0.
So
currently md0 is not in use. md0 and md2 are mounted to folders on the
40gb
so a precopy to md0 could be made before booting with a cd and copying
what
ever is left that needs coping. and to use md2.

Current
# /etc/fstab: static file system information.
#
#<file system>  <mount point>     <type>    <options>         <dump>
 <pass>
proc            /proc           proc    defaults        0       0
/dev/hda1       /               ext3    defaults,errors=remount-ro 0
  1
/dev/hda5       none            swap    sw              0       0
/dev/md0        /mnt/md0        ext3    defaults        0       0
/dev/md2        /mnt/md2        ext3    defaults        0       0
/dev/hdb        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

I want to change md0 and md1 from 3 drive mirriors to 2 drive mirrors.

Finish changing over to booting from md0, move swap to md1 and move the
mount point for md2 to md0

Remove the the ide drive to free up space for the 4th 500gb drive.

Copy md2 over to the new 500gb temparally.

Get rid of the current md2 freeing up the 3rd drive since it was already
taken out of the mirrors above.

Make a new md2 raid1 with the remaining space of the first 2 sata drives.

Move the data from the 4th drive back to the new md2

Repartition the 3rd drive to 1 partition same as the 4th drive.

Make raid1 md3 from the 3rd and 4th drives.

It's the steps/commands to change md0 and md1 from 3 drive mirrors to 2
drive mirrors that I'm not sure about. Though now looking at fstab I see
I
never even switched over the swap. So I guess, those to arrays would be
rebuilt. So it's more how to do that without messing with md2.

The computer is still on grub1. I haven't updated it it.
So you have:

[3-devices]
Raid 1: Unused
Raid 1: Unused
Raid 5: Used - 3 disks

[1-device]
Boot + swap

Just swapoff the raid-swap you want to re-create, then:
mdadm -S /dev/md(swap)
mdadm -S /dev/md(boot)
mdadm --zero-superblock /dev/devices in those arrays

Repartition those two areas of the disks as necessary.

Create new boot and swap partitions.
For boot make SURE you use either -e 0.90 OR -e 1.0 .   Given the
nature of /boot I'd say use -e 0.90 on it.
For everything else, including swap use -e 1.1 and optionally
write-intent bitmaps.

At this point you should be able to move /boot and your swap off of
the 40gb drive; just remember to re-install grub and that your BIOS
likely sets the boot drive as bios-drive 0 regardless of which SDA/HDA
linux sees it as.  This is what the device.map file is used to tell
grub.


I lost exactly what you wanted the result to look like amid a long
list of steps you /thought/ you needed to make to get there and
references to md numbers that only have meaning to you.  However it
seems that you were mostly stuck getting to this point, so you might
be able to determine a plan using the data you've yet to share with
the rest of us with that 40gb drive out of the equation.

Remember that you can't reshape raid10 yet, but you can start raid10
with 'missing' devices (and add in the spares later).
can't make it much clearer, and I don't know where you got raid10 from.

ARRAY /dev/md0 level=raid1 num-devices=3
UUID=e4926be6:8d6f08e5:0ab6b006:621c4ec0
ARRAY /dev/md1 level=raid1 num-devices=3
UUID=eac96451:66efa3ab:0ab6b006:621c4ec0
ARRAY /dev/md2 level=raid5 num-devices=3
UUID=a7ed721e:04b10ab6:0ab6b006:621c4ec0

md 0 and 1 I want to change to 2 deivces.
Then get it booting from md0 which I think I know how to do as I got another
computer working that way. Then I can dump the ide drive making room for
another 500gb sata. It will be used to store the data from md2 while md2 is
remade from a 3 device raid5 to a 2 device raid1. This frees up a drive
giving me 2 500gb drives to make another 2 device raid1. Its the seperating
out 1 device from each of the current raid1's, md0 and md1 that I was asking
about.
That was concise enough to be worth reading through to get your desired result.

I already told you how to do the safe portion of your last operation.

Actually, I can see one benefit from two raid 1s over raid10; you
could stripe them using LVM and for very little extra cost have a lot
more flexibility.

After you've followed my last email to get the system booting off your
raid devices, you can replace the 40 with a 500, and then use the
/new/ 500 to start a raid 1 with one device set as 'missing'.
StartSlower but totally safe way:

However what I'd do if I were you is get everything I could off of the
40gb drive; it would only take 10 DVDs at worse case; presuming it
won't fit within ~500gb.

1) Duplicate all your data from the raid5 on to the single disk in a
raid 1 + missing configuration.
* you now have 1 copy with parity, and 1 copy waiting for mirroring.
(two copies and some parity)

2) Fail one of the partitions from the raid5, --zero superblock it.
* you now have 1 copy without parity, and 1 copy waiting for
mirroring, and one free drive. (two copies)

3) --add the previous parity partition as part of the mirror set; IT
MUST BE >= the size of the other partition in that mirror.
* You have 1 copy without parity, 1 full copy being mirrored in to two copies.

4) WAIT for the mirroring operation to finish.

5) Optionally 'check' the mirror copy.
* You now have 1 copy without parity, 1 fully mirrored copy (3 copies
of your data)

6) With a fully safe copy of your data, and two partitions you can
start a wider range of procedures.

You could create two more raid 1 + missing arrays
setup LVM with striping across them
copy your data over in to one logical volume
++THEN AGAIN in to a second logical volume
(Manually creating two copies of your data; this won't protect against
drive failure but it will protect against individual failed sectors,
which may be good enough.)
Finally one at a time fail out members of the intact raid1 set and add
them to the new raid 1s.


Or probably proceed through other ideas; though none seems as
appealing to me as what I just wrote; 4 drives isn't enough to
seriously consider raid 5 or 6, and with the size of the drives you'd
really be better off with going for raid 6, which is much slower and
only slightly less risky than raid 1 + striping via LVM.
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help