» »

NTFS fragmentacija in programi za defrag

NTFS fragmentacija in programi za defrag

matevzm ::

Tole je prevod dela clanka o NTFSju iz iXBTja. Ob debati o Diskeeperju se je pojavilo vprasanje o defragmentaciji in programih za to. Meni se je zdelo kar zanimivo. Nisem prebiral za sabo, lahko je precej napak in s slovnico tudi nisem prijatelj. :)

Clanek je bil objavljen na iXBTju, na njegovem ruskem delu, ne vem ali so ga kaj prevajali. Cel clanek o sistemu dela NTFSja iz julija 2000 ima 3 dele, spodaj je preveden 2. del, fragmentacija NTFSja. Have fun.


Specificnosti fragmentacije NTFSja.


Vrnimo se k dovolj zanimivi stvari - fragmentaciji in defragmentaciji NTFSja. Problem je, da je trenutno razumevanje teh pojmov zal vse prej kot zadovoljivo. Na zacetku smo poslusali, da se datoteke v NTFS ne fragmentirajo. Ko se je izkazalo, da to sploh ne drzi, so trditev spremenili - da NTFS preprecuje fragmentacijo, kar tudi ni cisto res. No ja, preprecuje ze, a ucinovitost je nicna.. Dane sje ze jasno, da je NTFS sistem, ki je bolj kot kateri drugi podrvzen fragmentaciji, ne glede na to, kaj se trdi uradno. Je pa res, da delovanje ne trpi zelo, ker so vse notranje strukture narejene tako, da fragmentacija ne preprecuje hitreg najdbe fragmentov. A od fizicne posledice fragmentacije - premikanja glav - seveda ne resi. Tako gremo pogumno naprej.

O vzrokih...

Kot je znano, se datoteka najbolj fragmentira takrat, ki zmanjkuje prostora na disku. Takrat se zacnejo polniti majhne luknje med drugimi datotekami. Tu se pojavi prva lastnost NTFSja, ki direktno povecuje fragmentacijo.

Disk je pri NTFSju razdeljen na dva dela. V zacetku je MFT del, predel diska, kamor raste MFT - Master File Table. Ta del je velik vsaj 12% diska in zapis datotek v ta predel je nemogoc. To je narejeno zato, da se vsaj MFT ne bi fragmentiral. A ko se zapolni ves ostali disk, se ta del skrci na tocno polovico. :) In tako naprej. Tako imamo ne samo eno zapolnitev diska do konca, a se to lahko zgodi nekajkrat. Rezultat je, da pri disku, zasedenem nad 90%, fragmentacija izjemno naraste.

Stranski ucinek je, da disk, ki je vec kot 88% zaseden, ni mogoce defragmentirati. Tudi API ne more prestavljati datotek v MFT predel. Tako lahko ostanemo brez prostega prostora za premikanje datotek.

Naprej. NTFS dela in se fragmentira, tudi ce je diska se precej. Vzrok je cuden algoritem iskanja prostega prostora na disku, ki je drugi hudi krivec za fragmentacijo. Algoritem pri zapisovanju je takle: vzame se dolocen del diska in se ga do konca zapolni. Z zanimivim algoritmom: najprej se zapolni velike, nato male luknje. Tipicen izgled fragmentirane datoteke na NTFS disku je tako (po velikosti blokov):

16 - 16 - 16 - 16 - 16 - [skok nazaj] - 15 - 15 - 15 - [nazaj] - 14 - 14 - 14 .... 1 - 1 - 1 -1 - 1...

Tak proces gre naprej do najmanjskih lukenj z velikostjo 1 cluster, neglede na to, da je na disku verjetno precej vecjih prostih lukenj.

Spomnimo se stisnjenih datotek - pri spreminjanju takih datotek se na disku pojavlja ogromna kolicina lukenj zaradi preraporeditve stisnjenih datotek. Pri spremenjeni stopnji kompresije je potrebno datoteku dodati prostor izven obstojece verige in ga postaviti drugam, ali pa datoteko zmanjsati in postiti za seboj luknjo.

