В чем разница между размером и размером на диске?

83

Глядя на свойства файла Windows, я получаю два атрибута: «Размер» и «Размер на диске», а «Размер на диске» всегда больше.

Что означают эти две метрики?

Гэвин Миллер
источник
1
Я не уверен на 100% в этом, но я считаю, что сжатые файлы также влияют на эти измерения.
AdminAlive
2
«Размер на диске» не всегда больше. Небольшие файлы хранятся непосредственно на MFT и будут иметь размер на диске = 0 . Сжатые файлы часто также имеют меньший размер на диске. То же самое с редкими файлами
phuclv

Ответы:

78

Размер - это фактический размер файла в байтах.

Размер на диске - это фактический объем места, занимаемого на диске. Они отличаются тем, что диск разделен на дорожки и сектора, и может выделять блоки дискретного размера.

редактирование

Для более подробного объяснения см. Этот текст, который я скопировал с другого сайта:

Мы знаем, что диск состоит из треков и секторов. В Windows это означает, что ОС выделяет пространство для файлов в «кластерах» или «единицах выделения».

Размер кластера может варьироваться, но типичные диапазоны составляют от 512 байт до 32 КБ и более. Например, на моем диске C: \ единица выделения составляет 4096 байт. Это означает, что Windows выделит 4096 байт для любого файла или части файла длиной от 1 до 4096 байт.

Если у меня есть файл размером 17 КБ (килобайт), то размер на диске будет 20,48 КБ (или 20480 байт). Расчет будет 4096 (1 единица выделения) x 5 = 20480 байт. Требуется 5 единиц размещения для хранения файла 17 КБ.

Другой пример: если у меня есть файл размером 2000 байт. Размер файла на диске будет 4096 байт. Причина в том, что, хотя весь файл может уместиться в одной единице выделения, он все равно занимает 4096 места (одну единицу выделения) на диске (только один файл может использовать единицу выделения и не может использоваться совместно с другими файлами).

Таким образом, размер на диске - это пространство всех секторов, в которых сохранен файл. Это означает, что обычно размер на диске всегда больше, чем фактический размер.

Таким образом, фактический размер файла (ов) или папки (ов) всегда должен быть взят из значения « Размер» при просмотре окна свойств.

Источник: в чем разница между размером и размером на диске в свойствах папки Windows .

