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