İçindekiler


Dosya sistemi verilerin nasıl saklanacağını ve tutulacağını belirleyen sistemdir. Bir sabit diskin herhangi bir dosya sistemi ile formatlanması demek, üzerine yazılacak bilgilerin nereye ve hangi standartlara göre yazılacağının belirtilmesi demektir. Formatlama işlemi yapılmamış bir sabit diskin üzerine anlamlı bilgi kümeleri yazmak söz konusu değildir.

Dosyalarımız fiziksel depolama alanları üzerinde tutulur. Bu alanlar bilgisayarımızdaki dahili harddisk , harici hard diskimiz , CD/DVD ROM, SAN, NAS.. gibi biçimlerde olabilir. Peki bu alanlardaki bilgilere nasıl erişiriz sorusunun cevabı File System(Dosya Sistemi) oluyor arkadaşlar. File System olmadan depolama alanına ne bir şey kopyalayabiliriz, ne paylaştırabiliriz, ne güvenlik ve erişimini sağlayabiliriz ne de herhangi bir şekilde kullanabiliriz. İşletim sistemimizin verilere erişimi için yine onun bileceği bir biçimde diski biçimlendirmeliyiz. Yani  Disklerin işletim sistemin kullanabilmesi için çekirdeğin tanıdığı bir formatta olması gerekir.

Windows ailesinde bulunan işletim sistemleri (XP, 2000, ME, 98, vs…) FAT32 ya da NTFS dosya sistemi kullanmaktadır. Linux dağıtımlarıysa seçenekleriniz daha fazladır; ext2, ext3, ReiserFS, jfs, xfs ve daha birçok farklı dosya sistemini kullanabilirsiniz. Elbette bunca seçenek arasında, her iki işletim sisteminde de, ön plana çıkanlar olmuştur. Şimdi sırasıyla Linux’un dosya sistemi gelişim seyrini ve diğer destek verdiği dosya sistemlerini inceleyelim.

  Extendend File System (extfs)

Linux işletim sistemi ile birlikte kullanıma giren bu dosya sistemi extended files ystem (uzatılmış dosya sistemi) ya da kısaca ext olarak adlandırılır.  Temel olarak Linux için Unix benzeri bir dosya sistemi sağlar, fiziksel aygıtları işlemek için sanal dizinler kullanılır ve veriler fiziksel aygıtlardaki belli uzunluktaki bloklarda depolanır. 1992 yılında Linux için Minix File System’deki (MFS) yetersizliklerden dolayı ilk geliştirilmiş dosya sistemidir. MFS’de dosya isimleri en fazla 14 karakter, maksimum dosya boyutu da 64MB olabiliyordu. Günümüzde kullanılmıyor diyebiliriz.

Ext dosya sistemi, sanal dizinde depolanan dosyalar hakkında iz bilgisi veren inode adlı bir sistem kullanır. İnode sistemi, dosya bilgisini saklamak için her bir fiziksel aygıt üzerinde ayrı bir tablo yaratır ve buna inode tablosu denir. Sanal dizinde depolanan her dosyanın inode tablosunda bir girişi vardır. Bu dosya sistemi türünün adındaki extended (uzatılmış) sözcüğü, her dosyada izlenen aşağıda sıralanan ek verilerden ötürüdür:

  • Dosya adı
  • Dosya boyutu
  • Dosyanın sahibi
  • Dosyanın ait olduğu grup
  • Dosya için erişim izinleri
  • Dosyadan veri barındıran her disk blokuna işaretçiler

Linux, inode tablosundaki her bir inode’u, dosya sistemi tarafından veri dosyaları yaratmakla görevlendirilmiş özgün bir numara kullanarak (inode numarası) işaretler. Dosya sistemi, bir dosyayı belirlemek için tam dosya adı ve yolundan ziyade inode numarasını kullanır.

Second Extended (extfs2)

