ディスクの最後のシリンダにLVMボリュームを作成する

ディスクの最後のシリンダにLVMボリュームを作成する

すべての磁気ディスクでは、最初のセクターと最後のセクターの速度差は顕著で、最大 2 倍または 3 倍になります。これは、新しいマルチテラバイト ディスクでも当てはまります。したがって、ディスクの最後のシリンダーを、特にバックアップなどのあまり使用されないファイル用に予約しておくことは依然として理にかなっています。

パーティション化されたディスクでは、将来のサイズの変更を可能にするという唯一の注意点を除けば、これを行うのは簡単です。

しかし私の設定はパーティション化されていない LVMしたがって、同じ物理ハードウェアに 2 つのボリューム グループを配置するか (1 つはディスク セットの先頭を使用し、もう 1 つは末尾を使用する)、論理ボリュームがハードウェアの最後のシリンダの拡張機能を優先して使用するようにする必要があります。これは可能ですか? LV が配置される場所を制御できますか?

答え1

キャッシュ、先読みポリシー、およびディスク エレベーターを使用できることにより、ほとんどのワークロードでこれが大きな懸念事項になるということには、あまり同意しませんが、これは注意事項付きで可能です。

これに対処する最善の方法は、割り当てたいメディアを、分離したいディスクの両端を「チャンク」として物理的に分割することです。

このようなもの

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1075MB  1074MB  primary  ext4         boot
 2      1075MB  4TB     4TB     primary               lvm # My fast partition
 3      4TB     8TB     4TB     primary               lvm # My slow partition

次に、ボリューム グループを作成します。この例では 1 つのボリューム グループを使用していますが、代わりに「低速」VG と「高速」VG を用意する方が簡単かもしれません。

# pvcreate /dev/sda2 
# pvcreate /dev/sda3
# vgcreate vg /dev/sda2 /dev/sda3

次に、上記の物理ボリュームから LV を割り当てます。

# lvcreate -n myFastLV -L1TB vg /dev/sda2
# lvcreate -n mySlowLV -L1TB vg /dev/sda3

ここで注意すべき点は、不良セクタはディスク コントローラによって、他の場所にあることが多い「予備」に自動的に置き換えられる可能性があることです (これは製造元にまったく依存しません)。また、一部の高性能ディスクでは、論理的には説明どおりにセクタが内部的に再マップされる可能性がありますが、物理的には予想した場所にありません。

最後に、あなたが提案している問題のワークロード (巨大なファイルのパイプライン処理) は、実際には非常にシーケンシャルなワークロードの問題であり、書き込まれたファイルに事前割り当て手法を使用することで (連続性を保ち、断片化しないように) より大きな効果が得られます。

次に、積極的な先読みポリシーを設定して、読み取っているファイルに連続している可能性が高い隣接/今後のセクター全体を読み取ります。

物理セクターを任意の順序と方法でマッピングすることで、よりきめ細かいアプローチを実現することもできますdmsetupが、これは移植性が低く、長期的には価値に見合わない労力がかかる可能性があります (たとえば、起動時にマッピングを再構築するスクリプトが必要になります)。

関連情報