If-Koubou

Kāpēc pastāv liela atšķirība starp "lielumu" un "izmēru uz diska"?

Kāpēc pastāv liela atšķirība starp "lielumu" un "izmēru uz diska"? (Kā)

Lielāko daļu laika, izmeklējot mapes vai faila izmērus, vērtības "Izmērs" un "Izmērs uz diska" būs ļoti tuvu salīdzinājumam, bet, ja starp tiem ir liela neatbilstība? Šodienas SuperUser Q & A ziņa aplūko atbildi uz šo mulsinošu problēmu.

Šodienas jautājumu un atbilžu sesija mums priecājas par SuperUser - Stack Exchange dalību, kas ir kopienas vadīta Q & A tīmekļa vietņu grupa.

Jautājums

SuperUser lasītājs thelastblack vēlas uzzināt, kāpēc tā tālruņa SD kartē ir tik liela atšķirība starp izmēru un izmēru uz diska.

Kā jūs redzat tālāk, starp šajā mapē esošajiem laukiem "Izmērs" un "Izmērs uz diska" ir tik liela atšķirība. Kāpēc ir tā, ka?

Es zinu, ka "izmērs diskā" ir mazliet lielāks par "lielumu", jo Windows sadales vienībās, bet kāpēc ir tik daudz atšķirību? Vai tas varētu būt lielu failu skaita dēļ?

BTW, šī mape ir ievietota Android tālruņa SD kartē. Tā ietvaros manas kartes lietotne saglabā tās kešatmiņā saglabātās kartes un lietotne iegūst savas kartes no Google Maps.

Aplūkojot ekrānuzņēmumu, noteikti ir liela neatbilstība starp "Size" un "Size on disk", tādēļ tas, kas šeit noticis, rada to?

Atbilde

SuperUser ieguldītājs Bobs mums ir atbilde:

Es pieņemu, ka šeit jūs izmantojat FAT / FAT32 failu sistēmu, jo jūs pieminējat, ka tā ir SD karte. NTFS un exFAT darbojas līdzīgi attiecībā uz sadales vienībām. Citas failu sistēmas var būt atšķirīgas, taču tās Windows neatbalsta.

Ja jums ir daudz mazu failu, tas noteikti ir iespējams. Apsveriet šo:

  • 50000 faili
  • 32 KB klasteru izmērs (sadales vienības), kas ir FAT32 max

Labi, tagad minimums Ņemtās platības ir 50 000 * 32 000 = 1,6 GB (vienkāršojot matemātiku, izmantojot prefiksus SI, nevis bināros). Katrā failā esošā vieta diskā vienmēr ir sadalīšanas vienības izmēra vairākkārtēja - un šeit mēs pieņemam, ka katrs fails ir pietiekami mazs, lai ietilptu vienā vienībā, un daži (izšķērdēta) vieta paliek pāri.

Ja katram failam ir vidēji 2 KB, tad jūs saņemsiet apmēram 100 MB, bet jūs arī iztērējat 15x (30 KB failā), ņemot vērā sadales vienības izmēru.

Padziļināta skaidrojums

Kāpēc tas notiek? Nu FAT32 failu sistēmai ir jāuzskaita, kur tiek saglabāts katrs fails. Ja būtu jāuzglabā katra baita saraksts, tabula (piemēram, adrešu grāmata) pieaugtu ar tādu pašu ātrumu kā dati - un atkritumiem ir daudz vietas. Tātad, ko viņi dara, ir izmantot "sadales vienības", kas pazīstams arī kā "klasteru izmērs". Sējums tiek sadalīts šajās sadalījuma vienībās, un, ciktāl tas attiecas uz failu sistēmu, tos nevar sadalīt - tie ir mazākie bloki, kurus tā var adresēt. Daudz, piemēram, jums ir mājas numurs, bet jūsu pastnieks rūpējas, cik daudz guļamistabu jūs esat vai kas dzīvo šajās vietās.

Tātad, kas notiek, ja jums ir ļoti mazs fails? Nu, faila sistēmai nav nozīmes, vai fails ir 0 KB, 2 KB vai pat 15 KB, tas piešķirs tam vismazāko vietu, ko tas var - iepriekš minētajā piemērā tas ir 32 KB. Jūsu failā tiek izmantots tikai neliels šīs atstarpes apjoms, bet viss pārējais ir izšķērdēts, bet joprojām ietilpst failā - tāpat kā guļamistaba, kurā jūs atstājat neapdzīvotu vietu.

Kāpēc ir dažādi sadales vienību izmēri? Nu, tas kļūst par kompromisu starp lielāku galdu (adrešu grāmata, piemēram, sakot, ka Johnam pieder māja 123 Fake Street, 124 Fake Street, 666 Sātana Lane uc) vai vairāk izšķērdēta vieta katrā mājā . Ja jums ir lielāki faili, ir lietderīgāk izmantot lielākas sadales vienības - jo fails nesaņem jaunu vienību (māju), līdz visi citi ir aizpildīti. Ja jums ir daudz mazu failu, labi, lai gan, visticamāk, jums būs liels galds (adrešu grāmata), tāpēc var arī dot mazas vienības (mājas).

Lielas sadales vienības parasti aizņem daudz vietas, ja jums ir daudz mazu failu. Parasti nav pamatota iemesla pārsniegt 4 KB vispārējai lietošanai.

Sadrumstalotība

Attiecībā uz sadrumstalotību sadrumstalotība nedrīkst šādi iztīrīt telpu. Lielie faili var būt sadrumstaloti, t.i. sadalīti, vairākās sadalīšanas vienībās, taču katra vienība jāaizpilda pirms nākamā sākuma. Defragēšana sadales tabulās var ietaupīt nedaudz vietas, taču tas nav jūsu konkrētais jautājums.

Iespējamie risinājumi

Kā ieteikts gladiator2345, šajā brīdī jūsu vienīgās reālās iespējas ir ar to dzīvot vai pārformatēt ar mazāku sadales vienību.

Jūsu karte var tikt formatēta FAT16 formātā, kurai ir mazāks galda izmēru ierobežojums, un tādēļ, lai risinātu lielāku apjomu (ar maksimālo robežu 2 GB ar 32 KB lielu sadales vienību), ir vajadzīgas daudz lielākas sadales vienības. Avots pieklājīgi Braiam. Ja tas tā ir, jums jebkurā gadījumā jābūt iespējai droši formatēt kā FAT32.

Vai kaut ko pievienot paskaidrojumam? Skatieties komentāros. Vēlaties lasīt citas atbildes no citiem tehnoloģiju savvy Stack Exchange lietotājiem? Šeit skatiet pilnu diskusiju pavedienu.