4 つのディスクを持つ RAID 5 は、1 つのディスクが故障すると動作しなくなりますか?

4 つのディスクを持つ RAID 5 は、1 つのディスクが故障すると動作しなくなりますか?

についての質問を見つけましたmdadm スペアディスクこれは私の質問にほぼ答えていますが、何が起こっているのかは私には分かりません。

4 つのディスクで RAID5 をセットアップしており、通常の操作ではすべて次のようにラベル付けされていますactive/sync

    Update Time : Sun Sep 29 03:44:01 2013
          State : clean 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

...

Number   Major   Minor   RaidDevice State
   0     202       32        0      active sync   /dev/sdc
   1     202       48        1      active sync   /dev/sdd
   2     202       64        2      active sync   /dev/sde 
   4     202       80        3      active sync   /dev/sdf

しかし、ディスクの 1 つに障害が発生すると、RAID は動作を停止しました。

    Update Time : Sun Sep 29 01:00:01 2013
          State : clean, FAILED 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 1
  Spare Devices : 1

...

Number   Major   Minor   RaidDevice State
   0     202       32        0      active sync   /dev/sdc
   1     202       48        1      active sync   /dev/sdd
   2       0        0        2      removed
   3       0        0        3      removed

   2     202       64        -      faulty spare   /dev/sde
   4     202       80        -      spare   /dev/sdf

ここで一体何が起こっているのでしょうか??

修正方法は RAID を再インストールすることでした。幸い、それができます。次回はおそらく重要なデータが入っているでしょう。単一のディスク障害によって RAID が失敗しないようにするには、これを理解する必要があります。

自分が期待していたことと実際に起こったことをリストアップしていなかったことに気付きました。

3 つの正常なディスクと 1 つの不良ディスクを持つ RAID5 は、3 つのアクティブ/同期と 1 つの不良という劣化モードで動作すると予想されます。

何が起こったかというと、スペアパーツが突然作られ、故障したと宣言され、その後新しいスペアパーツがまた何もないところから作成され、健全であると宣言されましたが、その後 RAID は動作不能であると宣言されました。

これは以下からの出力ですblkid:

$ blkid
/dev/xvda1: LABEL="/" UUID="4797c72d-85bd-421a-9c01-52243aa28f6c" TYPE="ext4" 
/dev/xvdc: UUID="feb2c515-6003-478b-beb0-089fed71b33f" TYPE="ext3" 
/dev/xvdd: UUID="feb2c515-6003-478b-beb0-089fed71b33f" SEC_TYPE="ext2" TYPE="ext3" 
/dev/xvde: UUID="feb2c515-6003-478b-beb0-089fed71b33f" SEC_TYPE="ext2" TYPE="ext3" 
/dev/xvdf: UUID="feb2c515-6003-478b-beb0-089fed71b33f" SEC_TYPE="ext2" TYPE="ext3" 

RAID には ext3 ではなく XFS があるため、TYPE と SEC_TYPE は興味深いです。

このディスク上で試行されたマウントのログには、他のすべてのマウントと同様に、前述の最終結果となった次のログ エントリがあります。