Poanta tega uvoda je pojasnitev, da ni mogoce reci, da NTFS preprecuje fragmentacijo. Obratno, datoteke z veseljem fragmentira. Fragmentacija NTFS diska po pol leta bo presenetila vsakogar, ki pozna delovanje datotecnih sistemov. zato je potrebno disk defragmentirati. A tu se problemi ne koncajo, sele zacnejo se..


V NT je standardni API za defragmentacijo. Ima zanimivo omejitev pri premikanju blokov datotek: naenkrat je mogoce premikati ne manj kot 16 clusterjev (!), pri cemer se morajo zaceti ti clustri s pozicije, kratne 16 clusterom v datoteki. Drugace receno, vse operacije so samo s 16 clusterji. Posledice:

1. V luknjo, manjso kot 16 clusterjev, ni mogoce dati nic (razen kompresiranih datotek, a ta izjema nas trenutno ne zanima)
2. Datoteka, ki je prestavljena na drug prostor, "zasede" za sabo zacasno se dodatni prostor do kratnosti 16 clusterjev.
3. Pri poskusu premescanja nekako cudno (ne kratno 16) so rezultati pogosto nepredvidljivi. Nekaj se zaokrozi, nekaj ne premakne. Kljub temu se pojavi obilica "zacasno zasedenega" prostora.

"Zacasno zaseden prostor" sluzi lazji obnovi sistema v primeru HW napake in se sprosti cez dolocen cas, obicajno po priblizno pol minute.

Kljub temu je logicno, da se ta API uporablja, ce je ze tu. In ga tudi uporabljajo. Zato je proces standardne defragmentacije, s popravki na omejitve APIja, sestavljen iz naslednjih faz (ne nujno v temo vrstnem redu):

- Prestavljanje datotek iz MFT zone. Ne namerno, samo tja se jih nazaj ne da posneti. :) Neskodljivo, pravzaprav v nekaterih pogledih dobro.
- Defragmentacija datotek. Koristno, ni dvoma. Nekoliko omejeno zaradi omejenosti s kratnostjo, tako da je vcasih potrebno vec prestavljanja, kot bi bilo logicno.
- Defragmentacija MFT, virtualnega datoteke (pagefile.sys) in imenikov. Mozno samo v Windows 2000, drugace pa pri ponovnem zagonu z locenim procesom, kot v starem Diskeeperju.
- Prestavljanje datotek na zacetek diska - tako imenovana defragmenatacija prostega prostora. Ta del je ziva groza.


Recimo, da hocemo prestaviti na zacetek diska datoteke. Vzamemo prvo, jo postavimo, za nju dobimo rep do 16 kratnosti. Prestavimo naslednjo, seveda za repom. Cez nekaj casa, po sprostitivi zacasno zasedenga prostora v repu, imamo luknjo velikosti <16 clusterjev. Ki jo je potem nemogoce zapolniti skozi API defragmentacije! Tako da je situacija pred zacetkom optimizacije priblizno taka: veliko lukenj problizno iste velikosti. Po optimizaciji: ena velika luknja na koncu diska in veliko majhnih lukenj <16 clustejev. In kaj se bo prej zapolnilo? Pravilno, prvi prosti prostor, ki je blizje zacetku diska... Datoteke, zapisane na optimizirani disk, bodo imele noro veliko stevilo fragmentov. Da, lahko se potem disk spet optimizira. In potem spet.. in spet.. in tako vsak teden. Smesno? Realnost..

Tako imamo na voljo dva priblizno ista dobra postopka. Prvi - pogosto optimizacija diska s takim defragmentatorjem in sprijaznjenost z noro fragmentacijo vseh novih datotek. Drugi - pustiti vse pri miru, se sprijazniti z enakomerno, a manjso fragmentacijo vseh datotek.

Zaenkrat obstaja samo en defragmentator, ki ignorira API in dela bolj direktno - Norton Speedisk 5.0 za NT. Ko ga primerjajo z drugimi - Diskeeper, O&O defrag ipd. - ne omenjajo glavne razlike v principu. Preprosto zato, ker se ta problem skriva oz. se ga ne objavlja javno. Speedisk je edini defragmentator danes, ki defragmentira disk popolnoma in ne pusca za sabo malih fragmentov prostega prostora na disku.


Zal so v Windows 2000 vgradil defragmentator, ki dela cez API in posledicno pusca luknje <16 clusterjev. Tako da takoj ko se pojavi Speedisk za w2k (ce se se ni), si ga najdite.

Kot nekaksen zakljucek iz vsega tega: vsi ostali defragmentatorji so preprosto skodljivi. Ce ste ga vsaj enkrat pognali, ga morate potem spet, vsaj enkrat na mesec, da se znebite fragmentacije novih datotek. To je osnovna tezava z defragmentatorji NTFSja, ki se je pojavila zaradi zgodovinskega razvoja.


Loki ::

Ze obstaja.
Rece se mu Diskeeper.

luni ::

matevzm res svaka ti dala za ta prevod... jaz pa sem mislo, da je NTFS v vseh pogledih mocni boljsi od FATA32 in ga zato tud uporabljam.... zgleda da je bla to napaka...

BTW ali obstaja ta Sppedisk za Win2k? Ocitno ga rabim. Pa kdo ve... mogoce bo andrej kaj posredoval in bodo v Whistlerja vgradili spodoben defragmentator.

matevzm, kako to, da beres ruscino? :)
Artificial Intelligentia

andrej ::

To kar pise je res. API zadolzen za premikanje datotek pri defragmenaciji (MoveFile) na NTFS dela na 16 clusterjih. To pa zaradi podpore za kompresirane datoteke. Namrec, kompresirane datoteke se "obdelujejo" v kosih po 16 clusterjev.

Kljub temu defragmentacija ni tako slaba, kot je v clanku napisano - pac odvisno od datotek. To pa iz vec razlogov. Ce upostevamo default velikost cluterjev 4 KB znese 16 clusterjev 64 KB. Ce defragmentiramo datoteke velike par MB, se manjsa fragmentacija ne pozna. Dobra stran te fragmentacije ko pusti malo prostora je, da pri povecanju datoteke ni dodatne fragmentacije. Recimo, da mamo fragmentirano datoteko veliko 50 KB. Ta zasede 13 clusterjev (50 / 4 = 12.5)m kar pomeni, da so 3 clusterji za njo prazni, potem pa sledi naslednja datoteka. V nasem primeru, lahko datoteki dodamo se 12 KB podatkov brez da bi se datoteka fragmentirala. Ce bi kar za njo (brez presledka 3 clusterjev) sledila druga datotaka, bi v njo lahko zapisali samo se 2 KB potem pa bi se ze fragmentirala... Vsaka stvar ma svoje dobre in slabe lastnosti..
Enako velja tudi za SpeedDisk, ki ga tako priporocajo. Tezava je v tem, da ne uporablja javnih in podprtih API klicev ampak nedokumentirane. To pripomore k funkcionalnisti problem pa je ravno v nepodprtosti. Nihce ne ve kako "varni" so ti nedokumentirani klici. Se vecja tezava pa je, da se ponavadi ti klici spremenijo bo vecjih popravkih - Service Packih, zato je za vsak SP potreben popravek za SD, drugace SD ne bo delal, ali pa lahko celo izgubimo podatke!!!

Nihce ni popoln...

Drugace pa site zgleda kar cool, samo skoda da ni v anglescini...:(

andrej ::

luni: v whistlerju bo defragmenter boljsi s podporo za defragmentacijo iz ukazne vrstice in se nekaj drugimi novostmi. Trenutno pa se ne vem ce se bo API kaj spremenil. Ce kaj izvem bom postal...

matevzm ::

Ceprav so v clanku rahlo popljuvali NTFS, bi morali videt sele kaj so naredili iz FAT32. :D
V enem drugem clanku so primerjali razlicne sisteme v win in prisli do zakljucka, da je se najhitrejsi FAT16, a kaj, ko je samo za majhne diske. Zaradi cesa je verjetno tudi hiter... FAT32 pa so mocno odsvetovali za velike diske. Nekje nad 8-10G nikakor ne. (nihce ni popoln, ja)
Anyhow, jaz imam vecinoma NTFS, eno particijo imam 17G FAT32, ker rabim dostop se iz 98 (ME trenutno).
SD 5.1 mi lepo dela v w2k SP1, samo traaajjaaa. Vmes se postaram, preden on premece 20G. Ali pa sistemskega 7G, ki je ves cas v uporabi. Se mi kar disk smili.
Ruscino sem se naucil nekaj let nazaj, ko sem zivel v tistih krajih. In sedaj se je pojavilo nekaj strani v ruscini, ki imajo krasne HW novice. Tako mi je skoraj homepage iXBT (ki je z novicami malce spal prejsnja dva tedna ;(), pa fcenter. iXBT je se fin zaradi obcasnih precej poglobljenih clankov. Zadnje case tudi nekaj tega prevedejo na DigitLife, mogoce je upanje tudi za vse navadne smrtnike. :)

luni ::

ja, morem rec da je iXBT zelo kvalitetna stran... mi je kr malo zal ker ne razumem ruscine, ceprav mi ni najbolj jasno od kje za vraga dobijo ves novi hardver pa to.... tesko si predstavljam da se ga da v rusiji tako lahko dobit... mogoce pa sem samo jaz poln predsodkov?
Artificial Intelligentia

matevzm ::

Rusija je ogromna, je pa res, da je vse skoncentrirano v Moskvi. In imajo tudi nekaj bogatih ljudi. Pri njih je bolj sprejeto razkazovanje bogastva, tako da imajo tudi kupce, ki pridejo in recejo: dajte mi najboljse, me ne zanima cena. :))
Ce pogledas fcenter, bos videl, da imajo veliko HWja. Je pa tudi precej poceni in neznane robe iz vzhodnih dezel.

iration ::

tole je pa še vedno aktualno...
Tudi jaz bi imel kakšno pravico rad v življenju. Npr. pravico do tega, da delam
12 ur na dan in sem za to nagrajen s strani delujočega ekonomskega prostora, ne
pa kaznovan s strani Salmoneličevih gremlinov. - NavadniNimda

andrej ::

se mi trenutno ne da se enkrat brat vseh postov, ampak zadeve so ble izboljsane v XP-jih. predvsem tista z 16 clusterji.

BaRtMaN ::

Kolk clusterjev pol vzame defrag v XPjih za eno 'enoto'?

andrej ::

1. Pa sedaj se lahko degragmentira tudi particije, ki imajo clusterje vecje od 4 KB.

spucek ::

Hm,iskal sem teme o Diskeeperju in sem našel tudi tole.Res zanimivo.
Andrej, kaj je v XPjih najbolje uporabljat za učinkovito defragmentacijo-vgrajen defrag,nortonov speeddisk,ali diskeeperja? Imam pa NTFS, v bistvu sem šel na XPje in NTFS po tvojih predavanjih na FERIju:D ,tak de vsekakor tistih 6 ur ni bilo zaman8-) .

offtopic: ker sedaj v XPjih nimam Norton Utlitiesov,rabm poleg defragmenterja še kak dober in zanesljiv program za čiščenje registra(sedaj imam regcleanerja in jv16 tools),super bi pa bil tut kak program kot je bil v NU,ki ti defragmentira oz zmanjša velikost registra, s tem da fizično izbriše neveljavne vnose.Če jih kar odstraniš z regcleanerji vnosi izginejo,sam velikost registra ostane enaka..in v par mesecih se register razvleče na kr krepke MB,in hitrost winsev kar upade.Hm morda bi blo bolje kar novo temo odpret:P ?naj če en bo odziva tu,bom pa odpru novo:\ .
Previdnost je mati modrosti.

