7

Я только что узнал о команде mdls в OS X которая распечатывает метаданные, связанные с данным файлом. Эта команда сообщает мне "физический размер" ("kMDItemPhysicalSize") и "логический размер" ("kMDItemLogicalSize"). Например, текущий текстовый файл, на который я смотрю, имеет:

  • физический размер: 1152
  • логический размер: 4096

Если я сделаю ls -l , его размер будет равен 1152. Если я открою панель "получить информацию", она выдаст «1152 байта (4 КБ на диске)». Поэтому, какой бы "логический размер" ни был, он, очевидно, приравнивается к размеру "на диске".

1 ответ1

9

Диски разделены на сектора размером 512 байт * на вашем обычном жестком диске или SSD.

Файловые системы отвечают за принятие запросов к файлам на основе имени (что-то, что вы понимаете) и перевод в блокированные запросы на чтение / запись (то, что понимает диск). Чтобы это работало, нужна карта того, какие сектора принадлежат какому файлу. Есть много способов сделать это, и, таким образом, существует много файловых систем. Например, в Windows используются NTFS и FAT32, а в Linux их много, включая ext2, ext3 и т.д. Не уверен насчет файловых систем Mac, но это тот же принцип.

Некоторые файловые системы будут иметь уровень выше секторов, которые называются кластерами, которые представляют собой наборы секторов, поскольку карта каждого отдельного сектора на больших дисках может занимать слишком много места. Например, в NTFS вы можете указать размер кластера (другое название - "единица выделения"), и 4096 байт (8 секторов) - это один из них, который вы можете выбрать.

Итак, учитывая все это, "минимум", который вы действительно можете прочитать или записать на диск, будет размером сектора или размера кластера. Таким образом, хотя вы можете записать 4097 байт на диск, файловая система должна предоставить этому файлу два кластера, поэтому от вашего свободного места уходит 8192 байта. Таким образом, у вас есть логический размер (размер, который он потребляет на диске) и физический размер (реальный размер файла).


* На некоторых более новых дисках "Advanced Format" это внутренне 4 Кбайт, но по-прежнему выглядит как 512-байтные сектора для ОС для совместимости. Внутренние SSD сильно отличаются друг от друга, но опять-таки выглядят как 512-байтовые сектора для ОС.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .