Dosya Sisteminin Yapısı (SD Kart) ve Onarım

Raspberry Pi bilgisayarında, SD kartın elektronik sisteminde oluşan donanımsal sorunlardan veya kontrolsüz kapanmalardan (enerji kesilmesi) kaynaklı dosya sistemi hataları oluşabilmektedir. Bu hatalar bazen sistemin açılış yapamamasına neden olabilir. Linux’un dosya sistemi hiyerarşik olarak boot block, superblock, inode, dentry ve file gibi mantıksal kısımlardan oluşur. Bu kısımların tamamı disk üzerindeki mantıksal olarak ayrılmış kısımlarda saklanır.

Boot block: Diskin ilk birkaç sektörü üzerine yerleşen bu blok işletim sisteminin ön yüklemesini yapan bootstrap adındaki programın kayıtlı olduğu kısımdır. Bootstrap işletim sistemini tetikleyen basit bir programdır. Boot bloğu hasara uğradığında işletim sistemi başlayamaz ve çoğu durumda neden başlayamadığı hakkında bilgi mesajı da görüntülenemez.

Superblock: Dosya sistemi hakkında en üst düzeyde bilgi tutan ve hiyerarşinin en üstünde yer alan kısmıdır. Temel olarak dosya sisteminin türü, blok boyutu, blok sayısı, boş blok sayısı, inode tablolarının konumu gibi çok önemli bilgileri tutar. Bu nedenle diskin üzerinde birden fazla yedek kopyası bulundurulur. Onarım sırasında, bu kurtarma kayıtlarından faydalanılır.

Inode (index node): Dosyalar ve dizinler hakkında meta bilgileri tutan veri yapılarını işaret eder. Bu veri yapıları dosyanın erişim izinleri, boyutu, sahibi, erişim zamanları, silinme zamanı (dosyalar gerçekte silinmez), dosyanın disk üzerinde bulunduğu bloğun numarası ve dosyanın kilitli olup olmadığı (bir proses tarafından yazılması sırasında kilitlenir) gibi bilgiler içerir. Her dosyanın eşsiz bir inode numarası vardır (index node) ve bu numara inode bloklarında dosya hakkında tutulan veri yapısına erişmek için kullanılır. Yani, ilk akla geldiği gibi dosyaların meta bilgilerine erişmek için dosya ismi yerine inode numarası kullanılır. Inode’ların işaret ettiği veri yapıları içerisinde dosya adları tutulmaz bunun yerine dosya adlarını tutmak için dentry (directory entry) ya da dizin adı verilen yapılar kullanılır. Inode numarasının kendisi ya da işaret ettiği bloğun hasara uğraması durumunda dosya erişilmez olabilir.

Dentry (directory entry): Temel olarak inode ve file bloklarını birbirleri ile ilişkilendiren yapılardır. Dosya adları bu bloklar sayesinde ait oldukları veri (file) blokları ile ilişkilendirilir. Aynı zamanda dizin hiyerarşisi de bu bloklar sayesinde inşa edilir. Her bir dentry bir inode numarasını bir dosya adına ve bir üst dizine eşler.

File (data block): Dosyaların içeriğini oluşturan verilerin tutulduğu bloklardır. Bu bloklar bozulduğunda dosya tamamen veya kısmen kaybedilmiş olur.

Bozulan veri(file) bloklarının onarılması

En sık karşılaşılan durum başlangıcın ilk aşamalarında ekrana basılan “Kernel Panic : VFS :Unable to mount root fs on unknown-block” mesajıdır. Bu mesaj kök (/) dosya sisteminde yer alan bir veri bloğunun okunamadığını ve kök dizinin bağlanamadığını söyler. Böyle bir durumda (Kernel Panic) Raspberry Pi bilgisayarı açılışına devam edemez. Çoğu durumda bu hatayı tamir etmek mümkündür. Bunun için SD kartı, bir kart okuyucu ile başka bir Raspberry Pi bilgisayarına takarak hataları onarmak gerekir. SD kartı taktıktan sonra lsusb komutu ile kartın algılanıp algılanmadığına bakalım:

Yukarıdaki lsusb çıktısında Super Top Card Reader adında bir USB aygıtının algılandığı gözükmektedir. Linux grafik kipinde çalışırken bir USB depolama aygıtı takıldığında otomatik olarak dosya sistemini bağlamaya çalışır. Linux literatüründe dosya sistemi aygıtları, veriler bloklar halinde okunup yazıldığından blok aygıtlar olarak da bilinirler. Bunu lsblk komutu çıktısından görebilirsiniz:

Yukarıdaki ekran çıktısında Raspberry Pi’a kart okuyucu ile bağlanan aygıtın, sda aygıt ismi ile ilişkilendirildiği, 1.9GB kapasiteye sahip olduğu ve içerisindeki bölümlerin (sda1 ve sda2) /media/ altındaki dizinler ile ilişkilendirildiği gözüküyor (Bağlanan dosya sistemlerinin detaylı bir listesini görmek için findmnt aracını kullanabilirsiniz). Dosya sisteminin onarımına başlamadan önce bu bağlantıların aşağıdaki gibi kaldırılması gerekir:

Dosya sistemleri üzerinde otomatik olarak hata taraması yapıp düzeltmek için fsck aracı aşağıdaki gibi çalıştırılabilir:

Bozulan superblock’ların onarılması

Daha ciddi dosya sistemi arızalarından birisi de bölüm tablosunun hasara uğramasıdır. Bu hata suberblock adı verilen meta bilgilerinin tutulduğu kayıt alanlarının hasara uğramasından kaynaklanır ve çok sayıda dosya kaybıyla sonuçlanabilir. Böyle bir hasarın çıktısını aşağıdaki dmesg çıktısında da görebilirsiniz:

Yukarıdaki dmesg çıktısında, bağlanmaya çalışılan dosya sisteminin 0., 1. ve 2. sektörlerindeki verilerin fiziksel olarak hasara uğraması sonucunda, bölüm tablosunun (dosya yerleşim tablosunu içinde bulunduran alan) okunamadığı ve dosya sisteminin bağlanamadığı anlaşılmaktadır. Dosya yerleşim tablosu diskte kayıtlı dosyalar için çok hayati önemde bilgiler tutan bir tablodur ve disk üstünde superblock adı verilen bloklarda kayıtlıdır.

superblock hasara uğradığında; sadece veri bloğunun (file block) hasarlı olduğu duruma göre meta verisi tutulan birçok dosya kaybedilebilir veya duruma göre dosya sisteminin tamamı erişilmez olabilir. Bu daha ciddi bir hasar türüdür. fsck ile bu hata giderilmeye çalışıldığında işlemin başarısız olduğunu söyleyen aşağıdaki gibi bir uyarı mesajı görüntülenir:

Bu durumda superblock’ların, yedeklerinin kullanılarak tamirin gerçekleştirilmesi gerekir. Yedek blokların nerede olduğunu görüntülemek için bir dosya sistemi oluşturma aracı olan mke2fs kullanılmalıdır. mke2fs aracı –n seçeneği ile kullanıldığında superblock yedeklerinin adreslerini listeler. Aşağıdaki komutu ve çıktısını inceleyin:

Çıktıda arızalı superblock’ların 32768, 98304, 163840, 229376 ve 294912 numaralı bloklarda birer yedeklerinin olduğu görülmektedir. Bundan sonra yapılacak işlem yedeklerden biri kullanılarak hasarlı superblock’un yeniden oluşturulmasıdır. Yedeğin oluşturulması için e2fsck aracı aşağıdaki gibi kullanılabilir:

Yukarıdaki ekran çıktısı 32768 blok numaralı yedekten kurtarma yapılamadığını söylüyor. Bu durumda –b seçeneğine diğer superblock yedeklerinin blok numaralarını vererek işlemi tekrarlamalısınız.

Hatırlatma: Açılış sırasında dosya sistemi hatalarının otomatik olarak giderilmesini sağlayan ayar için kitabın “Dosya Sistemi Hatalarının Açılışta Otomatik Onarılmasını Sağlamak” başlıklı konusuna bakabilirsiniz.

Yazar: Özgür Koca

Yazar - Tankado.com

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.