CHKDSK

From EIK wiki

CHKDSK

CHKDSK.exe on käsurea tööriist DOS, OS/2 ja Windowsi jooksutavatel arvutitel mida kasutatakse andmekandjal andmete terviklikkuse kontrollimiseks, ebatäiuste avastamisel failisüsteemis ka nende eemaldamiseks ja parandamiseks. CHKDSK on suuteline avastama ning asendama andmekandjal ka vigaseid sektoreid (bad sector), mis on andmekandjal kas siis füüsilist kahju saanud, magneetiliselt või digitaalselt pöördumatusse olekusse sattunud või välkmälus kahjustunud transistore sisaldav andmesektor.

CHKDSK'i saab käivitada nii käsureal, läbi graafilise kasutajaliidese või läbi taastuskonsooli (recovery console). CHKDSK'i käivitatav kood asub DLL’ides (Dynamic Link Libraries) nagu Unfts.dll ja Ufat.dll, mis tähendab et mõlemal juhul, nii läbi graafilise UI kui ka käsurealt käivitatav tervikluse kontrollimist teostav kood on samasugune.

AUTOCHK

Kui aga CHKDSK protsess on määratud käivituma alglaadimisel käivitatakse enne windowsi laadimist protsess AUTOCHK.exe. AUTOCHK on rakendus, mille kernel kutsub välja igal alglaadimisel ning mis kontrollib kas olemasolevatele ketastele on märgitud "dirty bit" või mitte.

Dirty Volume/Bit

Andmehulk (volume) mille kohta on teada et nende failisüsteemis on rikkeid kutsutakse ingl.k. dirty volume ning Windows märgib selle üles kasutades vahendit mille nimi on „dirty bit“. Kui AUTOCHK avastab alglaadimisel et mõnel kettale on dirty bit märgitud, käivitatakse sama kood mis "CHKDSK /f" käsu puhul, mis kontrollib ning üritab parandada kettal ja failisüsteemis leiduvaid vigu.

Et teha kindlaks kas teatud andehulga (volume) kohta on märgitud dirty bit saab käsurealt käivitada järgmise käsu:

fsutil dirty query <ketas>
Näiteks: fsutil dirty query C:
RC CHKDSK Fsutilquery.png

Samal viisil saab valitud kettale jõuga määrata dirty biti, mis tagab selle et järgmisel taaskäivitusel käivitatakse valitud kettale "CHKDSK /f" protsess:

fsutil dirty set <ketas>
Näiteks: fsutil dirty set C:

CHKDSK kasutamine

CHKDSK saab käivitata kahel viisil: ilma parameetriteta ning koos parameetritega. Käivitades CHKDSK ilma parameetriteta jookseb protsess read-only režiimis, mis küll kontrollib ketast failisüsteemis siladuvatest vigadest ning teavitab neist ka kasutajat, kuid ei ürita neid parandada ega likvideerida. Käivitades CHKDSK'i koos parameetritega (näiteks /f ja /r), parandatakse lisaks kontrollimisele failisüsteemis ka leitud vead.

CHKDSK süntaks

chkdsk [volume[[path] filename]][/f][/v][/r][/x][/i][/c][/l[:size]]
Parameeter Kirjeldus
volume Määrab ketta, andmekogumi (volume) mida chkdsk kontrollima peab.
path Ainult FAT/FAT32. Täpsustab faili või failikogumi asukoha andmekogumi kaustastruktuuris.
filename Ainult FAT/FAT32. Täpsustab faili või failikogumi asukoha mida kontrollida killustatusest. Märgid * ja ? ei ole lubatud.
size Ainult NTFS. Muudab logifaili mahu määratud kilobaitideni. Peab kasutama koos /l parameetriga.
/c Ainult NTFS. Jätab vahele tsüklite kontrollimise kaustastruktuuris, vähendades chkdsk'i läbimiseks kuluvat aega.
/f Parandab kettalt leitud vead. Ketas peab olema lukustatud. Kui CHKDSK ei saa ketast lukustada, pakub ta kettakontrollimist järgmisel alglaadimisel.
/i Ainult NTFS. Viib läbi vähempõhjaliku indeksite kontrolli.
/l[:size] Ainult NTFS. Näitab logifaili hetkesuurust. Kui maht on eelmääratud, muudab logifaili mahu vastavalt sellele (kolibaitides).
/p Kontrollib ketast isegi kui see pole märgitud "dirty bit"'iga (saadaval ainult taastuskonsoolis - Recovery Console).
/r Otsib vigaseid sektoreid ning taastab neilt loetavat andmed. Andmed mida ei saa lugeda lähevad kaduma. Kui CHKDSK ei saa ketast lukustada, pakub ta kettakontrolli järgmisel alglaadimisel.
/v FAT/FAT32 failisüsteemis: näitab täispikka failiteed ning -nime iga faili kohta kogumis. NTFS failisüsteemis: Näitab puhastuskirjeid, kui üldse.
/x Ainult NTFS. Kui vajalik, sunnib ketta enne kontrolli dismount'ima. Kõik avatud failid sellelt kettalt suletakse koheselt.
/b Ainukt NTFS, alates Vista'st. Kustutab kettalt vigaste klastrite nimekirja ning kontrollib uuesti kõiki klastreid.
/? Näitab kõiki võimalikke CHKDSK parameetreid.


Kasutades CHKDSK'i taastuskonsoolist on mõningatel käskudel teine tähendus:

Parameeter Kirjeldus
/p Parandab leitud vead failisüsteemis. Sama mis /f parameeter stantardses CHKDSK'is.
/r Leiab vigased sektorid ning taastab veel loetavad andmed.

CHKDSK faasid

Kasutades CHKDSK’i NTFS ketastel läbib CHKDSK 3 peamist faasi, lisaks on võimalik läbida ka neljas ja viies faas. Järgenvalt on kirjeldatud CHKDSKi faasid.

Faas 1 (Stage 1) Faas 1 vältel kontrollib CHKDSK igat failikirjet MFT's (Master File Table). Iga failikirje MFT's identifitseerib iga üksiku faili ja kausta kogu NTFS failisüsteemis.

Valmis protsent mida CHKDSK siin näitab on protsent kogu MFT'st mis on hetkel kontrollitud.

RV Stage1.png

Faas 2 (Stage 2) Faas 2 vältel kontrollib CHKDSK failikirjete seesmist kooslust ning et igale failikirjele MFT ridades vastab vähemalt üks kaust ning et iga faili ja alamkausta viide kaustas (faili või kausta asumine teatud kaustas) eksisteerib ka failikirjetes MFT's. Lisaks kontrollitakse ka suletud ringi kaustaviite (kausta vanemkaustaks on tema ise, ehk kaust mille sees ta loogiliselt asub on tema ise). Seejärel teeb CHKDSK kindlaks et failidega seotud kuupäevade ja faili mahu informatsioon oleks õige ning värske.

Valmis protsent mida CHKDSK selle faasi vältel näitab on protsent failide koguarvust kontrollitaval kettal, mistõttu ketastel mis sisaldavad hulgaliselt faile ja kaustu võib selle faasi läbimiseks kuluv aeg pikaks venida.

RV Stage2.png

Faas 3 (Stage 3) Faas 3 vältel vaatleb CHKDSK kettal iga faili ja kausta turvakirjeid kontrollides et nende struktuur oleks oleks korras ning seesmiselt järjepidev.

Valmisprotsent mida CHKDSK selle faasi vältel näitab on protsent kõikidest failidest ja kaustadest mis hetkel on kontrollitud.

RV Stage3.png

Faas 4 ja 5 (Stage 4&5) CHKDSK läbib faasid 4 ja 5 kui see on parameetriga /r määratud. Parameeter /r kontrollin ning kinnitab et igas klastris asuvad sektorid on kasutatavad. /r kasutamine CHKDSK käivitamisel ei ole alati vajalik, sest NTFS failisüsteem leiab vigased sektorid ning adresseerib need ümber ketta tavalise töö käigus. /r parameetrit on soovitatav kasutada juhul kui on kahtlusi et kettal võib olla veel leidmata vigaseid sektoreid.

Faas 4 vältel kontrollib CHDSK hetkel kasutuses olevaid klastreid. Faas 5 vältel kontrollib CHKDSK hetkel kasutuseta klastreid.

Valmis protsent faasis 4 näitab protsenti kõikide kasutuses olevate klastrite arvust mis on selleks hetkeks kontrollitud. Valmis protsent faasis 5 näitab protsenti kõikide kasutamata klastrite arvust mis on selleks hetkeks kontrollitud. Kasutuses olevate klastrite kontrollimine võtab kauem aega kui kasutamata klastrite kontrollimine, seega kettal kus on võrdsel arvul kasutamata ja kasutuses olevaid klastreid kestab faas 4 kauem kui faas 5. Samas, võtab faasi 5 läbimine kettal kus on suuremal arvul kasutamata klastreid rohkem aega kui faas 4.

RV Stage4.png


RV Stage5.png

Enne CHKDSK käivitamist

Enne kui CHKDSK käivitada on soovitatav varundada kettalt tähtsamad failid. Niikaua kui chkdsk jookseb on kogu kontroll ketta üle chkdsk'i käes, mis tähendab seda et ketast ei saa kasutada temalt failide lugemiseks ega kirjutamiseks. Kasutades lisaks ka parameetreid /f ja /r peab arvestama, et suure mahuga kettal võib protsess võtta kaua aega.

CHKDSK windowsi süsteemikettal

Käivitades CHKDSK koos parameetritega /f ja /r kettal millel jookseb windows, väljastatakse järgmine teade:

RV CHKDSK bootdisk.png

Kuna see ketas sisaldab windowsi süsteemifaile, ei ole CHKDSK'il võimalik ketta üle täielikku kontrolli saada. Seega andes väljastatud teatele vastuseks Y, käivitatakse järgmisel alglaadimisel protsess AUTOCHK.

CHKDSK teistel ketastel

Käivitades CHKDSK koos parameetritega /f ja /r kettal millel hetkel ei asu aktiivne windowsi opsüsteem, peab protsess vigade parandamiseks, antud ketta lukustama. Kui antud kettalt on CHKDSK'i käivitamisel avatud mõni fail väljastab CHKDSK järgmise teate:

RV CHKDSK bootdiskanother.png

Kui nüüd anda vastuseks Y, üritatakse avatud faile sulgeda ning ketast lukustada. Kui aga see ei õnnestu või antakse vastuseks N, pakutakse järgmisel windowsi alglaadimisel käivitada AUTOCHK.

CHKDSK'i läbimiseks kuluva aja vähendamine

Niipea kui tekivad vead failisüsteemis või ketta klastrites on soovitatav käivitada CHKDSK f/. Kuna see protsess võtab kaua aega, eriti suurtel serveriketastel peab leidma alternatiivsed lahendused. Esimene võimalus on teha üldse mitte midagi ning lasta tekkinud vigadel olla, sest serverit sellel asuvate teenuste ja andmete tõttu ei ole võimalik hetkeksi sulgeda. Kui seda teha võib ettevõtte töö seisma jääda. Kuna väikesed probleemid võivad failisüsteemis kiiresti kasvada suurteks ning rikkuda terve ketta (mistõttu on ohus ka kõik andmed antud kettal), peab kaaluma kas tähtsam on andmete terviklikkus/säilivus või et server oleks vahetpidamata töös. Vägagi soovitatav on käivitada CHKDSK /f /r, mis leiab ja parandab kõik vead kettal, tagades et olemasolevad probleemid süsteemis ei kasva suureks ning ei riku kogu ketast. Oma põhjaliku töö tõttu võtab see protsess suurtel serveriketastel isegi mitmeid tunde. Seda aga ei saa lubada. Lahenduseks on kasutada CHKDSK'iga koos /c ja /i parameetreid

/c parameeter

/c parameeter jätab vahele faasi kus otsitakse suletud ringi kaustaviite. Antud rike on väheesinev rikutuse vorm kus alamkataloogi vanemaks(ingl.k. parent) on tema ise, ehk alamkataloogil ei ole viita tema vanemkataloogile. See põhjustab osade failide orvuks jäämist (ingl.k. orphaned files). Kirjed on küll MFT's olemas, kuid neile pole lihtsalt võimalik ligi pääseda. Antud parameeter vähendab CHKDSK läbimise aega 1-2 protsendi võrra.

/i parameeter

/i parameeter jätab vahele faasi kus kontrollitakse kaustakirjete vastavust MFT's asuvatele kirjetele. Kasutades /i parameetrit kontrollitakse küll kaustakirjete terviklikkust, kuid mitte nende sidusust MFT kirjetega. Antud parameeter võib põhjustada failide orvuks jäämise kui kaustakirjed on küll olemas kuid need viitavad valedele kirjetele MFT's. Seljuhul failid küll eksisteerivad, kuid rakendused ei saa neile ligi. Antud parameeter vähendab CHKDSK läbimise aega 50-70 protsendi võrra.


CHKDSK Windows exploreris

CHKDSK'i saab käivitada ka Windows Exploreris läbi graafilise kasutajaliidese. Seljuhul on võimalikeks parameetriteks /f ja /r. Ava Start menüüst Computer jaotus ning tee kettal parem hiireklõps, millele soovid CHKDSK'i käivitada ning vali hüpikmenüüst "Properties":

RV Computer1.png


Avanevast aknast vali "Tools" jaotus:

RV Disk.png


Valiku "Tools" all olles vajuta Error-checking jaotuse alt "Check Now":

RV Tools.png


Avanev aken ongi graafilise liidesega CHKDSK, valida on kaks parameetrit:

RV Check.png

Automatically fix file system errors on sama mis käsureal /f parameeter. Scan for and attempt recovery of bad sectors on sama mis käsureal /r parameeter.


Seejärel vajuta start ning protsessi läheb käima. Valmidust saab jälgida roheliselt ribalt.

RV Check2.png

Kasutatud kirjandus

Wikipedia: CHKDSK

Microsoft Technet: CHKDSK

Microsoft Support: CHKDSK

Wikipedia: CHKDSK

Robert Vane