RAID upgrade
(better TODO list) |
m (reorder the plan and the todo) |
||
Line 64: | Line 64: | ||
...note: I may enlarge md1 and md2 for larger /home as well... |
...note: I may enlarge md1 and md2 for larger /home as well... |
||
− | = Methods = |
+ | So - like this |
+ | # within mdadm |
||
+ | ## Remove sda2 from within the md0 raid1 - this array has 2 spares) |
||
+ | ## Remove sda3 from within the md1 raid1 - this has NO SPARE) |
||
+ | ## Remove sda4 from within the md3 raid5) |
||
+ | # Hardware setup |
||
+ | ## Replace drive physically |
||
+ | ## Partition |
||
+ | # in mdadm again |
||
+ | ## join sda1, sda2, sda3 and sda4 into their respective MD devices |
||
+ | # within LVM |
||
+ | ## enlarge the respective VG and LVs in turn |
||
+ | # Finally, enlarge the filesystem. |
||
+ | |||
+ | |||
+ | = Implemented = |
||
− | == Hot removing a disc from a raid1 == |
+ | == Removing partition from a raid1 with spares == |
(spares already available) |
(spares already available) |
||
<pre> |
<pre> |
||
Line 78: | Line 78: | ||
</pre> |
</pre> |
||
This process starts immediately after the --fail. |
This process starts immediately after the --fail. |
||
− | No, you don't seem to get to choose which spare. (in my case, I was using a, c. Failed a, it spared to b. Yet I plan for 'b' to be the next drive out, and so it'll spare over to d - I'll have c and d running! (with a and b as newer drives as spares, so I think that works out sensible :) |
+ | No, you don't get to choose which spare will be used. There is an internal order (mdstats shows it inside [] brackets). In my case, I was using a, c. Failed a, it spared to b. Yet I plan for 'b' to be the next drive out, and so it'll spare over to d - I'll have c and d running! (with a and b as newer drives as spares, so I think that works out sensible :) |
+ | |||
+ | Finally, I can now add that drive back as the oldest spare... just for kicks till it needs to be pulled physically... |
||
+ | <pre> |
||
+ | # mdadm --add /dev/md0 /dev/sda2 |
||
+ | </pre> |
||
+ | |||
= TODO = |
= TODO = |
||
− | # within mdadm |
+ | |
− | ## Remove sda3 (within the md1 raid1 - this has NO SPARE) |
+ | == Removing partition from a raid1 without spares == |
− | ## Remove sda4 (within the md3 raid5) |
+ | == Removing partition from a raid5 without spares == |
− | # Hardware setup |
+ | == Adding new partitions to existing raid1 and raid5 devices == |
− | ## Replace drive physically |
+ | == Embiggening volume groups == |
− | ## Partition |
+ | == Embiggening logical volumes == |
− | # in mdadm again |
+ | == Embiggening ext3 filesystem == |
− | ## join sda1, sda2, sda3 and sda4 into their respective MD devices |
||
− | # within LVM |
||
− | ## enlarge the respective VG and LVs in turn |
||
− | # Finally, enlarge the filesystem. |
Revision as of 15:58, 17 February 2010
|
I have filesystems on LVMs on RAIDs on partitions. Updating a disk is then, arguably, rather non-trivial. These are my notes-to-self. Maybe they'll help you too?
My system
Software
# cat /etc/debian_version lenny/sid # uname -a Linux falcon 2.6.18-6-amd64 #1 SMP Mon Jun 16 22:30:01 UTC 2008 x86_64 GNU/Linux # mdadm --version mdadm - v2.5.6 - 9 November 2006 # lvm version LVM version: 2.02.07 (2006-07-17) Library version: 1.02.08 (2006-07-17) Driver version: 4.7.0
Setup
# cat /proc/mdstat Personalities : [raid1] [raid6] [raid5] [raid4] md3 : active raid5 sda4[0] sdd4[3] sdc4[2] sdb4[1] 2637302400 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU] md2 : active raid1 sdc3[0] sdd3[1] 87891520 blocks [2/2] [UU] md0 : active raid1 sda2[0] sdb2[2](S) sdd2[3](S) sdc2[1] 8787456 blocks [2/2] [UU] md1 : active raid1 sda3[0] sdb3[1] 87891520 blocks [2/2] [UU] unused devices: <none> # pvs PV VG Fmt Attr PSize PFree /dev/md1 volgrp_home lvm2 a- 83.82G 0 /dev/md2 volgrp_home lvm2 a- 83.82G 27.63G /dev/md3 volgrp_shared lvm2 a- 2.46T 0 # vgs VG #PV #LV #SN Attr VSize VFree volgrp_home 2 1 0 wz--n- 167.63G 27.63G volgrp_shared 1 1 0 wz--n- 2.46T 0 # lvs LV VG Attr LSize Origin Snap% Move Log Copy% lv_home volgrp_home -wi-ao 140.00G lv_shared volgrp_shared -wi-ao 2.46T
The plan
Upgrading each disc in turn to a larger physical disc... (1.5TB or 2TB, etc), all levels can be grown and expanded...
I'll start with /dev/sda, initially making partitions 1,2,3 the same, and partition 4 (for md3 - /shared) larger. md3 will only be able to expand once ALL FOUR discs are enlarged!
...note: I may enlarge md1 and md2 for larger /home as well...
So - like this
- within mdadm
- Remove sda2 from within the md0 raid1 - this array has 2 spares)
- Remove sda3 from within the md1 raid1 - this has NO SPARE)
- Remove sda4 from within the md3 raid5)
- Hardware setup
- Replace drive physically
- Partition
- in mdadm again
- join sda1, sda2, sda3 and sda4 into their respective MD devices
- within LVM
- enlarge the respective VG and LVs in turn
- Finally, enlarge the filesystem.
Implemented
Removing partition from a raid1 with spares
(spares already available)
# mdadm --fail /dev/md0 /dev/sda2 # mdadm --remove /dev/md0 /dev/sda2
You can watch a spare take over with
# cat /proc/mdstat
This process starts immediately after the --fail. No, you don't get to choose which spare will be used. There is an internal order (mdstats shows it inside [] brackets). In my case, I was using a, c. Failed a, it spared to b. Yet I plan for 'b' to be the next drive out, and so it'll spare over to d - I'll have c and d running! (with a and b as newer drives as spares, so I think that works out sensible :)
Finally, I can now add that drive back as the oldest spare... just for kicks till it needs to be pulled physically...
# mdadm --add /dev/md0 /dev/sda2