Orijinal ext dosya sistemi, dosya boyutunu 2GB ile kısıtlıyordu bunun yanısıra performans eksiklikleri ve geliştirilmesi gerekliliği  sebebiyle 1993 yılında yeni bir tasarım anlayışıyla Virtual File System (VFS) mantığı getirilerek dosya sistemi işlemleri, sistem çekirdeğinden  çıkartılmış araya VFS’le çekirdekle diğer dosya sistemleri arasına bir ara yüz eklenmiştir. VFS sayesinde sistem çekirdeği sadece dosya işlemleri için VFS’le muhatap oluyor ama VFS’in önüne kim gelirse gelsin aynı şekilde isteyeceği için VFS bu istekleri anlamakta zorluk çekmiyor. Extfs2 dosya sistemi journaled (günlüklü) dosya sistemi değildir. Bu yüzden USB flash tipi veya solid state disks (SSD) gibi depolama alanlarında yüksek hız ve performans sağlar.

Tahmin edeceğiniz gibi ext2 dosya sistemi, ext dosya sisteminin temel yeteneklerinin genişletilmiş hâlidir; fakat aynı yapıyı da korur. Ext2 inode tablosu, sistem yöneticisine sistem üzerinde dosya erişimi için yardım etmek üzere dosyalar için oluşturulma, değiştirilme ve son erişim zamanı değerlerini barındırır.

Ext2 dosya sisteminde ayrıca izin verilen azami dosya boyutu 2TB’dir (Sonraki ext2 sürümlerinde 32 TB’ye kadar artış olmuştur). Böylelikle sunucuların veritabanlarında sıklıkla bulunan geniş boyutlu dosyalara uyum sağlamaya yardımcı olur.

İnode tablosunun genişlemesine ek olarak ext2 dosya sistemi, hangi dosyaların veri bloklarında depolanacağının yolunu da değiştirdi. Ext dosya sistemindeki yaygın sorun bir dosya fiziksel aygıta yazılırken verileri depolamak için kullanılan blokların, aygıtın (parçalanma denilen) her tarafına dağılma meyli idi. Veri bloklarının parçalanması dosya sisteminin performansını azaltabilir aynı zamanda belli bir dosya için depo aygıtında arama işlemi için tüm bloklara erişim uzun sürer. Ext2 dosya sistemi bir dosyayı kaydettiğiniz zaman disk bloklarını gruplara ayırarak parçalanmayı azaltmaya yardımcı olur. Bir dosya için veri blokları gruplandığında, dosya sistemi belli bir dosyayı okumak için fiziksel aygıttaki tüm veri bloklarında arama yapmak zorunda kalmaz.

Ext2 dosya sistemi uzun yıllardır çoğu Linux dağıtımında öntanımlı olarak gelen dosya sistemiydi; fakat onun da sınırlılıkları vardı. İnode tablosu, dosya sistemine iz sürmesi için dosyalar hakkında ek bilgiler sağlamak gibi hoş bir özelliğinin yanı sıra sistem için çok ciddi sorunlar da oluşturabiliyordu. Sistem bir dosyayı her güncellediğinde ve depoladığında, inode tablosunu da yeni duruma göre değiştirmek zorundaydı. Sorun ise bu işlemin her zaman akıcı bir işlem olmayışıdır.

Eğer dosya depolanırken ve inode tablosu güncellenirken bilgisayardaki sisteme bir şey olursa, her ikisi de birbiriyle uyumsuz olur. Ext2 dosya sistemi, sistem çökmeleri ve güç kesintisinden dolayı kolayca bozulmasıyla nam salmıştır zaten. Veri dosyası fiziksel aygıta düzgün biçimde depolansa bile inode tablo girişi tamamlanmamışsa ext2 dosya sistemi böyle bir dosyanın var olduğunu bile bilmeyecektir! Bu sebeplerle geliştiriciler farklı bir Linux dosya sistemi arayışına girdiler.

Journaling (Günlükleme)

Günlükleme dosya sistemleri Linux’a güvenlikte yeni bir düzey sağlıyor. Depolama aygıtına veriyi doğrudan yazmak ve sonra inode tablosunu güncellemek yerine bu dosya sistemleri dosyadaki değişiklikleri ilk başta geçici bir dosyaya (journal denen) yazarlar. Veri başarılı bir şekilde aygıta ve inode tablosuna yazıldıktan sonra journal girişi silinir. Eğer veri depolama aygıtına yazılmadan önce sistem çöker ya da güç kesintisi olursa, günlükleme dosya sistemi sadece journal dosyasını okur ve süreçte işlenmemiş veri kalmaz.

