Nélkülözhetetlen segédprogram, de melyiket válasszuk?

Már az elején felmerül a kérdés, hogy miért van szükség töredezettség-mentesítő programra. Itt valójában két használati szempontot lehet megkülönböztetni. Az első, amikor tudatosan a gyorsabb működés érdekében optimalizáljuk partíciónkon a fájlok elhelyezkedését, erre leginkább az NT kiszolgálók illetve a hozzáértőbb NT munkaállomás felhasználók esetén kerül sor, s itt nem mindegy, hogy milyen programot választunk. A másik eset a "nagytakarítás" esete, hogy jobban érezzük magunkat, ha rend van körülöttünk, így van ez gépünkkel is, tehát "rendet rakunk" egy segédprogrammal winchesterünkön. A végeredmény az egybefüggő fájl és szabad terület, ezt a fejlesztők - tán gúnyosan - "szép lemeznek" nevezik, pedig korántsem csak ennyi az elvárás egy töredezettség-mentesítő programtól.
  

1. kép - Speed Disk DOS-hoz, a régi ismerős
 DOS alatt a töredezettség mentesítés viszonylag egyszerű probléma, az operációs rendszer, a DOS (pl. MS-DOS 6.22-ig) kizárólagos joggal rendelkezik a számítógép felett. Továbbá nem kell a fejlesztőknek azzal törődniük, hogy különböző task-ok a töredezettség mentesítés során írni akarnának fájlokba, sőt mivel nincs operációs rendszer szinten beépített cache - fájl művelet gyorsító - még ezzel (ennek szinkronizálásával) sem kell a fejlesztés során bajlódni. Így viszonylag egyszerűen, közvetlen fizikai lemezműveletekkel a FAT fájl-rendszer egyszerűsége révén könnyen optimalizálható a töredezett fájl struktúra. DOS alatt legelterjedtebb a Symantec cég, Speed Disk programja volt (1. kép), mely számos verziót megélt. Ilyen program fejlesztése DOS alá oly annyira nem bonyolult feladat, hogy jártasabb rendszer-programozók nagyobb nehézségek árán viszonylag jó programokat fejleszthettek, így a fent nevezett Speed Disk mellett még számos cég adott ki ilyen programot. Nem így van ez a multi task-os operációs rendszereknél. Már a Windows 95 alá fejlesztett töredezettség-mentesítők készítése során jelentősen több probléma akadt, mint elődjénél, a DOS során. Mindemellett viszonylag jó és megbízható termékek láttak napvilágot, nagyrészt a FAT fájl-rendszer egyszerűségének köszönhetően. Persze érdemes megemlíteni, hogy ilyen, multi task-os környezetbe nagyrészt másmilyen algoritmusú, felépítésű töredezettség-mentesítő kell, bár ez a Windows 95/98 rendszereknél nem kellett, hogy elvárás legyen (révén nem kiszolgálók). Az igazi probléma a Windows NT operációs rendszer illetve az NT natív állomány rendszerének az NTFS-nek az elterjedésekor jelentkezett. Az NTFS-t eleve úgy tervezték, hogy lehetőség szerint minimalizálja a fájl töredezést, így sokan azzal érveltek, hogy nincs is szükség NTFS-hez töredezettség-mentesítőre. Őket és a kételkedőket az idő megcáfolta és kiderült, hogy talán jobban szükség van NTFS-hez a töredezettség-mentesítőkre, mint a jó öreg FAT-hoz.

Előző az NTFS fájl-rendszerről szóló írásunkbol, egyértelműen kiderül, hogy az NTFS "lelkét" alkotó MFT (Master File Table - Mester Fájl Tábla) lévén, hogy valójában ő is egy fájl, a fájlokhoz hasonlóan töredezhet. Így a partíció, a fájlok elérési adatait, illetve jellemzőit tartalmazó tábla hozzáférési ideje jelentősen nő, így lassítva az egész rendszert. Az NTFS fájl-rendszerű partíciók töredezettség mentesítésének szükségességét először az Executive Software ismerte fel, és még Windows NT 3.51-hez mutatta be töredezettség-mentesítő programját, a Diskeeper-t. Mivel a Windows NT már nem csak egy munkaállomás egyszerű operációs rendszere, hanem kiszolgálóké is, így még nagyobb jelentősége volt egy ilyen program fejlesztésének, hisz a géphez forduló nagyszámú felhasználók várakozási idejét is csökkentette az optimálisabb - egybefüggő - fájl elrendezés végett. Azonban koránt sem volt ilyen egyszerű az NT-s töredezettség-mentesítő programok fejlesztése: az NTFS az egyik legösszetettebb és legbonyolultabb fájl-rendszer. Beépített cache-sel rendelkezik, így számos rendszerstruktúrát, fájlt és jellemzőt memóriában tart, nem is beszélve a megannyi egyidőben történő fájl hozzáférésről, módosításról. Az NTFS a Windows NT 3.51 során nem rendelkezett beépített cluster mozgató eljárással, így eleinte az Executive Software saját NTFS és FAT fájl-rendszer vezérlő-programokat adott Diskeeper programuk mellé. Ez a továbbiakban a service pack-ek (javítócsomagok) kiadása során számos kalamajkával járt, részint a Diskeeper lecserélte az újabb NTFS vezérlőt, vagy fordítva, ami mind a felhasználók, mind a Microsoft részére számos kellemetlenséggel járt.