Oct  2 15:08:51 it kernel: [1686185.573233] md/raid:md0: device xvdc operational as raid disk 0
Oct  2 15:08:51 it kernel: [1686185.580020] md/raid:md0: device xvde operational as raid disk 2
Oct  2 15:08:51 it kernel: [1686185.588307] md/raid:md0: device xvdd operational as raid disk 1
Oct  2 15:08:51 it kernel: [1686185.595745] md/raid:md0: allocated 4312kB
Oct  2 15:08:51 it kernel: [1686185.600729] md/raid:md0: raid level 5 active with 3 out of 4 devices, algorithm 2
Oct  2 15:08:51 it kernel: [1686185.608928] md0: detected capacity change from 0 to 2705221484544
Oct  2 15:08:51 it kernel: [1686185.615772] md: recovery of RAID array md0
Oct  2 15:08:51 it kernel: [1686185.621150] md: minimum _guaranteed_  speed: 1000 KB/sec/disk.
Oct  2 15:08:51 it kernel: [1686185.627626] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for recovery.
Oct  2 15:08:51 it kernel: [1686185.634024]  md0: unknown partition table
Oct  2 15:08:51 it kernel: [1686185.645882] md: using 128k window, over a total of 880605952k.
Oct  2 15:22:25 it kernel: [1686999.697076] XFS (md0): Mounting Filesystem
Oct  2 15:22:26 it kernel: [1686999.889961] XFS (md0): Ending clean mount
Oct  2 15:24:19 it kernel: [1687112.817845] end_request: I/O error, dev xvde, sector 881423360
Oct  2 15:24:19 it kernel: [1687112.820517] raid5_end_read_request: 1 callbacks suppressed
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: read error not correctable (sector 881423360 on xvde).
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: Disk failure on xvde, disabling device.
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: Operation continuing on 2 devices.
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: read error not correctable (sector 881423368 on xvde).
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: read error not correctable (sector 881423376 on xvde).
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: read error not correctable (sector 881423384 on xvde).
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: read error not correctable (sector 881423392 on xvde).
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: read error not correctable (sector 881423400 on xvde).
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: read error not correctable (sector 881423408 on xvde).
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: read error not correctable (sector 881423416 on xvde).
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: read error not correctable (sector 881423424 on xvde).
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: read error not correctable (sector 881423432 on xvde).
Oct  2 15:24:19 it kernel: [1687113.432129] md: md0: recovery done.
Oct  2 15:24:19 it kernel: [1687113.685151] Buffer I/O error on device md0, logical block 96
Oct  2 15:24:19 it kernel: [1687113.691386] Buffer I/O error on device md0, logical block 96
Oct  2 15:24:19 it kernel: [1687113.697529] Buffer I/O error on device md0, logical block 64
Oct  2 15:24:20 it kernel: [1687113.703589] Buffer I/O error on device md0, logical block 64
Oct  2 15:25:51 it kernel: [1687205.682022] Buffer I/O error on device md0, logical block 96
Oct  2 15:25:51 it kernel: [1687205.688477] Buffer I/O error on device md0, logical block 96
Oct  2 15:25:51 it kernel: [1687205.694591] Buffer I/O error on device md0, logical block 64
Oct  2 15:25:52 it kernel: [1687205.700728] Buffer I/O error on device md0, logical block 64
Oct  2 15:25:52 it kernel: [1687205.748751] XFS (md0): last sector read failed

そこに xvdf がリストされていません...

答え1

これは RAID5 の根本的な問題であり、再構築時に不良ブロックが発生すると致命的になります。

Oct  2 15:08:51 it kernel: [1686185.573233] md/raid:md0: device xvdc operational as raid disk 0
Oct  2 15:08:51 it kernel: [1686185.580020] md/raid:md0: device xvde operational as raid disk 2
Oct  2 15:08:51 it kernel: [1686185.588307] md/raid:md0: device xvdd operational as raid disk 1
Oct  2 15:08:51 it kernel: [1686185.595745] md/raid:md0: allocated 4312kB
Oct  2 15:08:51 it kernel: [1686185.600729] md/raid:md0: raid level 5 active with 3 out of 4 devices, algorithm 2
Oct  2 15:08:51 it kernel: [1686185.608928] md0: detected capacity change from 0 to 2705221484544

アレイは組み立てられましたが、劣化しています。xvdc、xvde、xvdd で組み立てられています。どうやら、ホット スペアがあるようです。

Oct  2 15:08:51 it kernel: [1686185.615772] md: recovery of RAID array md0
Oct  2 15:08:51 it kernel: [1686185.621150] md: minimum _guaranteed_  speed: 1000 KB/sec/disk.
Oct  2 15:08:51 it kernel: [1686185.627626] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for recovery.
Oct  2 15:08:51 it kernel: [1686185.634024]  md0: unknown partition table
Oct  2 15:08:51 it kernel: [1686185.645882] md: using 128k window, over a total of 880605952k.

