Размер на диске больше чем размер файла

Замечали, если кликнуть правой кнопкой мыши по файлу или папке и в контекстном меню выбрать «Свойство», то там есть два значения о размере этого файла или папке? Порой люди даже путаются и не знают какой размер назвать кому-то или сами не знаю что правильнее будет. В этой небольшой статье я Вам напишу в чём отличие этих двух строк и почему у них порой такая разница.

Кто не понял про что я, то показываю основной и единственный скриншот для этой статьи:

Размер на диске больше чем размер файла. Смотреть фото Размер на диске больше чем размер файла. Смотреть картинку Размер на диске больше чем размер файла. Картинка про Размер на диске больше чем размер файла. Фото Размер на диске больше чем размер файла

Вот про то, что выделено, и будет статья.

Вся загвоздка тут кроется в самом «корню», а именно в выборе файловой системы при установке Windows. Обычно для ОС выбирают ФС NTFS, а у неё одна ячейка для хранения данных равняется 4 Кб. Если бы выбирали FAT (как на флешках), то размер ячейки там 64 Кб.

Поэтому поле «На диске» всегда будет кратным 4. Можете посмотреть и проверить любой файл или папку, там этот размер всегда можно будет разделить на 4 без остатка.

Здесь ещё есть такой нюанс, что когда файл записывается на диск, то может быть такое, что он не полностью вложиться в рамки этих 4х Кб. Это довольно частое явление и на скриншоте выше заметно такое.

Например размер файла 6 Кб. Одна часть записывается в одну ячейку 4кб, а вторая (оставшиеся 2 кб) переносится на вторую (4 кб), но т.к. размер фиксированный, то следующий файл не может «залезть» в эти 2 Кб и он будет записываться уже в новую ячейку.

Не запутались? Вполне возможно. Для наглядности можете снова посмотреть на скриншот выше. Там файл у меня размером 135 байт, но т.к. он меньше 4 кб, то он полностью займет «На диске» эти самые 4 кб. Даже если бы «Размер» был у меня 4,01 Кб, то «На диске» бы он занял 8 Кб.

Если объяснять попроще, то можно сравнить с тем, будто идёт погрузка трубы в «вагоны» поезда. Например длина трубы 8 метров, а длина вагона 5 метров. Поэтому труба будет занимать 2 вагона, а следующую погрузят уже в третий. Ну вот как то так. Сравнение не особо удачное, но я уже не знаю как можно проще это объяснить.

Источник

Прежде всего скажем, что речь здесь пойдет о файловых системах FAT и NTFS, как наиболее распространенных, и ничего не будет сказано о файловых системах, используемых в не-Windows системах, поскольку такие системы лежат вне сферы интересов автора. А теперь – к делу.

Казалось бы, какая неоднозначность может быть, если говорить о размере файла. Сколько в него данных записали, такой и размер (или длина). Сколько в нем есть байтов от начала до конца (и это число записано в файловой системе в качестве размера файла), такой и размер, не так ли? Как говорил Шельменко-денщик, так то оно так, да только трошечки не так.

Проведите эксперимент. Возьмите любой исполняемый файл и выполните его копирование командой
copy что-то.exe что-то-другое.exe
Если вы раньше с этим сталкивались, то уже знаете, что результирующий файл получится намного короче исходного и не будет копией. Причина простая: программа copy, запущенная без параметра /b, копирует файл до тех пор, пока не встретит байт с кодом 27h, этот символ называется «конец файла».

Итак, у нас уже есть два разных признака конца файла – по числу, записанному в файловой системе, и по специальному байту в теле файла. Правда, стоит отметить, что второй признак остался с тех времен, когда файлы были преимущественно текстовыми и сейчас практически не применяется.

И, наконец, расскажем еще об одной длине: длине действительных данных (valid data). Эта длина и устанавливающие ее функции представляют интерес почти исключительно для программистов, тем не менее изредка с ней могут столкнуться и обычные пользователи.

В файловых системах FAT такого понятия не существует, и функции, которые используют эту величину, записывают в тело файла на соответствующих местах нули. В NTFS эта длина является характеристикой файла.

Попробуем пояснить, о чем идет речь, на примере. Возьмите флешку (флешка используется для наглядности, поскольку она медленнее жесткого диска работает с большими объемами данных) размером от гигабайта, отформатированную в FAT32, и создайте на ней большой файл командой
fsutil file createnew k:\пробный.txt 900000000