A Windows NT 4.0 fejlesztése során nyílt lehetőség arra, hogy az Executive Software és a Microsoft bemutassa a töredezettség mentesítés beépített támogatását. A Microsoft operációs rendszerekhez hűen itt is csak a lehetőség volt adott, konkrét segédprogramot nem mellékeltek az NT rendszerekhez. Még egy egyszerűbb, "butított" verzió sem került a Windows NT 4.0 mellé, úgy ahogy ezt az MS-DOS 6.2-ben a Microsoft megtette a defrag (Symantec, a Speedisk egyszerűsített változata) programmal. A felhasználók nyomására a Windows 2000-ben (Windows NT 5.0) már lesz egy egyszerű defragmentáló program (a Diskeeper lebutított változata).

Az NT defragment API-ja
  

2. kép - Fájl és szabad hely töredezés
A Windows NT 4.0 töredezettség mentesítés támogatása a fájl-rendszer vezérlő (FSCTL: file system control) parancsokon alapul. A továbbiakban ezen parancsokat, illetve funkciókat tekintjük át, hogy tisztában legyünk az NTFS partíciók töredezettség mentesítésének nehézségeivel. Az alábbi négy FSCTL-t mutatták be a töredezettség mentesítéshez: FSCTL_GET_VOLUME_BITMAP, FSCTL_GET_RETRIEVAL_POINTERS, FSCTL_MOVE_FILE, FSCTL_READ_MFT_RECORD. Ezek a funkciónevek nem feltétlenül a Microsoft által használatos hivatalos nevek - ugyanis ezek nem közismertek -, viszont jól megvilágítják a parancsok funkcióit. Az első három mind NTFS illetve mind FAT fájl-rendszerek esetén használható, míg a negyedik az MFT révén nyílván csak NTFS környezetben nyeri el funkcióját. Ez a parancs lehetővé teszi, hogy nagyon pontos információkat szerezzünk egy fájlról, illetve a partíció fájljairól, annak elhelyezkedéseiről, viszont nem dokumentált NTFS adatstruktúrák is szükségesek használatához, így nem foglalkozunk vele. A maradék három FSCTL viszont tökéletesen elegendő ahhoz, hogy úgy fejlesszenek - fejlesszünk - töredezettség-mentesítő programot, hogy nem ismerjük sem az NTFS adatstruktúrákat, sem az adott pillanatban módosított vagy a cache-elt állományokat. Ez nagyon fontos szerepet játszott az NTFS Defragment API kialakítása során. Csupán két fogalmat kell ismerni az NTFS filozófiájából: LCN-nel jelölik a partíció adott logikai cluster-ét, pl. LCN 1234, a 1234. logikai cluster (LCN: Logical Cluster Number). Míg az egy fájlon belüli cluster-eket VCN-nel, az-az virtuális cluster számmal (VCN: Virtual Cluster Number) jelölik. A VCN 0 a fájl első (a nulladik) cluster-ét jelöli, mely fenti példánkban az LCN 1234-ben található.

A FSCTL hívásokat a Windows NT kernel módú könyvtára az NTDLL.DLL fájl (\WINNT\SYSTEM32\) szolgálja ki számos más, pl. operációs alrendszeri funkcióval együtt. A fent megnevezett FSCTL-ek közül legelőször az FSCTL_GET_RETRIEVAL_POINTERS parancsot használják a töredezettség mentesítő programok, ennek segítségével lehet lekérdezni egy adott fájl elhelyezkedését, az elfoglalt cluster-ek listáját. A visszaadott lista megmutatja, hogy a fájl melyik VCN-éhez melyik LCN tartozik. A második FSCTL parancs a FSCTL_GET_VOLUME_BITMAP, melynek segítségével a partíció üres - illetve foglalt - cluster-eit kérdezhetjük le. Ez is fontos parancs, hisz tudni kell, hogy hova lehet majd mozgatni más fájl cluster-ét. A visszaadott bit tömbben az 1-es bitek a foglalt, míg a 0-s bitek a szabad cluster-eket jelentik. Végezetül most, hogy már mind a fájlról és mind a partíció üres cluster-eiről begyűjtötte programunk a szükséges információkat nekiállhatunk töredezettség mentesíteni partíciónkat, illetve fájljainkat. (Hogy valójában mit is töredezettség mentesítünk: a fájlt, vagy a partíciót? Bonyolult kérdés: valahol az arany középutat kell a töredezettség-mentesítő algoritmusnak megcéloznia, ugyanis mindkettő megoldásnak van hátránya.) Az FSCTL_MOVE_FILE parancs hivatott az adott fájl, adott cluster-einek a szabad helyre történő átmozgatására. A parancs csak 4 KB-os vagy kisebb cluster méretű partíciókon használható így, ha a FORMAT paranccsal 4 GB-osnál nagyobb méretű partíciót készítünk biztosan nem működik ez a parancs, és ezzel együtt számos defragmentáló program. A másik fontos dolog, hogy a - move-file - parancs által felszabadított hely nem használható azonnal egy másik cluster "odamozgatására", ugyanis a véglegesítés, csak a határpont (checkpoint) képzésekor történik, ami kb. minden 4-5 másodpercben zajlik le. A fájlok töredezettség mentesítése során fontos, hogy a másik folyamat (program) által kizárólagosra megnyitott fájlt nem lehet töredezettség mentesíteni. Így sem a paging file-t, sem a registry-t, sem az NTFS adatstruktúrákat, és főképp az MFT-t nem lehet ezekkel a szabványos parancsokkal töredezettség mentesíteni. Továbbá ezt a fájl mozgató rutint úgy írták meg, hogy csak adat fájl cluster-eket tud mozgatni, könyvtár vagy meta-adatokat nem, így a könyvtárak sem töredezettség mentesíthetőek ezzel a szabványos - és igen megbízható ! - eljárással.

