Mājas lapa » » Kāpēc ir liela atšķirība starp lielumu un izmēru diskā?

    Kāpēc ir liela atšķirība starp lielumu un izmēru diskā?

    Lielāko daļu laika "lieluma" un "lieluma diskā" vērtības būs ļoti tuvas saskaņošanai, pārbaudot mapes vai faila lielumu, bet kas notiks, ja starp abiem ir milzīga atšķirība? Šodienas SuperUser Q&A ziņa aplūko atbildi uz šo mulsinošo problēmu.

    Šodienas jautājumu un atbilžu sesija mums dod pieklājību no SuperUser-Stack Exchange apakšnodaļas, kas ir kopienas orientēta Q & A tīmekļa vietņu grupa.

    Jautājums

    SuperUser lasītājs thelastblack vēlas uzzināt, kāpēc ir tik liela atšķirība starp "Size" un "Size on disk" mapē viņa tālruņa SD kartē:

    Kā redzams zemāk, šīs mapes laukos lauki "Izmērs" un "Izmērs diskā" ir tik daudz atšķirīgi. Kāpēc ir tā, ka?

    Es zinu, ka Windows izmēra sadales vienību dēļ "lielums uz diska" ir nedaudz lielāks par "lielumu", bet kāpēc ir tik liela atšķirība? Vai tas varētu būt lielo failu skaita dēļ?

    BTW, šī mape ir manā Android tālruņa SD kartē. Manā kartes lietotnē tiek saglabātas tās kešatmiņā saglabātās kartes, un lietotne saņem kartes no Google Maps.

    Aplūkojot ekrānuzņēmumu, noteikti ir milzīga neatbilstība starp “Izmērs” un “Diska uz diska”, tāpēc tas, kas šeit ir noticis, lai radītu šo?

    Atbilde

    SuperUser ieguldītājam Bobam ir atbilde:

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

    Ja jums ir daudz mazu failu, tas noteikti ir iespējams. Ņemiet vērā:

    • 50 000 failu
    • 32 KB klasteru lielums (piešķīruma vienības), kas ir maksimālā vērtība FAT32

    Labi, tagad minimums veiktā vieta ir 50 000 * 32 000 = 1,6 GB (izmantojot SI prefiksus, nevis bināro, lai vienkāršotu matemātiku). Vieta, kurā katrs fails uzņem disku, vienmēr ir sadalījuma vienības lielums - un šeit mēs pieņemam, ka katrs fails ir faktiski pietiekami mazs, lai ietilptu vienā vienībā, ar dažiem (izšķērdētajiem) laukumiem paliek pāri.

    Ja katrs fails ir vidēji 2 KB, jūs saņemsiet aptuveni 100 MB kopsummas - bet jūs arī vidēji izšķērdēsiet 15 reizes (30 KB par failu), jo piešķiršanas vienības lielums.

    Dziļuma skaidrojums

    Kāpēc tas notiek? FAT32 failu sistēmai ir jāseko līdzi, kur tiek glabāts katrs fails. Ja būtu jāuztur saraksts ar katru baitu, tabula (piemēram, adrešu grāmata) augtu tādā pašā ātrumā kā dati - un izšķērdētu daudz vietas. Tātad, ko viņi dara, izmanto “sadales vienības”, kas pazīstamas arī kā “kopu lielums”. Apjoms ir sadalīts šajās sadales vienībās, un, ciktāl tas attiecas uz failu sistēmu, tos nevar iedalīt - tie ir mazākie bloki, kurus tā var risināt. Līdzīgi kā jums ir mājas numurs, bet jūsu pastnieks nezina, cik daudz guļamistabu jums ir vai kas dzīvo tajos.

    Tātad, kas notiek, ja jums ir ļoti mazs fails? Labi, failu sistēma nav aprūpi, ja fails ir 0 KB, 2 KB vai pat 15 KB, tas dos tai vismazāko vietu, ko tas var - iepriekš minētajā piemērā, tas ir 32 KB. Jūsu fails tiek izmantots tikai nelielā apjomā no šīs vietas, un pārējais pamatā ir izšķērdēts, bet tas joprojām pieder failam - tāpat kā guļamistaba, kuru jūs atstāt bez maksas.

    Kāpēc ir dažādi sadales vienību izmēri? Nu, tas kļūst par kompromisu starp lielāku tabulu (adrešu grāmatu, piemēram, sakot, ka John pieder mājai 123 Fake Street, 124 Fake Street, 666 Satan Lane uc), vai vairāk izšķērdēta vieta katrā vienībā (mājā) . Ja jums ir lielāki faili, ir lietderīgāk izmantot lielākas piešķīruma vienības - jo fails nesaņem jaunu vienību (māju), līdz visas pārējās ir aizpildītas. Ja jums ir daudz maza izmēra failu, tad, iespējams, būs liels galds (adrešu grāmata), tāpēc var arī dot viņiem nelielas vienības (mājas).

    Lielas sadales vienības parasti zaudēs daudz vietas, ja jums ir daudz mazu failu. Parasti vispār nav pietiekams iemesls, lai pārsniegtu 4 KB.

    Sadrumstalotība?

    Kas attiecas uz sadrumstalotību, sadrumstalotībai nevajadzētu tērēt vietu šādā veidā. Lieli faili var būt sadrumstaloti, t.i., sadalīti vairākos piešķīruma vienībās, bet katra vienība ir jāaizpilda, pirms tiek sākta nākamā. Defragmentēšana var ietaupīt nelielu vietu piešķiršanas tabulās, taču šī nav jūsu konkrētā problēma.

    Iespējamie risinājumi

    Kā ierosināja gladiator2345, jūsu vienīgā reālā iespēja šajā brīdī ir dzīvot kopā ar to vai pārformatēt ar mazākām sadales vienībām.

    Iespējams, ka jūsu karte ir formatēta FAT16, kurai ir mazāks ierobežojums attiecībā uz galda izmēru, un tāpēc ir nepieciešamas daudz lielākas piešķīruma vienības, lai risinātu lielāku apjomu (ar 2 GB lielāko ierobežojumu ar 32 KB piešķiršanas vienībām). Avots pieklājīgi no Braiam. Šādā gadījumā jums jebkurā gadījumā jābūt iespējai droši formatēt FAT32.


    Vai kaut kas jāpievieno paskaidrojumam? Skaņas izslēgšana komentāros. Vai vēlaties lasīt vairāk atbildes no citiem tehnoloģiju gudriem Stack Exchange lietotājiem? Apskatiet pilnu diskusiju pavedienu šeit.