ScholarGate
Asistan

Dosya Sistemleri

Dosya sistemi, kalıcı verileri depolama aygıtlarında adlandırılmış dosya ve dizinler halinde düzenleyen, verilerin nasıl yerleştirildiğini, konumlandırıldığını, korunduğunu ve tutarlı tutulduğunu yöneten işletim sistemi bileşenidir.

PaperMind ile konu bulYakındaMakale ve konu bul
Tools & resources
Slaytları indir
Learn & explore
VideoYakında

Tanım

Dosya sistemi, bir işletim sisteminin depolama aygıtında kalıcı verileri depolamak, düzenlemek, adlandırmak, almak ve korumak için kullandığı yöntem ve veri yapılarıdır; aygıt üzerindeki düzeni ve tutarlılığı yönetirken uygulamalara dosya ve dizinleri sunmaktadır.

Kapsam

Bu konu, dosya soyutlaması ve arayüzü, dizin yapıları, tahsis yöntemleri (bitişik, bağlı, indeksli) ve boş alan yönetimi, inode'lar gibi meta veri yapıları, günlükleme (journaling) ve çökme tutarlılığı (crash consistency) ile arabellek önbelleğini (buffer cache) kapsamaktadır. İşletim sisteminin ham depolamayı güvenilir, adlandırılmış bir ad alanına nasıl dönüştürdüğünü ele almaktadır. Fiziksel depolama aygıtlarının kendilerini (ikincil depolama aygıtları) ve işletim sistemi ana bellek yönetimini (bellek yönetimi) dışlamaktadır.

Temel sorular

  • Dosyalar nasıl adlandırılır, dizinler halinde nasıl düzenlenir ve erişilir?
  • Bir dosyanın verileri depolama aygıtında nasıl tahsis edilir ve konumlandırılır?
  • Dosya sistemi hangi meta verileri tutar ve boş alan nasıl yönetilir?
  • Dosya sistemi çökmeler karşısında nasıl tutarlı kalır?

Anahtar kavramlar

  • dosya soyutlaması ve arayüzü
  • dizinler ve ad alanları
  • inode'lar ve meta veri
  • tahsis yöntemleri (bitişik, bağlı, indeksli)
  • boş alan yönetimi
  • günlükleme (journaling) ve çökme tutarlılığı (crash consistency)
  • arabellek önbelleği
  • erişim kontrolü ve izinler

Temel kuramlar

Çökme tutarlılığı (Crash consistency)
Bir çökme çok adımlı güncellemeleri kesintiye uğratabileceğinden, dosya sistemleri, bir arızadan sonra dosya sisteminin tutarlı bir duruma geri yüklenebilmesini sağlamak için günlükleme (değişiklikleri uygulamadan önce kaydetme) veya kopyala-yaz (copy-on-write) gibi teknikler kullanmaktadır.

Mekanizmalar

Bir dosya sistemi, her dosyanın mantıksal bayt akışını aygıttaki bloklara eşlemekte, eşlemeyi ve öznitelikleri inode'lar ve dizinler gibi meta veri yapılarında kaydetmektedir. Tahsis yöntemleri, blokların nasıl atandığını ve izlendiğini belirlemekte, boş alan yapıları ise mevcut blokları kaydetmektedir. Bir arabellek önbelleği, yakın zamanda kullanılan blokları bellekte tutmakta, günlükleme (journaling) veya kopyala-yaz (copy-on-write) ise kesintiye uğrayan güncellemelerin dosya sistemini kurtarılabilir, tutarlı bir durumda bırakmasını sağlamaktadır.

Klinik önem

Dosya sistemleri, neredeyse tüm kalıcı verilerin depolanma ve alınma şeklini oluşturduğundan, performansları ve güvenilirlikleri veritabanları, uygulamalar ve kullanıcılar için kritik öneme sahiptir. Meta veri, önbellekleme ve çökme tutarlılığı (crash consistency) etrafındaki tasarım seçimleri, arızalardan sonra dayanıklılığı ve kurtarmayı belirlemekte olup, ext4, NTFS ve ZFS gibi yaygın olarak kullanılan dosya sistemleri, bu ödünleşimlerin onlarca yıllık birikimini yansıtmaktadır.

Tarihçe

Dizinlere sahip hiyerarşik dosya sistemleri ve inode modeli, 1970 civarında UNIX tarafından oluşturulmuştur. Berkeley Hızlı Dosya Sistemi (Berkeley Fast File System), düzeni ve performansı iyileştirmiş, 1990'lardaki günlükleme (journaling) ve günlük tabanlı (log-structured) tasarımlar ise çökme tutarlılığı (crash consistency) ve yazma performansını ele almıştır. ZFS ve Btrfs gibi kopyala-yaz (copy-on-write) dosya sistemleri daha sonra daha güçlü bütünlük için sağlama toplamlarını (checksums) ve anlık görüntüleri (snapshots) entegre etmiştir.

Tartışmalar

Tutarlılık için günlükleme (journaling) ve kopyala-yaz (copy-on-write) karşılaştırması
Günlükleme (journaling), değişiklikleri uygulamadan önce kaydederken, kopyala-yaz (copy-on-write) yeni verileri yeni konumlara yazar ve işaretçileri atomik olarak değiştirir; her ikisi de farklı performans, alan ve bütünlük ödünleşimleriyle çökme tutarlılığı (crash consistency) sunmakta olup, modern sistemlerde her ikisi de kullanılmaktadır.

Öne çıkan isimler

  • Ken Thompson
  • Dennis Ritchie
  • Marshall Kirk McKusick
  • Abraham Silberschatz

İlgili konular

Temel eserler

  • silberschatz2018
  • tanenbaum2014os

Sıkça sorulan sorular

Inode nedir?
Inode, bir dosyayı tanımlayan bir meta veri yapısıdır: boyutu, sahipliği ve izinleri, zaman damgaları ve verilerini tutan depolama bloklarına işaretçileri içerir. Dizinler, insan tarafından okunabilir adları inode'lara eşleyerek, bir dosyanın adını aygıt üzerindeki temsilinden ayırmaktadır.
Günlükleme (journaling) çökmelere karşı nasıl koruma sağlar?
Dosya sistemi yapılarını değiştirmeden önce, günlükleme yapan bir dosya sistemi (journaling file system) amaçlanan değişiklikleri bir günlükte kaydeder. Bir çökme güncellemeyi kesintiye uğratırsa, sistem yeniden başlatıldığında kaydedilen değişiklikleri tekrar oynatır veya atar, böylece dosya sistemini bozuk bırakmak yerine tutarlı bir durumu geri yükler.

Bu kavram için yöntemler

İlgili kavramlar