SSブログ

mdadmで作ったソフトRAIDを壊してみる(RAID 5編) [Linux(LVM/RAID/Storage)]

 おまちどうさまでした。(笑)昨日作成したRAID 5のボリュームのリビルドが完成しましたので、これでこのボリュームのデータは、ディスクの障害からは守られるはずです。

 まずはおさらいがてら、RAID5のボリュームの状態とかみておきます。

# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 hda8[3] hda7[2] hda6[1] hda5[0]
      30025152 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

unused devices: (none)
# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/hda2             9.7G  1.7G  7.6G  18% /
/dev/hda1              99M   11M   83M  12% /boot
tmpfs                 252M     0  252M   0% /dev/shm
/dev/md0               29G  173M   27G   1% /mnt/work


 /mnt/workにマウントされている、/dev/md0というデバイスが、4本のディスクでRAID 5を構成しているデバイスになります。ここはディスク1本飛んだくらいではヘコたれないはずです。

 今はまだカラッポでつまらないので、「/etc」の下あたりをまるっとコピーしてみましょうか。

# mkdir /mnt/work/etc
# cp -r /etc/* /mnt/work/etc
# ls -la /mnt/work/etc
合計 2148
drwxr-xr-x 80 root root   4096 11月  6 12:27 .
drwxr-xr-x  4 root root   4096 11月  6 12:27 ..
-rw-r--r--  1 root root   2518 11月  6 12:27 DIR_COLORS
-rw-r--r--  1 root root   2420 11月  6 12:27 DIR_COLORS.xterm
drwxr-xr-x  2 root root   4096 11月  6 12:27 NetworkManager
drwxr-xr-x  7 root root   4096 11月  6 12:27 X11
drwxr-xr-x  4 root root   4096 11月  6 12:27 acpi
-rw-r--r--  1 root root     46 11月  6 12:27 adjtime
-rw-r--r--  1 root root   1512 11月  6 12:27 aliases
-rw-r-----  1 root root  12288 11月  6 12:27 aliases.db
:::


 ちなみに、/proc/mdstatの中身よりもさらに詳細な情報を見たいという場合は、「mdadm」コマンドに「--misc --detail」オプションを付けて実行してみます。