andrej ::

spucek: v bistvu ni nekeka uber defragmenterja. nekateri uporabljajo diskeeper drugi nortona, ce pa nimas denarja pa kar vgrajenega. sam na eni masini upobljam o&o defrag, na drugi pa sploh ne defragmentiram, ker je samo testna masina. prakticno pa z nobenim ne vsekas v temo.

me veseli, da je tistih 6 ur obrodilo sadove. zdaj pa se samo pridi na NEST 2003 pa bo ;)

Caligula ::

Cakte a to je ta defragmenter v Norton System works?
A ta je dober pol?

darkolord ::

Najboljši je Diskeeper (cela verzija)... tisto kar je po defaultu v win je ena od okrnjenih starejših verzij... diskeeper je res dobr in hiter.. recimo ga nastaviš da ti avtomatsko defragmentira pa ti potem vsako uro preveri stanje in defragmentira če je potrebno :D

Mercier ::

Nič posebnega ne vidim v Diskeeperju. Rezultati so, od oka, takšni kot v OS priloženi verziji.

Poleg tega pa ne morem defragmentirati volume-a, priključenega mapi. Enostavno ga ne pokaže. Sploh zoprno, ker je gor moja mapa iz Documents and Settings, ravno zato, da se sistem ne fragmentira preveč.

Ali pa nisem kaj prav naredil?

darkolord ::

oleg tega pa ne morem defragmentirati volume-a, priključenega mapi.


ne razumem, kaj misliš s tem....

drugače so pa "od oka" rezultati res isti, s tem da je Diskeeper veliko hitrejši, "zna" več stvari, ima več načinov defragmentacije itd..

Mercier ::

Mislim na pogon brez črke (C, D, E...), priključen k neki mapi. (v mojem primeru C:\Documents and Settings\my_username)

darkolord ::

ce mislis navidezni pogon, ga je cisto nesmiselno defragmentirat... defragmentiras cel disk in itak s tem defragmentiras tudi to mapo ki je gor

Mercier ::

Ne vem, če se razumeva. No, u bistvu se ne, ker jaz ne vem, kaj je navidezni pogon. (a lahk po domače, angleško) :8)

Kakorkoli, particija je ostala fragmentirana.

darkolord ::

imaš 4 možnosti:
- disk
- particija
- virtual drive (črka ki kaže na eno mapo na drugi particiji oziroma disku)
- mrežni pogon (network drive)

prva dva Diskeeper sigurno defragmentira, s tem hkrati defragmentira tudi tretjega (ki je samo del enega od prvih dveh)...

torej ti praviš da imaš na eni črki Documents and settings... če je tako kot jaz mislim, imaš isti documents and settings tudi na sistemskem disku (torej je tisto samo navidezna kopija)...

Mercier ::

Aha. Ne, to ni to. Pogon (fizična zadeva, del particije) lahko mountaš na mapo. (kot v linuxu, rečmo) Obratna logika - fizično brez črke, ne navidezno s črko.

Tega ni na seznamu Diskeeper-ja in ne defragmentira. Dobro, lahko bi mu še črko pogona dodal, pa skril, ampak sem se ravno temu izogibal.

CaqKa ::

v xpjih imaš možnost da particijo mountaš ne na črko ampak v eno ntfs mapo.
s takimi particijami imajo drugi programi ponavadi probleme.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Defregmentiranje

Oddelek: Strojna oprema
211565 (790) RC37
»

Program za defragmentacijo

Oddelek: Programska oprema
102158 (1951) jan01
»

Čudo prečudno

Oddelek: Pomoč in nasveti
101200 (922) Neznalec
»

kolko kaj defragmentirate vaše diske?

Oddelek: Strojna oprema
241586 (1133) fahrenGONE
»

Kateri program za defrag?

Oddelek: Programska oprema
243389 (2860) Jeebs

Več podobnih tem