checkdisk this cluster out!!

Ntfs.sys,Windows Server 2008 R2 ye kadar, bir volümünfile sisteminde herhangi bir potansiyel corruption olasiligina rastladiginda o volüm için dirty bit i set eder. Yani volüme corrupt deriz ve chkdsk i en azindan /f switchi ile çalistirmamiz gerekir.

Bir volümün dirty olup olmadigini ya chkdsk i switchiz çalistirip komutu takip eden outputdan, ya da fsutil dirty query volümharfi: komutu ile kontrol edebiliriz. Dirty bit set edilmis ise kesinlikle chkdsk /f çalistirilmasi önerilir.

Chkdsk in çalisma mantigi geregi check edilen volüme sadece chkdsk in kendisi erisebiliyor olmasi gerekiyor. Yani volüme sadece bir handle olabilir, o da chkdsk in ki olur. Aksi taktirde baska bir yazilim da ayni anda check edilen dosyalar ile çalisabiliyor olsaydi, chkdsk in çalismasinin güvenirligi tartisabilirdi. Ondan sistem partisyonunu ancak bootdan önce check edebilir. Bir baska yazilimin kullandigi diske karsi da chkdsk çalistirmak istedigimizde, chkdsk baska handle larin oldugunu ve onlari sonlandirmak istedigimizi sorar. En nihayetinde herhangi yeni bir durumun gerçeklesmemesi için böyle durumlarda ilgili yazilimlarin önceden durdurulmasi önerilir. Mesela disk failover cluster tarafindan yönetiliyorsa, ilk bulundugu bütün grubun offline alinmasi ve sonra sadece diski online alarak chkdsk in baslatilmasi önerilir.

Chkdsk bir cluster diskine karsi çalismaya basladiktan sonra sonlanamiyorsa muhtemelen diskin rootunda readonly bir dosya vardir. Yanlis süpheler de olabilir. Örnegin diskin rootuna sistem accountun en azindan okuma hakki yoksa, farkli senaryolarda disk dirty duruma düsebilir. Ayrica cluster daki disk kaynaginin isminde özellkile “/” veya “ \” gibi özel karakter kullaniliyorsa yanilmalar olabilir.

Kargasaya en çok neden olan durum cluster disklerde chkdsk in otomatik devreye girmesidir. Disk dirty flaglenirse ve sonra cluster da offline/online veya move/failover yapilirsa chkdsk devreye girer.
Chkdsk devreye girdikten sonra, chkdsk bitene kadar disk online pending statüsünde durur. Windows Server 2003 de örnegin chkdsk yi belirten baska bir durum yoktur. Burada sadece task manager dan chkdsk.exe in çalisiyor oldugunu teyit edip durumu anlayabiliriz. Yeni nesis isletim sistemlerinde chkdsk durumu yansitilir.

Yaygin bir soru sonlandirilmasidir, çünkü chkdsk in çalismasi elbette diskin online olmasini geçiktirir. Sonlandirilmasi önerilmez, çünkü diskte corruption varsa bunun giderilmesi çok önemlidir. Giderilmezse diskin erisimi ile ilgili sorunlaraveya veri kaybina neden olabilir. Ayrica yeni corruptionlara neden olabilir. Yani sonlandirilmasi çok sakincali ve risklidir. Ancak elbette bu kullanicinin karari ve sorumlulugudur. Taks manager dan chkdsk.exe sonlandirilarak islem hemen durdurulabilir ve disk hemen online olur. Bu tarz durumlari engellemek için, belki bir prosedür esnasinda ihtiyacimiz olabilir, system32 altindaki chkdsk.exe ve autochk.exe ler rename edilebilir. Yalniz hiç bir süpheniz olmasin, bunlar tamamen önerilmeyen ve tehlikeli islemlerdir.

Çok nadir durumlarda chkdsk kesilirse veya sunucu ani kapatilirsa cluster daki chkdsk bilgisi yanlis kalabilir. Yani chkdsk çalisiyor bilgisi cluster konfigürasyonundan temizlenememis olabilir. Ve failover cluster manager da bir disk hem online, hemde arkasinda ‘’[…]is running chkdsk on volume[…]’’ bilgisini gösteriyor olabilir. Failover sonrasi da bu bilgi genelde kalir. Sonuç olarak bir sonraki chkdsk çalisana kadar clusterdaki bu bilgi dogrulanmaz. Ama bu blogu okuyorsaniz bunu kaldirmanin bir kolay yolunu gösterebilirim. Eger task manager da chkdsk.exe çalismiyorsa, disk cluster da online ise ve chkdsk bilgisi hala yansitiliyorsa o diskin ResourceSpecificStatus bilgisini okuyabiliriz. Bu chkdsk bilgisi buradan yansitilir. Örnegin sorunlu disk cluster disk 1 ise <<Cluster . res “cluster disk 1” /prop :ResourceSpecificStatus>> komutu ile buradaki value degerini okuyabiliriz ve <<Cluster . res “cluster disk 1” /prop :ResourceSpecificStatus /USEDEFAULT>> ile silebiliriz. Ama chkdsk çalisiyor bilgisini göstermesi de sadece bir label dir, yani kozmetik bir durumdur ve altinda yatan bir sorun yoktur.

https://support.microsoft.com/kb/176970 How to run the "chkdsk /f" command on a shared cluster disk
https://support.microsoft.com/kb/2590305 A Cluster Disk Resource May Fail to Come Online and Run ChkDsk when an Invalid Character is used in the Resource Name
https://technet.microsoft.com/en-us/query/cc895525

Basar Güner
Sr. Support Engineer, Microsoft