Linux’ta çoğunlukla kullanılan üç farklı günlükleme yöntemi vardır, her biri farklı düzeyde koruma sağlar. Bunlar aşağıdaki tabloda gösterilmiştir.

Veri kipi (Data) : Hem inode hem de dosya verisi günlüklenir. Veri kaybı olasılığı çok düşük; fakat başarım da (hızda) düşük.

Düzenli kip (ordered) – (default) : Günlüğe sadece inode verisi yazılır; fakat veri başarılı bir şekilde yazılana dek silinmez. Başarım ve güvenlik açısından iyi bir bileşim.

Geri yazma kipi (writeback) : Günlüğe sadece inode verisi yazılır, dosya verisi yazıldığında bir kontrol yapılmaz. Yüksek veri kaybı riski ama yine de günlükleme kullanmamaktan daha iyi

Third Extended (extfs3)

2001 yılında 2.4.15 Linux kerneline dahil olan extfs3 dosya sisteminin extfs2’den farkı journaling (default olarak ordered journeled kullanır) meselesi, online file system büyütebilme ve büyük dizinler için HTree indeksleme mekanizması getirmesidir.

Ext3 dosya sistemi, Linux dosya sisteminin temel günlüklemesine eklendiğinde hâlen birkaç noksan tarafı vardı. Örneğin, ext3 dosya sisteminde kazara dosyaların silinme durumu için kurtarma kipi bulunmuyor, mevcut gömülü veri sıkıştırma özelliği yok (ayrı olarak yüklenen ve bu özelliği sağlayan bir yama var sadece) ve ext3 dosya sistemi dosyaların şifrelenmesini desteklemiyor.

Fourth Extended (extfs4)

2006 yılında Theodore Ts’o tarafından geliştirilen,2008’de daha kararlı yapıya kavuşan extfs4 Redhat Enterprise Linux Server ve Centos Ailesinin 6.x sürümlerinde de gelmeye başladı. Theodore bu geliştirmeden sonra 2010 yılında Google’a geçti ve Google kendi sunucularında ayrıca Android İşletim sistemlerinde extfs4’ü dosya sistemi olarak kullanmayı piyasada var olan rakip dosya sistemlerinden daha iyi test sonuçları verdiği için tercih etti. Geliştirmeleri devam ettiği için Windows ve Mac OS’la uyumluluk çalışmaları devam etmektedir.

Ext4 journalleme nin güvenirliliğini artırmak için extfs3’te journallemede olmayan bit checksum extfs4’de işler hale getirildi.

Sıkıştırma ve şifreleme desteğine ek olarak, ext4 dosya sistemi aynı zamanda kaplam (extens) diye adlandırılan bir özelliği de destekliyor. Kaplam, depolama aygıtında bloklar hâlinde alan ayırır ve sadece inode tablosundaki başlangıç konumu bloğuna depolar. Bu işlem, dosyadan veri depolamada kullanılan tüm veri bloklarını listemeye gerek kalmadan alan tasarruf etmeye yardımcı olur.

Ext4 dosya sistemi, önceden blok ayırmaya imkân veriyor. Eğer bir süre için bir depolama aygıtında boyutunu arttırabileceğiniz bir yer ayırmak isterseniz, sadece fiziksel olarak var olan bloklar için değil, aynı zamanda dosya için de tüm beklenen blokları ayırmak mümkün. Ext4 dosya sistemi, ayrılan veri bloklarını sıfırlarla doldurur ve diğer başka dosyalara ayırmaması gerektiğini bilir.

Reiser Dosya Sistemi

2001 yılında Hans Reiser, ReiserFS adını verdiği Linux için ilk günlükleme(journaling) dosya sistemini yarattı. ReiserFS dosya sistemi sadece geri yazma günlükleme kipini destekliyor, günlük dosyasını sadece inode tablo verisine yazıyor. Günlüğe sadece inode tablo verisini yazması sebebiyle, ReiserFS dosya sistemi Linux’taki en hızlı günlükleme dosya sistemlerinden biridir.

