web-dev-qa-db-ja.com

Linux-dmraid(またはmdadm)-RAID10を再構築

しばらく前に、raid10 configが壊れていましたが、今はアレイをサルベージして、再構築して人生を進めることができるようになっています。基本的に、各サブセットのドライブに障害が発生しました。つまり、(理論的には)回復できます。同じサブセットで2つのディスクを失った場合とは異なり、回復は不可能です。

2つの不良ドライブを取り外し、2つの新しいドライブをシステムに追加しました。レイドコントローラーカードの場合、システムはpromise fasttrak 4310を使用しています。システムを起動すると、レイドコントローラーカードのBIOSにジャンプし、4つのドライブがすべて見つかったのに気づきましたが、2つの新しいドライブは(明らかに)レイドに割り当てられていませんでした。構成。残念ながら、2つの古いドライブを削除し、BIOSを介して構成から2つの新しいドライブを追加する方法はありません。 PromiseはWebPAMインストーラーを提供しますが、それは古く(6歳)、CentOS6.4にはインストールされません。

それで、私はいくつか掘り下げて、「dmraid」に出くわしました。 dmraidは、私が知っていることに基づいて、私のraid構成に関する情報を返していたので、有望に見えます。

root@service1 ~ # -> dmraid -s -s
ERROR: pdc: wrong # of devices in RAID set "pdc_fbdbhaai-0" [1/2] on /dev/sdb
ERROR: pdc: wrong # of devices in RAID set "pdc_fbdbhaai-1" [1/2] on /dev/sde
ERROR: pdc: wrong # of devices in RAID set "pdc_fbdbhaai-0" [1/2] on /dev/sdb
ERROR: pdc: wrong # of devices in RAID set "pdc_fbdbhaai-1" [1/2] on /dev/sde
*** Superset
name   : pdc_fbdbhaai
size   : 976642080
stride : 32
type   : raid10
status : ok
subsets: 2
devs   : 2
spares : 0
--> Subset
name   : pdc_fbdbhaai-0
size   : 976642080
stride : 32
type   : stripe
status : broken
subsets: 0
devs   : 1
spares : 0
--> Subset
name   : pdc_fbdbhaai-1
size   : 976642080
stride : 32
type   : stripe
status : broken
subsets: 0
devs   : 1
spares : 0

root@service1 ~ # -> dmraid -r
/dev/sde: pdc, "pdc_fbdbhaai-1", stripe, ok, 976642080 sectors, data@ 0
/dev/sdb: pdc, "pdc_fbdbhaai-0", stripe, ok, 976642080 sectors, data@ 0

今のところ、私がする必要があるのは、古いドライブを無視するようにレイドメタデータを更新し、新しいドライブを追加することだけのようです。次に(うまくいけば)再構築コマンドを発行でき、理論的にはレイドは残りの2つのドライブでそれ自体を救済します。

私は「mandmraid」を読みましたが、発行するコマンドが私がやろうとしていることを確実に実行することを絶対に望んでいました。残念ながら、dmraidを使用してレイドメタデータからドライブを追加/削除する方法に関する適切なドキュメントをオンラインで見つけることができませんでした。

私が提案したコマンドセットは次のようになります。

root@service1 ~ # -> dmraid --remove pdc_fbdbhaai-0 /dev/sda1
root@service1 ~ # -> dmraid --remove pdc_fbdbhaai-1 /dev/sda2

古いドライブを取り外したら、新しいドライブを追加します。

root@service1 ~ # -> dmraid -R pdc_fbdbhaai-0 /dev/sdc
root@service1 ~ # -> dmraid -R pdc_fbdbhaai-1 /dev/sdd

Dmraidを使用した経験のある人は、これらの手順を確認できますか?それとも別のルートに行くべきですか?

2
Mike Purcell

神聖ながらくた。それを理解することができました。さらに調査した後、dmraidがアクティブに維持されなくなり、代わりにmdadmを使用することを示すいくつかの投稿に出くわしました。そこで、mdadmを使い始め、レイドを再構築して、うまくいけば再びオンラインに戻すためのコマンドを見つけました。これが私がしたことです:

Mdadm docsによると、アセンブルコマンドを発行すると、2つの物理ドライブから論理ボリュームが作成されます[〜#〜] if [〜#〜]スーパーブロック情報があるので、そうでなかった2つのドライブを追加しましょう失敗しない:

$ -> mdadm --assemble /dev/md0 /dev/sdb /dev/sde
mdadm: /dev/md0 assembled from 2 drives - need all 4 to start it (use --run to insist).

簡単に、2つの新しいドライブを論理ボリュームに追加しましょう。

$ -> mdadm --add /dev/md0 /dev/sdc /dev/sdd
mdadm: cannot get array info for /dev/md0

この時点で、私はこのメッセージが何を示しているかを調べるためにグーグルをしました。与えられた応答を引き起こす可能性のある無数の異なる状況があったので、私は再びアセンブルコマンドを熟考しました。 2回目にアセンブルコマンドを再検討する際の鍵は、与えられたメッセージでした。 「--runを使用して主張する」。考え出した、それを試してみませんか:

$ -> mdadm --run /dev/md0
mdadm: started /dev/md0

さて、これまでのところ、2つの新しいドライブを追加できますか?

$ -> mdadm --add /dev/md0 /dev/sdc
mdadm: added /dev/sdc

$ -> mdadm --add /dev/md0 /dev/sdd
mdadm: added /dev/sdd

かっこいい!ステータスを確認しましょう:

$ -> cat /prod/mdstat
Personalities : [raid10]
md0 : active raid10 sdd[4](S) sdc[5] sdb[1] sde[2]
  976772992 blocks 64K chunks 2 near-copies [4/2] [_UU_]
  [>....................]  recovery =  2.2% (10762688/488386496) finish=131.5min speed=60498K/sec

unused devices: <none>

もちろん!ステータスによると、レイドはクラッシュして燃えなかった2台のドライブから再構築されています。

-編集-

再起動/シャットダウンの間もRAID構成が維持されるようにするには、次の手順を実行する必要がありました。

$ -> mdadm --detail --scan >> /etc/mdadm.conf
1
Mike Purcell