Защо има голяма разлика между Размер и Размер на диска?
По-голямата част от времето, стойностите за "Размер" и "Размер на диска" ще бъдат много близки до съвпадение при проверка на размера на папка или файл, но какво ще стане, ако има голямо разминаване между двете? Днешната публикация SuperUser Q&A разглежда отговора на този объркващ проблем.
Днешната сесия за въпроси и отговори идва при нас с любезното съдействие на SuperUser - подразделение на Stack Exchange, групирано от общността уеб сайтове за въпроси и отговори.
Въпроса
Четецът на SuperUser thelastblack иска да знае защо има такава огромна разлика между "Размер" и "Размер на диска" за папка на SD картата на телефона му:
Както можете да видите по-долу, има толкова голяма разлика между полетата "Размер" и "Размер на диска" за тази папка. Защо така?
Знам, че „Размерът на диска“ трябва да е малко по-голям от „Размер“ поради разпределителните единици в Windows, но защо има толкова голяма разлика? Може ли да е заради големия брой файлове?
BTW, тази папка е на SD картата на телефона ми с Android. В това приложение моите карти съхраняват кешираните си карти и приложението получава картите си от Google Карти.
Разглеждайки снимката на екрана, определено има огромно разминаване между „Размер“ и „Размер на диска“, така че това, което се случи тук, за да предизвика това?
Отговорът
Сътрудникът на SuperUser Боб има отговор за нас:
Предполагам, че използвате файловата система FAT / FAT32 тук, тъй като споменете, че това е SD карта. NTFS и exFAT се държат подобно по отношение на разпределителните единици. Други файлови системи може да са различни, но въпреки това не се поддържат в Windows.
Ако имате много малки файлове, това със сигурност е възможно. Помислете за това:
- 50 000 файла
- 32 KB размер на клъстера (разпределителни единици), което е максимум за FAT32
Добре, сега минимум отнеманото пространство е 50,000 * 32,000 = 1,6 GB (като се използват префикси SI, а не двоични, за да се опростят математическите данни). Пространството, което всеки файл поема върху диска, винаги е многократно по-голямо от размера на разпределителната единица - и тук приемаме, че всеки файл е достатъчно малък, за да се побере в едно устройство, а останалото (остаряло) пространство.
Ако средният размер на всеки файл е 2 КБ, ще получите общо около 100 МБ - но също така губите 15x (30 КБ на файл) средно поради размера на разпределителната единица.
Дълбоко обяснение
Защо се случва това? Е, файловата система FAT32 трябва да следи къде се съхранява всеки файл. Ако трябваше да се запази списък на всеки един байт, таблицата (като адресна книга) щеше да расте със същата скорост като данните - и да губи много място. Така че това, което правят, е да използват "разпределителни единици", известни още като "размер на клъстера". Обемът е разделен на тези разпределителни единици и що се отнася до файловата система, те не могат да бъдат подразделени - това са най-малките блокове, на които може да се обърне. Подобно на вашия дом, но вашият пощальон не се интересува колко стаи имате или които живеят в тях.
И така, какво ще стане, ако имате много малък файл? Е, файловата система не се интересува дали файлът е 0 KB, 2 KB, или дори 15 KB, ще му даде най-малкото място - в горния пример това е 32 KB. Файлът ви използва само малко количество от това пространство, а останалото е пропиляно, но все още принадлежи на файла - подобно на спалнята, която оставите незаета.
Защо има различни размери за разпределение? Е, това става компромис между наличието на по-голяма таблица (адресна книга, например казвайки, че Джон притежава къща на 123 Fake Street, 124 Fake Street, 666 Satan Lane и др.), Или повече загубено пространство във всяка единица (къща) , Ако имате по-големи файлове, има повече смисъл да използвате по-големи разпределителни единици - защото файлът не получава ново устройство (къща), докато всички останали не бъдат попълнени. Ако имате много малки файлове, ще имате голяма таблица (адресна книга), така че може да им дадете малки единици (къщи).
Големите разпределителни единици, като общо правило, ще губят много място, ако имате много малки файлове. Обикновено няма основателна причина да се надхвърля 4 KB за общо ползване.
раздробяване?
Що се отнася до фрагментацията, фрагментацията не трябва да губи място по този начин. Големите файлове могат да бъдат фрагментирани, т.е. да се разделят на множество разпределителни единици, но всяка единица трябва да бъде запълнена, преди да се стартира следващата. Дефрагментирането може да спести малко място в таблиците за разпределение, но това не е вашият конкретен проблем.
Възможни решения
Както гладиаторът 2345 предложи, единствените ви реални възможности в този момент са да живеете с него или да го преформатирате с по-малки разпределителни единици.
Вашата карта може да бъде форматирана в FAT16, която има по-малък лимит за размера на таблицата и следователно изисква много по-големи разпределителни единици, за да адресира по-голям обем (с горна граница от 2 GB с 32 KB разпределящи единици). Източник с любезното съдействие на Braiam. Ако случаят е такъв, трябва да можете да форматирате безопасно като FAT32.
Имате ли какво да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други технологични потребители на Stack Exchange? Вижте пълната тема за дискусия тук.