# mdadm --misc --detail /dev/md0
/dev/md0:
        Version : 00.90.03
  Creation Time : Wed Nov  5 15:51:20 2008
     Raid Level : raid5
     Array Size : 30025152 (28.63 GiB 30.75 GB)
  Used Dev Size : 10008384 (9.54 GiB 10.25 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Thu Nov  6 12:52:26 2008
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : 22eea7b2:c6461c41:bbe89505:7e45ea96
         Events : 0.8

    Number   Major   Minor   RaidDevice State
       0       3        5        0      active sync   /dev/hda5
       1       3        6        1      active sync   /dev/hda6
       2       3        7        2      active sync   /dev/hda7
       3       3        8        3      active sync   /dev/hda8


 それでは、この状態で/dev/hda5が壊れたことを想定してみることに。RAIDが動作し、また正常にアクセスできてるっぽい状態が確保されているかどうか、検証してみる。ボリュームへのアクセスが継続できていることを調べるため、別のターミナルから(ちょっとアンチョクだけども)「cd /mnt/work/etc;while :;do find . -print;done」とかやっておいて、この状態でRAIDへの操作を行う。

 では、/dev/hda5に対して、mdadmコマンドにて「故障マーク」を付けてみる。

# mdadm --manage /dev/md0 --fail /dev/hda5
mdadm: set /dev/hda5 faulty in /dev/md0
# mdadm --misc --detail /dev/md0
/dev/md0:
        Version : 00.90.03
  Creation Time : Wed Nov  5 15:51:20 2008
     Raid Level : raid5
     Array Size : 30025152 (28.63 GiB 30.75 GB)
  Used Dev Size : 10008384 (9.54 GiB 10.25 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Thu Nov  6 13:39:02 2008
          State : clean, degraded
 Active Devices : 3
Working Devices : 3
 Failed Devices : 1
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : 22eea7b2:c6461c41:bbe89505:7e45ea96
         Events : 0.12

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       3        6        1      active sync   /dev/hda6
       2       3        7        2      active sync   /dev/hda7
       3       3        8        3      active sync   /dev/hda8

       4       3        5        -      faulty spare   /dev/hda5
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 hda5[4](F) hda8[3] hda7[2] hda6[1]
      30025152 blocks level 5, 64k chunk, algorithm 2 [4/3] [_UUU]

unused devices: (none)


 これで、4本のディスクで構築していたRAID5のボリュームは3本のディスクで運用状態を継続していることとなった。さっき、別のターミナルで実行していたfind コマンドの無限ループは、相変わらずダーっと表示を継続していることから、一応何事もなかったかのように使用できているということが判る。

 それでは、故障した(ことにした)/dev/hda5をRAIDのアレイから撤去することにする。やはり「mdadm」コマンドを使用する。ディスクをRAIDアレイから撤去するには、「mdadm --manage RAIDデバイス名 --remove 引き抜くディスクのデバイス名」を実行する。

# mdadm --manage /dev/md0 --remove /dev/hda5
mdadm: hot removed /dev/hda5


 これで、壊れた(ことにした)/dev/hda5はアレイから撤去されたことに。チェックしてみる。

# mdadm --misc --detail /dev/md0
/dev/md0:
        Version : 00.90.03
  Creation Time : Wed Nov  5 15:51:20 2008
     Raid Level : raid5
     Array Size : 30025152 (28.63 GiB 30.75 GB)
  Used Dev Size : 10008384 (9.54 GiB 10.25 GB)
   Raid Devices : 4
  Total Devices : 3
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Thu Nov  6 14:01:18 2008
          State : clean, degraded
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : 22eea7b2:c6461c41:bbe89505:7e45ea96
         Events : 0.110

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       3        6        1      active sync   /dev/hda6
       2       3        7        2      active sync   /dev/hda7
       3       3        8        3      active sync   /dev/hda8
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 hda8[3] hda7[2] hda6[1]
      30025152 blocks level 5, 64k chunk, algorithm 2 [4/3] [_UUU]

unused devices: (none)


 確かに/dev/hda5がいなくなっていることが判る。
 これらの操作を行ったにもかかわらず、別ターミナルから実行しているfindコマンドの無限ループは相変わらず快調に動作している。

 では、このRAIDデバイスを本来の4本のディスクで運用する状態に復元する。(要するに新しいディスクを突っ込むってことね)「mdadm --manage RAIDデバイス名 --add 新たに追加するディスクのデバイス名」を実行すればオッケー。

# mdadm --manage /dev/md0 --add /dev/hda9
mdadm: added /dev/hda9


 ここでは、さきほど壊れた(ことにした)/dev/hda5の代わりに、/dev/hda9を新しいディスクとしてアレイに投入している。この状態でRAIDアレイのリビルドが動き出す。状態を見てみると…

# mdadm --misc --detail /dev/md0
/dev/md0:
        Version : 00.90.03
  Creation Time : Wed Nov  5 15:51:20 2008
     Raid Level : raid5
     Array Size : 30025152 (28.63 GiB 30.75 GB)
  Used Dev Size : 10008384 (9.54 GiB 10.25 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Thu Nov  6 15:03:59 2008
          State : clean, degraded, recovering
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 64K

 Rebuild Status : 0% complete

           UUID : 22eea7b2:c6461c41:bbe89505:7e45ea96
         Events : 0.370

    Number   Major   Minor   RaidDevice State
       4       3        9        0      spare rebuilding   /dev/hda9
       1       3        6        1      active sync   /dev/hda6
       2       3        7        2      active sync   /dev/hda7
       3       3        8        3      active sync   /dev/hda8
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 hda9[4] hda8[3] hda7[2] hda6[1]
      30025152 blocks level 5, 64k chunk, algorithm 2 [4/3] [_UUU]
      [>....................]  recovery =  0.1% (14080/10008384) finish=153.5min speed=1083K/sec

unused devices: (none)


 という訳で、これから153分ほどかけてRAID 5のリビルドが行われるということが判る。なお、この状態でもなお、別ターミナルで実行しているfindコマンドの無限ループは快調に動作していて、運用状態が確保されていることがわかる。

 なお、今この状態(RAIDのリビルドが走っている状態)で別のディスクが故障した場合はオワタ\(^○^)/オワタということになるので要注意!

nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。