web-dev-qa-db-ja.com

XFSのikeepマウントオプションは正確に何をしますか?

512GBSSDを搭載したラップトップを持っています。 XFSを/ファイルシステムとして使用し、noatime,discard,ikeepでマウントします。 ikeepは、discardとTRIMがXFSでどれほど遅いかについてのメーリングリストの投稿が原因で、パフォーマンスを向上させるためにikeepを使用することを提案しました。ただし、Linuxカーネルのドキュメントには次のように書かれています。

Ikeepが指定されている場合、XFSは空のiノードクラスターを削除せず、ディスク上に保持します。 ikeepは、従来のXFSの動作です。 noikeepが指定されている場合、空のiノードクラスターが空き領域プールに返されます。 DMAPI以外のマウントのデフォルトはnoikeepですが、DMAPIが使用されている場合のデフォルトはikeepです。

これは、ikeepを使用した場合、everが解放されないことを意味します。したがって、削除するファイルの数に関係なく、空き領域は破棄されます。増えませんか?これは、「従来のXFSの動作」については馬鹿げた考えのようです。

Ikeepは正確に何をしますか?

3
ithisa

ikeepは、ドキュメントに記載されているとおりに実行します。あなたの混乱は inode が何であるかを理解していないことに起因すると思います。 inodeは、ファイルに関するメタデータを格納します。これはファイルシステム構造の一部であり、ファイル内のデータのnoneが含まれています。 ikeepの必要性を導入したパッチの説明が説明しているように:

XFSは、iノードが作成されるときに動的にスペースを割り当てます。これは、iノードスペースがmkfs時に静的に割り当てられる他の多くのファイルシステムとは異なります。 iノードスペースは動的に割り当てられますが、解放されることはありません。これまでは解放されていました。

このスペースの解放がないため、大量のファイルが出入りするファイルシステムで断片化が発生する傾向があります。また、iノードとその親ディレクトリがディスク全体に分散する可能性もあります。

ほとんどのファイルシステムは、「ファイルシステムを作成する」(別名「ドライブをフォーマットする」)ときに必要になるすべてのiノードを割り当て、削除しないでください。 XFSは、オンデマンドで作成するという点で異なります。

断片化や「ディスクの周りに散らばっている」ものは、​​従来のスピニングプラッターディスクのパフォーマンスに重大な問題を引き起こします。ただし、SSDでは、これらのことはまったく問題ありません。逆に、ディスクブロックの削除は、SSDでの重大なパフォーマンスの問題ですが、回転ディスクでは問題ありません。したがって、空のiノードをデフォルトで削除するパッチを適用すると、スピニングディスクのパフォーマンスが向上しましたが、実際にはSSDのパフォーマンスが低下しました。したがって、SSDではikeepを使用することをお勧めします。

3
Old Pro