「パーティション テーブル」メッセージは無関係です。他のメッセージは、md がおそらくホット スペア (削除/再追加を試みた場合、以前に障害が発生したデバイスである可能性があります) へのリカバリを試みていることを示しています。


Oct  2 15:24:19 it kernel: [1687112.817845] end_request: I/O error, dev xvde, sector 881423360
Oct  2 15:24:19 it kernel: [1687112.820517] raid5_end_read_request: 1 callbacks suppressed
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: read error not correctable (sector 881423360 on xvde).
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: Disk failure on xvde, disabling device.
Oct  2 15:24:19 it kernel: [1687112.821837] md/raid:md0: Operation continuing on 2 devices.

これは、md が xvde (残りの 3 つのデバイスのうちの 1 つ) からセクターを読み取ろうとしているところです。これは失敗し (おそらく不良セクター)、md は (アレイが劣化しているため) 回復できません。そのため、ディスクがアレイから追い出され、二重ディスク障害により RAID5 は機能しなくなります。

なぜスペアとしてラベル付けされているのかわかりません。奇妙です (ただし、通常は を参照するので/proc/mdstat、mdadm がそれをそのようにラベル付けしているだけかもしれません)。また、新しいカーネルは不良ブロックのキックアウトをはるかに躊躇するものだと思っていましたが、古いものを実行しているのでしょうか。

これについて何ができるでしょうか?

適切なバックアップ。これは、データを保存するためのあらゆる戦略において常に重要な部分です。

アレイの不良ブロックが定期的に除去されるようにしてください。OS にはすでにこのための cron ジョブが含まれている場合があります。これを行うには、 または を にエコーします。「修復」では、repair検出check/sys/block/md0/md/sync_actionれたパリティ エラーも修復されます (例: パリティ ビットがディスク上のデータと一致しない)。

# echo repair > /sys/block/md0/md/sync_action
#

進捗状況は、またはsysfsディレクトリ内のさまざまなファイルで監視できますcat /proc/mdstat。(最新のドキュメントは、Linux Raid Wiki mdstat 記事

注意: 古いカーネル (正確なバージョンは不明) では、チェックによって不良ブロックが修正されない可能性があります。

最後の選択肢はRAID6に切り替えることです。これには別のディスク(できる4 台または 3 台のディスクで RAID6 を実行する場合、おそらくその必要はないでしょう)。十分に新しいカーネルでは、不良ブロックは可能な場合はオンザフライで修正されます。RAID6 は 2 つのディスク障害に耐えることができるため、1 つのディスクが故障しても不良ブロックは生き残ることができ、不良ブロックをマップして再構築を続行します。

答え2

次のように RAID5 アレイを作成していると想像します。

$ mdadm --create /dev/md0 --level=5 --raid-devices=4 \
       /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

これはまさにあなたが望んでいることではありません。むしろ、次のようにディスクを追加する必要があります。

$ mdadm --create /dev/md0 --level=5 --raid-devices=4 \
       /dev/sda1 /dev/sdb1 /dev/sdc1
$ mdadm --add /dev/md0 /dev/sdd1

mdadmまたは、次のように のオプションを使用してスペアを追加することもできます。

$ mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 \
       /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

リストの最後のドライブがスペアになります。

抜粋mdadm マニュアルページ

-n, --raid-devices=
      Specify the number of active devices in the array.  This, plus the 
      number of spare devices (see below) must  equal the  number  of  
      component-devices (including "missing" devices) that are listed on 
      the command line for --create. Setting a value of 1 is probably a 
      mistake and so requires that --force be specified first.  A  value 
      of  1  will then be allowed for linear, multipath, RAID0 and RAID1.  
      It is never allowed for RAID4, RAID5 or RAID6. This  number  can only 
      be changed using --grow for RAID1, RAID4, RAID5 and RAID6 arrays, and
      only on kernels which provide the necessary support.

-x, --spare-devices=
      Specify the number of spare (eXtra) devices in the initial array.  
      Spares can also be  added  and  removed  later. The  number  of component
      devices listed on the command line must equal the number of RAID devices 
      plus the number of spare devices.

関連情報