Если буква, присвоенная флешке, отличается от К, то исправьте команду соответствующим образом.
Вы увидите, что процедура создания файла окажется довольно продолжительной, полминуты или даже больше (хотя сообщение «файл создан» появится сразу же, появления приглашения командной строки придется подождать). Это совсем не удивительно, ведь в описании команды (https://technet.microsoft.com/en-us/library/cc788058.aspx) сказано, что создаваемый файл состоит из нулей. А файл у нас получился 858 мегабайт, так что его запись и должна занять не такое уж малое время.

Теперь отформатируйте флешку в NTFS, для чистоты эксперимента лучше взять ту же самую, и повторите создание файла. На этот раз операция пройдет практически моментально. Записывать нули в тело файла уже не надо, достаточно распределить место под файл и установить для него длину действительных данных равной нулю. В теле файла останется «мусор», который был записан в этих секторах, но при чтении данных обращения к этим данным не произойдет – обнаружив, что длина действительных данных равна нулю, все, что дальше этого нуля, система читать не станет – ведь эти данные недействительны. Их можно сделать действительными, если изменить значение длины действительных данных.

fsutil file setvaliddata C:\пробный.txt 300

Обратите внимание что параметр в этой команде нельзя задавать произвольно, но должен быть не меньше текущего значения длины действительных данных и не больше размера файла. Уменьшить длину действительных данных этой командой нельзя.

Подведем итоги

Имеется две физических длины файла – это размер файла, записанный в файловой системе и место, занимаемое на диске. Также имеется две логических длины файла – это признак конца файла (байт EOF – 27h) и длина действительных данных. Как составную часть логической длины можно рассматривать и пустые области в разреженных файлах – вспомните \$Extend\$UsnJrnl, где большой массив отсутствующих данных завершается тридцатью двумя мегабайтами действительных.

Итак, обычно, когда говорят о длине файла, имеют в виду число, хранящееся в файловой системе. Но, как видите, возможны варианты!

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

компрессия

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

Источник

Размер файла на диске

Размер на диске больше чем размер файла. Смотреть фото Размер на диске больше чем размер файла. Смотреть картинку Размер на диске больше чем размер файла. Картинка про Размер на диске больше чем размер файла. Фото Размер на диске больше чем размер файла

Почему файл занимает на диске больше места, чем его реальный размер?

Сохраняя на диск файлы, мы стараемся «держать» в голове, сколько места осталось на диске, какой размер файла. Но иногда эти расчеты оказываются далеки от реальности. Почему так? Почему файл занимает на диске больше места, чем его реальный размер?

Для ответа придется копнуть в глубину теории файловых систем. Информация, (Вы, кстати не задумывались, как дать определение этому забавному слову – информация?) так вот эти разные файлы, записываются на жесткий диск не как на грампластинку. Перед использованием жесткого диска операционная система форматирует его. При этом на диске создаются кластеры для размещения информации. Оглавление, где написано, в каком кластере какой файл следует искать. Размер кластеров разный в разных системах, в файловой системе NTFS этот размер 4096 байт. Как в тетради в клеточку, диск размечается на кластеры. Отсюда, кстати, разница в размере диска и доступном месте на нем. Диск 50ГБ, но при форматировании уже занимается часть места. И доступно кластеров(!), а не пустого места, где-то 49,5ГБ. И это только начало. Когда Вы записываете файл на диск, он «разрезается» и раскладывается по кластерам. Если его размер менее 4096 байт, он все равно займет один кластер. Смотрим пример на рисунке.

Размер на диске больше чем размер файла. Смотреть фото Размер на диске больше чем размер файла. Смотреть картинку Размер на диске больше чем размер файла. Картинка про Размер на диске больше чем размер файла. Фото Размер на диске больше чем размер файла

Почему файл занимает на диске больше места, чем его реальный размер – потому что на диск файл записывается в кластеры и занимает место не сам файл, а кластеры, которые он занял. И поскольку размер файла обычно не кратен размеру кластера, то файл занимает больше кластеров, чем хотелось бы. Файл размером 10240байт, которому «хватит» 2,5 кластера (4096*2,5= 10240 байт) замет ТРИ кластера (4096*3= 12288 байт). Так и выходит, что много мелких файлов займут больше места на диске, чем их реальный суммарный размер.

Источник

Почему такая большая разница между «Размер» и «Размер на диске»?

Размер на диске больше чем размер файла. Смотреть фото Размер на диске больше чем размер файла. Смотреть картинку Размер на диске больше чем размер файла. Картинка про Размер на диске больше чем размер файла. Фото Размер на диске больше чем размер файла

Я знаю, что размер на диске должен быть немного больше, чем размер из-за выделения единиц в Windows, но почему такая большая разница? Может ли это быть из-за большого количества файлов?

Кстати, эта папка находится на SD-карте моего телефона Android. В этом приложении мое карты хранит свои кэшированные карты, а приложение получает свою карту из Google Maps.

Я буду предполагать, что вы используете файловую систему FAT / FAT32 здесь, поскольку вы упоминаете, что это SD-карта. NTFS и exFAT ведут себя одинаково в отношении единиц размещения. Другие файловые системы могут отличаться, но они все равно не поддерживаются в Windows.

Если у вас много маленьких файлов, это, безусловно, возможно. Учти это:

Размер кластера 32 кБ (единицы выделения), что является максимумом для FAT32

Если бы каждый файл занимал в среднем 2 КБ, вы получили бы около 100 МБ общего объема, но вы также теряли в 15 раз больше (30 КБ на файл) в среднем из-за размера единицы размещения.

Подробное объяснение

Большие единицы размещения, как правило, будут занимать много места, если у вас много маленьких файлов. Обычно нет веской причины превышать 4 кБ для общего использования.

Дробление?

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

Возможные решения

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *