UNIX Dosya Sistemleri Nasıl Çalışıyor?

HaberAbi 06 Eyl 2021 Nasıl Yapılır? 48  0

EXT2, EXT3, EXT4 ve UFS…  UNIX gibisi sistemlerin birçoklarında kullanabileceğiniz yüzlerce evrak sisteminin yalnızca dördü. Bu belge sistemlerinin kendilerine has farklılıkları elbette mevcut, ancak ortak olan noktalar daha fazla. Dilerseniz bu ortak noktaları çabucak incelemeye başlayalım.

Öncelikle en temel noktadan, inode’dan başlayalım. Inode, belgenin metadata bilgisini tutan en küçük yapı taşıdır. Bu metadata’nın içeriğinde:

  • Belgenin bulunduğu aygıtın ismi,
  • Evrak seri numarası,
  • Belge tipi, sahibinin ve sahip kümenin nasıl erişeceğini belirten belge modları,
  • Inode’a bağlı olan “hard link” sayısı,
  • Evrak sahibinin kullanıcı kimliği ve evrakın küme kimliği,
  • Şayet evrak bir aygıtı temsil ediyorsa, aygıt kimliği,
  • Belgenin byte olarak boyutu,
  • UNIX saati (epoch) biçiminde belgenin son modifiye edilme, değiştirilme ve erişilme tarihleri,
  • Tercih edilen G/Ç blok sayısı ve bu belgeye tahsis edilen blok sayısı üzere bilgileri barındırır.

Eski evrak sistemlerinin birçoklarında, azamî inode sayısı evrak sisteminin oluşturulma vaktinde kısıtlanıyordu. Bu yüzden, diskte tutulabilecek evrak sayısı da azalıyordu. Bu şekil evrak sistemlerinde her 2000 byte’ta bir inode ile yönetim ediliyordu. Aktüel belge sistemleri, B-ağacı yahut inode pointer yapısı üzere bilgi yapılarının avantajını kullanarak kendilerini genişletebiliyorlar.

Her belgede, evrak isminin yanında inode’un kimliği denebilecek bir numara bulunuyor. Buna da inode numarası diyoruz. Inode numarası, evrakın oluşturma esnasında belge sistemi tarafından atanıyor. Bu numaraların hepsi belgeye hastır ve değiştirilemez.

Bir belgenin inode bilgilerini UNIX sistemlerdeki stat() sistem daveti yardımıyla sistemden çekebiliriz. Bu davet, evraktan inode numarasını alarak o numaraya karşılık gelen inode’u bulur ve inode hakkındaki bilgiyi döndürür. Bu sistem daveti hakkında daha fazla bilgi için bu siteyi referans alabilirsiniz.

Windows ve inode

Windows ile haşır neşirseniz, inode yapısı ile NTFS belge sistemindeki MFT yapısının benzeştiğini söyleyebiliriz. MFT yapısı her belgeyi B-tree içinde fiyat ve her girdinin bir belge kimliği vardır. Inode ile metadata olarak tek farkının belge müsaadelerinin farklı bir API üzerinden alınması olduğunu söyleyebiliriz. Ayrıyeten NTFS sistemi UNIX evrak sistemlerine nazaran daha karmaşık disk yayılımına sahip, örneğin ~900 byte’tan düşük boyutlu belgeler klasör ile tıpkı MFT girdisinde saklanıyor. NTFS’te ayrıyeten FAT’a kıyasla en büyük farklardan biri de hard link oluşturabilmesi.

Hard link ve sembolik link farkı.

Hard link

“Pointer” kavramına hakimseniz, hard link kavramı da sizlere yabancı gelmeyecektir. Hard link, bir belgenin inode’una direkt olarak bir referanstır. Hard link kullanarak bir belgeyi birebir kısımda tutmak kuralıyla istediğimiz klasöre atabiliriz yahut içeriğini değiştirebiliriz. Hatta bu süreçler sonucunda hard link hala istediğimiz belgeye bağlı kalacaktır, zira inode hala faal ve hard link dediğimiz yapı aslında inode’un referansıdır aslında.

Hard link oluşturmak için “ln” komutunu kullanabiliriz. Öncelikle klasörümüzde yalnızca “test” isimli evrak olduğunu belirtelim.

Klasörümüzün birinci hali.

Bir hard link oluşturalım ve farkı görelim.

Hard link oluştuktan sonra klasörümüz.

“test_hardlink” evrakımızı değiştirelim. Sanki asıl belgemiz olan “test” belgemize tesir edecek mi?

Hard link’teki içeriğimizi değiştiriyoruz.

Ve sonuç:

Değişmiş!

Bingo! Gördüğünüz üzere, hard link üzerine yaptığımız değişiklikler, asıl belgemizin da içeriğini değiştirmiş!

Sembolik link’lere geçmeden evvel, hard link’lerin belgeyi diğer bir yere kopyaladıktan sonra (cp) değişmediğini ama belgeyi kesip diğer bir yere yapıştırdıktan (mv) sonra değiştiğini dipnot olarak belirtelim. Zira kopyaladıktan sonra inode numarası değişmezken, kesip yapıştırdıktan sonra değişir.

Sembolik link (symlink)

Sembolik linkler, inode yerine belgenin direkt kendisine oluşturulan bir referanstır. Birebir hard link’te olduğu üzere symlink’te de yapılan bir değişiklik, belgenin kendisini değiştirir. Symlink ile referansı alınan bir belge rastgele bir kısımda, aygıtta yahut klasörde olabilir. Lakin symlink’in referans aldığı belgenin pozisyonu değişirse, symlink kırılacaktır.

Symlink oluşturmak için yeniden “ln” komutunu kullanacağız, ancak bu sefer “-s” parametresi ile.

Sembolik link (symlink) oluşturduk, ve “ls” komutumuz symlink’imizi farklı bir renkte gösterdi.

Gördüğünüz üzere, “ls” komutumuz symlink’imizi farklı bir renk ile gösterdi. Bir de symlink’imizi açalım bakalım:

Symlink’imizin içindeki sürpriz!

Gördüğünüz üzere, symlink’imizin içerisinden orjinal belgemizin içeriği çıktı, hem de symlink’te rastgele bir değişiklik yapmamamıza rağmen!

Bu yazımızda sizlere UNIX sistemlerdeki evrak sistemlerinin çalışma prensiplerini ve birkaç yardımcı kavramı açıkladık. Teklif ve görüşlerinizi yorumlarda belirtip, sorularınızı Technopat Toplumsal üzerinden sorabilirsiniz.

Etiketler: , , ,
NBA 2K22 İncelemesi
NBA 2K22 İncelemesi
Windows 11 Insider 22463 Önizleme Yapısıyla Neler Değişti?
Windows 11 Insider 22463 Önizleme Yapısıyla Neler Değişti?
Ev İnternetinizin Hızını Nasıl Artırabilirsiniz?
Ev İnternetinizin Hızını Nasıl Artırabilirsiniz?
NVIDIA, 3D Tasarıma Sahip GPU’lar İçin Hazırlanıyor
NVIDIA, 3D Tasarıma Sahip GPU’lar İçin Hazırlanıyor

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.