Windows Server ortamlarında işler ters gittiğinde, yani servisler çalışmıyor, sistem kararsız davranıyor ya da gizemli hata mesajları çıkıyor, akla gelen ilk sorulardan biri şu oluyor: “Sistem dosyaları bozulmuş olabilir mi?” Bu sorunun cevabını aramak için elinizdeki en güçlü araçlardan ikisi SFC (System File Checker) ve DISM (Deployment Image Servicing and Management). Bu iki araç birbirini tamamlayan, sysadminin mutlaka cebinde bulundurması gereken komut satırı silahları.
SFC ve DISM Nedir, Ne Zaman Kullanılır?
SFC, Windows’un yerleşik sistem dosyası denetleme aracıdır. İmzalı sistem dosyalarını tarar, bozulmuş olanları tespit eder ve mümkünse onarır. 2000’li yıllardan beri Windows’ta bulunuyor, eski ve güvenilir bir dostumuz.
DISM ise daha güçlü ve kapsamlı bir araç. Windows görüntüsünü (image) yönetmek, servis etmek ve onarmak için kullanılıyor. SFC’nin onarım yapabilmesi için sağlıklı bir Windows bileşen deposuna ihtiyacı var. Bu depo bozulduğunda SFC işlevini kaybediyor. İşte o noktada DISM devreye giriyor ve bileşen deposunu onararak SFC’nin tekrar çalışabilmesini sağlıyor.
Kısaca iş akışı şu şekilde: DISM ile önce depoyu onar, sonra SFC ile sistem dosyalarını denetle.
Bu araçları ne zaman kullanmalısınız?
- Sistemde açıklanamayan çökmeler veya mavi ekranlar (BSOD) yaşandığında
- Windows Update hata verdiğinde ve güncellemeler yüklenemediğinde
- Sistem servisleri başlamadığında veya kararsız davrandığında
- Event Viewer’da sistem dosyası bütünlüğüyle ilgili hatalar gördüğünüzde
- Kötü amaçlı yazılım temizliği sonrasında sistem doğrulaması yaparken
- Rutin bakım prosedürlerinin bir parçası olarak
SFC ile Sistem Dosyası Denetimi
Temel Kullanım
SFC komutlarını her zaman Yönetici olarak çalıştırılan CMD veya PowerShell penceresinde çalıştırmanız gerekiyor. Bunu yapmadan komutu çalıştırırsanız “Yönetici ayrıcalıkları gerekiyor” hatasıyla karşılaşırsınız.
sfc /scannow
Bu komut tüm korumalı sistem dosyalarını tarar. Bozuk dosya bulursa Windows bileşen deposundan orijinal versiyonlarla değiştirmeye çalışır. Tarama sürecinde ekranda ilerleme yüzdesi göreceksiniz, 100’e ulaşması sunucunun hızına göre 5-15 dakika sürebilir.
Tarama tamamlandıktan sonra dört farklı sonuçla karşılaşabilirsiniz:
- “Windows Kaynak Koruması herhangi bir bütünlük ihlali bulamadı”: Sistem dosyaları sağlıklı, sorun başka bir yerde.
- “Windows Kaynak Koruması istenen işlemi gerçekleştiremedi”: SFC’nin kendisi bir sorunla karşılaştı, DISM çalıştırmanız gerekiyor.
- “Windows Kaynak Koruması bozuk dosyalar buldu ve bunları başarıyla onardı”: Sorun tespit edildi ve çözüldü.
- “Windows Kaynak Koruması bozuk dosyalar buldu ancak bunlardan bazılarını onaramadı”: Manuel müdahale gerekiyor.
SFC Parametre Seçenekleri
sfc /scannow
Tüm sistem dosyalarını tarar ve onarır.
sfc /verifyonly
Sadece doğrulama yapar, onarım gerçekleştirmez. Hızlı bir kontrol için idealdir.
sfc /scanfile=C:WindowsSystem32ntoskrnl.exe
Belirli bir dosyayı tarar ve onarır. Tam dosya yolu belirtmeniz gerekiyor.
sfc /verifyfile=C:WindowsSystem32kernel32.dll
Belirli bir dosyayı sadece doğrular.
sfc /offbootdir=C: /offwindir=C:Windows
Çevrimdışı modda çalıştırır. Sistem çalışırken onarılamayan dosyalar için, WinPE ortamında veya başka bir sistemden o sürücüye erişirken kullanılır.
SFC Log Dosyasını Okumak
SFC tarama sonuçları C:WindowsLogsCBSCBS.log dosyasına yazılıyor. Bu dosya oldukça büyük olabiliyor, içinden SFC sonuçlarını süzmek için şu PowerShell komutunu kullanabilirsiniz:
findstr /c:"[SR]" %windir%LogsCBSCBS.log > C:SFC_sonuclar.txt
Bu komut CBS.log içinden sadece SFC ile ilgili satırları çekerek C: dizinine SFC_sonuclar.txt dosyası olarak kaydeder. Dosyayı açıp hangi dosyaların bozuk bulunduğunu, hangilerinin onarıldığını görebilirsiniz. Gerçek hayatta bu log dosyasını incelemeden sadece ekrandaki mesaja bakıp geçmek büyük hata, çünkü hangi dosyaların etkilendiğini ancak log’dan öğrenebilirsiniz.
DISM ile Windows Görüntüsü Onarımı
DISM, SFC’nin başaramadığı durumlarda veya SFC’den önce bileşen deposunu sağlıklı hale getirmek için kullanılıyor. Windows Server 2012 ve sonrasında DISM oldukça güçlendi ve artık birincil onarım aracı olarak düşünmek daha doğru.
DISM Sağlık Kontrolü Aşamaları
DISM ile onarım üç aşamalı bir süreç. Her aşamayı sırayla uygulamak en sağlıklı yaklaşım.
Birinci Aşama: Sağlık Durumunu Kontrol Et
DISM /Online /Cleanup-Image /CheckHealth
Bu komut hızlı çalışır ve bileşen deposunda önceden işaretlenmiş bir bozulma olup olmadığını kontrol eder. Herhangi bir tarama yapmaz, sadece mevcut bayrakları okur. Sonuç birkaç saniye içinde gelir.
İkinci Aşama: Derinlemeli Sağlık Taraması
DISM /Online /Cleanup-Image /ScanHealth
Bu komut bileşen deposunu gerçekten tarar ve bozulmaları tespit etmeye çalışır. CheckHealth’ten çok daha uzun sürer, 10-30 dakika arasında tamamlanabilir. Sunucu üretimde olduğunda bu komutu bakım penceresi dışında çalıştırmanızı önermem.
Üçüncü Aşama: Onarım
DISM /Online /Cleanup-Image /RestoreHealth
Bozukluk tespit edilmişse bu komut Windows Update üzerinden sağlıklı dosyaları indirerek onarım gerçekleştirir. İnternet bağlantısı gerektiriyor. Sunucunun internete çıkamadığı kapalı ağ ortamlarında bu komut başarısız olur, aşağıda bu senaryonun çözümünü ele alacağız.
Kapalı Ağlarda DISM: WIM Kaynağı Kullanımı
Birçok kurumsal ortamda sunucular internete doğrudan çıkamıyor. Bu durumda DISM’e onarım için kullanacağı kaynak dosyaları söylemeniz gerekiyor. Bunun için Windows kurulum medyasındaki install.wim dosyasını kullanabilirsiniz.
ISO dosyasını mount etmek veya USB medyasından erişim sağlamak sonrasında:
DISM /Online /Cleanup-Image /RestoreHealth /Source:D:Sourcesinstall.wim /LimitAccess
- /Source: WIM dosyasının yolunu belirtir
- /LimitAccess: Windows Update’e başvurmayı engeller, sadece belirtilen kaynağı kullanır
Eğer aynı sunucu versiyonu ve build numarasına sahip bir WIM dosyası yoksa bu yöntem çalışmaz. WIM versiyonunun sunucunuzla tam olarak eşleşmesi şart.
Birden fazla kaynak belirtmek de mümkün:
DISM /Online /Cleanup-Image /RestoreHealth /Source:D:Sourcesinstall.wim /Source:E:Backupinstall.wim /LimitAccess
DISM ile Görüntü Bilgisi Alma
Bir WIM dosyasında hangi indekslerin bulunduğunu görmek için:
DISM /Get-ImageInfo /ImageFile:D:Sourcesinstall.wim
Bu komut WIM içindeki tüm görüntüleri listeler. Örneğin bir install.wim’de Windows Server 2019 Standard ve Datacenter sürümleri ayrı indekslerde bulunabilir. Doğru indeksi belirtmek için:
DISM /Online /Cleanup-Image /RestoreHealth /Source:wim:D:Sourcesinstall.wim:2 /LimitAccess
Sondaki :2 indeks numarasını belirtiyor.
Gerçek Dünya Senaryoları
Senaryo 1: Windows Update Sürekli Hata Veriyor
Klasik bir durum: Production Windows Server 2019 sunucusunda cumartesi gecesi yamaları uygulamaya çalışıyorsunuz. 0x80073712 veya benzeri bir hata kodu alıyorsunuz. Bu hata genellikle bileşen deposunun bozulduğuna işaret ediyor.
İzlenecek yol:
DISM /Online /Cleanup-Image /CheckHealth
DISM /Online /Cleanup-Image /ScanHealth
DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow
Bu dörtle sırayla gidip, her birinin tamamlanmasını bekleyip, sonra bir sonrakine geçin. RestoreHealth tamamlandıktan sonra sunucuyu yeniden başlatın ve ardından SFC’yi çalıştırın. Yeniden başlatma önemli, çünkü bazı onarımlar reboot sonrasında geçerli oluyor. Sonrasında Windows Update’i tekrar deneyin.
Senaryo 2: Servis Başlamıyor, Event Log Karışık
Bir müşteri sunucusunda DHCP servisi sürekli duruyordu. Event Log’da “sistem dosyası bozuk veya eksik” tarzı mesajlar vardı. SFC çalıştırdık:
sfc /scannow
Sonuç “bozuk dosyalar bulundu ancak onarılamadı” çıktı. Demek ki bileşen deposunun kendisi de bozukmuş. DISM ile devam ettik, RestoreHealth sonrası SFC tekrar çalıştırıldı ve bu sefer başarıyla onarıldı. Sunucu yeniden başlatıldı, DHCP servisi normal çalışmaya başladı.
Senaryo 3: Planlı Bakım Prosedürü
Bazı şirketler aylık veya üç aylık sistem bakım planlarına SFC ve DISM kontrolünü dahil ediyor. Bunu otomatize etmek için şöyle bir toplu iş dosyası oluşturabilirsiniz:
@echo off
echo %date% %time% - DISM ve SFC Bakim Basladi >> C:Logsbakim.log
DISM /Online /Cleanup-Image /ScanHealth >> C:Logsbakim.log 2>&1
DISM /Online /Cleanup-Image /RestoreHealth >> C:Logsbakim.log 2>&1
sfc /scannow >> C:Logsbakim.log 2>&1
echo %date% %time% - Bakim Tamamlandi >> C:Logsbakim.log
Bu betiği Görev Zamanlayıcı’ya ekleyip bakım pencerenizde (örneğin her ayın ilk Pazar gecesi 02:00’de) çalışacak şekilde ayarlayabilirsiniz. Çıktıları log dosyasına yönlendirdiğiniz için sabah işe geldiğinizde ne olduğunu rahatça görebilirsiniz.
Senaryo 4: WinPE Üzerinden Çevrimdışı Onarım
Sistem hiç açılmıyor ya da açılsa bile SFC/DISM çalıştırmak için çok kararsız. Bu durumda WinPE (Windows Preinstallation Environment) ortamından boot edip çevrimdışı onarım yapabilirsiniz.
WinPE’ye boot ettikten sonra, Windows kurulumunuzun hangi sürücüde olduğunu tespit etmek için diskpart veya dir komutlarıyla kontrol edin. Diyelim ki C: sürücüsünde:
sfc /scannow /offbootdir=C: /offwindir=C:Windows
DISM ile çevrimdışı onarım için:
DISM /Image:C:Windows /Cleanup-Image /RestoreHealth /Source:D:Sourcesinstall.wim
Bu yöntem özellikle kurtarma senaryolarında hayat kurtarıyor. Sistemin kendi içinde boot edemediği durumlar için biçilmiş kaftan.
SFC ve DISM Sonrası Yapılması Gerekenler
Onarım tamamlandıktan sonra işi bitmiş saymayın. Şu adımları izleyin:
- Sunucuyu mutlaka yeniden başlatın, bazı dosya değişiklikleri reboot gerektirir
- Yeniden başlatma sonrası SFC’yi bir kez daha çalıştırıp temiz sonuç aldığınızdan emin olun
- Event Log’u inceleyin, yeni hata oluşup oluşmadığına bakın
- Sorun tetikleyen orijinal belirtiyi (örneğin başlamayan servis, hata veren uygulama) test edin
- CBS.log’u kaydedin, ileride referans olarak işinize yarayabilir
- Onarım tarihini ve bulgularını değişiklik kaydınıza ekleyin
Yaygın Hatalar ve Çözümleri
“DISM, Windows Update’e erişemiyor” hatası: Proxy ayarlarınızı kontrol edin. Sunucu proxy üzerinden internete çıkıyorsa DISM bunu otomatik kullanmıyor olabilir. Netsh winhttp komutuyla proxy ayarlarını yapılandırmanız gerekebilir.
SFC sürekli “onarılamadı” diyorsa: DISM RestoreHealth’i çalıştırmadan SFC’ye girdiğiniz için bileşen deposu bozuk olabilir. Önce DISM, sonra SFC sırasını kesinlikle koruyun.
DISM çok uzun sürüyor: Normal bir durum. RestoreHealth internet üzerinden dosya indirdiği için ağ hızına bağlı. Sabırlı olun, işlemi kesmeyin. Yarıda kesmek durumu daha da kötüleştirebilir.
“Kaynak dosyaları bulunamadı” hatası: WIM dosyanız sunucu versiyonuyla eşleşmiyor olabilir. winver komutuyla tam build numaranızı öğrenin ve o build’a ait WIM dosyasını kullanın.
SFC çalışmadan hemen sonuç veriyor: Yönetici izniyle çalıştırmadığınızda bu olur. CMD veya PowerShell’i “Yönetici olarak çalıştır” ile açın.
DISM’in Diğer Kullanım Alanları
DISM sadece onarım için değil, daha birçok işlem için kullanılabiliyor. Sysadmin olarak bunları da bilmek işinize yarayacak:
DISM /Online /Get-Features /Format:Table
Yüklü Windows özelliklerini listeler. Hangi rollerin ve özelliklerin aktif olduğunu görmenizi sağlar.
DISM /Online /Enable-Feature /FeatureName:TelnetClient
Windows özelliği etkinleştirir. Sunucu Manager’a girmeden komut satırından halledebilirsiniz.
DISM /Online /Cleanup-Image /StartComponentCleanup /ResetBase
Bileşen deposundaki eski dosyaları temizler ve disk alanı kazandırır. Windows Update’den sonra biriken “superseeded” bileşenleri siler. Özellikle C: sürücüsü dolmaya başladığında işe yarayan bir komut.
Sonuç
SFC ve DISM, Windows Server yönetiminin temel araç kutusunda olması gereken komutlar. Özellikle kurumsal ortamlarda, sistemlerin ay veya yıllarca sürekli çalıştığı senaryolarda, dosya sistemi bozulmaları kaçınılmaz bir gerçeklik. Bu araçları proaktif olarak, sorun çıkmadan önce de kullanmak iyi bir alışkanlık.
Pratik özet olarak şunu söyleyeyim: Bir sorunla karşılaştığınızda önce DISM /ScanHealth ile depoyu kontrol edin, bozulma varsa DISM /RestoreHealth ile onarın, ardından sfc /scannow ile sistem dosyalarını doğrulayın ve en son sunucuyu yeniden başlatın. Bu sırayı bozmayın.
Kapalı ağlarda WIM dosyasını elinizin altında bulundurmayı da unutmayın. Onarıma ihtiyaç duyduğunuz kritik anda internetsiz ortamda ne yapacağınızı bilmek, o anı krizden rutin bakıma dönüştürür. Son olarak, bu işlemleri önemli değişiklikler öncesinde veya olay sonrası analizin parçası olarak değişiklik kayıtlarınıza eklemeyi alışkanlık haline getirin.