ハードドライブへのすべての書き込みが4kセクターに揃っているかどうかを確認するにはどうすればよいですか?


9

4kセクターを使用する4台のハードドライブでLinuxを使用しています。私のファイルシステムとrawデバイスの間にいくつかの層があります:ディスク> Linux Raid 5> dm-crypt> LVM。

私が見つけたすべてのリソースは、各レイヤーを設定して、そのレイヤーの上への書き込みが4kセクター境界に確実に整列されるようにする方法を説明しています。ただし、ハードドライブへの書き込みが実際に4kの境界で発生していることを確認する方法を説明するものは何も見つかりませんでした。

ロジックを使用して正しく調整されているかどうかを判断するようにセットアップを再検討することに興味はありません。ディスクに書き込みが行われたときに実際に何が起こっているのかを調べたいと思います。

ハードドライブに行われている書き込みのアドレスとサイズを記録または表示して、それらが正しく整列されていることを確認するにはどうすればよいですか?

回答:


2

少し前に同じ質問をして、単純に次のことをしました:

シェルで数回、珍しい文字列をファイルに書き込みました(「WackaWacka」のようなもの)。次に、16進ダンプ(odを使用)で検索し、ディスクの実際のコンテンツを検索し、文字列の最初の出現が保存されているかどうかを確認しました。正確に4kブロックの始まりです。

ヒント:エディタを使用しないでください-知らない一時ファイルが作成され、その中に文字列が含まれる場合があります。このようにしてください:

 $ for i in 1 2 3 4 5 ...
 >  do
 >   echo "WackaWacka!"
 >  done > mytestfile

そのため、.sh_historyには検索文字列が含まれる場合がありますが、連続して5回は含まれません;-)

そして、ただ検索してください:

 # sync
 # od -c /dev/sda | grep 'W   a   c   k   a'

ええと、ギガバイトのデータを検索しないように、むしろ空のディスクで行うのが一番です;-)


1
dm-cryptは私のスタックのレイヤーの1つなので、これらの文字はディスクに書き込まれないため、このソリューションは十分ではありません。
ブライアンペリン2009

それは良くないね。私が考えることができる他の解決策は、ファイル内の1つの4kブロックを明示的に変更し、ディスク上の1つの物理ブロックの内容のみが変更されているかどうか(または2つの連続したブロックが影響を受けているかどうか)を確認することです-これは、データが圧縮されていない場合にのみ機能します暗号化層によって。それでも、ファイルが格納されているディスクブロックがどれであるかを知っておく必要があり、大きなディスクでは変更の検索が難しい場合があります。
ktf 2011

2

4kブロックを書き込んで、iostat(「Blk_read」「Blk_wrtn」列)で読み書きされるデータの量を確認します。データがアライメントされていない場合、書き込みは最初に読み取りをトリガーし、4k以上の書き込みをトリガーします。

あなたはそう(私が思うに、他の確認は何もディスクをスキャンしていないか、開いているファイルを保持している作る....かかわらず、任意のメタデータの更新を測定しないように注意する必要があります...またはちょうど4kの書き込みの1000年代を作ることによってそれらをかき消すだろうlsofだろう次に、新しいファイルを開いて、待機し、実行iostatし、ファイルに4kを書き込み、書き込みを同期します(またはしばらく待ってください)iostat。次に、もう一度確認します。

これは私にとって合理的な出力を与えるようです:

iostat  -d /dev/hdb3
dd if=/dev/urandom of=/mount/path/ofhdb3/tmptest bs=4k count=10000 conv=fdatasync
iostat  -d /dev/hdb3

Note iostatのmanページは512バイトのブロックで報告すると主張しており、80000を超える追加のブロックが書き込まれ、読み取られたブロックはありません。アライメントがオフの場合、同様の数の読み取りが表示されます(ミスアライメントされた4kを書き込むため、影響を受ける2つのブロックを読み取り、それらを変更し、書き戻す必要があります)。実際、アラインメントが重要である唯一の理由は、そのような読み取りを回避することです(そのため、これが本当に求めていることです。書き込みワークロードは読み取りをトリガーしますか?)


iostatがOSがブロックデバイスに対して行った読み取り/書き込みの数を報告しているか、またはこの数はドライブが読み取りおよび書き込みしたブロックの数を報告しているドライブに基づいていますか?
ブライアンペリン

ドライブから直接ではなく、OSブロックデバイスの抽象化からの疑いがありますが、確かではありません。また、それがdm-cryptレイヤーの「上」か「下」かもわかりません。
PT
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.