Linux 上の空のファイルにはどのくらいのデータが必要ですか?

Linux 上の空のファイルにはどのくらいのデータが必要ですか?

Linux 上で、たとえば空のフォルダー 1000 個または空のファイル 1000 個が占めるディスク容量を計算または概算したいと思います。これにかかるディスク容量の概算を教えていただけますか?

答え1

各フォルダは、まず1ブロックを消費します。さらにLinux内のディレクトリエントリに含まれるデータも消費します。ブロックサイズはファイルシステムによって異なります。ブロックサイズを確認するには、blockdev コマンド。

GNU ドキュメントによると、ディレクトリ エントリには次の内容が含まれます。

char d_name[] これはヌルで終了するファイル名コンポーネントです。これはすべてのPOSIXシステムで信頼できる唯一のフィールドです。

ino_t d_fileno これはファイルのシリアル番号です。BSD との互換性のため、このメンバーを d_ino として参照することもできます。GNU/Linux および GNU/Hurd システムとほとんどの POSIX システムでは、ほとんどのファイルで、これは stat がファイルに対して返す st_ino メンバーと同じです。ファイル属性を参照してください。

unsigned char d_namlen これはファイル名の長さで、終端のヌル文字は含まれません。適切なサイズの整数型であるため、その型は unsigned char です。このメンバーは BSD 拡張です。このメンバーが使用可能な場合は、シンボル _DIRENT_HAVE_D_NAMLEN が定義されます。

unsigned char d_type これはファイルのタイプであり、不明である可能性があります。その値には次の定数が定義されています。

DT_UNKNOWN タイプは不明です。一部のファイルシステムのみがファイルのタイプを返す機能を完全にサポートしており、他のファイルシステムでは常にこの値が返される可能性があります。

DT_REG 通常のファイル。

DT_DIR ディレクトリ。

DT_FIFO 名前付きパイプ、または FIFO。FIFO 特殊ファイルを参照してください。

DT_SOCK ローカルドメインソケット。

DT_CHR キャラクターデバイス。

DT_BLK ブロックデバイス。

DT_LNK シンボリックリンク。

全部で 3 つの文字列です。サイズは名前の長さによって異なります。

また、考慮する必要がある権限コードもあり、これはさらに 1 バイト程度になります。

ブロック サイズ (通常のデフォルトは 4 KB) を追加して合計を計算します。

合計 5 KB のデータになる SWAG を作成すると、消費されるスペースの合計は全体で約 5000 KB になります。

これを RHEL サーバーで試してみたところ、空のフォルダーによってディスク使用率が 4 キロバイト増加しました。 これはフォルダーによって予約されたスペースを表し、ファイル システムで使用されるブロック サイズから直接導出されます。4 KB のブロックを使用しているため、4 KB はファイル システムによって予約されています。

独自のサーバーでテストするには:

コマンドプロンプトから実行: df -hk

「AVAILABLE」列の下の数値に注意してください。

mkdir "何でも"

もう一度 df -hk を実行し、違いを確認します。

関連情報