5月
07
前の記事で、reshape 中に degrade するとディスクアクセスが止まったという話を書きましたが、その状態で md デバイスにアクセスするとどうなるかを調べてみました。
(途中略) [root@linuxraidtest ~]# mdadm --manage /dev/md0 --fail /dev/sda1 mdadm: set /dev/sda1 faulty in /dev/md0 [root@linuxraidtest ~]# dd if=/dev/md0 of=/dev/null bs=1MiB count=3000
固まりました…
しょうがないので殺してみようと、
[root@linuxraidtest ~]# ps ax | grep dd 2383 pts/0 D+ 0:04 dd if /dev/md0 of /dev/null bs 1MiB count 3000 2405 pts/3 R+ 0:00 grep dd [root@linuxraidtest ~]# kill 2383 [root@linuxraidtest ~]# kill -QUIT 2383 [root@linuxraidtest ~]# kill -ABRT 2383 [root@linuxraidtest ~]# kill -KILL 2383
としましたが何もおきません。当然 md デバイスも busy なので再起動以外方法がなくなります。
[root@linuxraidtest ~]# mdadm --stop /dev/md0 mdadm: fail to stop array /dev/md0: Device or resource busy [root@linuxraidtest ~]# reboot
つまり reshape 中に degrade したアレイにはアクセスしてはいけない、ということになります。
さて、前回は電プチしましたが、さすがに実運用でそんなことをするわけにはいかないので、普通にアレイを再起動してみると、
[root@linuxraidtest ~]# mdadm --manage /dev/md0 --fail /dev/sda1 mdadm: set /dev/sda1 faulty in /dev/md0 [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> [root@linuxraidtest ~]# mdadm --manage /dev/md0 --stop mdadm: stopped /dev/md0 [root@linuxraidtest ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] unused devices:[root@linuxraidtest ~]# mdadm --assemble /dev/md0 --config partitions --super-minor 0 mdadm: /dev/md0 has been started with 4 drives (out of 5). [root@linuxraidtest ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdb1[1] sde1[4] sdd1[3] sdc1[2] 3132288 blocks super 0.91 level 5, 64k chunk, algorithm 2 [5/4] [_UUUU] [===>.................] reshape = 15.0% (157824/1044096) finish=3.1min speed=4704K/sec unused devices: <none> [root@linuxraidtest ~]# (しばらく待つ) [root@linuxraidtest ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdb1[1] sde1[4] sdd1[3] sdc1[2] 3132288 blocks super 0.91 level 5, 64k chunk, algorithm 2 [5/4] [_UUUU] unused devices: <none> [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, 386.504 seconds, 8.1 MB/s 0
というわけでデータは保存されています。(当たり前か)
結局のところ、reshape 中に degrade する可能性を考えると、上に載っているファイルシステムを unmount する必要があるため、オンラインで reshape できるメリットはあまり無い、ということになります。マシンがハングアップして reshape が中断されても次の起動時に正しく再開されるのが利点でしょうか。
昔々、まだ Fedora Core ではなく RedHat Linux だった頃、reshape 中にブレーカーが落ちてデータを吹っ飛ばした経験があります。その頃に比べればずっと良くなってるんですけどね。
no comment untill now