centos 6からcentos 7に複数のディレクトリをコピーしていますが、ソースシステムのファイルシステムはNFS、ターゲットシステムのファイルシステムはNFS4です。ターゲットシステムのディレクトリサイズが小さいことがわかりました。これは普通ですか?なぜこれが起こるのですか?
答え1
NFSは実際にはファイルシステムの種類ではありません。ファイルとディレクトリを共有するためのネットワークプロトコルですが、NFSクライアントはファイルシステムのようにカーネル(残りの部分)に接続されます。デフォルトでは、NFSクライアントはファイルシステムドライバであるかのように偽装されますが、実際のファイルシステムはサーバーカーネルでサポートされているすべての種類のファイルシステムを使用してNFSサーバーに常駐します。
RHEL/CentOS 6 および 7 では、デフォルトのファイルシステムタイプが異なります。 RHEL/CentOS 6 システムはext4
ファイルシステムを使用できますが、RHEL/CentOS 7 システムはxfs
.
さまざまな種類のファイルシステムはさまざまなメタデータ構造を使用するため、ディレクトリにまったく同じファイルが含まれていてもディレクトリサイズが異なる場合があります。
ext4
さらに、次のような一部のls -ld
ファイルシステムでは、単一のディレクトリに多数のファイルを書き込むと、ファイルシステムは自動的にディレクトリメタデータにさらに多くのスペースを割り当てます。ただし、ファイルを削除するとすぐにディレクトリに書き込むことができると仮定すると、これらの割り当ては常にすぐに解放されるわけではありません。再リストしました。これは部分的にはパフォーマンスの最適化であり、部分的にはディレクトリメタデータの断片化を最小限に抑えるためです。
e2fsck -D
極端な場合は、ファイルシステムで「ディレクトリ最適化」タスクを実行したりext4
(マウント解除が必要)、保持したいすべてのアイテムを簡単に移動するなど、現在保持しているファイル数と一致するようにディレクトリを明示的に縮小できます。 1つの新しいディレクトリ、古いディレクトリを削除し、新しいディレクトリの名前を古いディレクトリと同じに変更します。たとえば、誤動作するプログラムが通常、数個のファイルのみを含むディレクトリに数万個のファイルを挿入する場合、後者のアプローチは便利です。