Unix Dosya Sistemi
| SFU | ||
|---|---|---|
| geliştirici | CSRG | |
| Ad Soyad | UNIX dosya sistemi | |
| Desteklenen işletim sistemleri | A/UX , DragonFlyBSD , FreeBSD , FreeNAS , HP-UX , NetBSD , Linux , OpenBSD , Solaris , SunOS , Tru64 UNIX , UNIX System V ve diğerleri | |
| giriiş | ( 4.2BSD ) | |
| yapılar | ||
| dizin içeriği | Masa | |
| sınırlar | ||
| Maksimum dosya boyutu | 2 73 bayt (8 ZB ) | |
| Maksimum dosya adı boyutu | 255 bayt | |
| Maksimum birim boyutu | 2 73 bayt (8 ZB ) | |
| karakteristik | ||
Unix Dosya Sistemi (UFS), çeşitli UNIX ve POSIX işletim sistemleri tarafından kullanılan bir dosya sistemidir . FS UNIX'ten (sonuncusu Bell Labs'ta geliştirilmiştir) geliştirilen Berkeley Hızlı Dosya Sisteminin ( FFS ) bir türevidir .
FreeBSD , NetBSD , OpenBSD , NeXTStep ve Solaris dahil olmak üzere hemen hemen tüm BSD türevleri bir UFS çeşidi kullanır. Mac OS X'te HFS'ye alternatif olarak mevcuttur . Linux'ta salt okunur UFS dosya sistemi için kısmi destek vardır ve UFS'den ilham alan bir tasarıma sahip ext3 türünde yerel bir dosya sistemi kullanır .
Tasarım
Bir UFS dosya sistemi aşağıdaki bölümlerden oluşur:
- önyükleme için ayrılmış bölümün başında birkaç blok (dosya sisteminden ayrı olarak başlatılması gerekir).
- bunu bir UFS olarak tanımlayan sihirli bir sayı ve geometri ve davranış ayarlama parametrelerini açıklayan diğer bazı hayati sayıları içeren bir süper blok .
- silindir grupları topluluğu. Her silindir grubu şu bileşenlere sahiptir:
- süper bloğun bir yedeği.
- istatistikler, boş alan listesi vb. içeren bir silindir başlığı. bu silindir bloğu hakkında, süper blokta bulunanlara benzer.
- her biri dosyanın özniteliklerini içeren bir dizi düğüm .
- bir dizi veri bloğu.
Düğümler sırayla numaralandırılır. İlk birkaç düğüm tarihsel nedenlerle ayrılmıştır, ardından kök dizin inode'ları gelir .
Dizin dosyaları, yalnızca dizindeki dosyaların listesini ve her dosya için ilişkili düğümü içerir. Tüm meta veriler ( meta veriler ) inode'da tutulur .
Tarih ve evrim
UNIX'in en eski sürümleri, basitçe FS olarak adlandırılan bir dosya sistemi kullanıyordu . FS yalnızca önyükleme bloğunu, süper bloğu, bir avuç düğümü ve veri bloklarını içeriyordu. Bu, UNIX'in o sırada tasarlandığı küçük diskler için iyi çalıştı , ancak teknoloji ilerledi ve diskler büyümeye başladı, kafalarını düğüm havuzu ve atıfta bulundukları veri blokları arasında ileri geri hareket ettirdi. ," diskin manyetik plakalarından uzakta hızlı, tekrarlanan bir veri araması yapan dönen disk kafalarının neden olduğu gürültü. BSD , silindir gruplarını tersine çevirerek, diski her biri kendi düğüm havuzuna ve veri bloklarına sahip daha küçük gruplara bölerek FFS'de bunu optimize etti.
BSD FFS'nin yaptığı, ilişkili veri bloklarını ve meta verileri aynı silindir grubunda ve ideal olarak, bir dizinin tüm içeriğini (tüm dosya için veriler ve meta veriler) grup tarafından aynı veya yakınlarda bulmaya çalışmaktır. silindirler, bu , dizinlerin içeriğinin disk boyunca dağılmasından kaynaklanan parçalanmayı azaltmayı başarır.
Süper bloktaki performans parametrelerinden bazıları, bir dizi parça ve sektör, disk dönüş hızı ve parçalar arasındaki sektörlerin hizalanmasını içerir. Tam olarak optimize edilmiş bir sistemde, kafa, diskin dönmesini beklerken değişen izlerin parçalanmış sektörlerini okumak için yakındaki izler arasında hareket ettirilebilir.
Diskler büyüdükçe ve büyüdükçe, sektör düzeyinde optimizasyonlar eski hale geldi (özellikle doğrusal numaralandırma ve iz başına değişken sektörler kullanan disklerde ). Daha büyük diskler ve daha büyük dosyalarla, parçalanmış okumalar daha büyük bir sorun haline geldi. Bununla mücadele etmek için BSD, dosya sistemi blok boyutunu bir sektörden 8k'ye çıkardı. Bunun çeşitli etkileri oldu. Dosya sektörlerinin bitişik olma şansı çok daha yüksektir. Dosyanın bloklarını numaralandırmak için ek yük miktarı azaltılır. Sabit bir bitin genişliğinde gösterilebilen blok sayısı arttırıldı (daha büyük disklere izin verildi).
Daha büyük blok boyutlarıyla, çok sayıda küçük dosya içeren diskler çok fazla yer kaybedebilir, bu nedenle BSD , birçok dosyadan gelen son kısmi veri bloğunun birçok yerine tek bir "parça" bloğunda tutulabileceği "blok düzeyinde parçalanma" ekledi. boş bloklar.
Uygulamalar
Çoğu POSIX sistem satıcısı, diğer geliştiricilerin UNIX sürümleri tarafından tanınmayabilecek özel uzantılar ekleyerek UFS'yi kendi gereksinimlerine uyarladı . Şaşırtıcı bir şekilde, birçoğu orijinal UFS ile aynı genişlikte blokların ve veri alanlarının orijinal boyutunu kullanmaya devam etti, bu nedenle platformlar arasında bir dereceye kadar (okuma) uyumluluğu korunur.
FreeBSD 5.0 , 1 TB ( TeraByte ) üzerindeki hacimler ve dosya sistemi görüntüleri için destek ekleyen UFS2'yi tanıttı. NetBSD'ye taşındı .
Linux ext2 dosya sistemi , UFS kavramlarına dayalı olarak sıfırdan yazılmıştır. ext2 , daha büyük diskleri desteklemek için dosya sistemi oluşturma zamanında blok boyutlarının yapılandırılmasına izin verir. Ayrıca, daha büyük dosyaları kabul etmek için inode'da 64 bit veri alanlarına sahiptir. Ext3 , günlük kaydı ekler . ReiserFS , Linux çekirdeğine dahil edilen ilk günlük kaydı dosya sistemiydi ve küçük dosyalarla çalışırken daha hızlıdır. Linux , diğer UNIX'lerle okuma düzeyinde ikili uyumluluk için bir UFS uygulaması içerir , ancak üçüncü taraf satıcı uzantıları için standart bir uygulama olmadığından, Linux şu anda yalnızca UFS için deneysel yazma desteğine sahiptir.
Solaris 7 ile başlayarak , Sun Microsystems , UFS'ye günlük kaydı destekli dosya sistemleri sağlayan Solaris İşletim Ortamına UFS Günlüğü'nü dahil etti . Solaris UFS ayrıca büyük dosyalar, büyük diskler ve diğer özellikler için uzantılara sahiptir.
Dış bağlantılar
- UFS2'nin Küçük SSS'si (İngilizce)
- Linux için UFS2 araçları