web-dev-qa-db-ja.com

RAID 0が2つの異なるサイズのディスクのすべてのディスク領域を利用できないのはなぜですか?

引用するには RAIDに関するWikipediaの記事

RAID 0は、異なるサイズのディスクで作成できますが、各ディスクによってアレイに追加されるストレージスペースは、最小のディスクのサイズに制限されます。たとえば、100 GBのディスクが350 GBのディスクと一緒にストライプ化されている場合、アレイのサイズは200 GB(100 GB×2)になります。

ただし、記事では理由を一緒にRAIDしてディスク領域全体を使い切ることはできないと述べられていません。パフォーマンスが低下している間、ストライピングは2つのディスク間で書き込みを行うことを理解していますが、2番目のディスクの後のセクターへの書き込みを防止してはいけません?そのような機能を提供する代替RAIDシステム(ソフトウェアRAIDなど)はありますか?

10
Polynomial

サイズが最小のディスクのサイズに制限される理由は、ストライプが「交互に」書き込まれ、同じサイズでなければならないという事実に関係しています。

2ディスクシステムでは、奇数のストライプはすべて1つのディスクにあり、偶数のストライプはもう1つのディスクにあります。書き込みはディスク間で交互に行われ、奇数/偶数/奇数/偶数/ ...

ストライプは同じサイズでペアになっている必要があるため(2つのディスクの場合)、使用可能な最大スペースは2 *(最小ディスクのサイズ)に制限されます。

11
Bob

あなたはcan残りのスペースを使用します。残りのスペースを使用してボリュームを作成することも、別のRAIDの一部として使用することもできます。ただし、2つの異なるプロセスが同じ物理コントローラーとディスクにアクセスしようとしている可能性があるため、この余分なスペースを使用すると、RAID 0のパフォーマンスが低下します。

この余分なスペースを元のRAIDに追加できないのはなぜですか?さて、詳細には触れませんが、RAIDが使用するアルゴリズムが原因です。 RAID 0はRAIDの最初のディスクに書き込み、次に次のディスクに書き込みます。これにより、前のディスクが読み取りまたは書き込みを完了するのを待つ必要がないため、パフォーマンスが向上します。投稿の250 GBを使用した場合、書き込みの大部分は最初のディスクに行われ、パフォーマンスの向上はほとんどなくなります。

RAIDはあなたが探している解決策ではないかもしれません、もしあなたがボリュームをまたがっているべきドライブのすべてのスペースを使いたいのなら。スパニングを使用すると、多数のボリュームを取得し、それらを1つの大きなボリュームに連結できます。スパニングはパフォーマンスの向上や冗長性を提供しません。

3
Keltari
A RAID 0 can be created with disks of differing sizes, but the storage
space added to the array by each disk is limited to the size of the
smallest disk.

これは当てはまる可能性があり、ほとんどのRAID0実装で当てはまります。ただし、すべてではありません。

RAID 0を使用する理由は2つあります。

  1. 複数のディスクを1つの大きなボリュームに連結します。
  2. パフォーマンス。

オプション2が最も一般的であり、ほとんどすべての現在のRAID 0実装で使用されていると思います。技術的な説明は、情報はディスク間で交互に書き込まれることです。

非技術的な方法で:ディスクを2冊の本と考えてください。これらの書籍のアクセス(読み取り/書き込み)速度は制限されています。したがって、2つの100ページのブックではなく、2つのブックに再フォーマットしますが、ページに番号を付け直して、すべての偶数が1つのブックに書き込まれ、すべての奇数が他のブックに書き込まれるようにします。

これで、新しい「R0ブック」は、ページ数が2倍、速度が2倍の単一のブックである場合に動作します。


オプション1は、「本を背中合わせに接着する」のと同じくらい簡単です。その場合、速度は向上しませんが、ページ数の異なる本を接着できます。私はそのような「RAID0」実装を1990年頃に思い出したようです。しかし、それはほとんどの人が「適切なRAID 0」と考えるものではありません。

0
Hennes

RAIDは、ディスクのアレイにデータを保存する方法を説明する疑似標準です。この規格では、データを保存する4つの異なる方法について説明しています(技術的にはもっと多くの人ですが、他の人のことはほとんど気にしていません)。

RAID-0:ストライピング。データの各ブロックは、RAIDデバイスの各メンバーに分割されます。冗長性がないため、安価なディスクの冗長アレイではなく、単なる安価なディスクのアレイです。

RAID-1:ミラーリング。データの各ブロックは、アレイ内のすべてのディスクに格納されます。 2つのディスクを使用しているため、これは実際にのみ有効です。 RAID 1/0または単なるRAID 10は、ミラーリングとストライピングの組み合わせであり、3つ以上のディスクを利用するために使用できます。

RAID-5:パリティ。各データブロックはRAIDデバイスの各メンバーに分割され、1つのディスクはパリティ専用になります。

RAID-6:ダブルパリティ:RAID-5と同じですが、パリティディスクが2つあります。

それでおしまい。 RAIDは、サイズの不一致などについて何をすべきかについては説明していませんが、ストライピングは実際には同じサイズのディスクでのみ機能します。通常、これを回避する方法は、残りのスペースを別のディスクドライブとして使用できることです。

大きなディスクアレイを作成する方法としてRAIDから離れると、ZFSなどを使用して、ストレージプールにディスクを追加できます。 ZFSは常に両方のディスクをできるだけ効率的に使用しようとし、満足できる冗長性のレベルをZFSに指示できます。

以前のテクノロジーは、ボリュームマッピング(つまり、LVM、またはそれと同等のウィンドウ)のようなもので、ブロックをディスクにマッピングしてより高いレベルにマッピングするという考えを抽象化しています。 LVMを使用すると、複数のディスクにまたがったり、パーティションを拡張したり、不連続なパーティションを作成したりすることができます。ボリュームマッピングはRAIDではなく、ディスクを増やしてパフォーマンスを向上させるのではなく、ファイルシステムのどこにあるかに応じて、どちらか一方のディスクにランダムに書き込みます。これはスパニングと呼ばれ、通常のパフォーマンスではなくIOPSを使用する場合は、通常RAIDよりも優れています。

0
Clarus