「512バイトブロックサイズ」とはどういう意味ですか?

「512バイトブロックサイズ」とはどういう意味ですか?

単一のファイルを含むファイルが提供されますh。プリミティブをfind使用して実行すると、-ls次の結果が表示されます。

$ cat some_file
h
$ find . -ls
2750606        0 drwxr-xr-x    4 mbigras          FOO\Domain Users      136 May 18 12:35 .
3067730       16 -rw-r--r--    1 mbigras          FOO\Domain Users     6148 May 18 12:33 ./.DS_Store
3067836        8 -rw-r--r--    1 mbigras          FOO\Domain Users        2 May 18 12:35 ./some_file

man find検索により、-ls出力が次のファイル情報であることがわかります。

inode番号、512バイトのブロックサイズ、ファイル権限、ハードリンク数、所有者、グループ、バイトサイズ、最後の変更時刻、およびパス名。

私はいくつか知りたいです:

  • some_file1バイトしかない場合、h「バイトサイズ」が2の理由は何ですか? 1になってほしいです。
  • 2番目の数字が「512バイトブロックサイズ」の場合、「バイトサイズ」より大きいのはなぜですか?私はそれがゼロであるか、少なくとも小さいと予想しました。

答え1

some_fileインクルードのh後に​​は改行文字(合計2バイト)が続きます。次のことを試してください

hexdump -C some_file

ファイルの内容をバイト単位で表示します。

513バイトファイルが2つの512バイトブロックを占めるように、1から512バイトの間のすべてのファイルは1つの512バイトブロックを占有します(これがディスクの最小割り当てサイズの場合)。ブロック数は最も近い整数に切り捨てられません。

答え2

512バイトを使用する理由が何であるかを見てみましょう。ファイルサイズが513バイトであると仮定すると、ファイルを保存するには、ハードディスク上の512バイトサイズの2ブロックを使用する必要があります。 513番目のバイトを保存するには、512バイトを含むハードディスクブロック全体を割り当てる必要があります。したがって、内部断片化によって511バイトが無駄になるため、この内部断片化を減らすにはブロックサイズをできるだけ小さく保つことをお勧めし、実験を通じて512バイトが最適なサイズであることがわかりました。ファイルにアクセスするには多くのブロックが必要で時間がかかります。したがって、これを最適化するために、効率を高め、メモリの浪費を減らすために512バイトがより良いサイズであることを実験的に発見しました。

関連情報