İçindekiler
Dosya sistemi yapısı genel olarak şu bölümlerden oluşur;
- Superblock
- Datablock
- Bootblock
- inode
Superblock
Dosya sisteminin boyutu gibi, bütünü hakkında bilgiler içeren bölüm. Dosya sisteminin büyüklüğü, başlangıç ve bitiş adresleri, inode tablosu, boş blok tablosu, veri bloklarının başlangıç adresleri gibi bilgileri saklar. Süperblok aynı zamanda dosya sisteminin düzgün olarak kalmasını sağlar, yapısı herhangi bir nedenle bozulursa bozukluğu giderebilecek yazılımların çalışmasını sağlanabilir bu yazılımlar otomatik olarak alınan yedekleri yükler. Aşağıdaki komutla superblock’u ve yedeklerini görebiliriz.
DataBlock
Dosyalardaki bilgilerin depolanmasını sağlayan kısımdır.
Bootblock
Dosya sisteminin ilk birkaç segmentinde yer almaktadır. Önyükleme bloğu, işletim sistemini yüklemek için kullanılan başlangıç önyükleme programını içerir.
iNode
iNode Index node, kelimelerinin kısaltılmasıdır. Bir dosya sisteminde (ext4,ext3,ntfs vb..) dosyaların saklanma işlemi dosyanın adı ve o ada karşılık gelen eşsiz, benzersiz bir tamsayıdan oluşmaktadır. Dosya sistemindeki her nesne iNode (index node) ile gösterilir. Bunu bir etiket olarak düşünebilirsiniz. File System’de her dosya ve dizinin eşsiz bir iNode numarası bulunur. iNode da dosyanın ismi ve File System ağacında nerede olduğu bilgisi tutulmaz, tutulan bilgiler ise aşağıdaki gibidir;
- Dosyanın türü
- Dosyanın izinleri(r-okuma,w-yazma,x-çalıştırma)
- Dosyanın sahibi ve grubu
- Dosyanın boyutu
- Dosyanın Access,change,modification zaman etiketleri
- Dosyanın silinme zamanı
- Link sayısı(soft veya hard link)
- Access Control List(ACL) bilgisi
- Dosyanın disk üstünde hangi blockta olduğu bilgisi
- Locking bilgisi,kullanımda olduğu zaman “kullanılıyor diye dosyayı locklar”
Inode Number Ne İşe Yarar ?
Inode Number, bir dosya sisteminde kaç adet dosya oluşturulabileceğini belirler.
NOT : Inode Number sonradan değiştirilemez. Diskte boş yer var ve Inode Numarası tükenmişse dosya oluşmaz ama var olan dosyalar büyüyebilir. Sonuçta Inode Number dosyaların büyüklüğüne bağlı değildir sadece dosyaların sayısına bağlıdır.
NOT : Klasörlere ait inode numarasını bulmak için ls komutunu -i parametresi ile kullanabilirsiniz. ls -i Herhangi bir dosyanın inode numarası ile o dosya üzerinde işlem yapabilirsiniz. Örneğin silemediğiniz bir dosya var ise, ismindeki özel karaterlerden dolayı yada benzer bir sorundan dolayı dosyayı silemiyorsunuz. Öncelikle ls -i ile dosyanın inode numarasını bulunuz ve find komutu ile dosyayı siliniz. Böylece dosya ismi işin içerisine katılmadan dosya direkt inode numarasından silinecektir. find . -inum ***** -exec rm {} \;
iNode bilgileriyle biz dosyanın ne olduğunu ve özelliklerini tutmuş oluyoruz. Peki dosya isimleri iNode da tutulmuyorsa dosyaların iNode ve ismini nerede tutacağız, bunları nerede gruplayacağız? Bu sorunun cevabı da directory oluyor.
Directory (dizin) : Bize içinde bulunan nesneleri iNode ve isimleriyle gruplamamıza yardımcı olan File System yapısıdır. Aslında bu haliyle özel dosyalardır diyebiliriz.Dizin içinde ayrıca bir üst dizini gösteren “ .. ” ve kendini gösteren “. “ dizinciklerde bulunur.
Dizinler ikiye ayrılır
Root Directory (/) : Her File System’de sadece bir tane Root(/) dizini bulunur. File System’i bir ağaç gibi düşünecek olursak ağacın kökü Root(/) dizinidir.
Sub Directory : Root dizinin altındaki her dizin bir alt dizin olarak geçer.
Dosya sistemi yapısını daha iyi anlamak için basitce bir örnek vermek gerekirse,Herhengi bir süreç (process) dosya yolu kullandığında çekirdek bu dosya yolunu sırasıyla /(kök) dizine bakar burdan bir alttaki dizinin index numarasını öğrenir.Sonra inode tablosuna bakarak bu inode numarası ile alttaki dizinin yolunu bulur ve bu şekilde ilerleyerek en son dosyanın datasına ulaşır.
Linux Disk bölümlendirme
Sabit diskler birden fazla bölümlere ayrılarak her bir bölüm ayrı bir işletim sistemine veya bir işletim sisteminin ayrı bir dizinine tahsis edilebilir. Disk bölümlendirmenin amaçları:
- İşletim sisteminin temel bileşenleri ile kullanıcılara veya kuruma ait bilgilerin ayrılması. Örneğin kullanıcı ev dizinleri, şirketin veri tabanı vs… Bu sayede işletim sisteminde yapılacak güncelleme gibi işlemler kullanıcı verisini etkilemeyecektir.
- Farklı karakteristikteki kullanımları ayırmak için. Örneğin /var dizini sürekli yazılan log dosyalarını içerirken, veritabanları ağırlıklı olarak sorgu için kullanılır. Bunlar için ayrı bölümlendirme yapılarak ayrı biçimlendirilebilir, gereksinime uygun iyileştirmeler yapılabilir.
- Yönetim kolaylığı. Örneğin /boot bölümü ayrı tutarak işletim sisteminin açılış problemlerini yönetmek daha kolay hale getirilir. Örneğin ağ üzerinden paylaştırılacak bir dosya sunucusunun dosyaları içeren bölümü ayrı bir bölüm yapılabilir.
İki ayrı disk bölümlendirme mantığı vardır, MBR ve GPT.
MBR (Master Boot Record)
MBR, IBM tarafından kullanılmaya başlayan bir disk bölümleme (partition) sistemidir. İlk başta sadece IBM sistemleriyle kullanılmak üzere tasarlanan MBR, 1983 yılında PC DOS 2.0 ile bütün bilgisayarların kullanımına sunulmaya başlandı. MBR, diğer adıyla Master Boot Record, sabit diskin başlama (ilk segmentidir) noktasıdır. Eğer MBR ya da MBR gibi bir başlama noktası olmasaydı, işlemci BIOS kodlarından sonra ne yapacağını bilemezdi. MBR‘nin adresi asla değiştirilemez ve bu noktaya işletim sistemleri tarafından kurulum sırasında veriler eklenebilir.
Temel olarak MBR iki bölümden oluşur diyebiliriz.
- Master Boot Code
- Master Partition Table
MBR‘nin başında 440 byte boyutunda Master Boot Code (Bootstrap) vardır. Bu kod, BIOS’un bootable bir cihaz ararken varlığına baktığı ve eğer var ise sistemi başlatma işini teslim ettiği kodlardır. Burada var olan kodlar işletim sistemlerine özel olabilir. Buradaki kod direkt işletim sistemini de başlatabilir, çoklu boot var ise boot ekranını oluşturacak programının kodlarını da içerebilir.
Master Boot Code‘un ardından 4 byte disk imzası alanı gelir. Disk imza alanının ardından 2 byte boş alan gelir. Bunun nedeni Eğer Master Boot Code, 440 byte alanına sığmaz ise, disk imzası ve bu boş alan eklenerek Master Boot Code‘un 446 byte değerine ulaştırılabilmesi içindir.
MBR’yi asıl önemli kılan Master Boot Code‘dan ziyade Master Partition Table‘dır. 64Byte boyutuna sahip bu tablo, boyutundan dolayı sadece 4 adet Primary Partition şeması içerebilir. Bir parantez açıp Sabit Disklerde bulunan Partition kavramında bahsedelim.
Partition (Bölüm)
Aynı sabit disk üzerinde yer alan bölümlerdir. Bir sabit disk, birden fazla partition bulunduruyorsa işletim sisteminde sabit diski birden fazla ayrı disk olarak görünebilir.
Primary Partition (Birincil Bölüm)
MBR‘de şeması bulunan sabit disk bölümlerinin adıdır. Primary partition işletim sistemi ve/veya veri depolayabilir ve Primary partition ların MBR üzerinde direkt şeması bulunur. Primary partition lardan birinin active ya da boot disk olarak işaretlenmesi gerekir. Bu işaretleme direkt anlamda işaretleme değildir. Master Boot Code içine işletim sisteminin ve bootloader’ın bu diskte olduğunu belirten bir kod eklenir. Eğer hiç bir diskte active işareti yok ise BIOS Post Ekranından hemen sonra Master Boot Code tarafından ekrana bir hata mesajı yazdırılır .Bu mesaj genellikle “No bootable media found” gibi olur. Primary partition yer yer Gerçek Bölüm de denilir. MBR’de en fazla 4 adet Primary partition disk bölümlendirmesine (partititon) izin verir.
Extended Partition (Genişletilmiş Bölüm)
Primary partition işletim sistemi veya veriyi depolayabilirken, Extended Partition (Genişletilmiş Bölüm) işletim sistemi veya veri depolayamaz. Peki ama o zaman bu bölüm ne iş yapar? Extended Partition sadece 1 tane olur ve Logical partition (Mantıksal Bölümler) bilgilerini üzerinde barındırır. Extended Partition larda veriyi Logical partition depolar. Yani Extended partition’u Master Partition Table‘a benzetebiliriz. Extended partion lar sınırsız sayıda Logical partitona ayrılabilir.
Açtığımız parantezi kapatalım ve Master Partition Table‘dan devam edelim. Master Partition Table, Primary partition bilgilerini tutar. Fakat MBR sisteminde Master Partition Table‘da Primary partition şeması için 64byte ayrılmıştır. Bu yüzden Master Partition Table sadece 4 Primary partition şemasını içerebilir. Yani MBR depolama sistemine sahip bir disk maksimum 4, minimum 1 Primary partition içerebilir.
Peki yukarıda Extended partition diye bir bölümden bahsetmiştik burada ondan bahsetmedik. Windows ortamında 3 tane Primary partition oluşan bir disk üzerine bir partition daha eklemek istediğinizde Windows, direkt olarak 4. paritionı Extended partition olarak oluşturur ve oluşturduğu partition Logical partition içerecektir. Yani Windows, son paritionın şemasını tutmak için son partition Primary partition Disk alanına olarak açar ama onu Extended partition Disk olarak kullanır.
Master Partition Table‘ın alanı kısıtlı dedik ama şimdi de Master Partition Table içine Extended partition ekledik. Extended partition demek sınırsız partition oluşturabilmek demektir. Madem Master Partition Table’a sınırız partition sığıyor o zaman Extended partition neden ihtiyaç var? dediğinizi duyar gibiyim.
Extended partition sadece bilgisi yani adresi, boyutu gibi bilgileri Master Partition Table üzerinde tutulur. Logical partition yani Extended partition lar üzerinde oluşturulan partitioınların şeması Extended partition içindeki tabloda tutulur.
MBR Logical partition şemasını barındırmaz sadece tek bir Extended partition şemasını barındırır. Extended partition içerdiği Logical partition şeması ise sabit diskin daha ilerideki sektörlerinde bulunur ve buradan bu şemaların bulunduğu sonraki sektörlere link verilir.
GPT (Guild Partition Table)
UEFI standardına sahip olan bu sistem, diskin bölümlerini düzenleyen en güncel sistemdir.
MBR’den açılış yapan BIOS’da bazı kısıtlamalar var. Günümüzde disk boyutları gittikçe büyümektedir. MBR’de kullanılan 32 bit LBA adresleme 2TB üzerini adresleyememektedir. Bu yüzden 64 bit LBA desteği olan GPT kullanımı önem kazanmaktadır. MBR formatındaki disk bölümlerini görmek ve yönetmek için fdisk komutu ile kullanılırken, GPT’de parted komutu kullanılmaktadır.
Alttaki diagramdan görebileceğiniz gibi, GPT diskler başta ve sonda olmak üzere iki GPT Header’a sahiptir. GPT’yi MBR’den daha kullanışlı yapan en önemli detaylardan biri ise bu diziliştir. GPT diskler, yedek header’ı sonda depoladığı için ana header zarar gördüğünde diskin kurtarılması çok daha kolay olur. GPT diskler ayrıca sorunları tespit etmek için CRC32 sağlama kullanır.
Diagramda dikkat çeken başka bir detay olan Protective MBR ise, BIOS tabanlı sistemlerin bu alanda bulunan bootloader ile GPT diskleri boot etmesine yarar. Ayrıca Protective MBR, GPT’ye karşı tanımsız olan disk araçlarının diske zarar vermesini engeller.
Linux kurulumu için minimum 3 adet disk bölümlendirmesi tavsiye edilmektedir. Bunlardan birincisi /boot bölümüdür. Bu bölüm linux çekirdeğininin bulunduğu disk bölümüdür. Ortalama olarak 200-300MB disk alanı ayrılması yeterlidir.
İkincisi ise geçici bellek olarak kullanılan swap alanıdır. Bu alan eskiden bellek miktarına göre ayarlanırken günümüzde donanımların çok fazla belleği olduğu bellek ile orantılı bir şekilde boyut vermeye gerek yoktur. Makinede çalıştırılacak servislere göre bu değer değişebilir fakat asla fiziksel bellek miktarı kadar yer ayırmaya gerek yoktur. Çünkü bir sistem eğer swap alanını kullanmaya başlamışsa orada ciddi bir performans sorunu var demektir. Ya sorunu çıkaran uygulama tespit edilerek gerekli düzeltmeler yapılmalı ya da ilave RAM takviyesi yapılmalıdır.
Üçüncü bölüm ise / (root) dosya sistemidir. Bu disk bölümlendirmesi tüm işletim sistemine ve kullanıcılara ait dosyaları tutmaktadır. Bu bölüm oluşturulmadan işletim sistemi kurulum aşamasına geçilemez.
https://www.cyberciti.biz/tips/understanding-unixlinux-filesystem-inodes.html
https://linux.web.tr/blog/25/inode-number-nedir-inode-numarasi
https://www.technopat.net/2013/12/02/mbr-ve-gpt-arasindaki-farklar/
https://wiki.ubuntu-tr.net/index.php?title=UEFI_ve_BIOS_hakk%C4%B1nda_detayl%C4%B1_bilgiler
İyi Çalışmalar…
Mustafa Bektaş Tepe