If-Koubou

Защо има голяма разлика между размера и размера на диска?

Защо има голяма разлика между размера и размера на диска? (Как да)

По-голямата част от времето, стойностите за "Размер" и "Размер на диска" ще бъдат много близки до сравняването при проверка на размера на папката или файла, но какво ще стане, ако има огромно несъответствие между двете? Днешната публикация на SuperUser Q & A разглежда отговора на този объркващ проблем.

Днешната сесия за въпроси и отговори ни идва с любезното съдействие на SuperUser - подразделение на Stack Exchange - обединяване на уеб сайтове с въпроси и отговори.

Въпроса

Reader на SuperUser thelastblack иска да разбере защо има такава огромна разлика между "Размер" и "Размер на диска" за папка на SD картата на телефона:

Както можете да видите по-долу, има толкова много разлика между полетата "Размер" и "Размер на диска" за тази папка. Защо така?

Знам, че "Размер на диска" трябва да е малко повече от "Размер", поради разпределението на единици в Windows, но защо има толкова много разлика? Може ли това да се дължи на големия брой файлове?

BTW, тази папка е на SD картата ми на Android. Вътре в това приложение приложенията ми съхраняват кешираните му карти и приложението получава картите си от Google Карти.

Ако погледнете екранната снимка, определено има огромно несъответствие между размера и размера на диска, така че какво се случи тук, за да причини това?

Отговорът

Сътрудникът на SuperUser Bob има отговора за нас:

Ще предположа, че тук използвате файловата система FAT / FAT32, тъй като споменавате, че това е SD карта. NTFS и exFAT се държат по подобен начин по отношение на разпределителните единици. Други файлови системи може да са различни, но въпреки това не се поддържат на Windows.

Ако имате много малки файлове, това със сигурност е възможно. Помислете за това:

  • 50 000 файла
  • 32 KB клъстер размер (разпределение единици), което е макс за FAT32

Добре, сега минимум пространството е 50 000 * 32 000 = 1,6 GB (използвайки SI префикси, а не двоично, за да опрости математиката). Пространството, което всеки файл има на диска, винаги е кратно на размера на разделителната единица - и тук приемаме, че всеки файл е всъщност достатъчно малък, за да се побере в една единица, с останало (неизползвано) място.

Ако всеки файл е средно 2 KB, ще получите около 100 МБ общо - но също така губите 15 пъти, че (30 KB на файл) средно поради размера на разделителната единица.

Обяснение в дълбочина

Защо се случва това? Файловата система FAT32 трябва да следи къде се съхранява всеки файл. Ако се запази списък с всеки един байт, таблицата (като адресната книга) ще нараства със същата скорост, както данните - и ще изличи много пространство. Така че това, което правят, е да се използват "разпределителни единици", известни също като "размер на клъстера". Обемът е разделен на тези разпределителни единици, а по отношение на файловата система те не могат да бъдат подразделени - това са най-малките блокове, които може да се адресират. Подобно на вас има номер на къща, но пощальонът ви не се интересува колко спални имате или кой живее в тях.

И така, какво ще стане, ако имате много малък файл? Файловата система не се интересува дали файлът е 0 KB, 2 KB или дори 15 KB, ще му даде най-малко пространство - в примера по-горе, това е 32 KB. Файлът ви използва само малка част от това пространство, а останалото е основно пропиляно, но все пак принадлежи към файла - много прилича на спалня, която оставате незаети.

Защо има различни размери на разпределителните единици? Е, това се превръща в компромис между по-голямата маса (адресна книга, например, казвайки, че Джон притежава къща на адрес Fake Street, 124 Fake Street, 666 Satan Lane и т.н.) , Ако имате по-големи файлове, е по-целесъобразно да използвате по-големи разпределителни единици - защото файлът не получава нова единица (къща), докато не се запълнят всички останали. Ако имате много малки файлове, така или иначе ще имате голяма маса (адресна книга), така че може да им дадете и малки единици (къщи).

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

Раздробяването?

Що се отнася до фрагментацията, фрагментацията не трябва да губи пространство по този начин. Големите файлове могат да бъдат фрагментирани, т.е. да бъдат разделени на множество разпределителни единици, но всяка единица трябва да бъде попълнена, преди да започне следващата. Дефрагментирането може да спести малко място в разпределителните таблици, но това не е вашият конкретен проблем.

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

Както предложи gladiator2345, вашите единствени реални възможности в този момент са да живеете с него или да преформатирате с по-малки единици за разпределение.

Картата ви може да бъде форматирана в FAT16, която има по-малък размер за размера на таблицата и поради това изисква много по-големи разпределителни единици, за да се адресира по-голям обем (с горна граница от 2 GB с 32 KB разпределителни единици). Източник на учтивост на Браям. Ако това е така, трябва да сте в състояние безопасно да форматирате като FAT32 така или иначе.

Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.