Ebből a rövid elméleti összefoglalóból talán az tűnik ki, hogy milyen egyszerű töredezettség-mentesítő programot írni. Valóban, tényleg egyszerű olyan programot írni, mely a cluster-eket ide-oda mozgatja, hisz ezt már egyszerűen megtehetjük az alábbi példaprogrammal. Viszont a felsorolt számos buktató mellett ott van a legfőbb probléma, hogy igen jó, hatékony töredezettség-mentesítő algoritmust (algoritmusokat) kell kifejleszteni. Ezen algoritmusoknak egyszerre kell: a mind a fájlokat, mind a partíciót és nem utolsó sorban az üres helyet töredezettség mentesíteni. (Ugyanis a szabad hely is töredezve van a partíción, itt egy kis szabad hely, majd 456 cluster-nyivel arrébb egy kicsit nagyobb. A töredezett hely pedig a későbbiekben növeli a fájl töredezést. Lásd 2. kép.) Továbbá olyan algoritmusokat kell kifejleszteni melyek nem csak hatékonyak, hanem a fájl mozgatások számát is minimalizálni kell, avagy ezzel a töredezettség mentesítési időt csökkenteni. A probléma - az algoritmus - összetett, így nem csoda, hogy neves szoftverházak is csak "köztes" megoldásokat tudtak kifejleszteni. A "köztes" megoldások alatt értem a nem eléggé hatékony - de funkcióját jól ellátó - algoritmusokat (pl. Diskeeper), továbbá az egyszerűbb algoritmusok használatát nem szabványos - nem a fentiekben ismertetett - parancsokkal (pl. Speed Disk), melyeknek megbízhatósága elvileg megkérdőjelezhető.

