“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_file只有h一个字节那么为什么“字节大小”是2?我希望它是 1。
  • 如果第二个数字是“512 字节块的大小”,那么为什么它比“字节大小”大?我预计它是 0 或至少更小。

答案1

some_filecontainsh后跟一个换行符,总共两个字节。尝试类似的东西

hexdump -C some_file

逐字节查看文件的内容。

任何 1 到 512 字节之间的文件都将占用一个 512 字节块(如果这是磁盘上的最小分配大小),就像 513 字节文件将占用两个 512 字节块一样。块计数不会向下舍入到最接近的整数。

答案2

看看背后的原因是什么,为什么我们使用 512 字节;假设一个文件大小为 513 字节,那么为了存储该文件,我们需要在硬盘上使用 2 个大小为 512 字节的块。为了保存第513个字节,我们必须分配一个包含512个字节的完整硬盘块。因此,由于内部碎片,会浪费511个字节,因此,为了减少这种内部碎片,最好是保持块的大小尽可能小,通过实验我们发现 512 字节是最佳大小,如果减小它,则可能需要访问很多块才能访问文件,并且需要时间。因此,为了优化这些内容,他们通过实验发现 512 字节是更好的大小,以提高效率并减少内存浪费。

相关内容