Am1rr3zA
источник
1
Так стоит ли мне смотреть на «размер» или «размер на диске», когда я хочу сравнить процент того, сколько занимает папка по сравнению с общим объемом текущего раздела?
Android-разработчик
1
@ androiddeveloper размер на диске это
Am1rr3zA
Хорошо спасибо. Интересно, почему они не объяснили это там, или поместили немного лучшее описание.
разработчик Android
5
Ответ на Synetech ниже добавляет важные (и потенциально сбивающие с толку) точки о сжатии и жестких связей, оба из которых могут привести к размеру на диске , который меньше , чем размер.
Оуэн Блэкер
1
@baroquedub Вы можете иметь огромную разницу между ними (например, коэффициент x1000 в вашем примере). Эта разница может произойти, особенно если есть много маленьких файлов (в основном потому, что файлы записываются как «блоки» на диске, поэтому будет взят как минимум весь размер одного блока. Фактический размер блока зависит от файла - система, поэтому размер на диске может быть разным на разных дисках
Pacopaco
23

Это связано с размерами единиц размещения, которые использовались на вашем диске при его первом форматировании.

Представьте, что у вас в машине две канистры по 2 х 10 галлонов. Каждый баллон с газом является единицей распределения. Вам нужно получить 12 галлонов газа, поэтому вам нужно использовать обе канистры. В основном, используя 20 галлонов выделенного пространства - но только заполняя 12 галлонов.

Вот размер по умолчанию для Windows XP

 Drive size   
 (logical volume)             Cluster size          Sectors   
 ----------------------------------------------------------
 512 MB or less               512 bytes             1
 513 MB - 1,024 MB (1 GB)     1,024 bytes (1 KB)    2 
 1,025 MB - 2,048 MB (2 GB)   2,048 bytes (2 KB)    4
 2,049 MB and larger          4,096 bytes (4 KB)    8

Если вы думаете о размере кластера как о каждой из ваших канистр с газом: держите по 4 КБ «газа» каждая. Но ваш файл имеет размер 2 КБ, тогда размер заливки равен 2 КБ, а размер на диске - 4 КБ.

холмс
источник
6
Позвольте мне добавить к вашему ответу. Размер единицы размещения (сегмента) выбирается в зависимости от размера диска. Если вы используете ведро для опорожнения ванны, вам следует выбрать маленькое ведро. Если вы опорожняете бассейн, вы будете использовать ведро большего размера.
Les
13

Пространство Кластера

Вы не можете получить доступ к каждому отдельному байту на носителе отдельно. Это было бы ужасно неэффективно, потому что системе нужен какой-то способ отслеживать, какие из них используются, а какие свободны (т. Е. Список), поэтому выполнение этого для каждого байта в отдельности создаст слишком много перехвата (для каждого отдельного байта, то есть 1 к 1, список будет таким же большим, как и сам носитель!)

Вместо этого носитель разбивается на куски, блоки, блоки, группы, как вы хотите их называть (технический термин - кластеры ), каждый из которых содержит - согласованное - количество байтов (обычно вы можете указать размер кластеры, поскольку разное использование требует разных размеров для сокращения отходов).

При сохранении файла на диск, размер файла делится он размером кластера и округляется до , если это необходимо. Это означает, что если размер файла не делится точно на размер кластера, некоторые из кластеров в конечном итоге не используются и, следовательно, теряются.

Когда вы просматриваете свойства файла, вы видите истинный размер файла, а также размер, который он занимает на диске, включая любые « слабые места », то есть «кластерные подсказки», которые не используются. Обычно это не так много для каждого файла, и размер на диске , как правило, почти равен фактическому размеру, но когда вы добавляете потраченное впустую пространство из всех тысяч файлов на диске, они могут сложиться. Поэтому при просмотре размера большой папки, особенно той, в которой много мелких файлов, которые меньше кластера, размер на диске (т. Е. Объем дискового пространства, помеченный как использованный) может оказаться значительно больше фактического размер (т. е. объем пространства, который требуется файлам).

В случае, подобном описанному выше, вы можете уменьшить размер кластера, чтобы каждый файл занимал меньше места. Как правило, диск с большей частью потерянных небольших файлов должен использовать наименьший возможный размер кластера (для уменьшения потерь), а диск с большей частью больших файлов должен использовать наибольший возможный размер кластера (таким образом, структуры бухгалтерского учета в конечном итоге становятся меньше).

Даже на более низком уровне, если каждый кластер представляет собой только один сектор , если файл не является точным кратным размеру секторов на диске (обычно 512 байт традиционно, теперь часто 4096 с дисками расширенного формата ), тогда все равно будет Неиспользуемое пространство между концом файла и концом сектора.

компрессия

Другой сценарий, в котором вы можете увидеть разницу между фактическим размером файла и размером на диске, связан со сжатием. Когда диск сжимается (например, с помощью DriveSpace , NTFS-сжатия и т. Д.), Тогда будет разница между размером фактического файла (который необходимо знать) и фактическим размером, который файл занимает (т. Е. Использует или «занимает») на диске.

Ярлыки и жесткие ссылки

Еще один сценарий, который может привести к разнице, связан с жесткими ссылками . В файловых системах, которые поддерживают жесткие ссылки, при создании дубликата файла вместо создания целого нового файла, который занимает место для себя, файловая система создает ярлык для файла, чтобы оба (или все три, и т. Д.) копии указывают на один и тот же физический файл на диске. Поэтому, когда два файла указывают на одни и те же данные, они имеют одинаковый размер, но занимают лишь немного больше места, чтобы хранить одну копию.

Synetech
источник
На самом деле с единицами распределения 1B список не обязательно будет занимать всю среду. Всего восьмая часть. Это потому, что вам нужен только один бит, чтобы сказать, используется блок или свободен.
flarn2006
Служебные данные также включают данные, указывающие, что несколько единиц выделения принадлежат одному и тому же файлу. Если вы говорите, что у каждого байта есть другой бит, указывающий, переполняются ли данные в следующий байт, это решает это, но слишком наивно для современного размера / производительности диска, потому что, если следующий байт не свободен, КАЖДЫЙ байт жесткого диска, возможно, должен быть переехал. На самом деле вам потребуется больше накладных расходов, чтобы указать смещение следующей единицы выделения или назначить своего рода идентификатор файла для каждой единицы выделения.
Помощник в отставке
4

Еще одна вещь, которая может значительно уменьшить значение «Размер на диске», - это ситуации, когда файл на самом деле не хранится на диске, но по-прежнему доступен различными способами.

Например, функция «Автономные файлы» OneDrive позволяет пользователю сохранять файл таким образом, чтобы он был доступен через интернет-соединение. Файл все еще существует на диске и имеет определенный размер, но, поскольку он не находится на диске, пока он не загружен, он не занимает места.

Окно свойств папки OneDrive.  Размер папки составляет 171 ГБ, а размер на диске - 31,7 ГБ.

Пример на папку внутри ...

Окно свойств папки с отредактированным именем.  Размер папки составляет 379 МБ, а размер на диске - 0 байт.

Джастин Крейча
источник