新しいデータベースサーバーを構築していて、セットアップが可能な限り正しいことを確認しようとしています。データベースストレージは22x15.7k RPM Western Digital SAS RAID10のドライブ、外部SAS 2つのRAIDコントローラーを備えたエンクロージャー。最初は、1つだけ作成しました。 SASアレイのボリューム、ext2でフォーマット。ストライドとストライプ幅を次のように計算しました。
- チャンクサイズ= 128 Kb
- block_size = 4 Kb
- total_disks = 22
- data_disks = 11
- ストライド=チャンクサイズ/ブロックサイズ= 128 Kb/4 Kb = 32 Kb
- ストライプ幅=ストライド* data_disks = 32 Kb * 11 = 352 Kb
ファイルシステムを作成したときに、StrideとStripe-Widthの値をmkfs.ext2に指定しました。
次に、別のセットアップを試しました。ここから質問が始まります。 SASアレイ上に、それぞれ異なる「プライマリ」コントローラーを持つ2つのボリュームを作成しました。ホストにエクスポートするときに、LVM2を使用してそれらを物理ボリュームとして初期化し、ボリュームグループを作成してから、ボリュームをストライプ化するために、 '-stripes 2'をlvcreateに渡しました。これの目的は、IO負荷を両方のコントローラーに分散して、パフォーマンスを向上させることでした。
SAS配列の「ベストプラクティス」ドキュメントには、LUNセグメント(チャンク)サイズを参照して次のように記載されているセクションがあります。
ボリュームマネージャーを使用して複数のストレージシステムLUNを論理に収集する場合
ボリュームマネージャー(LVM)ボリュームグループ(VG)、I/Oストライプ幅は、すべてのLUN内のすべてのデータドライブのすべてのセグメントに割り当てられます。調整された式は次のようになります。LUNセグメントサイズ= LVM I/Oストライプ幅/(データドライブの数/ LUN * LUNの数/ VG)
これで、SASアレイのボリュームグループには22台のドライブがあり、そのうち11台はデータドライブで、2つのLUNがあります。ホストのボリュームグループには2つの物理ボリュームがあります。 (LUN)、および両方のLUNが同じデータドライブにアクセスするため、LUNセグメントサイズが128 Kbの場合、LVM I/Oストライプ幅を次のように計算します。
- 128 = LVM_Stripe_Width /(11 * 2)
- 128 * 22 = LVM_Stripe_Width
- 2816 = LVM_Stripe_Width
または
- 128 = LVM_Stripe_Width /(11 * 1)
- 128 * 11 = LVM_Stripe_Width
- 1408 = LVM_Stripe_Width
次に、これはmkfs.ext2のストライドとストライプ幅の質問につながります。初期設定と同じ方法で計算されますか、それともLVMレイヤーのために現在は異なりますか?なるだろうか
- チャンクサイズ= 128 Kb
- block_size = 4 Kb
- total_disks = 2
- data_disks = 2
- ストライド=チャンクサイズ/ブロックサイズ= 128 Kb/4 Kb = 32 Kb
- ストライプ幅=ストライド* data_disks = 32 Kb * 2 = 64 Kb
どこ
- total_disks = 2
'--stripes 2'からlvcreateに由来しますか?
ありがとう、
ケンドール
この回答 アイデアを確認することをお勧めします。 xfsの調整に関してフィードバックを提供し、誰かがext3についてコメントしました。それはあなたにいくつかの手がかりを与えるかもしれません。
また、ファイルシステムを調整する前に、ボリュームもストライプサイズに調整されていることを確認してください。これは、メタデータのサイズを適切に設定し、エクステントサイズを最適化することで実行できます。次に例を示します。
pvcreate -M2 --metadatasize 2048K --metadatacopies 2 <raw_device>
vgcreate --physicalextentsize 256M --autobackup y vg10 <pv_device>