Itt megtalálható Mark Russinovich töredezettség-mentesítő példaprogramja (vagy itt: http://www.sysinternals.com/defrag.htm) és forráskódja, melyet a szakmaibb részletek iránt érdeklődő Olvasóink áttanulmányozhatnak. A példaprogram a help-jében megadott módon le tudja kérdezni a partíció üres cluster-einek listáját, az adott fájl helyfoglalását, illetve át tudja ezekkel a szabványos hívásokkal mozgatni a fájl egyes - vagy összes - cluster-eit. (A program nyugodtan kipróbálható, hibát nem okozhatunk vele, hisz a szabványos FSCTL hívásokat használja!)

Töredezettség-mentesítők a gyakorlatban

Két neves cég töredezettség-mentesítő programját teszteltük számos körülmény között. A teszt a probléma sokrétűsége miatt egészen sokáig elhúzódott, így sikerült a programokat mind hétköznapinak nevezhető, mind szélsőséges körülmények között "vizsgáztatni". A programok tesztelésekor a fent ismertetett elméleti rész fontos volt, ugyanis tudni kellett értékelni egyes programok szolgáltatását: "nem mind arany, ami fénylik" állítja bölcsen a közmondás. A két töredezettség-mentesítő program a nem rég megjelent (és hazánkban a cikk megjelenésekor már kapható) Executive Software cég Diskeeper 5.0 (DK5) illetve a Symantec cég Speed Disk 5.0 (SD5) verziójú programja. Mindkét program számos fejlődésen ment keresztül, viszont a közös 5.0-s verzióra teljesen kettévált működési elvük, melyről az alábbiakban szót ejtünk. A két tesztelt program mellett létezik még másik három - idehaza tudomásom szerint nem kapható - töredezettség-mentesítő, a PerfectDisk NT, O&O Defragmentation, és a VoptNT. A Windows NT-s világban idáig leginkább a Diskeeper program volt elterjedve - mi is ezt ismertük, a 4.0-s változatot -, bár a konkurens termékek újításai ezt megváltoztathatják.

Diskeeper 5.0

A telepítés elkezdése előtt fontos meggyőződnünk az alábbiakról: telepítettük-e már legalább az NT Service Pack 3-at (NT SP3: a 3-as javítócsomag NT-hez) illetve, hogy rendszergazdai jogokkal léptünk-e be. Továbbá, amennyiben régebbi Diskeeper is van számítógépünkön, uninstalláljuk azt. A telepítő egyszerű és kényelmes. Legelőször meggyőződik arról, hogy a Diskeeper-höz (illetve az MMC-hez) szükséges verziójú, 4.01-es Internet Explorer (IE 4.01) telepítve van -e. Amennyiben nincs, akkor az IE 5.0 telepítését ajánlja föl, ahol a szokásos, a minimális illetve a testre-szabható telepítési módok közül választhatunk. Egy újra indítást követően folytatódik a telepítés a régebbi Diskeeper programok automatikus eltávolításával, amennyiben ezt még nem tettük volna meg. Harmadik lépcsőként a megfelelő - 1.1-es - verziójú MMC (Microsoft Management Console) komponenst telepíti gépünkre, amennyiben az még nem található meg. A következő fázis a DCOM csomag vizsgálata: ez Windows NT 4.0 illetve Windows 98-nál minden esetben megtalálható, így a DCOM csomag telepítésre csak a Windows 95-ös rendszerek esetén kerül sor. Ezután történik a konkrét Diskeeper telepítés, mely pillanatok alatt befejeződik. Végül lehetőségünk van online regisztrációra, melynek később még hasznát vehetjük. Az utolsó lépcső a Diskeeper új szolgáltatásának, a Frag Guard-nak a beállítása, ezt alább részletezzük. A telepítés befejezése után újraindítjuk számítógépünket. A Diskeeper-t természetesen telepíthetjük SMS-sel (Microsoft System Management Server) is.
  

3. kép - NTFS partíció elemzésének eredménye
Az újraindítás után a Diskeeper-t futtatva új felület tárul szemünk elé, a Diskeeper 4.0-hoz képest kicsit átalakították a felhasználói felületet. Fontos már az elején megjegyezni, hogy rendszergazdai jogosultságok szükségesek a program futtatásához. Az új felhasználói felület egyik oka a mára már elterjedt MMC használata, mely keretfelületet nyújt a rendszer segédprogramoknak. Továbbra is megtalálhatóak a meghajtónevek felsorolva, de kibővítették a fájl-rendszer típus, a partíció méret, a szabad hely megadásával, így könnyebben eligazodhatunk, hogy mely meghajtókat érdemes töredezettség mentesíteni. Lehetőség van a DK5 verziójában is a partíció analizálásra, ekkor tájékoztatást kapunk a pontos töredezettségi állapotról illetve arról, hogy rendelkezésre áll-e elég hely a töredezettség mentesítéshez (3. kép). Amennyiben az ajánlott 20% alatt van a szabad hely, akkor mindenképen érdemes felszabadítani valamennyit, hogy elérjük az ajánlottat, bár tapasztalataink szerint érdemesebb 20%-nál többet, kb. 24-27%-nyi szabad helyet "keríteni". Az aránylag nagyobb méretű szabad hely azért fontos, mert a Diskeeper a - fent tárgyalt - Windows NT beépített fájl mozgató hívásait használja, mely cluster-ből cluster-be mozgat, így nagyobb - összefüggő, nem töredezett - hely esetén gyorsabb és hatékonyabb lesz a töredezettség mentesítés. Ne lepődjük meg, hogy a DK5 pl. 25% szabad hely esetén azt írja ki, hogy csak 18% használható szabad hely áll rendelkezésre. Ennek az az oka, hogy az MFT számára fenntartott szabad helyet nem lehet töredezettség mentesítésre - se - használni. (Az MFT számára fenntartott hely - MFT zone - általában a meghajtó 12%-a, melyre csak akkor lehet írni, ha már máshol nincsen hely a partíción. Ekkor valójában nem is az MFT zónába írunk, hanem az MFT zónát rövidíti le az NTFS vezérlő, így felszabadul használható hely. Az MFT zónát használó fájlok törlésekor a zóna újrafoglalódik.)
 
4. kép - NTFS partíció töredezettség mentesítése

  
5. kép - Egy ebédidőre ütemezett töredezettség mentesítés
6. kép - Boot idejű MFT, könyvtárstruktúra, és paging fájl töredezettség mentesítés
A töredezettség mentesítésnek alapvetően két módja van: az egyik a kézi, melynél megfigyelhetjük a művelet menetét (4. kép), a másik és talán kényelmesebb az automatikus, az előre beállítható. A kézi futtatás gyorsabb, az automatikus lassabb alapesetben. Ezt az Action menü Priority dialógusában állíthatjuk át. Az automatikus futtatást a Diskeeper Set It and Forget It (állítsd be és felejtsd el) funkciónak nevezi, mely valójában a töredezettség mentesítés ütemezését jelenti. (Action menü, Set It and Forget It ...) Beállíthatjuk, hogy minden pénteken délután, vagy akár minden nap ebédidőben automatikusan induljon el (5. kép). Első használatkor amennyiben nem kívánunk sokat bajlódni vele, érdemes beállítani, hogy huzamosabb ideig - kb. 2 óráig - folyamatosan fusson, így odafigyelés nélkül töredezettség mentesíti a kiválasztott partíció(ka)t. Így az első kézi, vagy automatikus futtatás után a következő ajánlott lépcső az MFT, a könyvtár-struktúra, illetve a paging file (virtuálismemória fájl) töredezettség mentesítésének elindítása. Ez csak Windows NT esetén használható, és a számítógép újraindításakor fut le, amikor az NT "kék betöltő képernyője" látható. Ilyen állapotban fut a program, és akár fél órát is igénybe vehet, tehát ez egy újabb ebédszünet alkalmával érdemes elindítani (6. kép). Erre csak egyszer, első futtatáskor van igazából szükség (vagy nagy helykihasználás mellett is csak több havonta egyszer). Erre az újraindításos módszerre azért van szükség, mert az MFT illetve a többi rendszeradat nem töredezettség mentesíthető - szabványos hívásokkal - használat közben (online) így egy boot-oláskor működő külső programra van szükség. Az Executive Software illetékesei szerint ez a boot-oláskor lefutó program, hasonlóan a DK5 online futó részéhez - a fent tárgyalt - szabványos hívásokat használja. (Bár ezt egy szakértővel együtt bizonyos okok miatt kérdésesnek tekintem.)

Miután az MFT-t, a könyvtárakat és egyéb rendszeradatokat is töredezettség mentesítettük, érdemes beállítani az automatikus, pl. naponkénti futtatásra. A hatékonyabb futtatás véget számos apróbeállításra van lehetőségünk. Az első, amit feltétlenül állítsunk be, a mellőzendő, nem defragment-álandó fájlok listája (Action menü, Exclusion List). Itt érdemes az átmeneti, ideiglenes temp és cache fájlokat felvenni, ahogy ezt az 7. kép is mutatja. A következő beállítás a DK5 újítása - fent már megemlítettük - a Frag Guard opció. Itt lehetőségünk van a paging file (virtuálismemória fájl) és az MFT töredezésének megelőzésére. Ez valójában egy egyszerű segédprogram mely figyeli, hogy tud-e az MFT illetve a paging file tovább növekedni. Amennyiben elfogy a közvetlen szabad hely, fájlok átmozgatásával - ha van rá lehetőség - szabadítja fel az MFT-t követő helyet. Amennyiben még is töredezne az MFT vagy a paging file, akkor automatikusnak elindítható a boot-oláskor lefutó segédprogram, melynek futtatási idejét beállítatjuk. Érdemes beállítani, hogy a felhasználó jóváhagyását (confirmation) kérje az újraindításhoz (8. kép). Windows NT munkaállomásoknál a töredezettség mentesítés a DK5 programmal ilyen egyszerűen megoldható, igazából nem igényel további beavatkozást. Egyszer feltelepítjük, majd első használatkor "rendet teszünk a partíción" és beállítjuk az ezutáni automatikus működést.
 

 8. kép - A Diskeeper Frag Guard segédprogramjának
beállítása
7. kép - Nem defragmentálandó fájlok felvétele
 

Windows NT szerver esetén azonban már más a helyzet. Itt telepítés után - egy alkalommal - érdemes éjjelre beállítani - nagyobb prioritással - a töredezettség mentesítést, majd az MFT-t, könyvtárakat illetve rendszeradatokat egy a felhasználókat kevésbé zavaró időpontban töredezettség mentesíteni a boot-oláskor futó programmal. Ezután itt is beállítható az MFT töredezésének megelőzése, a Frag Guard programmal. Az automatikus töredezettség mentesítés bármikor futhat, ugyanis a DK5 algoritmusa se nem foglalja le a kiszolgálót, és nem növeli jelentősen a töredezést a program futása során. (A töredezettség a defragmentálás során eleinte mindig nőni szokott, ugyanis helyet kell teremteni a töredezettség mentesítéshez, és ez egyes fájlok egyes részeinek átmozgatásával jár, ami növeli eleinte a töredezettséget. 

9. kép - Távolról, kézileg defragmentálni kívánt gép kiválasztása
A kérdés az eleinte megnőtt töredezettség mértéke illetve, hogy meddig áll fent ez az állapot. Ebben a DK5 jól szerepelt, ugyanis nem növeli túlságosan a töredezettséget, illetve az első "hely teremtő" fázis után gyorsan csökken a fájl töredékek száma.) Előnyei ellenére természetesen érdemes éjszakára - illetve kevésbé használt periódusra - időzíteni.

A Diskeeper-nek létezik szerver verziója mellyel lehetőség nyílik más gépek távoli defragmentálására. A DK5 szerver verzió futhat mind Windows NT munkaállomásos és mind szerveren. Itt egyszerűen kiválaszthatjuk a menedzselni kívánt gépet (9. kép), majd vagy közvetlenül töredezettség mentesítjük (a saját gépnél lévő módon hasonlóan látjuk a folyamatot), vagy a DK5 szerver segítségével ütemezzük a töredezettség mentesítést. Az ütemezés esetén a felhasználó munkája alatt, háttérben folyik a töredezettség mentesítés. A távoli defragmentálás feltétele, hogy a távoli gépre telepíve legyen a DK5 munkaállomás vagy szerver verziója.

Speed Disk 5.0

A Speed Disk eddig nem tartozott az NTFS töredezettség-mentesítők élvonalába, ez az új verzió viszont sokat változtathat pozícióján. A Speed Disk 5.0 (SD5) telepítése is egyszerűen zajlott le, pillanatok alatt telepítette a szükséges csomagokat és kiegészítéseket. Az újraindítás során a Symantec-től megszokott, könnyen kezelhető felhasználói felületet kapjuk, bár a partíció egyes cluster-eit reprezentáló grafikai rész kevésbé áttekinthető, mint a Diskeeper-nél. (Persze nem ez az elsődleges egy ilyen programnál.) A program négy fő részre oszlik (bal oldalt választhatunk): a töredezettség mentesítésre, az analizálásra, a partíció optimalizálásának beállításra, és az ütemezésre. Itt is lehetőség adódik az analizálásra, külön diagramban és szövegben is leolvasható a töredezettség mértéke, továbbá a leginkább töredezett fájlokat is felsorolja az elemzés (10. kép). Telepítés után, első használatkor általában szükséges a töredezettség mentesítés, így következő lépésben az Optimization Map gombot kiválasztva megkapjuk a defragmentáló ablakot, a meghajtók felsorolásával (11. kép). A töredezett FAT illetve NTFS meghajtókat bőséges szabadidőnk esetén optimalizáljuk, ugyanis relatíve sok időbe telik a teljes partíció első "rendezése". Hogy miért optimalizációt említek, és nem töredezettség mentesítést?
 

10. kép - A Speed Disk NTFS partíció elemzése
11. kép - Speed Disk optimalizálás közben

Nos az SD5 újításai között sokat emlegetett tulajdonsága, az optimalizáció. Ez abban áll, hogy nem egyszerűen töredezettség mentesíti a fájlokat, illetve a partíciót, hanem a fájlokat utolsó használati idejének megfelelően sorrendbe rakja: amelyeket két hónapon belül használtuk utoljára, azokat rakja a partíció elejére, majd a két és négy hónap között módosított fájlok, majd a két hónapja módosítottak, és hasonló felosztásban a maradék fájlok, végül a szabad - egybefüggő - hely és a felhasználó által utoljára helyezett fájlok. Ez az optimalizáció a Symantec szerint csökkenti a fájlok elérési idejét. Ezt több szakértő véleményével együtt nem támaszthatom alá. Az igaz, hogy a winchester elején elhelyezkedő fájlok kis mértékben gyorsabban olvashatóak be, mint a közepén vagy a végén elhelyezkedőek, persze egyáltalán nem biztos, hogy a partíció a wichester elején található, hogy a legegyszerűbb esetet tekintsük. Ezen kívül számos olyan eset áll fent amikor van, és van amikor nincs semmi előnye. Azon esetekben, amikor ténylegesen rendelkezik előnnyel, az így nyert "sebességnövekedés" elhanyagolható. Az optimalizáció mindennek ellenére rendelkezik előnnyel - is -, ugyanis a partíción a szabad helyet töredezettség mentesíti egy darabban a partíció végére, ez nem mondható el a Diskeeper 5.0-ról mely csak a saját műveleteihez szükséges módon hoz létre egybefüggő szabad helyet. A szabad hely egybefüggősége pedig fontos szempont a további töredezés elkerülése végett, mindamellett, hogy az Executive Software nem látta be a Diskeeper ezen hiányosságát. Az optimalizáció további előnye, hogy a töredező fájlok a partíció viszonylag kis részére korlátozódnak így elég lenne csak azt a részt töredezettség mentesíteni a további defragmentálások során. Viszont a Speed Disk szinte minden esetben teljes mértékben optimalizálja a meghajtót, így ha egy régen használt fájlt most nyitunk meg, akkor annak a gyakran használt fájlok között a helye, tehát számos fájlt kell elmozgatni, hogy azt oda helyezhessük, így hosszúra nyúlik az optimalizáció. (Igaz az egyes partíció részek után hagy üres helyet, hogy odamozgathassa a megváltozott fájlokat, de ez legtöbbször kevésnek bizonyult.) Ez a teljes optimalizáció viszont nem jelent annyi teljesítmény növekedést, hogy érdemes lenne - napközben - ezzel terhelni egy kiszolgálót. Véleményem szerint sokkal hasznosabb lenne, ha külön rendelkezne a Speed Disk egy teljes optimalizációval, illetve egy "gyors" töredezettség mentesítéssel. Ez valójában két különböző filozófiájú, a Diskeeper illetve a Speed Disk féle algoritmus ötvözését jelentené, így kaphatnánk igazán hatékony algoritmust. Tesztjeink során fontos volt az első töredezettség mentesítés, majd a módosított adatok újra rendezése, optimalizálása. A Diskeeper könnyen vette az akadályt, ugyanis csak a töredezett fájlok "rendbe állításával" törődött, míg a Speed Disk jórészt átrendezte a fájlok elhelyezkedését, ugyanis amit most módosítottunk az kikerült a gyakran használt és nem módosított partíció részből, és a partíció vége felé, az üres hely elé került. Ez számos fájl - fölösleges - átmozgatásával járt, így hosszabb optimalizálást eredményezett.

Elengedhetetlen megemlíteni a Speed Disk új töredezettség mentesítési módszerét. A SD nem a cikk elején ismertetett szabványos töredezettség mentesítési módszert, az NT beépített fájl mozgató hívásait használja, hanem saját fejlesztésű, új, közvetlen fizikai lemezkezelését. Ez rögtön számos kérdést vet fel és gyanakvást kelt a szakértők körében. Még inkább bizalmatlanságot kelt az, hogy a SD az MFT, a könyvtár struktúra, a paging file és a meta-adatok online töredezettség mentesítését is megvalósítja. Az első probléma már a sima fájlok módosításakor jelentkezik, ugyanis számos használt fájl cacheelve van (a fájlművelet gyorsítóban van), így a lemezen módosított fájlok és a cachebeli páruk között fenn kell tartani a koherenciát. A további probléma az MFT módosítása, hisz ennek módosított tartalmát a memóriabelivel még bonyolultabb dolog szinkronizálni. Mindemellett vannak - elvileg - nem mozgatható fájlok. A fentiekből kitűnik, hogy a szabványos, NT-s hívások nélkül elég bonyolult a megbízható megoldás megvalósítása, mindemellett az SD sokkal többet kínál, mint az eredeti NT-s hívások, hisz az MFT online töredezettség mentesítését is magába foglalja ez az új technológia. Így támogatja a 4 KB-nál nagyobb cluster méretű partíciók, az MFT, a könyvtárak, a paging file és a meta-adatok online töredezettség mentesítését. A megbízhatósági kérdések pedig a legfontosabban egy ilyen terméknél, hisz ezreket kiszolgáló NT szervereken is futtathatják. Ebbéli aggályainkkal kerestük meg a Symantec képviseletét, ahol elmondták, hogy majd két éve fejlesztik ez az új megoldást, és nagy hangsúlyt fektettek a megbízhatóságra. Továbbá elmondták, hogy a két év alatt a legtapasztaltabb Symantec fejlesztők foglalkoztak a kérdéssel, és majd két hónapig 20 ezren tesztelték a program beta változatát. A technikai oldaláról - érthetően - sajnos elég keveset mondtak, miszerint ez az NTFS driver kiterjesztéseként működik, és hasonló cache szinkronizációt alkalmaz, mint maga a natív NTFS driver. További problémaként vetődött fel, hogy nem teljesíti az NT C2-es védelmi szabványát, hisz olyan fájlokat is optimalizálhatunk melyhez nincs hozzáférési jogunk. Ez azért lehetséges, mert nem az NT fájl mozgató hívásaival, hanem a saját fizikai lemezkezeléssel dolgozik. E felől is megnyugtattak: a felhasználói szintű komponensek 'backup' jogosultságot használnak ("beolvasható", áthelyezhető a cluster, de tartalmát a felhasználó nem érheti el), míg a Speed Disk kernel szintű rutinok semmilyen módon nem használhatóak közvetlen olvasás vagy írásara.

A Speed Disk további funkcióit tekintve itt is megadhatjuk a (Drive Options részablak alatt) az optimalizálásból kizárandó fájlokat, sőt felsorolhatjuk a partíció elejére illetve végére mozgatni kívánt fájljainkat (12. kép). Például érdemes az \WinNT\ illetve az \Program Files\ alatti összes EXE és DLL fájlt előre helyezni, illetve az optimalizálásból a cache fájlokat kizárni.

Végezetül itt s lehetőségünk van az optimalizáció automatikus futtatására, a schedule options ablak alatt (13. kép). Windows NT munkaállomások esetén tapasztalataink szerint érdemes heti egy alkalommal, pl. ebédszünetre időzíteni, míg Windows NT szerver esetén amennyiben mód van rá - nem túl foglalt - a kiszolgáló, érdemes napi egy alkalommal éjjelre időzíteni az optimalizációt (13. kép).
 

12. kép - Speed Disk: partíció és fájl beállítások
13. kép - Egy éjjelre ütemezett Speed Disk
lemez optimalizáció

A Speed Disk-nél is van lehetőség távoli töredezettség mentesítésre. Ezt az NSC konzolon (Norton System Center) keresztül tehetjük meg (14. kép), melyet utólag, külön kell telepíteni. Itt számos más Norton termékkel együtt menedzselhetjük a munkaállomásokat.
 

14. kép - NSC-ben ütemezett és elindított Speed Disk folyamatok
 
 
Összehasonlítás

A teszt ilyen programok esetében kényes kérdés, ugyanis csak akkor van értelme a tesztnek, ha ugyanazon adatokon, ugyanazon a partíción hajtjuk vége. Így egy segédprogrammal, a már töredezett NTFS partíciót egy másik winchesterre másoltuk kétszer, először a Diskeeper-rel, majd a Speed Disk-kel defragmentáltuk, illetve optimalizáltuk. A töredezettség mentesítés során fontos kérdés volt maga a program lefutásának ideje, a lefutás során a fájl töredékek számának alakulása. Továbbá ketté osztottuk a töredezettség mentesítést: az első, illetve a módosított partíció defragmentálását is figyeltük. (Természetesen ugyanazt a módosítást végeztük mindkét partíció esetén, egy hirtelen készített programmal, mely a meglévő fájlokhoz fűz hozzá újabb anyagot. Így a módosított fájlok töredeztek.) A tapasztalatok szerint a Diskeeper szereti, ha sok hely áll rendelkezésére és a szabad hely minél inkább legyen egybefüggő ugyanis egyetlen nagy hátrányaként az róható fel, hogy nem tudja a szabad helyet töredezettség mentesíteni. Ennek hatására, ahogy a partíció kezd betelni (amit minden esetben el kell kerülni!) exponenciálisan lassul a fájlok írása, illetve az ilyenkor utoljára írt - és ekkor már jó töredezett - fájlok olvasása. Első teszt diagrammunk (15. kép) megmutatja a fájltöredékek számának alakulását az első defragmentáció utáni nagyobb - fent megnevezett programunkkal történő - fájl módosítás után. Második diagrammunk (16. kép) pedig a töredezett fájlok számát.
 

15. kép - A fájl töredékek számának alakulása a defragmentáció során
16. kép - A töredezett fájlok számának alakulása a defragmentáció során
 
A teszt körülményekről röviden annyit, hogy egy 2.1 GB partíciót használtunk, az első defragmentálás előtt 26%, majd a fájl módosítás után 21% szabad hely volt a partíción. A diagrammokról jól látható, hogy a Diskeeper a szinte teljesen töredezett hely miatt alig boldogult a töredezettség mentesítéssel: egy kicsit csökkent csak hosszú ideig a töredezett fájlok száma és a nagyobb méretű fájlok töredékeivel nem tudott mit kezdeni (piros vonalak). A második esetben Speed Disk-kel optimalizáltuk a partíciót, így összefüggő szabad helyet kaptunk, ekkor végeztük el a fájl módosítást, az ezutáni defragmentáláshoz most a Diskeeper-t használtuk. A mostani eredmények - barnával jelölt - kiemelkedően jóak: a Diskeeper egybefüggő hely esetén pillanatok alatt befejezte munkáját és a defragmentálás alatt is csak kicsit nőtt a fájl töredékek száma. A harmadik eset a teljes Speed Disk optimalizáció: a fájlok módosítása után aránylag rövid idő alatt végzett, viszont eléggé megemelte az optimalizáció ideje alatt a töredezett fájlok számát, mely a munka ideje alatt lassítja a kiszolgálót, így tényleg éjjelre - vagy kevésbé használt periódusra - érdemes ütemezni.

Következő diagrammunk (17. kép) a fenti teszt első részét ábrázolja. Látható, hogy a Diskeeper itt is gyorsabban végez feladatával és folyamatosan csökken a töredezett fájlok száma, továbbá a fájl töredékek száma is szépen - folyamatosan - csökken. Gyors eredményt érhetünk el a Diskeeper-rel így nyugodtan alkalmazható a kiszolgáló aktív használata mellett is. Észrevehető a diagrammon, hogy maradt egy-két töredezett fájl, amit csak hosszú idő múlva tudott defragmentálni, ez részint a szélsőségesnek nevezhető körülményeknek tudható be. A Speed Disk-nek több mint kétszer annyi időre volt szüksége, és az optimalizáció során jelentősen nőtt a fájl töredékek száma. (Ez észrevehetően lassíthatja nagy fájl töredezettség esetén a kiszolgálót, hisz még tovább töredeznek a fájlok.) Csupán az optimalizáció utolsó szakaszában - utolsó pár percében - csökkent, illetve szűnt meg a töredezett fájlok száma. Így a Speed Disk-et munkaállomásoknál heti egyszer, pl. ebédidőben illetve szervereknél naponta éjjeli - kevésbé használt - periódusban érdemes ütemezni.
 

17. kép - A töredezettség mentesítés menete a két programnál
 
Mindkét termék mellé adnak regisztrációs kupont, mellyel a Windows 2000 kompatíbilis verzió elérhető lesz valamilyen formában.

Választásunk a Symantec Speed Disk 5.0 termékére esett mindamellett, hogy viszonylag lassabb illetve, hogy idáig csak a Diskeeper régebbi verzióit ismertük és próbáltuk ki. Új technológiájának megbízhatóságát a Symantec majd 15 éves ilyen jellegű tapasztalta és a számos beta tesztelő garantálja. A Speed Disk csupán orrhossznyival hagyta le versenytársát, és elsősorban nem a promóciós anyagokban sokszor emlegetett MFT online defragmentáció győzött meg, hisz erre valójában ritkán van szükség. A szabad hely töredezettség mentesítése és az ezzel járó előnyök, amik valójában meggyőztek bennünket az NTFS töredezettség mentesítésben nagy múltú Executive Software, Diskeeper termékével szemben. Természetesen az ár is fontos szempont a termék kiválasztásánál, ezt táblázatunk foglalja össze. Lapzártakor a Speed Disk termék csak licenc formájában kapható, tehát emellé még meg kell vásárolni a telepítő készletet. Továbbá minimum 10 licencet (pl. 1 szerver és 9 munkaállomás licencet) kell vásárolni. Remélhetőleg e sorok olvasásakor már kapható lesz dobozos formában is a Speed Disk. A Diskeeper ára kicsit magasabb, viszont már kapható dobozos formában is.
 
Javasolt végfelhasználói nettó árak lapzártakor (2000. január):
 

Diskeeper 5.0 munkaállomás
18.400 FT
Diskeeper 5.0 szerver
97.000 FT
Speed Disk 5.0 munkaállomás
8.270 FT
Speed Disk 5.0 szerver
59.030 FT
Telepítő készlet Speed Disk-hez
5.140 FT
(A javasolt végfelhasználói árak ÁFA nélkül értendőek.)

Felhasznált források, ajánlott címek:
 

http://www.sysinternals.com/defrag.htm
Mark Russinovich, NT defragmentálás és példaprogram
http://www.executive.com
Az Executive Software web szervere, a DK5 letölthető változata
http://www.execsoft.co.uk
Az Executive Software Európai képviselete
http://www.symantec.com
Symantec cég web szervere
 
A cikk, a PC World 2000. januári számában található meg. A kiadó és cikkíró engedélyével jelentettük meg. Minden jog fenntartva, IDG Magyarország Lapkiadó Kft és ProgHu - Magyar Programozási Oldalak.