web-dev-qa-db-ja.com

RAIDレベル1のチャンク、ext4ストライド、およびストリップ幅のサイズ?

mdadmのマニュアルページには、「[chunk]はRAID0、RAID4、RAID5、RAID6、およびRAID10でのみ意味があります」と書かれています。つまり、raid1には適用されません。値を渡しても、「チャンクサイズを無視します」と表示され、レイド1が作成された後、次のようになります。

md1 : active raid1 ... 4883639488 blocks super 1.2 ... bitmap: 0/37 pages [0KB], 65536KB chunk

何らかの理由で、5.6Tbのディスクサイズに65Mbを使用しました。どうして?

次に、mkfs.ext4のマニュアルページに

stride = stride-size =ストライドサイズのファイルシステムブロックを使用してRAIDアレイ用にファイルシステムを構成します。これは、次のディスクに移動する前にディスクに対して読み取られた、または書き込まれたブロックの数であり、チャンクサイズと呼ばれることもあります。これは主に、ビットマップなどのファイルシステムメタデータをmke2fs時に配置することに影響し、パフォーマンスを低下させる可能性のある単一のディスクに配置しないようにします。また、ブロックアロケータによって使用される場合もあります。

stripe_width = stripe-width =ストライプごとにストライプ幅のファイルシステムブロックを持つRAIDアレイ用にファイルシステムを構成します。これは通常、ストライドサイズ* Nです。ここで、NはRAID内のデータ保持ディスクの数です(たとえば、RAID 5の場合はパリティディスクが1つあるため、Nはアレイ内のディスク数から1を引いたものになります)。これにより、ブロックアロケータは、データの書き込み時に、可能であればRAIDストライプのパリティの読み取り-変更-書き込みを防ぐことができます。

RAID1にとってそれはどういう意味ですか?上記のチャンクで得たのと同じ値を繰り返す必要がありますか? RAID1が「可能であれば」の注記から外れるため、stripe_widthを無視しますか?またはそうではありませんか?

rAID1に対して何をすべきかはあまり明確ではありません。 RAID0およびRAID5の他のチュートリアルで見つけた式を使用して、RAID1アレイの数値を取得しましたが、これは正しくないと思います。mkfs.ext4 -b 4096 -E stride=16384,stripe-width=16384

1
gcb

何もストライピングしていないので、これで問題ないと思います。その番号が必要なのは、次のディスクで使用するデータの量を判断するためだけです。ただし、事実上、データディスクは1つ(およびそのミラーが1つ)しかないため、コントローラーはディスクを変更する必要がないため、問題はありません。コントローラーは大きなチャンクの後でどのディスクを使用するかを自問するだけなので、この数値は私の意見でも理にかなっています。したがって、これによりオーバーヘッドが制限されます。

1
jhamfler