web-dev-qa-db-ja.com

RAID 10デバイスを初期化する必要があるのはなぜですか?

Linuxソフトウェアraidデバイスをraid10デバイスとして作成すると、なぜ初期化する必要があるのか​​と混乱します。同じ質問がraid1またはraid0にも当てはまります。

結局のところ、ほとんどの人はその上にある種のファイルシステムを置き、そのファイルシステムはディスクのデータの状態を想定すべきではありません。各書き込みは、Nミラーが書き込まれるraid10またはraid1セットアップの両方のディスクに影響します。 raid10は時間の経過とともに発生するため、最初に初期化する理由はまったくありません。

パリティ要件があるraid5/6セットアップの理由は理解できますが、それでもこれは遅延して実行できるようです。

それだけで人々はそれについて気分が良くなるのですか?

9
Michael Graff

ミラー間の違いは定期的なチェック中にエラーとして表示されるため、初期同期が必要です。

そして、定期的なチェックを行う必要があります。

2
Simon Richter

RAID 1はミラーであるため、ミラー内のすべてのディスクが相互の正確なコピーであることに依存しています。ランダムなハードドライブと別のランダムなハードドライブを使用すると、そこに異なるデータが存在する可能性があるため、この推定に違反します。これが、初期化が必要な理由です。最初のドライブの内容を他のドライブにコピーするだけです。一部の条件では、ドライブを初期化しないことで回避できることに注意してください。通常、工場出荷時の新しいデバイスには、すでにゼロが配置されているため、単にこれを無視できます。 mdadmオプション--assume-cleanはこれを行いますが、次の警告を出します:

   --assume-clean

Mdadmに、アレイが既に存在し、クリーンであることがわかっていることを伝えます。実際にアレイに書き込みを行わない限り、データが影響を受けないことが確認できるため、重大な障害からの回復を試みる場合に役立ちます。 RAID1またはRAID10を作成するときに、最初の再同期を避けたい場合にも使用できますが、この方法は(通常は安全ですが)推奨されません。これは、自分が何をしているか本当にわかっている場合にのみ使用してください。

これを行わないと、ドライブと読み取りの間に矛盾が生じ、ドライブが何を読み取るかがわかりません。ファイルシステムについてはかなり安全であるはずです(ただし、以下に注意してください)。おそらく、そのデバイスから何かを読み取る前に書き込みを行い、その後は明確になるからです。

少なくともLinuxのmdadmは、配列をバックグラウンドで初期化することに注意してください。最初の1秒に加えて、FSの上に楽しく作成できます。初期化が完了するまでパフォーマンスは低下しますが、それだけです。

だが:

a)mkfsを実行するとき、一部のユーティリティは、そのドライブにすでに何かがあるかどうかを確認します。これはドライブのよく知られたいくつかの領域にしか触れませんが、何かを書き込む前に読み取るため、危険にさらされます。

b)アレイを定期的に再同期する場合、RAIDデバイスはFSを認識しません。すべてのデバイスからすべてのブロックを読み取り、それらを比較します。また、コピーオンライトFS(例:ZFSまたはBTRFS)を使用しておらず、FSを満たさない場合、ブロックがFS視点。

RAID1デバイスと再同期する理由

同じ理由で、RAID5デバイスまたはその他のレベル(RAID0を除く)と再同期します。すべてのデータを読み取り、RAIDチェックサム(RAID 5または6)を比較/検証します。ビットが何らかの方法で反転された場合(HDメモリが自発的に反転したため、あなたとあなたの5人の隣人の携帯電話が、プラッターのこの特定の領域で偶然干渉したためです)不整合を検出しますが、それはできません助けます。 OTOH、ハードドライブの1つが単に「そのブロックを読み取れません」と報告する場合、これは障害のあるドライブでより可能性が高く、障害を早期に検出し、機能低下モードで実行している時間を短縮しました(ドライブの故障ではなく、気づいたときから)。 1つのドライブに障害が発生した場合、Raidは役に立ちません。1か月後、その月の最初の障害に気付かない場合、もう1つのドライブが障害になりません。

RAID10

現在、RAID10の場合、上記のすべてが成り立ちます。結局のところ、RAID10は「2つのRAID1デバイスをRAID0ペアに配置している」ことを伝える賢い方法です。

警告:

これはすべて未定義の動作です。 Linuxでmdadmを使用して確認した理由、他のソフトウェアRAID実装は異なる動作をする場合があります。私が使用しているもの以外のバージョンのLinuxカーネルやmdadmツールも、動作が異なる場合があります。

7
Torinthiel

RAID 1はミラーであり、RAID 10はミラーのストライプであることを忘れないでください。

問題は、各ミラーのどのディスクでデータが有効かということです。新しく作成されたアレイでは、ディスクに異なるデータがある可能性があるため、これを知ることはできません。

RAIDは非常に低いレベルで動作することも覚えておいてください。ファイルシステムやディスクに保存されている可能性のあるデータについては何も知りません。 be使用中のファイルシステムさえないかもしれません。

したがって、これらのアレイの初期化は、各ミラーの1つのディスクのデータをそのまま他のディスクにコピーすることで構成されます。

これは、配列が作成された瞬間から安全に使用でき、バックグラウンドで初期化できることも意味します。ほとんどのRAIDコントローラー(およびLinux mdraid)には、このオプション、または自動的に実行するオプションがあります。

5
Michael Hampton

簡単に言うと、2つの新しいディスクは最初からお互いのミラー完全コピーであるとは想定されていないためです。

彼らはお互いの完全なコピーに変える必要があります。

さらに、初期化には、アレイ構成に関する情報を含むメタデータスーパーブロックの設定も含まれます。

/ proc/mdstatファイルは、デバイスが起動したこと、ミラーが再構築されていること、および再構築の完了のETAを通知します。再構築は、アイドルI/O帯域幅を使用して行われます。したがって、ディスクLEDにも多くのアクティビティが表示されますが、システムは引き続き応答するはずです。

再構築プロセスは透過的であるため、ミラーが現在再構築中である場合でも、実際にデバイスを使用できます。

1
HBruijn