SquashFS Nedir?

Giriş

Küçük boyutlu ve gömülü Linux sistemler oluşturulurken, depolama biriminin (disket, flash, disk vb.) her byte'ı çok önemli olduğundan mümkün olan her yerde sıkıştırma kullanılır. Ayrıca sıkıştırılmış dosya sistemleri arşivleme amacıyla da sıklıkla kullanılırlar. Kişisel arşivlerin yanı sıra büyük kamusal arşivlerde de olmazsa olmazlardan biri sıkıştırılmış dosya sistemleridir.

SquashFS bütün bunları başka bir seviyede ele alır. SquashFS isterseniz tek tek dizinleri, isterseniz bütün dosya sistemini sıkıştırmanıza izin veren; onları başka aygıtlara/disk bölümlerine ya da sıradan dosyalara yazabildiğiniz ve (eğer aygıt ise) doğrudan bağlayabildiğiniz veya (eğer bir dosya ise) loopback aygıtını kullanarak bağlayabildiğiniz salt-okunur bir dosya sistemidir. Sistem tasarımının modüler ve kompakt olması harikadır. Arşivleme amacıyla kullanıldığında bir tarball arşivinden daha fazla esneklik ve performans sunar.

SquashFS Linux çekirdeğine (çekirdeğin SquashFS okuması için desteği sağlayan) bir yama, (bir dosyaya ya da blok aygıtına) sıkıştırılmış dosya sistemini yaratan mksquashfs ve bu sıkıştırılmış dosya sisteminden dosyaların çıkartılmasına imkan tanıyan unsquashfs aracları ile birlikte dağıtılmaktadır.

Son SquashFS sürümü 3.x, bir önceki ise 2.x serisidir. Bu belgede gerektiğinde verilen notlarla her iki sürüm için de açıklamalar yapılmıştır. Örneğin eğer sürüm ağaçlarında bir özellik veya parametre farklı ise bu durum şöyle gösterilmiştir: new value (3.x) veya old value (2.x).

SquashFS'e Genel Bir Bakış

  • Veri, düğüm ve dizinler sıkıştırılmıştır.
  • SquashFS dosya yaratılma zamanını ve tüm uid/gid'leri (32 bit) saklar.
  • Dosya büyüklüğü 2^64 byte'a kadar desteklenir, dosya sisteminin boyutu en çok 2^64 byte olabilir.
  • Düğüm ve dizin verileri çokça yoğunlaştırılmış ve byte sınırlarında paketlenmiştir: her sıkıştırılmış düğümün uzunluğu ortalama 8 byte'tır (kesin uzunluk dosya tipine göre değişmektedir, yani sıradan dosyaların, dizinlerin, sembolik linklerin ve blok/karakter aygıtlarının düğümleri farklı uzunluklardadır).
  • SquashFS en fazla 64 Kb (2.x) ve 1Mb (3.x) blok büyüklüklerini kullanabilir. Öntanımlı büyüklük ise normal 4K'lık büyüklükten daha yüksek sıkıştırma oranına izin veren 128Kb (3.x)'dır.
  • 2.x sürümü ile birlikte fragment blocks kavramını getirilmiştir: blok boyutundan daha küçük birden çok dosya bir blogun içine yazılabilir ve böylece daha yüksek sıkıştırma oranı elde edilebilir.
  • Dosya tekrarları tespit edilir ve ortadan kaldırılır.
  • Hem büyük hem de küçük endian mimarileri desteklenir; yani SquashFS farklı byte-sıralı makineler üzerinde yaratılmış dosya sistemlerini bağlayabilir.

Takip Edilecek Adımlar

Bundan sonra yapılacakların daha iyi açık anlaşılması için SquashFS'in çalışabilmesi için temel olarak hangi aşamalardan geçilmesi gerektiğini özetleyelim:

  1. Linux çekirdeğine SquashFS desteği vermek için çekirdeğin yamanması ve yeniden derlenmesi,
  2. mksquashfs ve unsquashfs araçlarının derlenmesi,
  3. mksquashfs kullanılarak sıkıştırılmış dosya sisteminin oluşturulması,
  4. Sıkıştırılmış dosya sisteminin geçici bir dizine bağlanarak test edilmesi,
  5. /etc/fstab dosyasını ya da başlangıç betiklerini düzenleyerek yeni sıkıştırılmış dosya sisteminin gerektiğinde bağlanmasının sağlanması.