4月
29
そういや Linux の LVM や RAID ってどうなってるんだっけ、と思って調べてたところ、イマドキの Linux は RAID1/RAID5 ならメンバのデバイスの数をオンラインで(= RAID を停止させずに)変更する(これを reshape と言う)ことができるようですね。特に個人ユースなら HDD を少しずつ買い足して容量を増やしていく、ということをやりたくなるので、RAID でこの機能が使えると非常にうれしいところです。
というわけで実験。
[root@linuxraidtest ~]# mdadm --create /dev/md0 --level 5 --raid-devices 3 /dev/sd[abc]1 mdadm: array /dev/md0 started. [root@linuxraidtest ~]# mkfs.ext3 -q /dev/md0 [root@linuxraidtest ~]# mount /dev/md0 /mnt
では書き込みながら reshape してみましょう。
[root@linuxraidtest ~]# dd if=/dev/zero of=/mnt/fill.dat bs=1MiB & [1] 2068 [root@linuxraidtest ~]# mdadm --grow /dev/md0 --raid-devices 4 mdadm: Need to backup 384K of critical section.. mdadm: ... critical section passed. [root@linuxraidtest ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdd1[3] sdc1[2] sdb1[1] sda1[0] 2088192 blocks super 0.91 level 5, 64k chunk, algorithm 2 [4/4] [UUUU] [=>...................] reshape = 5.7% (61380/1044096) finish=18.2min speed=896K/sec unused devices: <none> [root@linuxraidtest ~]# fg dd if=/dev/zero of=/mnt/fill.dat bs=1MiB
ものすごーく遅くなりますが、それ以外はごく普通に動いてしまいます。
さて、md(4) や mdadm(8) の man ページを読むと、reshape 中にクラッシュしても再起動時に reshape を再開してしかもデータは保存されるみたいなことを書いてあるので、reshape 中に degrade させて電プチ、とかいう意地悪なことをやってみましょう。
まず、データが保存されてるかどうかのチェック用に、/dev/urandom からファイルを作って、それを /dev/md0 に書いておきます。
[root@linuxraidtest ~]# dd if=/dev/urandom of=check.dat bs=1MiB count=3000 3000+0 records in 3000+0 records out 3145728000 bytes (3.1 GB) copied, 634.43 seconds, 5.0 MB/s [root@linuxraidtest ~]# dd if=check.dat of=/dev/md0 bs=1MiB 3000+0 records in 3000+0 records out 3145728000 bytes (3.1 GB) copied, 279.607 seconds, 11.3 MB/s
んで reshape 開始。
[root@linuxraidtest ~]# mdadm --manage /dev/md0 --add /dev/sde1 mdadm: added /dev/sde1 [root@linuxraidtest ~]# mdadm --grow /dev/md0 --raid-devices 5 mdadm: Need to backup 768K of critical section.. mdadm: ... critical section passed. [root@linuxraidtest ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sde1[4] sdd1[3] sdc1[2] sdb1[1] sda1[0] 3132288 blocks super 0.91 level 5, 64k chunk, algorithm 2 [5/5] [UUUUU] [>....................] reshape = 2.6% (28608/1044096) finish=7.0min speed=2384K/sec unused devices: <none> [root@linuxraidtest ~]# mdadm --manage /dev/md0 --fail /dev/sda1 mdadm: set /dev/sda1 faulty in /dev/md0
あれ、degrade させたらディスクアクセスが止まった…
[root@linuxraidtest ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sde1[4] sdd1[3] sdc1[2] sdb1[1] sda1[5](F) 3132288 blocks super 0.91 level 5, 64k chunk, algorithm 2 [5/4] [_UUUU] unused devices: <none>
むむむ?reshaping が中断された?
とりあえず見なかったことにして(おい)電プチ… & 再起動
[root@linuxraidtest ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sde1[4] sdd1[3] sdc1[2] sdb1[1] 3132288 blocks super 0.91 level 5, 64k chunk, algorithm 2 [5/4] [_UUUU] [====>................] reshape = 22.2% (233284/1044096) finish=5.3min speed=2507K/sec unused devices: <none>
ちゃんと reshape も再開しているようです。で、完了してから中身をチェックすると、
[root@linuxraidtest ~]# dd if=/dev/md0 bs=1MiB count=3000 | cmp /dev/stdin check.dat; echo $? 3000+0 records in 3000+0 records out 3145728000 bytes (3.1 GB) copied, 411.267 seconds, 7.6 MB/s 0
データは保存されている模様。
[Linux] RAID5 の reshape (その2)…
前の記事で、reshape 中に degrade するとディスクアクセスが止まったという話を書きましたが、その状態で md デバイスにアクセスするとどうなるかを調べてみ (more…)
[…] しらべてみると、reshape中に再起動とかさせても平気らしいです。 こちらで実験してました。 いやー、mdadmよくできてる。 Posted By: ゆ。 Last Edit: 06 11月 2011 @ 06:03 PM Email • Permalink […]