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


10

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

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

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


これが一部のハードウェアRAIDおよびソフトウェアRAIDで機能するかどうかはわかりませんが、RAID 0のいくつかの側面を活用しながら、1つの100GBと1つの350GBのようなサイズの異なる2つのドライブで利用可能なスペースをより多く使用するには、3を作成してみます。大きい方のドライブに100GBのパーティション、最初のドライブに100KBのパーティション、2番目のドライブに3つの100GBのパーティションをストライプ化します。RAIDレベル0を使用すると、400ギガバイト使用でき、読み取り/書き込みパフォーマンスが多少向上しますが、2つの200GBドライブをストライプ化する場合よりもおそらく少なくなります。
キースレイノルズ

通常、これはしたくないでしょう。デモのために、1つの1Gおよび16Gフラッシュドライブを使用してRAID0をセットアップしました。各ディスクをいっぱいにする拡張パーティションを作成しました。次に、ドライブがいっぱいになるまで、各ドライブに981MBのパーティションを作成しました。次に、Linuxのコマンドで16のパーティションを使用してraidを作成しましたmdadm --create --verbose /dev/md0 --chunk=512 -l0 -n16 /dev/sdd5 /dev/sde5 /dev/sde6 /dev/sde7 /dev/sde8 /dev/sde9 /dev/sde10 /dev/sde11 /dev/sde12 /dev/sde13 /dev/sde14 /dev/sde15 /dev/sde16 /dev/sde17 /dev/sde18 /dev/sde19。結局、16GBドライブを使用したときよりもスペースが少なくなりました
Keith Reynolds

回答:


11

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

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

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


3

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

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

RAIDが目的のソリューションではない可能性があります。ドライブのすべてのスペースを使用する場合は、ボリュームをスパンする必要があります。スパニングを使用すると、多数のボリュームを取得して、それらを1つの大きなボリュームに連結できます。スパニングは、パフォーマンスの向上や冗長性を提供しません。


これは、1つのボリュームで2つのドライブすべてを使用できない理由を説明していません。また、個別のボリューム部分はパフォーマンスの問題をまったく引き起こしません-低レベルのディスクIO制御はdisk.sysを介した割り込みによって処理されるため、読み取り/書き込み要求はとにかくパイプライン処理され、Windowsは重複したIOもサポートします。
多項式2013

更新しましたが、まだ説明がありませんでした。ストライピングの仕組みはよく知っていますが、小さいディスクがいっぱいになると、シングルディスクモード(標準のシングルディスクパフォ​​ーマンス)に移行できない理由は説明されていません。ボリュームスパンについて言及していただきありがとうございます。
多項式2013

1
それがRAIDの仕組みだからです。本当にしたい場合は、できる限りRAID 0にしてから、空き容量のあるボリュームを作成してから、RAIDと追加のボリュームにまたがってください。しかし、私はどのRAIDコントローラでもそれができるとは思いません。ハードウェアRAIDとソフトウェアRAIDの組み合わせでそれができるかもしれません。
Keltari 2013

1
-1「この増加のパフォーマンスは、読み取りまたは書き込みを完了する前のディスクを待つ必要がdoesntのよう」RAID 0に同じサイズの異なる2台のハードディスクのために言うことができた
Celeritas

2
@多項式それはRAID 0にはなりません。なぜRAID 0がすべてのディスク領域を使用できないのかと尋ねたところ、「なぜそれができないのか...」と答えました。それはRAID 0のため、それはできません。それが何か他のことをした場合、それは別の何かになります。
David Schwartz

0

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
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」と考えるものではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.