Что означает «размер в блоках по 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_fileсодержит hза которым следует новая строка, всего два байта. Попробуйте что-то вроде

hexdump -C some_file

для просмотра содержимого файла байт за байтом.

Любой файл размером от 1 до 512 байт займет один блок размером 512 байт, если это минимальный размер выделения на диске, точно так же, как файл размером 513 байт займет два блока по 512 байт. Количество блоков не округляется до ближайшего целого числа.

решение2

посмотрим, в чем причина, почему мы используем 512 байт; предположим, файл размером 513 байт, то что происходит, так это то, что для того, чтобы сохранить этот файл, нам нужно 2 блока размером 512 байт на жестком диске. Чтобы сохранить 513-й байт, нам нужно выделить полный блок жесткого диска, который содержит 512 байт правильно. Таким образом, есть потеря 511 байт из-за внутренней фрагментации, поэтому для того, чтобы уменьшить эту внутреннюю фрагментацию, всегда лучше, чтобы вы сохраняли размер блока как можно меньше, и экспериментальным путем мы обнаружили, что 512 байт - это размер, который является оптимальным, если вы уменьшите его, то вам, возможно, придется получить доступ ко многим блокам, чтобы получить доступ к файлу, и это займет время. Поэтому для того, чтобы оптимизировать вещи, они экспериментально обнаружили, что 512 байт - это лучший размер для того, чтобы увеличить эффективность и уменьшить потери памяти.

Связанный контент