最新のハードドライブは「高度なフォーマットたとえば、デフォルトでは512/4096の論理/物理セクタサイズを報告します。
デフォルトでは、ほとんどのLinuxフォーマットツールは4096バイトのブロックサイズを使用します(少なくともDebian / EXT4ではデフォルト値です)。
これまで私はこれが最適化だと思いました。 Linux / EXT4は、論理セクタサイズが512Kであるにもかかわらず、4KブロックをHDDに転送して最適に処理します。
ところで今日は読んだ。この最近の (2021) 投稿。その人は、HDDの論理セクタサイズを512eから4Knに切り替えると、より良いパフォーマンスを提供できることを確認するためにいくつかのHDDベンチマークを実行しました。彼の結論は次のとおりです。
覚えておいてください:私の理論は、ファイルシステムが4kブロックを使用し、すべてが正しく整列しているので、意味のある違いがあってはならないということです。
これは本当ですか?まあ…いいえ。別言します。 (...)4kbチャンクを使用すると...ここには非常に大きな違いがあります。これはシングルスレッドのベンチマークですが、4kセクタドライブは常に4kbブロック転送で大きな優位を占めています。 (...)
結論:4kセクターを使用してください!
私が考える限り、ここでの結論はかなり明らかです。 4kセクタを処理できる最新のオペレーティングシステムがあり、ドライブが512バイトまたは4kセクタの実行をサポートしている場合は、他の作業を実行する前にドライブを4kプライマリセクタに変換してください。次に、引き続きオペレーティングシステムに対処してください。
基本的に彼の結論は、HDDの論理セクタサイズを4Knに切り替えると、組み込みの512eに比べてパフォーマンスが大幅に向上することです。
今注目すべき重要な点は、この特定のベンチマークがシングルスレッドであることです。彼はまた、4スレッドのベンチマークを行いましたが、512eと4Knの間に大きな違いはありませんでした。
だから私の質問は次のようになります
- 彼の結論は、ドライブにシングルスレッドプロセスの読み取り/書き込みがある場合にのみ適用されます。 Linuxにこれらのシングルスレッドプロセスはありますか?
- もしそうなら、HDDの論理セクタサイズを4Knに設定した方がいいですか?
答え1
@Tomesの提案に従って、@user10489との意見交換に基づいて私の質問に答えようとしています。
もちろん、私はこのトピックの専門家ではないので、必要に応じて私の声明を自由に修正または修正できます。
しかし、多くのウェブサイトでは、人々がブロックサイズとセクタサイズを混同するので、まずいくつかの説明が必要です。
- ブロックは、ファイルシステムが処理できる最小のデータ量です(通常はEXT4など、デフォルトでは4096バイトですが、フォーマット中に変更される可能性があります)。 Windowsの世界にはクラスタというものがあると思います。
- セクタは、ドライブが処理できる最小のデータ量です。 2010年以降、すべてのHDDは4096バイトのセクタを使用します(たとえば、物理セクタのサイズは4096バイト)。ただし、512バイトセクタHDDのみを処理できる古いオペレーティングシステムとの互換性を維持するために、最新のドライブはまだ512バイトHDDとして表示されます(たとえば、論理セクタサイズは512バイトです)。オペレーティングシステムに表示される論理512バイトをHDDの物理4096バイトに変換する作業は、HDDのファームウェアによって実行されます。これは…高度なフォーマットハードドライブ
e
(アナログおよびネイティブの場合は512e / 4Kn HDDとも呼ばれますn
)
したがって、基本HDDの論理セクタサイズは512バイトです。ドライブメーカーは、以前のオペレーティングシステムを含むすべてのオペレーティングシステムがこれを認識すると期待しているからです。ただし、すべての最新のオペレーティングシステムはネイティブ4Kドライブを処理できます(Linuxでは可能)。2010年カーネル2.6.31以降)。したがって、合理的な質問は次のとおりです。 2010年以前のオペレーティングシステムを決して使用しないことがわかっている場合は、使用する前に新しいHDDの論理セクタサイズを512バイトから4096バイトに変更するのが妥当ですか?
誰かがベンチマークテストをしました。これにより、実際の利点があるかどうかを確認し、実際に違いを生み出す場合はシングルスレッドR / Wテストだけであることを確認してください。マルチスレッドテストでは大きな違いが見つかりませんでした。
私の質問は:この特定のユースケースは実際の生活に適用されますか?たとえば、Linuxは単一スレッドのR / W操作をたくさん実行しますか?この場合、HDDの論理セクタサイズを4096に設定すると、いくつかの実質的な利点が得られる。
私はまだこの質問に対する答えを持っていません。ただし、別の観点から見ると、最新のオペレーティングシステムでは、ドライブのデフォルトの512バイト論理セクタサイズを4096バイトに変更しても何の害もありません。最良のシナリオは、オペレーティングシステムがこれを行うとある程度得ることができるでしょう。シングルスレッドR / W操作のパフォーマンス向上、最悪の場合は変更なし。
繰り返しますが、ドライブがデフォルトで512バイトの論理セクタを使用する唯一の理由は、2010年以前のオペレーティングシステムとの互換性を維持するためです。最新のオペレーティングシステムでは4096バイトに設定しても問題はありません。
最後に注目すべき点は、すべてのHDDがこの変更をサポートしているわけではないということです。私が知る限り、そのようなことをする人はサポートされている論理セクタサイズを明示的に報告します。:
# hdparm -I /dev/sdX | grep 'Sector size:'
Logical Sector size: 512 bytes [ Supported: 512 4096 ]
Physical Sector size: 4096 bytes
その後、または製造元の独自のツールを使用してhdparm
変更することもできます。
[編集する]
しかし、論理セクタのサイズを512から4Kに変更するのがおそらく良い考えではない理由があります。ウィキペディアによるとオペレーティングシステムに加えて、アプリケーションも512バイトベースのコードを使用できる潜在的な領域です。
それでは、4Knをサポートする最新のオペレーティングシステムを使用しても、特定のアプリがそれをサポートしないと問題が発生することを意味しますか?
この場合、すべてのアプリケーションが4Knを処理できると確信していない限り、HDDのデフォルトの512e論理セクタサイズを維持する方が合理的です。
[編集2]
もう一度考えてみると、最新のハードウェアとソフトウェアでは、4Kセクタに切り替えることはそれほど危険ではありません。ほとんどのソフトウェアはファイルシステムレベルで動作し、直接ネイティブブロックアクセス(フォーマットツール、レプリケーションツールなど)を持つソフトウェアは、もはや使用されない限り4Kセクタをサポートする可能性が高いです。また、見ることができますHDDセクタサイズを4096バイトに切り替える
答え2
私はファイルシステムについてはよくわかりませんが、記事を読んだ直後にベンチマークがどのように実行されたのか、そして表示されたグラフがデータをディスクに転送するために使用されるバスのために大きなブロックサイズをサポートできるかどうか、しました。
たぶん私が収集したリンクのいくつかを「後で読む」リストに使用したいかもしれません。マルチスレッドI / O関連:実際にデータをディスクに並列に転送するには別々のバスが必要であるとします。
とにかく、私は緑ですが、おそらく次の内容を読んでみたいと思います。
2つのファイルシステムを比較します。私の意見は「良いベンチマーク」です。
また、特定のファイルシステムに興味がある場合は、簡単なマニュアルページを教えてくれることを願っています。オプションはマニュアルページに記載されており、下部で機能をサポートするために必要なカーネルバージョンを見つけることができます。しかし、あなたの質問を読むと、これはすでにあなたにはっきりするかもしれません。回答が足りなくてすみません。