fsck, Linux dosya sistemlerindeki tutarsızlıkları denetlemek ve desteklenen durumlarda onarmak için kullanılan araç ailesidir. Yanlış aygıtta veya bağlı bir dosya sisteminde çalıştırılması veri kaybı riskini artırabileceğinden, komuttan önce dosya sistemi türünü, aygıt yolunu ve yedek durumunu doğrulamak gerekir.
fsck Nedir? Ne İşe Yarar?
fsck, “File System Consistency Check” kelimelerinin kısaltması. Türkçesiyle dosya sistemi tutarlılık kontrolü. Windows’taki chkdsk’nın Linux karşılığı diyebiliriz. Ama çok daha güçlü!
Elektrik kesintisi, sistem çökmesi, donanım arızası veya hatalı sektörler dosya sistemi metadatasında tutarsızlık oluşturabilir. fsck ve dosya sistemine özgü alt araçlar bu yapıları denetler; onarım kapasitesi ve güvenli çalışma koşulları kullanılan dosya sistemine göre değişir.
Ne Zaman fsck Kullanmalıyız?
Otomatik çalıştığı durumlar:
- Sistem anormal kapandıktan sonra boot’ta
- Mount count veya kontrol aralığı aşıldığında (bu sayaçlar modern dağıtımlarda genellikle kapalıdır;
sudo tune2fs -l /dev/sdaXçıktısındakiMaximum mount countdeğeri-1ise devre dışıdır) - Filesystem’de dirty flag set edilmişse
- Son check’ten beri geçen süre fazlaysa
Manuel çalıştırmanız gereken durumlar:
- Disk I/O hataları alıyorsanız
- Dosyalar kayboluyorsa
- Permission’lar karışıksa
- Sistem garip davranıyorsa
fsck’nin Çalışma Mantığı
fsck dosya sistemini katman katman kontrol ediyor:
Superblock kontrolü: Dosya sisteminin meta verilerini barındıran superblock’u kontrol eder. Bozuksa backup’tan restore eder.
Inode kontrolü: Her dosya ve dizinin inode’unu kontrol eder. Orphan inode’ları bulur, link count’ları düzeltir.
Block kontrolü: Used/free block’ları kontrol eder. Duplicate block’ları tespit eder, bad block’ları işaretler.
Directory structure: Dizin yapısını kontrol eder. Loop’ları tespit eder, kayıp dizinleri lost+found’a taşır.
Reference counting: Her dosyanın kaç yerden referans edildiğini kontrol eder.
Kritik Kural: Unmounted Filesystem!
ÇOK ÖNEMLİ: fsck’yi ASLA mounted bir filesystem’de çalıştırmayın! Veri kaybına yol açar. Root partition için single user mode veya live USB kullanın.
Basit Kullanım Örnekleri
İlk adım her zaman aygıtı ve dosya sistemi türünü doğrulamaktır. Yanlış aygıt seçmek bu araçla yapılabilecek en pahalı hatadır:
lsblk -f
sudo blkid /dev/sda1
Salt okunur denetim:
# Hiçbir değişiklik yazmaz, yalnızca rapor eder
sudo fsck -n /dev/sda1
# Ayrıntılı çıktı
sudo fsck -v /dev/sda1
-n seçeneği diske yazmaz, fakat bu onu her koşulda anlamlı kılmaz. Bağlı bir dosya sistemi denetim sürerken altından değişmeye devam eder; bu durumda üretilen hata raporu büyük ölçüde gerçeği yansıtmaz. Anlamlı bir sonuç için dosya sistemi ayrılmış olmalıdır.
Onarım seçenekleri:
# Boot'ta kullanılan mod: yalnızca güvenli kabul edilen onarımları uygular
sudo fsck -p /dev/sda1
# Tüm sorulara evet: etkisini bildiğinizde kullanın
sudo fsck -y /dev/sda1
# Temiz işaretli olsa bile denetlemeye zorla
sudo fsck -f /dev/sda1
-p (preen) ile -y arasındaki fark önemlidir: -p yalnızca tereddütsüz güvenli onarımları yapar ve karar gerektiren bir durumla karşılaşırsa durur, -y ise her soruya evet yanıtı vererek devam eder.
-c seçeneği ayrıca anılmayı hak eder, çünkü adı yanıltıcıdır. Bozuk sektörleri onarmaz; badblocks çalıştırıp bulduklarını kullanılmayacak şekilde işaretler. İşlem saatler sürebilir ve kendi içinde sektör yeniden eşleme yapan modern disklerde büyük ölçüde işlevini yitirmiştir. Fiziksel disk arızası şüphesinde doğru araç smartctl ile disk sağlığını okumaktır.
-A seçeneği /etc/fstab içindeki tüm dosya sistemlerini dener ve boot betikleri için tasarlanmıştır. Çalışan bir sistemde elle çağrılması bağlı dosya sistemlerini, kök dosya sistemi dâhil, hedef alır; bu nedenle günlük kullanımda önerilmez.
Dosya sistemine göre doğru araç
fsck tek başına bir denetleyici değil, bir arayüzdür: aygıtın dosya sistemi türünü belirler ve işi fsck.<tür> biçimindeki programa devreder. Bu devretme her dosya sisteminde gerçek bir denetim anlamına gelmez.
- ext2 / ext3 / ext4 —
fsck.ext4, yanie2fsck, gerçek denetim ve onarım yapar.fsckbu ailede beklendiği gibi çalışır. - FAT / vfat —
fsck.vfat(dosfsck) gerçek denetim yapar. - XFS —
fsck.xfshiçbir şey yapmaz. Kılavuzundaki tanımı birebir “do nothing, successfully” biçimindedir: çağrılır ve sıfır çıkış koduyla döner. Yalnızca/etc/fstabiçindekipassnoalanı boot sırasında bir program çağırmak istediğinde ortada çalıştırılabilir bir dosya bulunsun diye vardır. XFS journal’lı bir dosya sistemi olduğundan kurtarmayı mount anında kendisi yapar. Denetim ve onarım için ayrı bir program kullanılır:xfs_repair. - Btrfs —
fsck.btrfsde aynı biçimde işlevsizdir; kılavuzupassnodeğerinin0yapılmasını önerir. Denetimbtrfs checkile yapılır; onarım--repairseçeneğine bağlıdır ve dosya sisteminin belgelerinde son çare olarak tanımlanır.
Bu ayrımın pratik sonucu önemlidir: XFS veya Btrfs bir aygıtta fsck çalıştırmak temiz bir çıktı ve sıfır çıkış kodu üretir, fakat hiçbir denetim yapılmamıştır. Çıktının temiz görünmesi dosya sisteminin denetlendiği anlamına gelmez. Bu yüzden aygıtın türünü lsblk -f ile doğrulamak ilk adımdır.
XFS için sıra şöyledir:
# Türü ve aygıtı doğrula
lsblk -f
# Dosya sistemini ayır
sudo umount /dev/sda1
# Önce salt okunur denetim
sudo xfs_repair -n /dev/sda1
# Gerekliyse onarım
sudo xfs_repair /dev/sda1
xfs_repair, journal’ın oynatılmış olmasını bekler. Kirli bir journal ile karşılaşırsa dosya sistemini bir kez mount edip yeniden ayırmak gerekir. -L seçeneği journal’ı sıfırlar; veri kaybına yol açabileceği için yalnızca başka yol kalmadığında kullanılır.
Btrfs için karşılığı sudo btrfs check /dev/sda1 komutudur; --repair eklenmeden önce yedek alınmalıdır.
Recovery Mode’da fsck
Kök dosya sistemi çalışan sistemde ayrılamaz; bu yüzden onarım her zaman sistemin dışından yapılır.
En güvenli yol live USB’dir. Sistemi harici bir ortamdan başlatın, hedef dosya sistemini hiç mount etmeden denetleyin:
lsblk -f # aygıtı ve türü belirle
sudo fsck -n /dev/sda2 # önce salt okunur
sudo fsck /dev/sda2 # gerekliyse onar
GRUB üzerinden recovery mode kullanılacaksa dikkat edilmesi gereken nokta şudur: recovery mode kök dosya sistemini genellikle bağlı hâlde bırakır ve salt okunur bağlanmış olması onarım için yeterli değildir. Bağlı bir dosya sisteminde onarım çalıştırmak çekirdeğin önbelleği ile aracın diskte gördüğü durumu ayrıştırır ve bozulmayı büyütebilir.
Recovery mode kullanmak zorundaysanız dosya sistemini önce gerçekten ayırın; kök dosya sistemi ayrılamıyorsa salt okunur bağlayıp yalnızca fsck -n ile durum tespiti yapın, onarımı live USB’ye bırakın:
sudo mount -o remount,ro /
sudo fsck -n /dev/sda2
fsck Exit Code’ları
fsck bittiğinde döndürdüğü kod önemli:
- 0: No errors
- 1: Errors corrected
- 2: System should be rebooted
- 4: Errors left uncorrected
- 8: Operational error
- 16: Usage or syntax error
- 32: User cancelled
- 128: Shared library error
Birden fazla problem varsa, kodlar toplanır (bitwise OR).
lost+found Dizini
fsck, sahipsiz dosyaları lost+found dizinine koyar. Her partition’ın root’unda bir lost+found dizini vardır. İçinde garip isimli dosyalar bulursanız, bunlar fsck’nin kurtardığı dosyalardır. İnceleyip, gerekli olanları geri alabilirsiniz.
Proaktif Önlemler
Tune2fs ile kontrol ayarları:
- Maximum mount count ayarlama
- Check interval belirleme
- Filesystem özelliklerini değiştirme
Smart monitoring:
- smartctl ile disk sağlığını takip
- Bad sector’ları önceden tespit
Düzenli backup:
- fsck her şeyi kurtaramayabilir
- Backup olmadan fsck’ye güvenmeyin!
Tehlikeli Durumlar
Force fsck dikkatli kullanın: -f flag’i clean görünen filesystem’i bile kontrol eder. Gereksiz yere kullanmayın.
Yanlış araç seçimi: Bir ext4 dosya sistemini fsck.ext2 ile denetlemeye zorlamak veri kaybına yol açabilir. Öte yandan “fsck otomatik seçer” kuralına körü körüne güvenmek de yanlıştır: XFS ve Btrfs’te otomatik seçilen program hiçbir denetim yapmaz. Önce lsblk -f ile türü doğrulayın, sonra o dosya sisteminin kendi aracını kullanın.
Interrupted fsck: fsck yarıda kesilirse, filesystem daha kötü duruma gelebilir. UPS kullanın!
Sonuç
fsck rutin bir performans aracı değil, dosya sistemi tutarlılığı için kontrollü bir kurtarma aracıdır. Önce yedek ve aygıt envanteri alın, mümkünse dosya sistemini ayırın, doğru dosya sistemine özgü aracı seçin ve otomatik onarım seçeneklerini ancak etkisini anladıktan sonra kullanın. Fiziksel disk arızası şüphesinde önce donanım sağlığını ve kopyalama stratejisini değerlendirmek daha güvenlidir.