Зашто постоји велика разлика између 'величине' и 'величине на диску'?
Већину времена, вриједности за 'Величина' и 'Величина на диску' ће бити врло блиске подударању при провјери величине мапе или датотеке, али што ако постоји огромна разлика између та два? Данашња постова за питања и одговоре компаније СуперУсер разматра одговор на овај конфузни проблем.
Данашња сесија питања и одговора долази нам захваљујући СуперУсер-у - подјела Стацк Екцханге-а, груписане од стране заједнице веб-локација за питања и одговоре.
Питање
Читач СуперУсер тхеластблацк жели да зна зашто постоји тако велика разлика између 'Величина' и 'Величина на диску' за мапу на СД картици свог телефона:
Као што можете видјети у наставку, постоји велика разлика између поља 'Величина' и 'Величина на диску' за ову мапу. Зашто је то?
Знам да би величина 'диск на диску' требала бити нешто већа од 'величине' због алокација за расподјелу у Виндовсу, али зашто је толико велика разлика? Да ли је то могуће због великог броја датотека?
БТВ, овај фолдер је на СД картици мог Андроид телефона. У оквиру ове апликације, моје мапе чувају своје кеширане мапе, а апликација добија своје мапе из Гоогле мапа.
Гледајући снимак екрана, дефинитивно постоји огромна разлика између 'величине' и 'величине на диску', па шта се овде десило да би ово изазвало?
Одговор
Доприносник СуперУсер-а Боб има одговор за нас:
Претпостављам да овде користите ФАТ / ФАТ32 систем датотека, пошто сте поменули да је то СД картица. НТФС и екФАТ се понашају слично у односу на јединице за расподјелу. Други датотечни системи могу бити различити, али ипак нису подржани у оперативном систему Виндовс.
Ако имате пуно малих фајлова, то је свакако могуће. Размотрити ово:
- 50,000 филес
- 32 КБ величина кластера (јединице за доделу), што је максимум за ФАТ32
Ок, сада минимум заузети простор је 50,000 * 32,000 = 1,6 ГБ (користећи СИ префиксе, а не бинарне, како би се поједноставиле математике). Простор који свака датотека заузима на диску увек је вишеструка од величине јединице за додељивање - и овде претпостављамо да је сваки фајл довољно мали да стане у једну јединицу, са неким (изгубљеним) простором који је преостао.
Ако је свака датотека просјечно 2 КБ, добићете укупно око 100 МБ - али такође губите 15к (30 КБ по датотеци) у просјеку због величине јединице додјеле.
Дубинско објашњење
Зашто се то догађа? Па, ФАТ32 систем датотека треба да прати где се складишти сваки фајл. Да би се задржао списак сваког појединачног бајта, табела (као адресар) би расла истом брзином као и подаци - и губила много простора. Дакле, оно што они раде је да користе “јединице за расподјелу”, такођер познате као “величина кластера”. Волумен је подељен на ове јединице за расподелу, а што се тиче система датотека, они се не могу поделити - то су најмањи блокови које може адресирати. Слично као што имате кућни број, али ваш поштар не занима колико соба имате или који живи у њима.
Шта се дешава ако имате веома мали фајл? Па, систем датотека не брине да ли је фајл 0 КБ, 2 КБ или чак 15 КБ, то ће му дати најмање простора колико може - у горњем примјеру, то је 32 КБ. Ваша датотека користи само малу количину овог простора, а остатак је у основи изгубљен, али и даље припада датотеци - слично спаваћој соби коју оставите празном.
Зашто постоје различите величине јединица за додјелу? Па, то постаје компромис између веће табеле (адресар, нпр. Каже да Јохн поседује кућу на 123 Факе Стреет, 124 Факе Стреет, 666 Сатан Лане, итд.), Или више изгубљеног простора у свакој јединици (кући) . Ако имате веће датотеке, има више смисла користити веће јединице за расподјелу - јер датотека не добива нову јединицу (кућу) док се сви други не попуне. Ако имате много малих фајлова, па, ионако ћете имати велики сто (адресар), па им можете дати и мале јединице (куће).
Велике јединице за расподјелу, као опће правило, троше пуно простора ако имате пуно малих датотека. Обично не постоји добар разлог да пређете преко 4 КБ за општу употребу.
Фрагментација?
Што се тиче фрагментације, фрагментација не би требала трошити простор на овај начин. Велике датотеке могу бити фрагментиране, тј. Подијелити, у вишеструке јединице расподјеле, али свака јединица би требала бити попуњена прије него што се започне сљедећа. Дефраггинг може уштедети мало простора у таблицама за додјелу, али то није ваше специфично питање.
Могућа решења
Као што је предложио гладиатор2345, ваше једине реалне опције у овом тренутку су да живите с њом или се преобликовате са мањим јединицама за расподјелу.
Ваша картица може бити форматирана у ФАТ16, која има мање ограничење на величину таблице и стога захтијева много веће јединице алокације како би се адресирала већа количина (са горњом границом од 2 ГБ са 32 КБ јединице за додјелу). Извор захваљујући Браиам-у. Ако је то случај, требали бисте сигурно моћи форматирати ФАТ32.
Имате ли нешто да додате објашњењу? Звучи у коментарима. Желите ли прочитати више одговора од других технолошки паметних Стацк Екцханге корисника? Погледајте цео дискусију овде.