元々 320GB の HDT725032VLA360 を 3台と 500GB の HDT725050VLA360 を 1台で 960GB分の RAID5 を組んでいたので、今回はこの RAID5 を WD10EACS 4台で交換することが目的。
RAID に 1TB HDD をスペアとして追加しておき、そこから元の HDD を 1台外して自動的に再構築する、という方法を取った。
まず RAID用パーティションを作る。
# fdisk -l /dev/sdc
Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/sdc1 1 121601 976760001 fd Linux raid 自動検出
そして RAID に追加する。
# mdadm /dev/md2 -a /dev/sdc1
mdadm: added /dev/sdc1
# mdadm -D /dev/md2
/dev/md2:
Version : 00.90.03
Creation Time : Mon May 7 00:53:47 2007
Raid Level : raid5
Array Size : 937705728 (894.27 GiB 960.21 GB)
Device Size : 312568576 (298.09 GiB 320.07 GB)
Raid Devices : 4
Total Devices : 5
Preferred Minor : 2
Persistence : Superblock is persistent
Update Time : Sun Sep 21 16:59:18 2008
State : clean
Active Devices : 4
Working Devices : 5
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 64K
UUID : 043d09e3:111fad6c:31991985:6939942f
Events : 0.246
Number Major Minor RaidDevice State
0 8 65 0 active sync /dev/sde1
1 8 81 1 active sync /dev/sdf1
2 8 97 2 active sync /dev/sdg1
3 8 113 3 active sync /dev/sdh1
5 8 33 - spare /dev/sdc1
既存の HDD を外して自動リビルドを走らせる。
# mdadm /dev/md2 -f /dev/sdh1
mdadm: set /dev/sdh1 faulty in /dev/md2
# mdadm -D /dev/md2
/dev/md2:
Version : 00.90.03
Creation Time : Mon May 7 00:53:47 2007
Raid Level : raid5
Array Size : 937705728 (894.27 GiB 960.21 GB)
Device Size : 312568576 (298.09 GiB 320.07 GB)
Raid Devices : 4
Total Devices : 5
Preferred Minor : 2
Persistence : Superblock is persistent
Update Time : Sun Sep 21 17:02:21 2008
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 1
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 64K
Rebuild Status : 0% complete
UUID : 043d09e3:111fad6c:31991985:6939942f
Events : 0.248
Number Major Minor RaidDevice State
0 8 65 0 active sync /dev/sde1
1 8 81 1 active sync /dev/sdf1
2 8 97 2 active sync /dev/sdg1
4 8 49 3 spare rebuilding /dev/sdd1
5 8 113 - faulty spare /dev/sdh1
これを 4台分行なって全て 1TB HDD で構成した RAID5 になった。
このままだと元の RAID サイズのままなので、RAID サイズを拡張させる。
まず、ファイルが壊れないかの検証用に /dev/urandom からファイルを作成し、md5sum で検証できるようにしておく。
# dd if=/dev/urandom of=/storage/dd bs=512 count=10000
10000+0 records in
10000+0 records out
5120000 bytes (5.1 MB) copied, 1.39336 seconds, 3.7 MB/s
# md5sum /storage/dd > ~/md5sum
次に RAID5 のサイズを拡張。
# mdadm --grow /dev/sd2 -z max
# mdadm -D /dev/md2
/dev/md2:
Version : 00.90.03
Creation Time : Mon May 7 00:53:47 2007
Raid Level : raid5
Array Size : 2930279808 (2794.53 GiB 3000.61 GB)
Device Size : 976759936 (931.51 GiB 1000.20 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 2
Persistence : Superblock is persistent
Update Time : Mon Sep 22 11:55:20 2008
State : active, resyncing
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
Rebuild Status : 32% complete
UUID : 043d09e3:111fad6c:31991985:6939942f
Events : 0.293
Number Major Minor RaidDevice State
0 8 81 0 active sync /dev/sdf1
1 8 65 1 active sync /dev/sde1
2 8 97 2 active sync /dev/sdg1
3 8 113 3 active sync /dev/sdh1
そしてこの RAID5 の上に作られている FileSystem のサイズを拡張する。
# df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/md0 110G 80G 25G 77% /
tmpfs 999M 0 999M 0% /lib/init/rw
udev 10M 104K 9.9M 2% /dev
tmpfs 999M 0 999M 0% /dev/shm
/dev/md2 895G 866G 29G 97% /storage
# xfs_growfs /storage
meta-data=/dev/md2 isize=256 agcount=32, agsize=7325840 blks
= sectsz=4096 attr=0
data = bsize=4096 blocks=234426432, imaxpct=25
= sunit=16 swidth=48 blks, unwritten=1
naming =version 2 bsize=4096
log =internal bsize=4096 blocks=32768, version=2
= sectsz=4096 sunit=1 blks
realtime =none extsz=196608 blocks=0, rtextents=0
data blocks changed from 234426432 to 732569952
# df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/md0 110G 80G 25G 77% /
tmpfs 999M 0 999M 0% /lib/init/rw
udev 10M 104K 9.9M 2% /dev
tmpfs 999M 0 999M 0% /dev/shm
/dev/md2 2.8T 866G 1.9T 31% /storage
最後に md5sum で問題がないか確認する。
# md5sum -c ~/md5sum
/storage/dd: OK
完璧ですね。