パーティションを使用してmdadmアレイを作成する場合とディスク全体を直接使用する場合の違いは何ですか

パーティションを使用してmdadmアレイを作成する場合とディスク全体を直接使用する場合の違いは何ですか

mdadmパーティションを使用してアレイを作成することと、ディスク全体を直接使用することの違いを誰か説明してもらえますか? ドライブ全体を使用するつもりだと仮定します。

次のいずれかの方法で作成された RAID6 を想像してください。

mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

または:

mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

違いは何ですか? また、2 つのバリエーションのいずれかから発生する可能性のある問題は何ですか?

たとえば、そのようなアレイ上の信頼性や管理性、回復操作などを意味します。

答え1

最も重要な違いは、ディスク交換の柔軟性が向上することです。これについては、他の推奨事項とともに以下で詳しく説明します。

ディスク全体ではなくパーティションを使用することを検討する必要があります。これはアレイを設定するための一般的な推奨事項に従うべきであり、将来さらにディスクの交換が必要になったときに頭痛の種になることは確実になくなります。

最も重要な議論は次のとおりです。

異なるメーカーのディスク (または同じメーカーの「同じ」容量の異なるモデル) は、必ずしもディスク サイズがまったく同じであるとは限りません。また、サイズが少しでも異なると、2 番目のディスクが最初のディスクより小さい場合、故障したディスクを新しいディスクに交換できなくなります。パーティション分割により、この問題を回避できます。

異なるメーカーのディスクを使用する理由に関する補足事項: ディスクは故障します。これは「もし」ではなく「いつ」の問題です。同じメーカーで同じモデルのディスクは特性が似ているため、同じ条件と使用時間で同時に故障する可能性が高くなります。そのため、異なるメーカー、異なるモデルのディスク、特に同じバッチに属さないディスクを使用することをお勧めします (同じメーカーとモデルのディスクを購入する場合は、別のストアから購入することを検討してください)。同じバッチのディスクを使用すると、ディスク交換後の復元中に 2 つ目のディスク故障が発生することは珍しくありません。このようなことは絶対に避けたいものです。

したがって、推奨事項は次のとおりです。

1)ディスクをパーティション分割するそれは容量が少し小さい全体のディスク容量よりも小さい (たとえば、2TB ディスクの RAID5 アレイがあり、意図的にパーティション分割して、それぞれに約 100MB を無駄にしています)。次に、各ディスクの /dev/sd?1 を使用してアレイを構成します。これにより、新しい交換ディスクの容量が、アレイの作成時にアレイを組み立てるために使用された元のディスクの容量よりも少ない場合に備えて、安全マージンが追加されます。

2) 異なるメーカーのディスクを使用する。

3) 異なるメーカーのディスクを使用できない場合は、異なるモデルのディスクを使用します。

4) 異なるバッチのディスクを使用します。

5) ディスクが故障する前に、すべてのディスクを同時に交換するのではなく、積極的に交換します。これは少し偏執的かもしれませんが、所有するデータの重要度によって異なります。私は、互いに 6 か月の差があるディスクを所有していました。

6) 定期的にバックアップを作成します (アレイを使用するかどうかに関係なく、常に)。RAID はバックアップと同じ目的を果たしません。アレイは高可用性を保証しますが、バックアップを使用すると、失われたファイル (誤って削除されたファイルやウイルスによって破損したファイルなど、アレイを使用しても保護されないもの) を復元できます。

OBS: すべての無視できない上記の理由から、/dev/sd? と /dev/sd?# の使用の間に技術的な違いはあまりありません。

幸運を

答え2

もう一つの重要な議論は、マザーボードはRAIDスーパーブロックを削除する可能性があるディスクデバイス全体を使用しており、かつて GPT デバイスであったディスクを RAID アレイに追加するときに、それらの消去に十分注意していない場合。

私は、ASRock マザーボードの UEFI によって RAID が使用できなくなったときに、このことを痛感しました。

これを防ぐには、sgdisk --zapデバイス全体の RAID に使用する、以前に GPT フォーマットされたディスク上で常に実行してください。

wipefs -a うまくいくかもしれないデバイスをディスクに追加する前に、残っているすべてのパーティション情報 (GPT だけでなく) を消去します。


そうは言っても、パーティションを使用するだけで、このような事態が起きにくくなるベストプラクティスのようです。

私はそれが何なのか知らなかった本物議論は、このベストプラクティスを支持するものでした(わずかに異なるサイズのディスクを処理できることを説明する @Marcelo の回答を超えて)。今、私は理解しました。

ちなみに、このような事態が起こっても、データは失われません。おそらくsgdisk --zapデバイスだけを削除して、たとえばmdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc /dev/sdd(mdadm は過去のデータをすでに検出したことを通知し、そのデータを引き続き再利用するかどうかを尋ねます) を使用して RAID を再作成できます。私はこれを複数回試しましたが、うまくいきましたが、実行する前にバックアップを取ることをお勧めします。

答え3

デバイス全体をパーティションではなくRAIDメンバーとして使用することに関する問題を指摘する投稿がいくつかあります。ここに1つ。その通りだと断言できます。

したがって、デバイス全体を使用して RAID を作成した場合 (たとえば、、、/dev/sda.../dev/sdbではなく/dev/sda1、、、/dev/sdb1...)、 に設定を保存していても、再起動後に RAID デバイスは再構築されませんmdadm.conf。また、マザーボードのファームウェアによって RAID スーパーブロックが上書きまたは削除される可能性もあります。私のセットアップでは、 を実行してもmdadm --assemble --scan --verboseRAID セットアップは元に戻らず、RAID スーパーブロックが使用できないことが原因のようです。

答え4

RAID をパーティションに分割する前に、パーティションではなくディスクを RAID にまとめることは珍しくありません。特に、ほとんどのハードウェア RAID コントローラはパーティション テーブルを読み取ることすらできないため、常にディスク全体で動作します。しかし、ソフトウェア RAID でも同じことが可能です。また、適切に構成されていれば、ソフトウェア RAID は再起動時に正常に再アセンブルされます。もちろん、以前のパーティション テーブルの痕跡がディスクに残っていないことを確認してください。これは特に重要です。多くのディスクはフォーマット済みの状態で提供され、多くのツール (ソフトウェア RAID、ファイル システムなど) は最初に「空のセクター」を残す傾向があるため、以前のパーティション テーブルの痕跡が残る可能性があります。

RAID を設定するときに、予備として 1 台または 2 台のディスクを追加購入しておくと、さらに効果的です。ディスクが故障しても、すぐに交換できます。これは、RAID5 または 2 台のディスクで構成される RAID1 では特に重要です。RAID5 または 2 台のディスクで構成される RAID1 では、1 台のディスクが故障すると、故障したディスクを交換して RAID を再同期するまで冗長性が失われます。完全に一致する予備ディスクを用意しておくと、新しいディスクが古いディスクよりも遅い、または少し小さいなど、RAID 内の「弱い」ディスクから発生する可能性のある問題も回避できます。

それでも、パーティションの有無にかかわらず、「少し小さい」問題は解決できます。デバイス マッパーを使用して仮想ディスクを作成し、その容量の 99.9% を新しいディスクから取得し、不足している 0.1% をシステム ディスクまたは SSD から取得します。または、再起動時に initramfs ステージでファイル システムを縮小することもできます (https://serverfault.com/a/888830これを行う方法を参照してください)、RAID を縮小するとオンラインに戻ります。

言い換えると、ハードウェアまたはソフトウェア RAID または ZFS メモリ プールにディスク全体を使用することはまったく問題ありません。

関連情報