(parted) unit b (parted) print Model: ATA WDC WD30EZRX-00D (scsi) Disk /dev/sde: 3000592982016B Sector size (logical/physical): 512B/4096B Partition Table: gpt Number Start End Size File system Name Flags 1 1048576B 537919487B 536870912B ext4 raid 2 537919488B 275415826431B 274877906944B raid 3 275415826432B 2275813621759B 2000397795328B raid (parted) select /dev/sdf Using /dev/sdf (parted) print Model: ATA WDC WD20EARX-00P (scsi) Disk /dev/sdf: 2000398934016B Sector size (logical/physical): 512B/4096B Partition Table: gpt Number Start End Size File system Name Flags 1 1048576B 2000398843903B 2000397795328B raid
このように1バイト単位まで同じです。さていよいよ「ディスク2本のRAID 5」は作れるのか!?
# mdadm --create /dev/md5 --level=5 --raid-devices=2 /dev/sde3 /dev/sdf1 mdadm: /dev/sdf1 appears to be part of a raid array: level=raid1 devices=2 ctime=Tue Jan 1 10:32:54 2013 Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md5 started. # cat /proc/mdstat Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] md5 : active raid5 sdf1[2] sde3[0] 1953381888 blocks super 1.2 level 5, 512k chunk, algorithm 2 [2/1] [U_] [>....................] recovery = 0.1% (3436876/1953381888) finish=389.9min speed=83342K/secむむっ、拍子抜けするぐらい普通に作れたんですけどw あ、小さい領域で実験してからにすべきだったか・・・。しかも2.0TB2本で389分ということは、6本全部構成し終わったらresyncに1200分、つまり20時間かかる計算!?w
というわけで、20時間待って失敗は悲しいので、小さい領域で実験してみることにしました。まずは4つパーティションを用意します。
(parted) unit gib (parted) mkpart primary 1 2 (parted) mkpart primary 2 3 (parted) mkpart primary 3 4 (parted) mkpart primary 4 5 (parted) set 1 raid on (parted) print モデル: ATA M4-CT128M4SSD2 (scsi) ディスク /dev/sdd: 119GiB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 1.00GiB 2.00GiB 1.00GiB primary raid 2 2.00GiB 3.00GiB 1.00GiB primary raid 3 3.00GiB 4.00GiB 1.00GiB primary raid 4 4.00GiB 5.00GiB 1.00GiB primary raid違うマシンでやったのでロケールが日本語になってますがご容赦を。さてパーティションは切れたので早速RAID 5のアレイを作ってみます。実際と同様に2台です。
# mdadm --create /dev/md0 --level=5 --raid-devices=2 /dev/sdd1 /dev/sdd2 mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. # cat /proc/mdstat Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] md0 : active raid5 sdd2[2] sdd1[0] 1047552 blocks super 1.2 level 5, 512k chunk, algorithm 2 [2/1] [U_] [====>................] recovery = 24.1% (253736/1047552) finish=0.1min speed=84578K/sec # mkfs.ext4 /dev/md0 # mount /dev/md0 /mnt/tmpファイルシステムも作ってマウントしました。念のためということでそこにランダムなデータのファイルを作り、それを別のパーティションにもコピーしておきます。
# dd if=/dev/urandom of=random.dat count=1800000 $ cp /mnt/tmp/random.dat .さあ準備はできたのでいよいよ1パーティション壊してみましょう。まずは fail にしてから remove です。
# mdadm --fail /dev/md0 /dev/sdd2 mdadm: set /dev/sdd2 faulty in /dev/md0 # cat /proc/mdstat Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] md0 : active raid5 sdd2[2](F) sdd1[0] 1047552 blocks super 1.2 level 5, 512k chunk, algorithm 2 [2/1] [U_] # mdadm --remove /dev/md0 /dev/sdd2 mdadm: hot removed /dev/sdd2 from /dev/md0 # cat /proc/mdstat Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] md0 : active raid5 sdd1[0] 1047552 blocks super 1.2 level 5, 512k chunk, algorithm 2 [2/1] [U_]無事抜けました。この状態でも degraded ですが動いている(はず)。さっきコピーしておいたファイルとマウントしているところにあるファイルを比べてみると
$ diff random.dat /mnt/tmp/random.dat $おお、問題なさそうですね!念のためその外したディスクは別のデータで上書きしてみます。
# mkfs.ext4 /dev/sdd2 # mount /dev/sdd2 /mnt/tmp2 # ls /mnt/tmp2/ lost+found $ diff random.dat /mnt/tmp/random.dat $やはり問題はないです。すばらしい。 さていよいよ本題のRAID 6への変換です。 先ほど外したパーティションを戻してから、さらに2つのパーティションを追加します。
# umount /mnt/tmp2 # mdadm --add /dev/md0 /dev/sdd2 mdadm: added /dev/sdd2 # cat /proc/mdstat Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] md0 : active raid5 sdd2[2] sdd1[0] 1047552 blocks super 1.2 level 5, 512k chunk, algorithm 2 [2/1] [U_] [=============>.......] recovery = 68.6% (720256/1047552) finish=0.0min speed=102893K/sec # mdadm --add /dev/md0 /dev/sdd[34] mdadm: added /dev/sdd3 mdadm: added /dev/sdd4 # cat /proc/mdstat Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] md0 : active raid5 sdd4[4](S) sdd3[3](S) sdd2[2] sdd1[0] 1047552 blocks super 1.2 level 5, 512k chunk, algorithm 2 [2/2] [UU] # mdadm --detail /dev/md0 /dev/md0: Number Major Minor RaidDevice State 0 8 49 0 active sync /dev/sdd1 2 8 50 1 active sync /dev/sdd2 3 8 51 - spare /dev/sdd3 4 8 52 - spare /dev/sdd4はい。2台追加されてスペアとなっています。これを4台のRAID 6に・・・と思ったらエラーになりました。1台ずつしかできないのかな?とにかく1台ずつ行きます。3台ではまだRAID 6にできないので、まずは3台のRAID 5にします。
# mdadm --grow /dev/md0 --raid-devices=3 mdadm: Need to backup 1024K of critical section.. # cat /proc/mdstat Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] md0 : active raid5 sdd4[4] sdd3[3](S) sdd2[2] sdd1[0] 1047552 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU] [=====>...............] reshape = 26.1% (273920/1047552) finish=0.4min speed=30321K/secなんか Need to backup... って言われたのでコマンドはrejectされたのかと思いきや普通にRAID 5への変換が行われました。いいねいいね。終わったらいよいよRAID 6への変換です。
# mdadm --grow /dev/md0 --level=6 --raid-devices=4 mdadm: level of /dev/md0 changed to raid6 mdadm: /dev/md0: Cannot grow - need backup-file mdadm: aborting level changeおお、今度はちゃんとrejectされました。バックアップファイルを指定して再実行です。
# mdadm --grow /dev/md0 --level=6 --raid-devices=4 --backup-file=/home/raid.back mdadm: level of /dev/md0 changed to raid6 # cat /proc/mdstat Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] md0 : active raid6 sdd4[4] sdd3[3] sdd2[2] sdd1[0] 2095104 blocks super 1.2 level 6, 512k chunk, algorithm 18 [4/3] [UUU_] [>....................] reshape = 1.5% (16384/1047552) finish=2.0min speed=8192K/secすばらしい。うまくいきました。
でもこれってつまり2台追加するときは2回 reshape するってことよね。2.0TBが2台で6時間として、3台は9時間、4台は12時間、5台は15時間、6台が18時間、それぞれ全部やらないといけないということは合計39時間w
0 件のコメント:
コメントを投稿