ReiserFS dosya sistemi ile birleştirilmiş iki ilginç özellikten biri, hâlâ etkin iken bir dosya sistemini yeniden boyutlandırabilmektir. Diğeri de Tailpacking (kuyruk birleştirme) tekniği diye de anılan bir yöntemdir, veriyi bir dosyadan diğerindeki bir veri bloğunda bulunan boş alana doldurur. Etkin dosya sistemini yeniden boyutlandırma özelliği, önceden oluşturmuş olduğunuz dosya sistemine daha fazla veri yerleştirmek için genişletmeniz açısından mükemmel bir özelliktir.

Günlükleme Dosya Sistemleri (JFS)

Unix’i andıran AIX için IBM tarafından 1990 yılında geliştirilen (Journaled File System-Günlükleme dosya Sistemi) JFS’dir. Bununla birlikte, Linux ortamına taşınana dek ikinci sürümü olmadı.

Not: JFS’nin IBM adı altındaki ikinci sürümü JFS2’dir; ancak çoğu Linux sistemi JFS2’yi de sadece JFS olarak adlandırır.

JFS dosya sistemi, düzenli günlükleme yöntemini kullanır, günlüğe sadece inode tablosu verisini depolar; fakat güncel dosya verisi depolama aygıtına yazılıncaya dek kaldırmaz. Bu yöntem, ReiserFS’nin hızı ile veri kipi günlükleme yönteminin sağlamlığı arasında bir uzlaşıdır.

JFS dosya sistemi extends temelli dosya paylaşımını kullanır, depolama aygıtına yazılan her bir dosya için bir grup blok ayırır. Bu yöntem depolama aygıtında daha az parçalanmaya yol açar. IBM Linux’un sunmasının dışında, JFS dosya sistemi yaygın olarak kullanılmıyor.

XFS Dosya Sistemi

XFS günlükleme dosya sistemi, aslında yolu Linux dünyasından geçen ticari bir Unix sistemi için tasarlanmış olan bir dosya sistemidir. Silicon Graphics Incorporated (SGI- Silikon Grafik Anonim Şirketi) XFS dosya sistemini aslında kendi IRIX Unix sistemi için 1994 yılında yarattı. Linux ortamında ise yaygın olarak 2002 yılında boy göstermeye başladı.

XFS dosya sistemi geri yazma kipi günlüklemeyi kullanır, bu yöntem yüksek başarım sağlar ama aynı zamanda bir miktar riski de beraberinde getirir, çünkü güncel veri günlükleme dosyasına kaydedilmez. XFS dosya sistemi, ReiserFS dosya sistemine benzer biçimde çevrimiçi olarak dosya sistemini yeniden boyutlandırma olanağı sunar, bunun haricinde XFS dosya sistemleri sadece genişletilebilir, fakat daraltılamaz.

Bunların haricinde geleceği parlak bir dosya sistemi daha var: BTRFS. Onu da bir sonraki sayımızda ele almayı planlıyoruz.

BTRFS Dosya Sistemi

Btrfs, Linux ailesinin yeni nesil dosya sistemi olarak biliniyor. Btrfs  dosya sistemi Oracle’dan Chris MASON tarafından 2007 yılında oluşturuldu ve Linux 2.6.29 çekirdeğine 2009 yılında eklendi. BTFRS dosya sistemi ext2,3,4 gibi Linux sistemler de yaygın olarak kullanılan sistemlere oranla çok daha güçlü özelliklere sahip, kısaca bu özellikler göz atalım,

  • Checksum fonksiyonu ile data bütünlüğü sağlar,
  • Ext2,3,4 dosya sistemlerine göre daha performanslı,
  • Entegre logical volume managment yapısı ile RAID 0, 1, 10 kullanma imkânı sağlar,
  • Mantıksal sıkıştırma ile daha az fiziksel disk boyutu ile daha yüksek boyutlu dataları saklayabilme imkanı sunar,
  • Diskin snapshout’unu alma imkânı sunar,
  • İki farklı subvolume arasındaki farklılıkları kaydetmenizi sağlar.

