web-dev-qa-db-ja.com

混合ディスクサイズのZFSRAID10プール

2x2TBと2x1TBの4つのディスクがあります。すべて同じRPM7200とメーカー。 OSはUbuntu16.04です。 RAID 10プールを作成したいのですが、ディスクサイズの混合はZFSへの適切なアプローチではないと聞きました。間違っている場合は修正してください...したがって、これら3つのオプションのどちらが良いですか(「m」はミラーを意味します) )::

  1. ディスク全体のミラー:(2TB m 2TB)+(1TB m 1TB)。
  2. 2TBディスクを1TBパーティションに分割します:(1TB m 1TB)+(1TB m 1TB)+(1TB m 1TB)。
  3. 2つの別々のプール:(2TB m 2TB)と(1TB m 1TB)。

個人的には3番目のオプションはあまり好きではありませんが、おそらく最も安定したオプションですか?私はZFSを初めて使用するので、提案してください。

2番目のオプションを説明するために画像を作成しました。

image of option 2

2
Artico

質問に答える前に、免責事項:明らかに、重複するハードウェアを使用するのが最も簡単です。お使いのデバイスが同じメーカーのものであり、RPMの数が同じであっても、特定のIOサイズ(2TBドライブの方がおそらく高いため)のスループットはデバイス間で異なることに注意してください。リングあたりのバイト密度)、および2TBドライブがランダム読み取り状況で2倍の頻度でヒットする場合でも、IOPSの数はそれらの間で同じになります。基本的に、2TBディスクが行う非対称パフォーマンスがあります。大きなIOでは2倍優れており、1TBディスクは短いランダムIOで約2倍優れています。

1TBドライブを販売して別の2TBドライブを購入したくないと仮定して答えます。あなたの質問から、私は本当に言うことができません-あなたの望ましい複製レベルは何ですか?いずれにせよ、従うべき2つのガイドラインがあります。

  1. ZFSにzpoolでフルディスクを構成させることをお勧めします。これは、1つのドライブに障害が発生した場合の障害セマンティクスは、2つのパーティションが一緒に障害を起こす場合(両方のパーティションに障害が発生した場合)よりもはるかに単純だからです。
  2. プール内の最上位ノードがストライプのvdevである場合は、後で新しいディスクをプールに追加するのが最も簡単です。そうすれば、重複する新しいデバイスのグループをいつでも同時に追加でき、それらのサイズがプール内の既存のデバイスのサイズと一致するかどうかは関係ありません。

2ディスクミラーが必要な場合は、オプション1が最適だと思います。別のディスクを購入する場合は、同じタイプのディスクを購入して、このツリーのストライプノードの下に新しいミラーとして両方を追加します。

striped
    mirror
        2TB
        2TB
    mirror
        1TB
        1TB

3ディスクミラーが必要な場合は、このようなミラーを作成できますが、後でデバイスを追加するのは困難です(別のミラーとして追加しますか?1TB領域の下に別のストライプとして追加しますか?):

mirror
    2TB
    2TB
    striped
        1TB
        1TB

RAID-Zを実行する場合は、サイズの異なるデバイスを使用しないことをお勧めします。または、2TBと1TBのデバイスをさらに購入して、複数のRAID-Zグループにストライプ化することもできます。

ZFSでデータを複製する別の方法は、プール内のファイルシステムに設定できるcopies=N設定です。これはユースケースに魅力的かもしれませんが、すべてのデータ損失の問題に役立つわけではないことに注意してください。デバイスレベルの障害は、プール全体の使用に失敗します。 (これの主な使用例は、ディスク内の破損です。)

1
Dan

私が提案するのはraid10で、ミラー-0 2TB&1TBミラー-1 2TB&1TB

これを実現するには、最初に両方の1TBでraid0を作成してから、zpool attachを2回実行して、各2TBドライブを各1TBドライブに接続します。これにより、両方のミラーの負荷が均等になります。将来の拡張に備えて、必ず自動拡張を設定してください。最終的には約2TBのスペースになります。

0
soyayix