2TBのHDDがお手軽に買えるようになってきたのでLinuxサーバーのHDDを交換・増設してみた。
変更前の状態は以下の通り
sda: WD10EADS
sdb: WD20EADS sdb1,sdb2にそれぞれ1000GBずつ割り当て
sdc: WD20EADS sdc1,sdc2にそれぞれ1000GBずつ割り当て
今回はsdaを取り外してWD20EARSを2台増設する。
あとRAID化されていない領域をRAID-5化する。
総容量は4TBから6TBになる
WD20EARSは普通のHDDと違って物理セクターサイズが4KiBなのでパーティションを適切に切らないとWriteのパフォーマンスは半減する。この辺は簡単なベンチマークをしたので後述。
結局通常のMBRでなくGPTでパーティションを以下のように切りました
変更前の状態は以下の通り
sda: WD10EADS
sdb: WD20EADS sdb1,sdb2にそれぞれ1000GBずつ割り当て
sdc: WD20EADS sdc1,sdc2にそれぞれ1000GBずつ割り当て
今回はsdaを取り外してWD20EARSを2台増設する。
あとRAID化されていない領域をRAID-5化する。
総容量は4TBから6TBになる
WD20EARSは普通のHDDと違って物理セクターサイズが4KiBなのでパーティションを適切に切らないとWriteのパフォーマンスは半減する。この辺は簡単なベンチマークをしたので後述。
結局通常のMBRでなくGPTでパーティションを以下のように切りました
GNU Parted 1.8.1 Using /dev/sdd Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) unit s (parted) p Model: ATA WDC WD20EARS-00M (scsi) Disk /dev/sdd: 3907029167s Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 40s 1953134487s 1953134448s ext3 primary raid 2 1953134488s 3906268935s 1953134448s primary raid
パーティションはこんな感じで作りました。
mkpart 40 1953134487
mkpart 1953134488 3906268935
set 1 raid on
set 2 raid on
さてパーティションの準備ができたのでsdaをraid arrayから切り離してsdd1を追加する。
起きたら完了していたので一回shutdownしてsdaを取り外してもう1台のHDDを増設する。こういう構成
sda: WD20EADS sda1,sda2にそれぞれ1000GBずつ割り当て
sdb: WD20EADS sdb1,sdb2にそれぞれ1000GBずつ割り当て
sdc: WD20EARS sdc1,sdc2にそれぞれ1000GBずつ割り当て
sddをraid arrayに追加してraid devicesを増やして容量を拡張する。
ちなみにmd1とFS(ext3)の間にLVMを挟んでいるのでオンラインで拡張可能。unmountは不要。
1日経過してようやくreshape完了。。。
ここからはLVMやFS(ext3)関係の操作。VG(Volume Group)を拡張、LV(Logical Volume)を拡張、FS(File System)を拡張する。
全てオンラインで拡張できる。
ちょうど40分でresize2fsの処理完了。これで増設したHDDの半分を割り当てたことになる。
今度はsd[ab]2においてあるファイルを退避させないといけないので先にsd[cd]2を似非raid-5化してそれをVolGroup01に登録して再拡張してデータを退避させる。また時間かかりそうだ。。
上で心配していたようにどうも2TBじゃなくて1TBのデバイスとして認識されているようだ。
RAID5なのにRAID1のような感じになってる。増設したら変わってくるんだろうか。。
とりあえず先に進む。このmd2もVolGroup01に追加する。今度はpvresizeの代わりにpvcreate,vgextendが必要。
この状態でsd[a,b]2においてあるファイルを全部data1に移転。同じディスク間の読み書きだからかなり時間がかかる。
また寝るー
(2010-08-27追記)
もうずいぶん時間がたってしまったがこの後やったことを列挙しておきます。
[root@enterprise ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md1 : active raid5 sdc1[2] sdb1[1] sda1[0] 1953134208 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU] (md1が稼動中。sda1,sdb1,sdc1でarrayを構築) [root@enterprise ~]# mdadm --manage /dev/md1 --fail /dev/sda1 mdadm: set /dev/sda1 faulty in /dev/md1 (sda1が壊れたフラグを立てる。もちろん壊れてはいないが) [root@enterprise ~]# mdadm --manage /dev/md1 --remove /dev/sda1 mdadm: hot removed /dev/sda1 (sda1をarrayから切り離す) [root@enterprise ~]# mdadm --misc --zero-superblock /dev/sda1 [root@enterprise ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md1 : active raid5 sdc1[2] sdb1[1] 1953134208 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU] (sda1がなくなっているのがわかる) [root@enterprise ~]# mdadm --manage /dev/md1 --add /dev/sdd1 mdadm: added /dev/sdd1 (sdd1をmd1 arrayに追加) [root@enterprise ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md1 : active raid5 sdd1[3] sdc1[2] sdb1[1] 1953134208 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU] [>....................] recovery = 0.2% (2126592/976567104) finish=271.5min speed=59814K/sec (raid arrayのリビルド開始。終わるまで寝るー)
起きたら完了していたので一回shutdownしてsdaを取り外してもう1台のHDDを増設する。こういう構成
sda: WD20EADS sda1,sda2にそれぞれ1000GBずつ割り当て
sdb: WD20EADS sdb1,sdb2にそれぞれ1000GBずつ割り当て
sdc: WD20EARS sdc1,sdc2にそれぞれ1000GBずつ割り当て
sdd: WD20EARS sdd1,sdd2にそれぞれ1000GBずつ割り当て
sddをraid arrayに追加してraid devicesを増やして容量を拡張する。
ちなみにmd1とFS(ext3)の間にLVMを挟んでいるのでオンラインで拡張可能。unmountは不要。
[root@enterprise ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md1 : active raid5 sdc1[0] sdb1[2] sda1[1] 1953134208 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU] unused devices:いまココ。まだ続く...[root@enterprise ~]# mdadm --manage /dev/md1 --add /dev/sdd1 (sdd1をmd1に追加) [root@enterprise ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md1 : active raid5 sdd1[3](S) sdc1[0] sdb1[2] sda1[1] 1953134208 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU] unused devices: (この時点ではsdd1はスペアディスク扱い) [root@enterprise ~]# mdadm -G /dev/md1 -n 4 mdadm: Need to backup 384K of critical section.. mdadm: ... critical section passed. (RAID-5のデバイス数を3から4に拡大) [root@enterprise ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md1 : active raid5 sdd1[3] sdc1[0] sdb1[2] sda1[1] 1953134208 blocks super 0.91 level 5, 64k chunk, algorithm 2 [4/4] [UUUU] [>....................] reshape = 0.0% (35072/976567104) finish=1391.0min speed=11690K/sec (arrayのリビルド開始)
1日経過してようやくreshape完了。。。
ここからはLVMやFS(ext3)関係の操作。VG(Volume Group)を拡張、LV(Logical Volume)を拡張、FS(File System)を拡張する。
全てオンラインで拡張できる。
[root@enterprise ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md1 : active raid5 sdd1[3] sdc1[0] sdb1[2] sda1[1] 2929701312 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU] unused devices:(ほぼ1日がかりでようやくreshape完了。。) [root@enterprise ~]# pvscan | grep md1 PV /dev/md1 VG VolGroup01 lvm2 [1.82 TB / 5.38 GB free] (まだPVの容量は増えていない) [root@enterprise ~]# pvresize /dev/md1 Physical volume "/dev/md1" changed 1 physical volume(s) resized / 0 physical volume(s) not resized (pvresizeで実際の容量を認識してくれる) [root@enterprise ~]# pvscan | grep md1 PV /dev/md1 VG VolGroup01 lvm2 [2.73 TB / 936.70 GB free] (PVの容量が900GiB近く増えた) [root@enterprise ~]# vgdisplay VolGroup01 --- Volume group --- VG Name VolGroup01 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 24 VG Access read/write VG Status resizable MAX LV 0 Cur LV 7 Open LV 6 Max PV 0 Cur PV 1 Act PV 1 VG Size 2.73 TB PE Size 4.00 MB Total PE 715259 Alloc PE / Size 475463 / 1.81 TB Free PE / Size 239796 / 936.70 GB VG UUID VJYgfz-KEYE-bX7w-wyJw-1vSt-sTd8-czljOL (VGのFree Sizeも増えてる) [root@enterprise ~]# lvextend -L +900G /dev/VolGroup01/data1 Extending logical volume data1 to 2.55 TB Logical volume data1 successfully resized (LV(data1)の容量を900GiB拡張。意外とすぐに処理完了) [root@enterprise ~]# resize2fs /dev/VolGroup01/data1 resize2fs 1.39 (29-May-2006) Filesystem at /dev/VolGroup01/data1 is mounted on /data1; on-line resizing required Performing an on-line resize of /dev/VolGroup01/data1 to 683482112 (4k) blocks. (結構時間かかる19:26-) [root@enterprise ~]# df | grep data1 /dev/mapper/VolGroup01-data1 2407942276 1541393540 744261696 68% /data1 [root@enterprise ~]# df | grep data1 /dev/mapper/VolGroup01-data1 2408974404 1541393540 745241408 68% /data1 [root@enterprise ~]# df | grep data1 /dev/mapper/VolGroup01-data1 2409877516 1541393540 746098656 68% /data1 [root@enterprise ~]# df | grep data1 /dev/mapper/VolGroup01-data1 2410780628 1541393540 746955904 68% /data1 (resize2fsの処理中の状況。徐々に容量が増えていく..)
ちょうど40分でresize2fsの処理完了。これで増設したHDDの半分を割り当てたことになる。
今度はsd[ab]2においてあるファイルを退避させないといけないので先にsd[cd]2を似非raid-5化してそれをVolGroup01に登録して再拡張してデータを退避させる。また時間かかりそうだ。。
[root@enterprise ~]# mdadm --create /dev/md2 --level=5 --raid-devices=2 /dev/sd{c,d}2 mdadm: array /dev/md2 started. (1本足りない状態だけど2TBのraid array(md2)を作成) [root@enterprise ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md2 : active raid5 sdd2[2] sdc2[0] 976567104 blocks level 5, 64k chunk, algorithm 2 [2/1] [U_] [>....................] recovery = 0.1% (1264640/976567104) finish=321.3min speed=50585K/sec (なんかブロック数が足りない気がする。。)
上で心配していたようにどうも2TBじゃなくて1TBのデバイスとして認識されているようだ。
RAID5なのにRAID1のような感じになってる。増設したら変わってくるんだろうか。。
[root@enterprise ~]# mdadm --detail /dev/md2 /dev/md2: Version : 0.90 Creation Time : Mon Jul 19 21:05:16 2010 Raid Level : raid5 Array Size : 976567104 (931.33 GiB 1000.00 GB) Used Dev Size : 976567104 (931.33 GiB 1000.00 GB) Raid Devices : 2 Total Devices : 2 Preferred Minor : 2 Persistence : Superblock is persistent Update Time : Tue Jul 20 23:55:51 2010 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 64K UUID : 4f7b6a38:0dabaacc:8799f02a:c89f888f Events : 0.2 Number Major Minor RaidDevice State 0 8 34 0 active sync /dev/sdc2 1 8 50 1 active sync /dev/sdd2
とりあえず先に進む。このmd2もVolGroup01に追加する。今度はpvresizeの代わりにpvcreate,vgextendが必要。
[root@enterprise ~]# pvcreate /dev/md2 [root@enterprise ~]# vgextend VolGroup01 /dev/md2 [root@enterprise ~]# lvextend -L +910G /dev/VolGroup01/data1 [root@enterprise ~]# resize2fs /dev/VolGroup01/data1
この状態でsd[a,b]2においてあるファイルを全部data1に移転。同じディスク間の読み書きだからかなり時間がかかる。
また寝るー
(2010-08-27追記)
もうずいぶん時間がたってしまったがこの後やったことを列挙しておきます。
- sd[ab]2を一回まっさらにする。lvremove,vgremove,pvremoveなど
- /dev/sd[ab]2を/dev/md2に追加して再びリビルド
- pvresize /dev/md2
- lvextendとresize2fsでファイルシステムの容量を拡張
- /dev/sd[ab]2のパーティションタイプをRAIDにする。数日はまりましたがこれをしないとリブート失敗します。
コメント
コメントを投稿