NFS (Network File System)

NFS(Network File System), Ağ Dosya Sistemi (NFS), bir ağ üzerindeki birden fazla bilgisayarda bulunan dosyaların, tek bir sabit diskteymiş gibi yönetilmelerini sağlar.Böylece, dosyaların erişelebilmek için nerede olduğunuzun önemi olmaz. NFS sayesinde bir makinada yer alan belirli bir disk bölümü, başka makinalar tarafından okunabilir veya yazilabilir. Her makinada ayni dosyalar, çalistirilabilir programlar olmasi yerine bunlar tek sunucuda toplanir, diger bilgisayarlar bu alani ortaklasa paylasirlar. Paylasilan dizin, sanki yerel makinanin bir diziniymis gibi davranir. Kendi disk alanini paylastiran makinaya NFS sunucusu, bu diske erisim yapan makinalara da NFS istemcisidir
NFS olarak adlandırılan şey birbirinden farklı 4 protokolün birleşmesinden meydana gelmiştir. Bu 4 protokolde RPC(Remote Procedure Calls) ve portmap (rpc.portmap) portmapper, RPC program numaralarını port numaralarına çevirir. RPC sunucusu çalışmaya başladığında portmap’e hangi kapının kullanılacağını ve yönetilen RPC program numarasını söyler.Bir kullanıcı bir program numarasına bir RPC isteği göndermek istediğinde; istenen programa erişim veren port numarasını almak için öncelikle sunucu ‘portmap’iyle bağlantı kurulur.Ardından RPC paketleri ilgili portlara gönderilir.
NFS’in çalışması, yerel bir diskin mount edilmesi kadar kolaydır.  NFS konusu başka bir yazıda detaylı olarak inceleyeceğiz.

SMB (SAMBA)

Samba, Linux/Unix işletim sistemleri ile Windows işletim sistemleri arasındaki iletişim kuran bir ağ sunucusu yazılımıdır. Linux’ta arka planda çalışan bu Deamon Windows istemcilerinin samba kurulu olan sunucuda paylaşıma açılmış dosya ve dizinlere ulaşılmasına olanak tanır bunun yanında istemcilerin yazıcı isteklerinide yönetebilir. Tam olarak Samba yapılandırılmış bir Linux sunucusu, genel olarak dizinleri paylaştırabilir, aktif dizin servisi (ADS – Active Directory Services) verebilir ayrıca PDC (Birincil Alan Denetleyicisi) olarak da çalışabilir, Windows istemcileri ile kullanıcı onayı yapar, kaynakları (dizinleri ve yazıcıları) paylaştırır ve kullanıcı oturumlarını uyarlar. Samba Windows istemcileri (clients) için dosya, yazıcı servisi sağlamanın dışında istemciler için işlevsellik ve yardımcı uygulamalar içerir.

ISO 9660

CD-ROM un için oluşturulmuş dosya sistemidir.

NOT : Kullandığımız Linux sisteminin hangi dosya sistemlerlerine destek verdiğini öğrenmek için;

Linux Dosya Sistemleri 1

Bu listede Linux sistemimizde var olan modulleri gördük ama bu modüller , şu an ki kernelimizin içinde yüklenmemiş olabilir veya çalışmak istediğimiz dosya sisteminin modülü bu listede hiç yoksa kernelimize uygun şekilde derleyip o modülü kernelimize eklememiz gerekir. Kerneldeki modülleri görmek istiyorsak;

Linux Dosya Sistemleri 2

https://en.wikipedia.org/wiki/File_system

http://www.nextstep4it.com/categories/how-to/linux-filesystem/

https://www.cozumpark.com/blogs/linux_unix/archive/2012/02/19/linux-file-system-linux-dosya-sistemleri-bolum-2.aspx

https://sudo.ubuntu-tr.net/linux-taki-temel-dosya-sistemleri-ext2-ext3-ext4-jfs

İyi Çalışmalar…
Mustafa Bektaş Tepe

Loading