DOSYA SİSTEMİ UYGULAMASI BÖLÜM 13 DOSYA SİSTEMİ UYGULAMASI Yrd. Doç. Dr. Sevinç İlhan Omurca - OS Bölüm 13
Dosya Sistemi Yapısı Disk ikincil depolamanın en önemli kısmını oluşturur. Dosya sistemi de disk üzerinde bulunur. Diskleri birçok dosyayı depolama da elverişli cihazlar yapan iki karakteristikleri bulunmaktadır: Aynı yere yeniden yazılabilirler; bir bloğu diskten okuyup güncelleyip tekrar diskin aynı bölgesine yazmak mümkündür Disk üzerinde verilen herhangi bir blok bilgisine direk ulaşılabilir. Bu da sıralı ya da random istenen dosyaya kolayca ulaşılabileceği anlamına gelmektedir. (okuma yazma kafası hareketleri ile) I/O zamanını kısaltabilmek için bellek ve disk bloklar şeklinde organize edilmişlerdir. Her blok bir yada daha çok sektörden oluşmaktadır. File Control Block bir dosya hakkındaki bilgilerin saklandığı veri yapısıdır.
Dosya Sistemi
Partition içeriği MBR aktif partition bilgisini verir, aktif bölümün ilk bloğu okunur (boot blok) bu bloktaki program çalıştırılır. Superblok: dosya sistemi hakkında anahtar parametreleri saklar. Dosya sistemi ile ilk temasa geçildiğinde ya da sistem boot olduğunda bu bilgiler belleğe yüklenir. Free bloklar (bitmap ya da linklist) i-node: dosya ile ilgili tüm mantıksal ve fiziklsel yerleşim bilgileri Root dir: ağacın başındaki sistem dizini
Dosya Sistemine ait Katmanlı Yapı
Katmanlı Yapı
Katmanlı Yapı
… En alt katman I/O control, disk ile bellek arasında veri transferi için aygıt sürücüleri ve interrupt handlerları(kesme işleyici programlar) içerir. Aygıt sürücü bir dönüştürücü olarak da düşünülebilir. İçeriği yüksek seviyeli komutlardan oluşur. Aygıt sürücü genellikle, özel bit patternlerini, I/O kontrolöre hangi aygıt konumu üzerinde iş yapacağını ve ne yapacağını söylemek üzere I/O kontrolörün belleğindeki özel konumlara yazar.
… Basic file sistem, disk üzerindeki fiziksel bloklara okuma yada yazma işini yapabilmek için genel komutları ortaya çıkarmaya ihtiyaç duyar. Her fiziksel blok kendi adresi ile temsil edilir. Dosya organizasyon modülü, dosyalar ve mantıksal blokları hakkında bilgiye sahiptir. Hangi tip dosya yerleşiminin gerçekleştiğini ve yerleşim bilgisini bilerek mantıksal dosya bloklarını fiziksel bloklara adresleyebilir. Her dosyanın mantıksal blok adresi 0-N arasındadır. Bu durumda fiziksel blok adreslerine erişmek için bir adres dönüşümü gerekmektedir. Ayrıca boş alan yönetimi de bu katmanda gerçekleştirilir.
… Mantıksal dosya sistemi, metadata bilgisi ile ilgilidir. Metadata, tüm dosya sistemi yapısı ile ilgilidir. Dizin yapısını düzenler. Dosya yapılarını FCB(file control block) ile düzenler. Bir dosyaya ait tüm bilgiler bu yapılarda saklanır. Bu katman aynı zamanda dosya korunması ve güvenliğinden sorumludur.
Dosya Sistem Uygulaması Dosya sisteminin, disk ve bellek üzerindeki uygulaması işletim sistemlerine göre değişiklik gösterirler. Ama yine de değişmeyen bazı prensipleri vardır. Disk üzerinde, dosya sistemi, işletim sisteminin nasıl boot edeceği, fiziksel blok yerleşimleri, dizin yapısı ve özel dosyalar hakkında bilgi içerebilir.
Disk Üzerindeki Yapılar Boot kontrol bloğu, bir sistemin bir partitiondan boot edebilmesi için gerekli olan bilgileri içerir. Eğer disk bir işletim sistemi içermiyorsa, bu blok boş olabilir. Bu aynen bir partitionun ilk bloğu gibidir. UFS’lerde boot blok diye, NTFS’lerde ise partition boot sektör diye adlandırılır. Partition Kontrol bloğu, partitionlar hakkında detay bilgileri içerir. İçindeki blok sayısı, blokların boyutu, boş blok sayısı, boş blok pointerları, boş FCB sayısı ve pointerleri gibi. UFS’lerde superblok diye, NTFS’lerde ise Master file table diye adlandırılır. Bir dizin yapısı dosyaları organize etmek için kullanılır. Bir FCB, bir çok dosya detayı içerir, erşim hakları, sahibi, blokların yerleşim bilgileri. UFS’lerde inode diye, NTFS de, bu bilgi master file table bilgisinde saklanır, burda ilişkisel bir veri tabanı yapısından bahsedilebilir.
Bellekte Dosya Sistemi Yapıları İn-memory bilgisi, dosya sistemi yönetimi ve performans için kullanılır. Bu yapı şunları içerir: Partition tablosu, mount edilmiş bölüm bilgisi içerir. Dizin yapısı, güncel olarak erişilmiş olan dizin bilgilerini içerir. System-wide open-file tablosu, her açık dosyanın FCB bilgisinin kopyasını içerir. Per-process open-file tablosu, system-wide tablosuna uygun giriş pointerı içerir.
Bellekte Dosya Sistemi Yapıları
FCB
… Yeni bir dosya yaratmak için, bir uygulama programı mantıksal dosya sistemini çağırır. Mantıksal dosya sistemi, dizin yapısının formatını bilir. Yeni bir dosya yaratmak için, yeni bir FCB ayırır, uygun dizini belleğe okur, yeni dosya ve FCB ile günceller ve diske geri yazar.
… Bir dosya yaratıldı ve I/O işlemleri için kullanılabilir durumda. Öncelikle bunun için açılmalıdır. Open sistem çağrısı, dosya sistemine bir dosya adı verir. Dosya ismi gelince dizin yapısı araştırılır. Dizin bilgileri bu işlemleri hızlandırabilmek için genelde ön bellekte yer alırlar. Dosya bulunduğu zaman FCB’si, bellekteki system-wide-open-file tablosuna kopyalanır. Bir kopyası hala disk üzerindedir. Bir sonraki adımda, per-process open-file tablosunda bir giriş yapılır. Bu giriş system-wide tablosuna işaretçi içerir. Özetle dosya kapatılmadığı sürece, tüm işlemler per-proc open-file tablosunda yapılır. Bir proses bu dosyayı kapattığı zaman, per,proc tablo girişi temizlenir ve kaç prosesin dosyayı açtığını belirten open count sayısı 1 azaltılır.
Dizin Yapılandırılması Lineer Liste Yapısı En basit yollarından birisidir. Dizin, veri bloklarına işaretçiler ile dosyaların adlarına lineer liste olarak erişir. Özel bir girişin bulunabilmesi için bu liste yapısında lineer arama yapılır. Bir dosya yaratılacağı zaman önce dizin yapısı aynı isimde başka dosya varmı diye taranır varsa aynı isim verilemez. Sonra dizin kaydına yani bir kayıt eklenir. Bu yöntemin dezavantajı her seferinde lineer arama yapmak zorunda olmamız ve bunun çok zaman almasıdır. Hash Table Dizin organizasyonunda kullanılan bir diğer veri yapısı hash tablolardır. Bu metotta, dizin girişlerini bir lineer liste yapısı tutar, fakat bununla birlikte bir hash veri yapısı da kullanılır. Hash table, dosya adından hesaplanan bir değeri alır ve lineer liste yapısındaki dosya adına bir işaretçi döndürür. Buradaki tek dezavantaj çakışmadır. İki dosya adı aynı yere hash ettiklerinde oluşan durum.
Yerleşim Metotları (Sürekli Yerleşim) Contiguous allocation (Linkli Yerleşim) Linked allocation (Indexli Yerleşim) Indexed allocation
Sürekli Yerleşim Her dosya diskte sürekli disk blokları ile temsil edilir. Disk adresi disk üzerinde doğrusal sıralama şeklindedir. Bu metotta dosya ilk bloğun başlangıç adresi ve boyu ile gösterilir. Özetle dosyanın başladığı yer ve blok adedi. Dosyalara erişim bloklar sürekli olduğu için kolay ve hızlıdır. Sequential ve direct adressing metotlarını destekler. Burada esas problem Yeni bir dosya için gerekli olan sürekli boş miktardaki yeri bulmaktadır. Her zaman yeni yaratılacak dosyanın boyunu tam olarak bilebilir miyiz ? Her zaman dış parçalanmadan bahsetmek mümkündür.
…
Örnek
örnek Block size=1024 bytes Hangi blok X dosyasının 0.byte (LA=0) bilgisini taşır? disk block=6, disk block offset=0 Hangi disk blogu LA 2500 deki byte bilgisini saklar? Yada LA 2500 disk uzerinde nerededir?
Linkli Yerleşim Bu metodda her dosya disk bloklarının bir linked list ‘i şekilde tanımlanır. Disk blokları diskin herhangi bir yerinde olabilirler. Sürekli olmaları gerekmemektedir. Dosyalar ilk bloğun başlangıcı ve son bloğun bitiş adresleri ile gösterilirler. Bunun dışındaki ilişkiler blokların kendi aralarında birbirlerini işaret etmeleri şeklinde gerçeklenir. pointer block =
… Sürekli yerleştirmedeki gibi bir fragmentation ‘dan bahsetmek mümkün değildir. Dosya yaratılırken boy deklarasyonu gibi bir zorunluluk yoktur. Değişiklikler gerçekleştikçe dosyanın boyu kolayca değiştirilebilir. Bu metodun da elbette ki dezavantajları vardır. Bunlardan en önemlisi pointer link şekilde gidildiği için sequential erişime zorlamasıdır. Herhangi bir adrese ulaşılmak istendiğinde o adrese kadar olan tüm adresler incelenmek zorundadır. Bir diğer dezavantaj pointer için ekstra bir depolama alanına ihtiyaç olunmasıdır Daha önemli bir problem ise güvenilirliktir. Bloklar birbirine pointerlar ile bağlı olduğu durumda , diskte herhangi bir blokta arıza meydana geldiğinde ya da bir pointer kaybolduğunda ya da yazılımsal bir problem çıkıp pointer yanlış ifade edildiğinde ne olacaktır. Bu çok ciddi bir problemdir.
..
Ornek Mapping Algortihm Block size=1024 bytes Pointer size=4 bytes File size=4000 bytes Dosya baslangic blogu = 5 LA 2900 disk uzerinde nerededir?
Dosya Yerleşim Tablosu-FAT
Indexli Yerleşim Sürekli yerleşim ve indexli yerleşimin problemlerini önemli oranda gideren bir metoddur. Hem external fragmentation , hem de direkt erişim için önemli çözümler sunar. Güvenliği de iki metodun arasında kabul edilebilir. Uygulamada her bloğun yerlerinin kaydı detaylı bir şekilde tutulur. Bu kayıtların tutulduğu yere index block adı verilir. Her dosya için bir index blok bulunur. Burada dosyaya ait her disk bloğunu işaret eden ayrı bir kayıt vardır. Dosya yeni yaratıldığında tüm index bloğu kayıtları boştur. Bir blok yazıldığında blok free space list ‘ten silinir , ilgili dosyanın index bloğuna yazılır. Direkt dosya erişimine izin verir. External fragmentation problemi yoktur.
…
Ornek
Ornek-Two Level Index
Ornek-Two Level Index Max file size=512*512*512
Örn: UNIX (block size =4K bytes)
UNIX Dosya Sistemi Dizindeki her dosya kaydı için bir giriş bilgisi tutar(i-node) Bir dizin iki alandan oluşur: Dosya adı: 14 bytes Bu dosya için i-node numarası: 2bytes
UNIX i-node
i-node İlk 10 pointer data bloklarına işaret eder Blok 11 “indirect bloklar” a işaret eder, 256 tane içerir Blok 12 “double indirect bloklar” a işaret eder, toplam 64 K lık blok için 256 indirect blok içerir Blok 13 “triply indirect bloklar” a işaret eder(16M blokcs)
/usr/ast/mbox dizinine erişmek
Boş Alan Yönetimi Boş disk yeri listesi için sistem free space list denen bir tablo kaydı tutar. Yeni bir dosya yaratılacağında bu boş yer listesinden ilk boş yerin bilgisi alınır ve dosya oradan yaratılmaya başlanır. Kullanılan kısımlar boş yer listesinden silinir. Bir dosya silindiği zaman free space list ‘e tekrardan eklenir. Kullanılan Yöntemler: Bit Vektör Linked List Gruplama (Grouping) Sayma (Counting)
Bit Vektör Çoğunlukla boş alan listesi bir bit map veya bit vector şekilde gerçekleştirilir. Her blok bir bit ile temsil edilir. Eğer blok boş ise bit 1 ‘d’r , dolu yani kullanılıyor ise 0 ‘ dir . Diskin 2,3,4,5,8,9,10,11,12,13,17,18,25,26,27 nolu blokları dolu ve diğer kısımları bos ise bit map : 110000110000000111001111111001111.... Bos blogun daha etkin sekilde bulunmasini istersek word taramasi yapilabilir
Linkli Şema
Windows Dosya Sistemi Terminolojisi Sektörler: Depolama birimindeki donanım-adreslenebilir bloklar x86-temelli sistemlerde harddisklerde tipik sektör boyutu 512 byte tır. Dosya sistemi formatı: Depolama biriminde saklanan veriyi tanımlamanın yolu Dosya sistemi özellikleri: izinler & güvenlik, dosya boyutlandırmadaki limitler, small/large files/disks için destek Cluster’lar: Birçok dosya sisteminin kullanabileceği adreslenebilir bloklar Birden çok sektörden oluşur. Cluster size tradeoff: space efficiency vs. access speed Metadata: Metadata dosya ve dizinlerin bölümler üzerindeki yerleşimini tanımlar. From the start, the Windows NT File System (NTFS) was designed to include features required of an enterprise-class file system. To minimize data loss in the face of an unexpected system outage or crash, a file system must ensure that the integrity of the file system‘s metadata be guaranteed at all times, and to protect sensitive data from unauthorized access, a file system must have an integrated security model. Finally, a file system must allow for software-based data redundancy as a low-cost alternative to hardware-redundant solutions for protecting user data.
Windows tarafından desteklenen formatlar CD-ROM File System (CDFS) Universal Disk Format (UDF) File Allocation Table (FAT12, FAT16, and FAT32) New Technology File System (NTFS)
FAT FAT (File Allocation Table) dosya sistemi DOS ve Windows 9x için dosya formatı Windows FAT dosya sistemi sürücüsü\Winnt\System32\Drivers\Fastfat.sys de uygulanmıştır. Her FAT formatı, disk üzerindeki bir clusterı tanımlamak için kullanılan bitleri temsil eden bir numara içerir. Boot sector File allocation table 1 File allocation table 2 (duplicate) Root directory Other directories and all files FAT format organization
NTFS Volume leri 16 exabytes (16 billion GB) a kadar adresleyebilir. NTFS Windows’un temel(native) dosya sistemi NTFS 64-bit cluster indexi kullanır Volume leri 16 exabytes (16 billion GB) a kadar adresleyebilir. Windows 2000 bir NTFS volume’ün boyutunu 32-bit adreslenebilir cluster ile sınırlandırır. (64-KB cluster kullanır) Neden FAT yerine NTFS? FAT daha basit, fakat NTFS şunları destekler: Daha geniş dosya boyutu ve diskler Daha geniş disklerde daha iyi performans, geniş dizinler, ve küçük dosyalar güvenilirlik Güvenlik
NTFS & Dosya Nesneleri Process Handle table Stream control blocks File control block File object Object manager data structures File object Data attribute Master file table User- defined attribute NTFS data structures (used to manage the on-disk structure) App accesses files as NT objects by handles. Object Manager and security subsystem verify access rights NTFS database (on disk)
Master File Table Tüm veriler bir dosyanın içerdiği bir volume üzerinde saklanır. MFT: NTFS volume yapısının kalbi Kayıtlar dizisi şeklinde organize edilmiştir. Volume üzerindeki her dosya için bir satır. (MFT kendisi için de bir satır içerir) Metadata dosyaları dosya sisteminin yapısını saklar (hidden files; $MFT; $Volume...) MFT MFT copy (partial) Log file NTFS metadata file Volume file Attribute def. table Root directory Bitmap file Boot file Bad cluster file Lab: View NTFS Metadate files Nfi.exe c:\ (Dir /a:h $mft) See http://support.microsoft.com/support/kb/articles/Q253/0/66.asp ... User files and dirs.