Linux dosya sistemlerinin türleri ve özellikleri. Dosya ve kırma dosya sistemi EXT2 dosya sistemi Ext2 3

Şimdi en popüler disk dosya sistemi Linux - Ext2'yi tarif ediyoruz. Linux'un ilk salımı, kısa dosya adları ve maksimum dosya boyutu 64 MB olan Minix 1 dosya sistemini kullandı. Minix 1 dosya sistemi, sonunda daha uzun dosya adlarını ve daha büyük dosya boyutlarını kullanmasına izin verilen ilk uzatılmış EXT dosya sistemi ile değiştirildi. Düşük verimliliği nedeniyle (performans anlamında), EXT sistemi hala yaygın olarak kullanılan EXT2 dizisi ile değiştirildi.

EXT2 ile olan disk bölümü, Şekil 2'de gösterilen dosya sistemini içerir. 10.17 Düzen. Blok 0, Linux sistemi tarafından kullanılmaz ve bir bilgisayar yük kodu içerir. Blok 0'dan sonra, disk bölümü blok bloklara bölünür (disk silindirlerinin sınırlarını hariç). Her grup aşağıdaki gibi düzenlenir.


İlk blok, i-düğüm sayısı, disk bloklarının sayısı, ücretsiz disk bloklarının listesinin başlangıcı (bu genellikle birkaç yüz öğe) de dahil olmak üzere dosya sisteminin düzeni hakkında bilgi depolayan SuperBlock (SuperBlock). ). Ardından, bit dizilerinin yeri, gruptaki ücretsiz blok ve I-düğümlerinin sayısı ve gruptaki dizin sayısını içeren grup tanımlayıcısını izler. Bu bilgi önemlidir, çünkü EXT2 dosya sistemi dizinleri disk boyunca eşit olarak dağıtmaya çalışır.

İki bit dizide, serbest bloklar ve ücretsiz i-düğümler kaydedilir (bu aynı zamanda Minix 1 dosya sisteminden devralınır ve listenin ücretsiz bloklar için kullanıldığı çoğu UNIX dosya sisteminden ayırır). Her bit dizisinin boyutu bir bloğa eşittir. 1 KB bloğunun boyutu ile, bu şema blok blokların boyutunu 8192 blok ve 8192 I-düğümlerini sınırlar. İlk numara gerçek bir sınırlama, ikincisi pratik olarak no. 4 KB sayısının blokları ile dört kat daha fazla.

Sonra i-düğümlerin kendileri bulunur. 1'den bazılarına kadar numaralandırılır. Her i-düğümün boyutu 128 bayttır ve tam olarak bir dosyadır. I-düğümü, hesap bilgilerini içerir (tüm i-düğümden çıkarın), ayrıca dosya verilerini içeren tüm disk bloklarının konumunu belirlemek için yeterli miktarda bilgi içerir.

I-düğümlerinin ardından veri bloklarıdır. Tüm dosyalar ve dizinler burada saklanır. Dosya veya dizin birden fazla bloktan oluşursa, bu blokların diskte sürekli olması gerekmez. Aslında, büyük bir dosyanın blokları büyük olasılıkla disk boyunca dağılmıştır.

İlgili kataloglar I-düğümleri, tüm disk blokları gruplarına dağılır. Ext2, ebeveyn dizini olarak aynı blok bloğunda sıradan dosyaları düzenlemeye çalışıyor ve veri dosyaları I-düğümünün kaynak kodu ile aynı bloktundayken (yeterli alan olması şartıyla). Bu fikir Berkeley Hızlı Dosya Sistemi Dosya Sisteminden ödünç alındı \u200b\u200b(McKUSICK ve diğerleri, 1984). Bit dizileri, seçimle ilgili hızlı kararlar almak için kullanılır.

yeni dosya sistemi verileri için yerler.

Yeni dosya blokları vurgulandığında, EXT2, aynı dosya için birkaç (sekiz) ek bloktan (sekiz) ek bloktan (ön dikil) de yapar (gelecekteki kayıt işlemlerinden dolayı dosya parçalanmasını en aza indirmek için). Bu şema dosya sistemini disk boyunca dağıtır. Ayrıca iyi performansa sahiptir (ilgili konuma yönelik eğilim ve azaltılmış parçalanma).

Dosyaya erişmek için, önce dosyanın yolunu belirtmek istediğiniz Linux sistem aramalarından (açık gibi) kullanmanız gerekir. Bu yol demonte edildi ve kataloglarının bileşenleri ondan çıkarıldı. Göreceli yol belirtilirse, arama, işlemin geçerli kataloğundan, aksi halde - kök dizinden başlar. Her durumda, ilk dizinin için i-düğümü bulmak kolaydır: İşlem tanımlayıcısında, bir işaretçi vardır veya (bir kök dizini durumunda) diskteki belirli bir diskte saklanır.

Dizin, 255 karaktere kadar dosya adlarını kullanmanıza izin verir (Şek. 10.18). Her dizin, belirli sayıda disk bloğundan oluşur (böylece dizin Disk Atomino'ya yazılabilir). Dizinde, dosyalar ve dizinler için unsurlar önyargısız bir düzendedir (her öğe önceki birini doğrudan takip eder). Elementler blokların sınırlarını geçemez, bu nedenle her disk bloğunun sonunda genellikle bir dizi kullanılmamış bayt vardır.


Şekil 2'deki her dizin girişi. 10.18, dört sabit uzunluğun ve bir değişken uzunluğunun bir alanından oluşur. İlk alan, devasa dosya için 19, volümüs için 42, BigDir dizininin 88 dosyası için bir i-düğüm sayısıdır. Aşağıdakiler, REC_len alanı olan REC_LEN alanıdır, bu, tüm dizin girişinin bayt olarak (muhtemelen, adından sonra ek yer tutucularla birlikte). Bu alan bir sonraki girişi bulmak için gereklidir (dosya adı bilinmeyen sayıda bayt tarafından tamamlandığında durumunda). Şekilde, bu alan ok ile gösterilir. Ardından bir alan tipi alanı, bir dizin, vb. Var. Sabit uzunluğun son alanı, dosya adının bayt cinsinden uzunluğunu içerir (bu örnek için 8, 10 ve 6). Son olarak, dosya adı sıfır baytı içinde gelir ve 32 bit kenarlığa eklenir. Ek posta kutusu baytları takip edebilir.

İncirde. 10.18, B, hacimli eleman çıkarıldıktan sonra aynı dizinin aynı şekilde çıkarıldığı gösterilmiştir. Katalogda yapılan her şey - Önceki devasa dosyanın kayıt boyutundaki sayıyı arttırır ve uzak hacimli dosya için dizin giriş baytları ilk kayıt dolumlarına dönüştürülür. Daha sonra, bu baytlar yeni bir dosya oluştururken kaydetmek için kullanılabilir.

Dizinlerdeki arama doğrusal olarak yapıldığından, büyük bir dizinin sonunda bir kayıt arayışı uzun zaman alabilir. Bu nedenle, sistem erişimin son zamanlarda yapıldığı önbellek dizinlerini desteklemektedir. Önbellekteki arama, dosya adı ile yapılır ve bulunursa, pahalı doğrusal arama artık gerekli değildir. Dişçilik nesnesi, yol bileşenlerinin her biri için dizin elemanlarının önbelleğine girilir ve (I-düğümü aracılığıyla), sonraki yol öğelerinin dizininde (gerçek dosya i-düğüm bulununcaya kadar) aranıyor.

Örneğin, mutlak yolun (/ USR / AST / Dosya gibi) belirtilen dosyayı bulmak için aşağıdaki adımlar yapılmalıdır. Her şeyden önce, sistem genellikle 2 numaralı bir i-düğümü kullanan kök dizini bulur (özellikle 1 numaralı i-düğümün kötü bloklarla çalışmaya ayrıldığında). İlgili elemanı, dizin öğelerinin önbelleğine yerleştirir (gelecekteki kök katalog aramaları için). Daha sonra, / usr dizininin / usr dizininin (dizin öğelerinin önbelleğine girilen) i-düğümünün numarasını almak için kök dizinde bir "USR" dizgisi arar. Bu i-düğüm daha sonra okunur ve disk blokları ondan alınır, böylece / usr dizinini okuyabilir ve içindeki AST hattı arayabilirsiniz. İlgili eleman bulunduktan sonra, / USR / AST için I-düğüm sayısını tanımlayabilirsiniz. Bu i düğüm numarasına sahip olmak, okuyabilir ve dizin bloklarını bulabilirsiniz. Son olarak, "Dosya" arıyoruz ve i-düğümünün numarasını buluyoruz. Böylece, göreceli bir yolun kullanımı sadece kullanıcı için daha uygun değildir, aynı zamanda sistem için çalışma miktarını da azaltır.

Dosya varsa, sistem i-düğümünün numarasını alır ve karşılık gelen i düğümünü aramak ve belleğe okumak için I-düğüm tablosunun (diskte) bir dizin olarak kullanır. Bu i-düğüm I-düğüm tablosuna (I-düğüm tablosu) yerleştirilir - açık dosyalar ve dizinler için tüm I düğümlerini içeren çekirdeğin veri yapısı. I-düğümlerin formatı (minimumda) sistem çağrısı statünü döndüren tüm alanlar içermelidir, böylece stat çağrısı çalışabilir (bkz. Tablo 10.10). Sekmesinde. 10.13 Linux dosya sisteminde desteklenen I-düğüm yapısı alanlarının bir kısmını göstermektedir. I-düğümünün gerçek yapısı çok daha fazla alan içerir, çünkü aynı yapı dizinleri, aygıtları ve diğer özel dosyaları temsil etmek için kullanılır. I-Düğümün yapısı ayrıca alanın gelecekteki kullanımı için de ayrılmıştır. Hikaye, kullanılmayan bitlerin uzun sürdüğünü göstermiştir.

Şimdi sistemin dosyayı nasıl okuduğunu görelim. Sistem çağrısını başlatmak için kütüphane prosedürünün tipik çağrısının aşağıdaki gibi okunması için olduğunu hatırlıyorsunuz:

n \u003d okuma (FD, tampon, NB1YTES);


Çekirdek kontrol aldığında, ardından başlayabileceği her şey - bu üç parametre ve iç tablolarındaki (kullanıcı ile ilgili). Bu iç tabloların unsurlarından biri bir dosya tanımlayıcısıdır. Dosya tanımlayıcıları tarafından endekslenir ve her açık dosyaya bir eleman içerir (maksimum miktarda, varsayılan genellikle 32'dir).

Bu fikir bu dosya tanımlayıcısı ile başlamak ve karşılık gelen balonu bitirmektir. Tamamen olası bir şemaya bakalım: Pozel işaretçisini dosya tanımlayıcıları tablosuna yerleştirelim. Basitliğe rağmen, bu yöntem (ne yazık ki) çalışmıyor. Sorun şu şekildedir. Her dosya tanımlayıcısı ile, bir sonraki okuma veya kayıt işleminin başlayacağı dosyada baytı tanımlayan dosyaya bir işaretçi bağlanmalıdır. Bu işaretçi nerede saklanmalı? Bir seçenek, otobüs tablosuna yerleştirmektir. Bununla birlikte, bu yaklaşım birbirine bağlı olmayan birkaç işlem aynı dosyayı aynı dosyayı açacaksa, her işlemin kendi işaretçisine sahip olması gerektiğinden çalıştırılamaz.

Çözeltinin ikinci çözeltisi, işaretçiyi tablo tanımlayıcılarına yerleştirmektir. Bu durumda, işlemi açan her dosya dosyada kendi pozisyonuna sahiptir. Ne yazık ki, böyle bir şema da işe yaramaz, ancak bu durumda başarısızlığın nedeni bu kadar açık değildir ve Linux sistemindeki dosyaların paylaşılmasının niteliği ile ilgilidir. Sırayla gerçekleştirilmesi gereken iki komuttan (P1 ve P2) oluşan kabuk komut dosyasını 5 göz önünde bulundurun. Komut dosyası komut satırı tarafından çağrılırsa

p1 komutunun çıktısını X dosyasına yazması beklenmektedir ve ardından P2 komutu, P1 komutunun durduğu yerden başlayarak çıkışını X dosyasına yazacaktır.

Kabuk P1 işlemini başlattığında, X dosyası önce boş olacaktır, böylece P1 komutu sadece dosyaya 0 konumunda yazmaya başlar. Bununla birlikte, P1 işini bitirdiğinde, P2 işleminin yapmasını sağlayan belirli bir mekanizma ihtiyaç duyacaktır. Başlangıç \u200b\u200bpozisyonu 0 değil (ve dosyadaki dosya tanımlayıcılarındaki pozisyonun tabloda ise) ve PI'nin durduğu değeri olduğunda böyle olacaktır.

Yapılma şekli, Şekil 2'de gösterilmiştir. 10.19. Odak, yeni tabloya girmek için - Dosya Tanımlayıcıları ve I-düğüm tablosu tablosu arasında (Açık Dosya Açıklaması Tablosu) - işaretçiyi dosyadaki (ayrıca okuma / yazma bitinin yanı sıra) arasında saklamaktır. . Şekilde, ana işlem kabuğudur ve kızı ilk önce PI işlemidir ve ardından P2 işlemidir. Kabuk PI işlemini oluşturduğunda, kullanıcı yapısı (dosya tanımlayıcıları tablosu dahil), aynı membran yapısının tam bir kopyasıdır, böylece her ikisi de açık dosyaların aynı tablosuna işaretçileri içerir. ProcessPi çalışmasını tamamladığında, Shell Dosya Tanımlayıcısı, dosyadaki P1 konum konumunu içeren açık dosyaların açıklamasını belirlemeye devam eder. Şimdi kabuk P2 işlemini oluşturduğunda, yeni çocuk işlemi dosyadaki konumu otomatik olarak miras alırken, yeni bir işlem değil, kabuk bu pozisyonun geçerli değerini bilmek zorunda kalır.


Herhangi bir yabancı işlem dosyayı açarsa, tablo açıklaması tablosundaki kendi girişinizi dosyadaki konumuyla birlikte alır, yani gereklidir. Böylece, Açık Dosya Açıklama tablosunun görevi, ebeveyn ve çocuk süreçlerinin dosyada bir işaretçiyi paylaşmasına izin vermektir, ancak yabancı işlemler için kişisel işaretçiler tahsis eder.

Öyleyse (okuma okuma okuması problemine döndürme), dosyadaki pozisyonun ve i-düğümünün nasıl belirlendiğini gösterdik. I-düğümü, ilk 12 dosya bloğunun disk adreslerini içerir. Dosyadaki konum ilk 12 bloğuna düşerse, istenen dosya bloğu okunur ve veriler kullanıcıya kopyalanır. Uzunluğu 12 bloğu aşan dosyalar için, I-düğümü tek dolaylı bloğun (tek dolaylı blok) bir disk adresi içerir (Şekil 10.19). Bu blok, ek disk bloklarının disk adreslerini içerir. Örneğin, blok boyutu 1 KB ise ve disk adresi 4 bayt ise, tek dolaylı birim 256 disk adresini saklayabilir. Bu şema, dosyaları 268 KB'a kadar desteklemenizi sağlar.

ext2. (ayrıca olarak adlandırılır ext2fs.) - İkinci Genişletilmiş Dosya Sistemi(İkinci genişletilmiş dosya sistemi), Linux çekirdeğinde yerleşik bir dosya sistemidir. Yaratıcı ve geliştirici EXT2, Remy Card'dır. Ext2 dosya sistemi, eski, önceki sürüm - EXT için karşılığında onun tarafından inşa edildi.

Hız ve performans gibi göstergelere göre, bu dosya sistemi referans olarak görev yapabilir. Bu, dosya sistemi performans testlerinin sonuçları hakkında söylenir. Örneğin, Dell Teknik Merkezi'ni gerçekleştiren tutarlı okuma ve yazma hızı için testlerde, Ext2 dosya sistemi Ext3'ü aşıyor ve okuma hızında sadece daha modern Ext4.

EXT2'nin ana dezavantajı, bir günlük dosya sistemi olmamasıdır. Ancak, bu dezavantaj bir sonraki dosya sisteminde elimine edildi - Ext3.

eXT2 Flash kartlarda ve katı hal sürücülerinde (SSD) kullanılır, çünkü günlük kaydırma sayısındaki kısıtlamaları olan sürücülerle çalışırken bir avantajdır.

Ext2 oluşturma tarihi.

Linux sisteminin hızlı gelişimi sırasında Minix dosya sistemini kullandı. Oldukça yüksek istikrarlıydı, ama 16 bitti. Sonuç olarak, 64 MB'da kesite katı bir sınırlama vardı. Ek olarak, 14 karakter olan dosya adının maksimum uzunluğunda bir sınır vardı.

Toplamdaki bu kısıtlamalar, "gelişmiş bir dosya sisteminin" geliştirilmesinin nedenidir (bu nedenle "terimi" Genişletilmiş Dosya Sistemi »). İki Minix anahtar problemini çözmek için bir görevi vardı. Yeni dosya sistemi Nisan 1992'de yayınlandı. Ext, Dosyanın boyutunda sınırını 2 gigabayt'a genişletti ve Dosya adının sınır uzunluğunu 255 karakter olarak yükledi.

Bununla birlikte, yeni bir dosya sisteminin başarısına rağmen, ancak çok fazla çözülmemiş sorun kaldı. Örneğin, ayrı erişim için destek yoktu, veri modifikasyonunun zaman damgaları yoktu. Bu görevleri çözme ve genişletilmiş Ext2 dosya sisteminin (") bir sonraki sürümünü oluşturma nedeni olarak görev yapması gerekir. İkinci Genişletilmiş Dosya Sistemi »). EXT2 Ocak 1993'te geliştirilmiştir, aynı zamanda karşılık gelen ACL erişim kontrol listelerini ve genişletilmiş dosya özniteliklerini uygular.

Mantıksal kuruluş EXT2.

EXT2 dizini hiyerarşi grafiği bir ağ şeklinde sunulur. Bunun nedeni, bir dosyanın hemen birkaç dizin girebileceği gerçeğinden kaynaklanmaktadır.

Tüm dosya türleri sembolik isimlere sahiptir. Hiyerarşik olarak organize edilmiş dosya sistemlerinde, üç tür isim kullanılır: basit, kompozit ve akraba. Böylece Ext2. Basit bir isim durumunda, kısıtlama, uzunluğunun 255 karakteri geçmemesidir, ek olarak, null sembolü ve eğik çizgi adında bulunmalıdır.

Boş simge gelince, kısıtlamalar SI dilinde satırların temsili ile ilişkilidir, eğik çizgi bir sembolü durumunda, her şey dizinler arasında bir bölme karakter olarak kullanılmasıdır.

Tam ad, kökten yolun bu dosyaya geçtiği tüm dizinlerin basit sembolik isimlerinin bir zinciridir. Ext2'de, dosya birkaç dizin girebilir, birkaç tam adıma sahip olabileceği anlamına gelir (bir dosya birkaç tam addır). Ancak yine de, tam adı dosyayı tanımlar.

EXT2 Nitelikleri:

  • dosyaya yazın ve erişim hakları,
  • mal sahibi, erişim grubu,
  • İzin verilen işlemler hakkında bilgi,
  • oluşturma süresi, son erişim tarihi, son değişiklik tarihi ve son kaldırma süresi,
  • geçerli dosya boyutu
  • dosya özellikleri:
    • düzenli dosya
    • katalog,
    • cihaz bayt yönelimli cihaz,
    • dosya bloğu yönelimli cihaz,
    • adlandırılmış kanal
    • sembolik bağlantı
  • İşgal altındaki blok sayısı,
  • diğerleri

Dosya öznitelikleri, basit dosya sistemlerinde olabileceği gibi, özel tablolarda ve dizinlerde bulunmaz. Sonuç olarak, dizin iki bölümden oluşan çok basit bir yapıya sahiptir: dizin tanımlayıcısının sayısı ve adı.

Fiziksel organizasyon EXT2.

Disk bölümünün yapısı

Ext2'nin bir parçası olarak, aşağıdakiler ayırt edilebilir:

  • blok blokları ve bloklar;
  • dizin tanımlayıcısı;
  • superblock.

Tüm disk bölümü alanı sabit bloklara ayrılır, birden fazla sektör boyutunu (1024, 2048, 4096 veya 8192 bayt) bloke eder. Blok boyutu, disk bölümünde bir dosya sistemi oluştururken belirtilir. Tüm bloklar sıralama numaraları atanır. Parçalanmayı ve sabit disk kafalarının hareketlerinin sayısını azaltmak için, büyük veri dizileri okurken, bloklar gruplara birleştirilir.

Dosya sisteminin temel kavramının bir dizin tanımlayıcısıdır (ayrıca dosya numarası - bilgi düğümü.). Bu, nitelikler ve fiziksel dosya konumu hakkında bilgi içeren özel bir yapıdır. Endeks decapstructors, her blok bloğunun başında bulunan bir tabloya birleştirilir. Superblock, Ext2 dosya sisteminin ana elemanıdır. Dosya sistemi hakkında genel bilgi içerir. Superblock, bölümün başlangıcından itibaren 1024 baytta bulunur. Superblock'un bütünlüğü, dosya sisteminin işlevselliğini belirler. İşletim sistemi, bölümün zarar görmesi durumunda, süper blokun birkaç yedek kopyasını oluşturur. Bir süper bloktan sonraki blokta, küresel bir tanımlayıcı tablosu var - tüm blok grupları hakkında genel bilgi içeren bir dizi şeklinde blok gruplarının bir açıklaması.

Blok Grubu

Tüm EXT2 blok blokları gruplara ayrılır. Her grup için, küresel tanımlayıcı tablosunda ayrı bir giriş oluşturulur. Bu giriş, ana parametreleri şu şekilde depolar: Bitmaps ve tablolardaki blok numarası, gruptaki ücretsiz blok sayısı, dizin içeren dizin tanımlayıcıları sayısı.

Bit Harita Blok - Bu, her bitinin, dosyanın bir dosyasına karşılık gelen dosyanın olup olmadığını bildiren bir sistemdir. Bit 1 ise, blok meşgul. Benzer bir fonksiyon, bir indeks tanımlayıcısının bir bitmap tarafından gerçekleştirilir: hangi indeks tanımlayıcılarının meşgul olduğunu ve hangisinin olmadığını gösterir. Linux çekirdeği, Inode dizini gruplar halinde eşit bir şekilde dağıtmaya çalışır ve inode dosyaları - bir gruba ebeveyn kataloğu olan bir gruba geçin. Dosyaları saklamak için veri atanırken kalan yer tabloda görünür.

Veri Adresleme Sistemi

Veri adresleme sistemi, dosya sisteminin en ciddi ve önemli bileşenlerinden biridir. Bu sayesinde, istenen dosya diskteki birçok boş veya meşgul blok arasındadır.

eXT2, aşağıdaki dosya bloğu adresleme şemasını uygular. Dosya adresini saklamak için, her biri 4 bayttan oluşan 15 alan izole edilmiştir. Dosya 12 blokta uyuyorsa, ilgili kümelerin sayısı ilk on iki adreste listelenir. Dosya boyutu 12 bloğu aşarsa, aşağıdaki alan aşağıdaki dosya bloklarının numaralarının bulunduğu küme adresini içerir. Böylece, onüçüncü alan dolaylı adresleme için kullanılır.

4096 bayttaki bloğun maksimum boyutu ile, 13. alana karşılık gelen küme, aşağıdaki dosya bloklarının 1024 sayısına kadar içerebilir. Dosya boyutu 12 + 1024 blokları aşıyorsa, 14. alanda, her biri 1024 dosya bloğunu belirtir. Zaten çift dolaylı bir adres var. Dosya 12 + 1024 + 1048576 bloklardan daha fazlasını içeriyorsa, üçlü dolaylı adresleme için son 15. alan uygulanır.

Böyle bir adresleme sistemi, 4096 baytta maksimum blok boyutuna sahip 2 TB'den fazla dosyaya sahip olmanızı sağlar.

İki işletim sisteminiz varsa, Windows ve Linux yüklü, daha sonra, bilgisayarın yeniden yüklenmeden ücretsiz işletim sisteminin doğrudan Windows'un altındaki bölümlerinde bulunmasını istiyorsunuz.

Ne yazık ki, Windows'ta Linux işletim sistemi bölümlerinin desteği sağlanmadı. Ve boşuna. Bana öyle geliyor ki Microsoft'tan güzel bir jest olabilir.

Sorunun özü, Windows'un NTFS dosya sistemini kullanmasıdır ve Linux, en son sürüm 4'ü olan dosya, genişletilmiş dosya sistemi, genişletilmiş dosya sistemi düzenlemek için kendi yoluna sahiptir.

Linux, ticari kız kardeşi yerine kullanıcılarına daha kolaydır: Linux'ta, varsayılan Windows NTFS dosya sistemi tarafından desteklenir. Tabii ki, Linux'u NTFS bölümüne yükleyemezsiniz, ancak bundan veri okuyabilir ve yazabilirsiniz.

Ext2 iFS.

EXT2 IFS, X86 ve X64'ün Windows NT4.0 / 2000 / XP / 2003 / Vista / 2008 sürümlerini destekler ve Linux Ext2 bölümlerinin içeriğini görüntülemenizi sağlar ve bunları da kaydedebilir. Yardımcı program, Windows yeteneklerini genişleten ve içinde Ext2 için tam destek içeren Ext2FS.SYS sistem sürücüsünü ayarlar: Bölümler Ext2, disklerin harfleri atanır ve diskler ve klasörler, örneğin tüm uygulamaların iletişim kutusunda görüntülenir. , Explorer'da.

Ext2 FSD.

EXT2 FSD, Windows sistemleri için ücretsiz bir sürücüdür (2K / XP / Vista / 7 versiyonları X86 ve X64). Özünde, aynı zamanda sürücü olan önceki yardımcı program gibi, Windows'ta EXT2 dosya sistemi için tam destek içerir.

LTOOLS - Linux Ext2, Ext3 ve Reiserfs (Standart Linux Dosya Sistemleri), DOS veya Windows'tan / Linux Ext2, Ext3 ve Reiserfs (Standart Linux dosya sistemleri) okumanızı ve kaydetmenizi sağlayan bir komut satırı yardımcı kiti.

Programın bir grafik kabuğuyla (Java'da yazılı) - Ltoolsgui'nin yanı sıra, üzerinde yazılı bir grafik kabuğuna sahip bir sürümü var.

Ext2Read.

Tatlı için her zamanki gibi en lezzetli.

EXT2READ, EXT2 / EXT3 / EXT4 bölümlerine görüntülemenizi ve yazmanıza olanak sağlayan bir yönetici dosyasına dayanan bir yardımcı programdır. LVM2'yi destekler ve bu incelemenin diğer programlarından ayrılır, Ext4 dosya sistemi. Özyinelemeli Kopyalama Dizinleri için Gömülü Destek.

Ve işte ikinci tatlı. Başlangıçta, Microsoft'tan iyi bir jestin, Windows'ta Linux bölümleri için varsayılan olarak destekleneceği söylendi.

Jest hala Linux'un 20. yıldönümünde yapıldı. Kendini gör.

Bu kadar. Dikkatiniz için teşekkürler. Böceklerden geri savaşacağım. Onların bu bahar çok fazla. 🙂

Vladimir miskov

Dosya sistemi mimarisi EXT2

Makale, Linux işletim sisteminin EXT2 dosya sisteminin mantıksal yapısını anlatıyor.

Ext2 dosya sisteminin temel bileşenleri

Herhangi bir UNIX dosya sisteminde olduğu gibi, aşağıdaki bileşenler EXT2 dosya sisteminin bir parçası olarak ayırt edilebilir:

  • blok blokları ve bloklar;
  • bilgi düğümü;
  • superblock.

Blok blokları ve blokları

Tüm disk bölümü alanı sabit boyutlu bloklara, çoklu sektör boyutuna - 1024, 2048 ve 4096 bayt'a ayrılmıştır. Blok boyutu, sabit disk bölümünde bir dosya sistemi oluştururken gösterilir. Daha küçük bir blok boyutu, bir sabit diskte yer tasarrufu sağlar, aynı zamanda maksimum dosya sistemi boyutunu da sınırlar. Tüm blokların sıra numaralarına sahiptir. Parçayı ve sabit disk kafalarının hareketlerinin sayısını azaltmak için, büyük veri dizileri okurken, bloklar gruplar halinde birleştirilir.

Bilgi düğümü

Dosya sisteminin temel kavramı, bilgi düğümü, bilgi düğümü veya inode'dir. Bu, nitelikler ve fiziksel dosya konumu hakkında bilgi içeren özel bir yapıdır. Dosya öznitelikleri, tipi (normal dosya, dizin vb.), Erişim hakları, mal sahibi tanımlayıcısı, boyut, oluşturma süresidir. Fiziksel konumdaki bilgiler, dosya verilerini içeren bir mutlak blok numarasının sırasıdır.

Superblock

Superblock, Ext2 dosya sisteminin ana elemanıdır. Aşağıdaki dosya sistemi bilgilerini içerir (eksik liste):

  • dosya sisteminde toplam blok ve inode sayısı;
  • dosya sisteminde serbest blok ve inode sayısı;
  • dosya sistemi bloğu boyutu;
  • gruptaki blok ve inode sayısı;
  • boyut inode;
  • dosya sistemi tanımlayıcısı;
  • İlk veri bloğunun numarası.

Başka bir deyişle, bu, süper blok içeren bir blok numarasıdır. Bu numara, dosya sistemi bloğunun boyutu 1024 bayttan büyükse ve 1, blok boyutu 1024 bayt ise 1'e eşittir.

Dosya sisteminin işlevselliği doğrudan süper blokun bütünlüğüne bağlıdır. İşletim sistemi, hasar durumunda geri yükleyebilmek için süper blokun birkaç yedek kopyasını oluşturur. Ana kopya, dosya sisteminin oluşturulduğu bölümün başlangıcından itibaren 1024 bayt ofsetinde bulunur (ilk 1024 bayt, işletim sistemi önyükleyicisi için ayrılır).

Ext2 dosya sisteminin erken sürümleri, her blok bloğunun başında süper blokun kopyalarını oluşturdu. Bu, büyük bir disk alanı kaybına yol açtı, bu yüzden daha sonra süper blokun yedek kopyaları azaltıldı ve yerleşimi için 0, 1, 3, 5 ve 7 blokları tahsis edildi.

Blok Grup Formatı

EXT2 dosya sisteminin genelleştirilmiş yapısal diyagramı, Şekil 2'de sunulmuştur. bir.

Neredeyse tüm blok grupları aynı formata sahiptir. Her grupta, bilgi bloğuna ek olarak, blokların ve inode gruplarının bir bitmap formundaki istihdamı hakkında bilgi depolanır. Blokların bloğu 0, aşağıda göz önünde bulunduracağımız grupların süper blokları ve tablo tanımlayıcıları içerir.

İstihdam bloklarının ısınma haritası genellikle grubun ilk bloğunda bulunur. Grupta bir yedek kopya varsa, bitmap grubun ikinci bloğunda bulunur. Bitmap'ın boyutu bir bloktur. Bu kartın her bit kısmı bloğun durumunu belirtir. Bit ayarlanmışsa (1), blok sıfırlanırsa blok meşgulse (0) - blok ücretsizdir. Grubun ilk bloğu, kartın sıfır bitine, ikinci blok - birinci bit, vb.

Aynı grup içinde bulunan inode, masada toplanır. Isırık istihdamı haritasında inode grubunda her bit, inode grup tablosundaki öğenin durumunu karakterize eder.

Her blok bloğu blok grubu tanımlayıcısı kullanılarak açıklanmaktadır. Bir grup tutamağı, blokların bloklarının bloklarının, inode meşgul bitmap ve ilgili grubun inode tablosunun, blokların bitmoplarının adresleri hakkında bilgi içeren bir yapıdır. Tüm grup tanımlayıcıları, bir grup blokta depolanan grup tanımlayıcıları tablosunda toplanır. Sadece bir süper blokta olduğu gibi, işletim sistemi tablo tanımlayıcılarının yedek kopyalarını oluşturur.

Dosya okuma algoritması

Her bir inode, bloğun yanı sıra, dosya sistemi içinde benzersiz bir dizi numarası vardır ve yalnızca tek bir dosya hakkında bilgi içerir. Böylece, dosyanın içeriğine erişmek için, karşılık gelen karşılık gelen inode dizisi numarasını bilmeniz gerekir.

Yukarıda belirtildiği gibi, fiziksel dosya konumu hakkında bilgi inode'da bulunur. Bu bilgi, dosya verilerini içeren 32 bit blok numaralarının bir dizisidir (Şek. 1). İlk 12 sayı, bilgi bloklarına doğrudan bağlantılardır (doğrudan blok sayısı). 13. sayı dolaylı bir bağlantıdır (dolaylı blok numarası). Bilgi bloklarının adreslerinin depolandığı bloğun adresini içerir. 14. oda çift dolaylı bir bağlantıdır (çift blok sayısı), 15. sayı üçlü dolaylı bir bağlantıdır (üçlü blok sayısı).

Inode'daki dosya adı dahil değildir, dosya adları arasındaki uygunluğun ayarlanması ve inode dizisi numaraları dizinler aracılığıyla gerçekleştirilir.

Kataloglar

UNIX ve POSIX sistemlerinde dosyalar bir ağaç hiyerarşik dosya sisteminde saklanır. Dosya sisteminin kökü, "/" sembolü ile belirtilen kök dizinidir. Dosya sistemi ağacındaki her ara düğüm bir dizindir. Dosya sistemi ağacının son köşeleri boş dizinler veya dosyalardır. Dosyanın mutlak yol adı, kök dizininden başlayarak, belirtilen dosyaya giden tüm dizinlerin isimlerinden oluşur. Böylece, parça adı /home/test.File, Test.File dosyasının, "/" kök kataloğunda bulunduğunu, "/" olarak bulunduğu HOME dizininde bulunduğu anlamına gelir.

Katalog, dosyanın yanı sıra, inode kullanılarak açıklanmaktadır. Dizinin içeriği, her biri mevcut dizinin "içinde" olan dosyayla ilgili bilgileri içeren bir dizi kayıttır.

Dizinin kaydı aşağıdaki formata sahiptir:

  • sıra numarası inode dosyası;
  • baytlarda kayıt uzunluğu;
  • dosya adı;
  • dosya adının uzunluğu.

Bir inode dosyası arayışı her zaman kök diziniyle başlar. Örneğin, kök dizindeki inode sekans numarasını elde etmek için, işletim sistemi kök dizininin içeriğini almalıdır, bu dosyanın adıyla içinde bulun ve inode dosya numarasını bu kayıttan çıkarın.

Birkaç inode numaraları dosya sistemi tarafından ayrılmıştır, listeleri başlık dosyasında bulunur:

* Özel inode numaraları

#Define ext2_bad_ino 1 / * Kötü bloklar inode * /

#Define EXT2_ROOT_IN 2 / * kök inode * /

#Define ext2_acl_idx_in 3 / * ACL inode * /

#Define EXT2_ACL_DATA_INO 4 / * ACL inode * /

#Define EXT2_BOOT_LOODER_INO 5 / * Boot Loader Inode * /

#Define Ext2_undel_dir_ino 6 / * Undelete dizini inode * /

Kök dizinini kaydetmek için, inode 2 numarada (kök inode) ayrılır. Bu inode, 0 blok bloğundadır ve bu grubun inode tablosunda ikinci konumu alır. SÜRÜCÜ DEĞERLENDİRME İNCELENMESİ SUPERBLOCK'ta saklanır.

İnode dizisi numarasını belirledikten sonra, çekirdek bu inode bulunduğu grup numarasını ve inode grup tablosundaki konumunu hesaplar. Bu pozisyondan inode göz önüne alındığında, işletim sistemi, dosyanın içeriğinin depolandığı blok adresleri de dahil olmak üzere tam dosya bilgisini alır.

İçerideki blokun sayısı, formül tarafından hesaplanır:

grup \u003d (inode_num - 1) / inodes_per_group

nerede:

  • grup.- istenen blok bloğunun sayısı;
  • inode_num - Dosyayı tanımlayan sıra numarası inode;
  • inodes_per_group - Gruptaki inode sayısı (bu bilgi süper blokta).

İnode grup tablosundaki inode pozisyonu formül tarafından belirlenir:

index \u003d (inode_num - 1)% inodes_per_grupa

endeks tablodaki bir inode konumdur.

Kök dizininde bulunan Test.File dosyasının içeriğini almanın bir örneğini düşünün. /Test.File dosyasını okumak için:

  • kök dizini kayıtlarının dizisinde, bu dosya hakkında bir giriş bulun;
  • İnode dosyasının sekans numarasını çıkarın, bu inode bulunduğu grup numarasını hesaplayın;
  • bu grubun tanımlayıcısından, inode grup tablosunun adresini çıkarırsınız;
  • bu tablodaki inode pozisyonunu hesaplayın;
  • inode dosyasını okuyun;
  • adres bloğunu çıkarmak için inode'dan gelen bilgileri bu bloklardaki bilgileri okuyun.

İncirde. 2 Detaylar / Test dosyasının okumalarını göster. Dosya.

    Adım 1-6 - Kök Kataloğunu Okuma:

  1. 0 blok grubundan, tablo tanımlayıcıları okunur.
  2. Tablo tanımlayıcılar tablosundan, Blok grubu grubu grubu alınır ve Inode grubunun adresi ondan okunur.
  3. Blok grubundan 0, inode tabloyu okur.
  4. Kök dizininin inode sekansı numarası 2'ye eşit ve 2'ye eşittir, böylece ikinci eleman, kök dizinini içeren blok adresini içeren inode grubundan 0'dan okunur. Bu birimin A. blok bloğunda bulunduğunu varsayalım.
  5. Blok grubundan A, kök dizininin kayıtlarını içeren bir blok ile okunur.
  6. "Test.File" adlı girişin bir kaydı aranır. Böyle bir kayıt bulunursa, inode dizisi "Test.File" dosyası ondan alınır.
  7. İnode numarasını tanımlayarak, dosyanın bilgi bloklarına erişebilirsiniz (adım 7-11):

  8. Grup numarası, bu inode bulunduğu hesaplanır ve inode grup tablosundaki konumu (grup numarasının B'ye eşit olduğunu ve tablodaki konumu olduğunu varsayalım.).
  9. Grup tanımlayıcılar tablosundan, bölüm grubu tanımlayıcısı B'yi çıkarın ve bu blok bloğunun inode tablosunun adresi ondan okunur.
  10. İnode tablosu B blok grubundan okunur.
  11. Blok bloklarının inode tablosundan B, X konumunda bulunan inode okur.
  12. Okuma inode'dan, Content dosyasına sahip blok adresleri /Test.File alınır ve bilgi bloktan belirtilen adresle okunur.

Algoritma okuma dosyasının yazılım uygulaması

Kaynak Verileri: EXT2 dosya sisteminin oluşturulduğu sabit diskin bir bölümü vardır. Bu bölüm cihaz / dev / hda3 dosyası ile eşleşir. Bölümün kök dizininde, ev alt dizin oluşturulur ve aşağıdaki içeriğin Test.File dosyasını içerir:

Sitrus güneyde mi yaşıyor?

Evet, ama sahte bir örnek!

1234567890-=

Kötü düşünmeyin, saçma değildir, ancak eski SSCB'nin iletişiminin birlikteki telgrafçıların eğitim sürecinden bir test egzersizi!

Dikkat! Önemli bir nokta dikkate alınmalıdır. Oluşturulan dosya derhal diskte kaydedilmeyecek ve önce disk tamponuna düşer. Dosyanın içeriğini yukarıdaki algoritmaya göre elde etmek için hemen bir şeye yol açmaz, çünkü bu dosya hakkında bilgi fiziksel olarak diskte değil. Sistemi diskteki disk arabelleğini kaydetmeye "zorlamak" gerekir. Bunu yapmanın en kolay yolu, yeniden başlatma işlemi gerçekleştirmektir. Bu nedenle, dosya oluşturulduktan sonra, sistemi yeniden başlatın.

Görevimiz, bilgi bloklarına doğrudan erişim yöntemini kullanarak /home/test.file dosyasını okumak için Cihaz / Dev / Hda3 dosyasını kullanmaktır.

Bu işlemi gerçekleştiren modülün programının uygulanmasını düşünün.

Başlık dosyaları:

#Dahil etmek.

#Dahil etmek.

#Dahil etmek.

#Dahil etmek.

#Dahil etmek.

#Dahil etmek.

Başlık dosyası, Ext2 dosya sisteminin ana bileşenlerini tanımlayan yapısal türleri tanımlar - SuperBlock, Blok Grubu Tanımlayıcısı, Bilgi Düğümü, Dizin Girişi.

Bu yapıların her birine dahil olan kısaca alanları düşünün:

  1. Struct Ext2_super_block SuperBlock Yapısı:
    • __U32 s_inodes_count- Dosya sisteminde toplam inode sayısı;
    • __U32 s_blocks_count.- Dosya sisteminde toplam blok sayısı;
    • __U32 S_Free_BLOCKS_COUNT.- serbest blok sayısı;
    • __U32 S_Free_INODES_COUNT.- serbest inode sayısı;
    • __U32 s_first_data_block- İlk veri bloğunun sayısı (Superblock'un bulunduğu blok numarası);
    • __U32 s_log_block_size. - Bu değer, bloğun boyutunu hesaplamak için kullanılır. Blok boyutu, formül ile belirlenir: blok boyutu \u003d 1024<< s_log_block_size;
    • __U32 s_blocks_per_group - Gruptaki blok sayısı;
    • __U32 s_inodes_per_group - Gruptaki inode sayısı;
    • __U16 s_magic. - Ext2 dosya sistemi tanımlayıcısı (0xef53 imza);
    • __U16 s_inode_size - Bilgi düğümünün boyutu (inode);
    • __U32 s_first_ino. - Ankete katılan ilk inode sayısı.
  2. Struct Ext2_Group_DESC Grup Tanımlayıcı Tasarım Yapısı:
    • __U32 bg_block_bitmap- Grup bloklarının istihdamının bitmap;
    • __U32 bg_inode_bitmap- İstihdam İnode Group'un Bitting Haritası;
    • __U32 bg_inode_table - Inode tablonun adresi.
  3. Struct Ext2_inode Information Düğüm Yapısı:
    • __U16 i_mode, bunun için bir dosya ve erişim haklarıdır. Dosya Türü Bu alanın 12-15 bitlerini tanımlar:
      • 0xa000.- sembolik bağlantı;
      • 0x8000.- Normal Dosya;
      • 0x6000.- Blok Blok Cihazı;
      • 0x4000.- katalog;
      • 0x2000.- Sembolik cihaz dosyası;
      • 0x1000- FIFO kanalı.
    • __U32 i_size. - Bayt cinsinden boyut;
    • __U32 i_atime.- Son dosya erişim süresi;
    • __U32 i_ctime. - Dosya oluşturma süresi;
    • __U32 i_mtime.- Son modifikasyonun zamanı;
    • __U32 i_blocks. - Dosya tarafından işgal edilen blok sayısı;
    • __U32 i_block - Bilgi bloklarının adresleri (tüm dolaylı bağlantılar dahil).
  4. Ext2_n_blocks değeri dosyada tanımlanmıştır:

    * Veri bloklarına göre sabitler

    #Define ext2_ndir_blocks 12.

    #Define ext2_ind_block ext2_ndir_blocks.

    #define ext2_dind_block (ext2_ind_block + 1)

    #Define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK + 1)

    #Define EXT2_N_BLOCKS (EXT2_TIND_BLOCK + 1)

  5. Struct Ext2_dir_entry_2 dizin giriş yapısı:
  6. #Define EXT2_NAME_LEN 255.

  • __U32 inode - inode sayı dosyası;
  • __U16 rec_len. - Dizin Kayıt Uzunluğu;
  • __U8 name_len.- Dosya adının uzunluğu;
  • karakter ismi.dosya adı.

Dosya sisteminin oluşturulduğu bölümün adını, küresel yapılar ve değişkenleri tanımlarız.

#Define part_name "/ dev / hda3"

struct Ext2_super_block sb;

/ * Tablo tanımlayıcılarını saklamak için tampon * /

İmzasız Char Buff_Grp;

İmzasız Char Buff; / * Bilgi Tamponu * /

İnt invish; / * Cihaz Dosyası Kolu * /

İnt bkksize; / * Dosya sistemi bloğu boyutu * /

Çalışmamız gereken birkaç işlevi tanımlarız:

Superblock okuma işlevi:

void read_sb ()

Memset (& sb, 0.1024);

Bölümün başlangıcından 1024 bayt ile kaydırıldık ve superblock'u Struct Ext2_super_block sb yapısına okuyorum:

Eğer (LSEEK (Indev, 1024.0)< 0) {

Perişan ("lseek");

Çıkış (-1);

Eğer (Oku (Inded, Char * & Sb, Sydof (SB))< 0) {

Perişan ("okuma");

Çıkış (-1);

Dosya sistemi tanımlayıcısını kontrol edin:

İf (sb.s_magic! \u003d Ext2_super_magic) (

Printf ("bilinmeyen dosya sistemi türü!");

Çıkış (-1);

Ext2_super_magic'in değeri, başlık dosyasında tanımlanır.

Superblock'ta bulunan dosya sistemi hakkında bilgi görüntüler:

printf ("superblock info -----------");

Printf ("inodes sayısı -% u", sb.s_inodes_count);

Printf ("bloklar sayısı -% u", sb.s_blocks_count);

Printf ("blok boyutu -% u", 1024<< sb.s_log_block_size);

Printf ("ilk inode -% d", sb.s_first_ino);

Printf ("Magic - 0x% x", sb.s_magic);

Printf ("inode boyutu -% d", sb.s_inode_size);

Printf ("Grup başına iNodes -% u", sb.s_inodes_per_group);

Printf ("Grup başına blosklar -% u", sb.s_blocks_per_group);

Printf ("İlk veri bloğu -% u", sb.s_first_data_block);

Dönüş;

İşlev Okuma Tablosu Tanımlayıcıları:

void read_gdt ()

Dosya sistemi bloğunun boyutunu hesaplayın:

Blksize \u003d 1024.<< sb.s_log_block_size

Grup tanımlayıcıları tablosu, ilk veri bloğunun hemen arkasında bulunan bir blokta bulunur (SuperBlock için).

Tabloyu oku:

Eğer (LSEEK (INDEV, (SB.S_FIRST_DATA_BLOCK + 1) * BKSIZE, 0)< 0) {

Perişan ("lseek");

Çıkış (-1);

Eğer (oku (Indev, Buff_Grp, Bkksize)< 0) {

Perişan ("okuma");

Çıkış (-1);

Dönüş;

Numarası ile inode içerik özelliği:

void get_inode (int inode_num, struct ext2_inode * in)

İşlevin giriş özellikleri - inode dizisi numarası ve yapının yapısı Ext2_inode yapısı.

Struct Ext2_Group_DESC GD;

U64 Grup, Dizin, POS;

Inode'nin Inode_Num Sırası Numarası ile bulunduğu blok grubunun numarasını hesaplayın:

Grup \u003d (inode_num - 1) / sb.s_inodes_per_group;

Tablo tanımlayıcılarından, grup tanımlayıcısını çıkarın ve Ext2_Group_DESC GD yapısına kopyalayın:

Memset ((geçersiz *) ve GD, 0, SizeOF (GD));

Memcpy ((geçersiz *) & GD, Buff_Grp + (Grup * (SizeOF (GD))), SizeOF (GD));

Grup grubunun inode tablosundaki Inode_Num sekans numarası ile inode_num sekans numarası ile hesaplayın ve bu struct Ext2_inode yapısındaki inouda okuyun:

index \u003d (inode_num - 1)% sb.s_inodes_per_group;

Pos \u003d ((__u64) gd.bg_inode_table) * blksize + (dizin * sb.s_inode_size);

Pread64 (Inded, in, sb.s_inode_size, pos);

Dönüş;

Veri bloğu okuma işlevi:

void read_iblock (Struct Ext2_inode * in, int blk_num)

U64 POS;

Giriş işlevi parametreleri - inode yapısı ve blok numarası (inode'da bulunan adres bloğu sırasındaki numara anlamına gelir).

Ofset'i bölümdeki bilgi bloğuna hesaplayın ve bu birimi genel tampon bufluğuna okuyun:

Pos \u003d ((__u64) in-\u003e i_block) * Bksize;

Pread64 (Inded, Buff, Bksize, Pos);

Dönüş;

Kök kataloğunun içeriğini alma işlevi:

void get_root_dentry ()

Yapı eki2_inode;

Kök dizininin inode dizisi numarası bilinmektedir, bu nedenle kök dizininin inode içeriğini alır ve içeriğini tamponda okuyabiliriz:

get_inode (ext2_root_ino ve in);

Read_iblock (ve 0);

Buffer tamponu, kök dizininin içeriğini içerecektir.

Dönüş;

Dosya adıyla inode numarasını alma işlevi:

int get_i_num (char * adı)

Giriş işlevi parametreleri - dosya adı. Dönüş değeri - sıra numarası inode dosyası.

İnt i \u003d 0, rec_len \u003d 0;

Struct Ext2_dir_entry_2 Dent;

Buffer tamponunda, bir dizi dizin girişi var. İnode dosyasının sekans numarasını belirlemek için, bu dizide bu dosyanın adıyla bulmanız gerekir:

İçin (; ben< 700; i++) {

Memcpy ((boşluk *) ve diş, (buff + rec_len), SizeOF (Dent));

Eğer (! Memcmp (Dent.Name, Ad, Dent.Name_len)) Break;

REC_LEN + \u003d DANT.REC_LEN;

Dönüş Dent.Inode;

Ve şimdi ana işlevi yazıyoruz:

İnt ana ()

Değişkenler ve Yapılar:

yapı eki2_inode;

// mutlak seyahat dosya adı

İmzasız Char * full_path \u003d "/home/test.file";

İmzasız Char Buff1;

Statik int i \u003d 1;

INT N, I_NUM, OUTF, Tip;

Dosyanın mutlak yol adındaki ilk karakter doğrudan bir eğik (/) olmalıdır. Kontrol et:

Eğer (full_path! \u003d "/") (

Perror ("Slash");

Çıkış (-1);

Cihaz dosyasını açın, süper blokları ve tablo tanımlayıcılarını okuyun:

Inded \u003d Open (part_name, o_rdonly);

Eğer (Inded.< 0) {

Perişan ("açık");

Çıkış (-1);

Read_sb ();

Read_gdt ();

Kök kataloğunun içeriğini alıyoruz:

get_root_dentry ();

Şimdi buff tamponu, kök dizinin tüm kayıtlarını içerir (isterseniz, bunları ayrı bir dosyaya kaydedebilirsiniz). Şimdi, kök dizini kayıtlarına sahip olan, yukarıdaki dosyayı kullanarak test.file dosyasının içeriğine gidebiliriz Algoritma okundu. Bu amaçla, bir döngü düzenliyoruz. Döngünüzün gövdesinde, dosyanın mutlak yol adını analiz edeceğiz, elemanlarını vurgulayarak - alt dizinler (bir, ev) ve arama dosyasının adını (Test.File). Her bir element için, inode dizisi numarasını tanımlarız, bu inouda olduğunu ve daha sonra sıfır bloğun içeriğini (inode bulunan adres bloklarının dizisinden) alacağız.

(1) (1)

MEMSET (Buff1.0, SizeOF (Buff1));

İçin (n \u003d 0; n< EXT2_NAME_LEN; n++, i++) {

Buff1 [n] \u003d full_path [i];

İf (((((((((buff1 [n] \u003d\u003d "/" || (Buff1 [n] \u003d\u003d "?")) (

İ ++;

Kırmak;

buff1 [n] \u003d "?";

Dosyanın mutlak yol adının her bir elemanı için, inode dizisi numarasını belirleriz, bu inoudu'yu bellekteki okuyun ve ardından sıfır bloğun içeriğini edinin:

İ_num \u003d get_i_num (buff1);

Get_inode (i_lum, ve in);

Read_iblock (ve 0);

Dosya bilgilerini görüntüleyin (ad, inode numarası, dosya boyutu ve türü):

Printf ("inode numarası -% u", i_lum);

Printf ("dosya adı -% s", Buff1);

Printf ("dosya boyutu -% u", in.i_size);

Dosya türü, i_mode alan yapısının eski dört biti ile belirlenir2_inode:

tip \u003d ((in.i_mode ve 0xf000) \u003e\u003e 12);

Printf ("tip -% d", tür);

Anahtar (Tip) (

Dava (0x04):

Printf ("(katalog)");

Kırmak;

Dava (0x08):

Printf ("(normal dosya)");

Kırmak;

Dava (0x06):

Printf ("(blok ünitesi)");

Kırmak;

Dava (0x02):

Printf ("(" sembolik cihaz) ");

Kırmak;

Varsayılan:

Printf ("(bilinmeyen tip)");

Kırmak;

Dosyanın türünü kontrol edin. Bu normal bir dosyayacaksa - döngüyü durdurun:

Eğer (Tip & 0x08) (

Buffer tamponu, /home/test.File dosyasının bilgi bloklarından bilgi okunacaktır. Bu bilgiyi dosyaya yazıyoruz:

OUTF \u003d OPEN ("OUT", O_CREAT | O_RDWR, 0600);

Yazma (OUTF, Buff, SizeOF (Buff));

Kapat (OUTF);

Kırmak;

Ayrılıyoruz:

Kapat (indev);

Geri dönüş 0;

Ext2 dosya sisteminin mantıksal yapısının bu düşüncesinde.

(İkinci genişletilmiş dosya sistemi).

· Linux Dosya Sistemlerinin Ormancilikleri

· Ext2FS'de Disk Bölüm Yapısı

·

· Kataloglar

· Dosya Aygıtları

·

·

· Kütüphane Ext2fs.

· EXT2FS sisteminin bölümü

· Gizlilik Hesaplaması

Matfak

PROG.

2. kurs 5. gram.

Chichirov Andrey

Falomethem EXT2FS (ikinci genişletilmiş dosya sistemi).

Linux Dosya Sistemlerinin Sonraları

Linux değişkenleri Minix operatif sistemine göre veritabanı idi. İki sistem arasında yeni bir dosya sistemine sahip olmaktan daha adlandırılmış bir disk olurdu, bu nedenle Linus Torvalds, Linux Minix dosya sisteminde alt bölümünü takip etti. Bu dosya sistemi nispeten az miktarda hata ile oldukça etkili olsaydı.

Bununla birlikte, Minix dosya sistemi ile ilişkili yanıp sönmeler oldukça yüksektir, bu nedenle Linux için yeni dosya sistemi üzerinde düşünmeye başlarlar.

Yeni dosya sisteminin Linux zehirinde uygulanmasını kontrol etmek için, sanal bir dosya sistemi (VFS) kullanılmıştır. VFS Chris Provenzano tarafından yazılmıştır ve sonra Linus Torvalds bunu entegrasyonla zehirle geçirdi.

VFS zehirine yüklendikten sonra, yeni FAL sistem fal sistemi (genişletilmiş dosya sistemi) kolay ve Linux 0.96C vexa'ya eklenmiştir. Yeni dosya sisteminde, iki önemli Minix sistemi kaldırıldı: Maksimum hacmi 2 gigabayeye ulaşabilir ve maksimum dosya adı 255 karakterdir. Minix dosya sistemi ile bir başarıdı, ancak bazıları hala yazılıyor. Alt bir erişim, indeks descippet'in modifikasyonu yoktu ve dosya değişikliğinin hücrelerini değiştirmedi. Bu dosya sistemi, sistemin sistemini büyük ölçüde etkileyen ücretsiz bloklar ve dizin descppings ile birlikte açmak için ilgili listeleri kullandı: listelerin listeleri ile bir dosya sistemi dosyalamak için kullanılan belirtilmemiş ve doused oldu.

Bu probun kararı, Ocak 1993'te iki yeni dosya sisteminin serbest bırakılmasıydı: XIA ve EXT2FS (ikinci genişletilmiş dosya sistemi). Çoğunlukla, XIA dosya sistemi, birkaç yeni özellik eklenmesiyle Minix'e dayanıyordu. Temel olarak, uzun dosya adlarıyla, daha büyük hacmin disklerinin onaylanması ve dosya değişikliğinin hücrelerinin gerginliği ile uygulama olasılığı idi. İnce taşlarla, EXT2FS, birçok iyileştirme ve ilaveli EXTF'lere dayanıyordu. Ayrıca gelecek için bir fırsat vardı.

Bu iki dosya sistemi serbest bırakıldığında, fonksiyonel olarak öğlendiler. Xia sistemi, minimizasyonu nedeniyle Ext2F'lerden daha güvenilirdi. Ext2FS sistemindeki hatalar, daha sessiz uygulamalarında asfalt edilmemiştir ve çok sayıda yeni özellik ve iyileştirme eklenmiştir. Mevcut Ext2FS dosya sistemi çok güvenilirdir ve Fiili Linux dosya sistemi haline gelmiştir.

Aşağıdaki tabloda, kesikli dosya sistemleri ile sağlanan fonksiyonel özelliklerin işlevselliği hakkında genel bilgi sağlar.

Minix FS.

Ext fs.

EXT2 FS.

Xia FS.

Maksimum dosya sistemi

Maksimum dosya uzunluğu

Maksimum Dosya Adı Uzunluğu

Dosya Değişikliklerinin Değişikliklerinin Kulesi'nin Altlığı

Hızlandırma yeteneği

Değiştirilebilir Pazmp Bloka

İnfomentin korunması

Dosya adının uzunluğuna ihtiyacınız varsa Ext 2. 1012'ye yükseltilebilir.

EXT2FS, kök kullanıcısı için bazı bloklara nüfuz eder. Genellikle toplamın% 5'sidir, bu da sistem yönetiminin, DPUUUGI kullanıcıları kullanıcılarının kullanımı ile doldurmasının bir sabit disk kapsamı eksikliğini önlemesine izin verir.

Ext2FS'de disk bölümü yapısı

Sabit disk üreticileri genellikle ürünlerini düşük seviyede biçimlendirilmiş olarak tedarik eder. Bildiğim kadarıyla, özel etiketler yardımı olan tüm disk alanının "sektörler", 512 baytın boyutu tarafından kırıldığı anlamına gelir. Böyle bir disk (veya disk bölümü) belirli bir işletim sisteminde kullanım için hazırlanmalıdır. MS-DOS veya Windows'ta, hazırlama prosedürü biçimlendirme denir ve Linux'ta bir dosya sistemi oluşturur. Dosya sistemi oluşturma ext2fs. Belirli bir mantıksal yapının disk bölümünde oluşturmaktır. Bu yapı aşağıdaki gibi inşa edilmiştir. İlk olarak, önyükleme alanı diskte tahsis edilir. Önyükleme alanı herhangi bir dosya sisteminde oluşturulur. Birincil bölümde, bir önyükleme girişi içerir - işletim sistemini başlangıçta yükleme işlemini başlatan bir kod parçası. Diğer bölümlerde, bu alan kullanılmaz. Disk alanının geri kalanı bloklara ayrılmıştır. Ünite 1, 2 veya 4 kilobayttan boyut olabilir. Blok, bir disk alanı birimi tarafından ele alınabilir. Konum dosyaları seçimi tüm bloklar gerçekleştirilir, bu nedenle bloğun boyutunu seçerken, ödün vermeniz gerekir. Bir kural olarak, bloğun büyüklüğü, bir dosya okurken veya yazarken diske olan temyiz sayısını azaltır, ancak özellikle çok sayıda küçük dosya varsa, nadiren kullanılan bir boşluğun oranını arttırır.

Bölgesinde bloklar, blok gruplar halinde birleştirilir. Dosya sisteminde blok grupları ve grubun içindeki bloklar sıralı olarak numaralandırılır, 1 ile başlar. Diskteki ilk blok 1 numaralı ve 1 numaralı gruba aittir. Diskteki toplam blok sayısı (diskte) Bölüm), sektörlerde ifade edilen bir disk hacmi bölücüsüdür. Blok gruplarının sayısı, blok sayısını bölmek için gerekli değildir, çünkü son blok grubu tamamlanamayabilir. Her blok bloğunun başlangıcı, ((grup numarası - 1) * (gruptaki blok sayısı) olarak elde edilebilecek bir adrese sahiptir.

Her blok grubu aynı yapıya sahiptir. Yapısı aşağıdaki tablette sunulmuştur.

Disk bölümünün blok grubunun yapısı ext2fs.

Bu yapının ilk unsuru (SuperBlock), tüm gruplar için aynıdır ve diğerleri her grup için bireyseldir. Superblock, her blok grubunun ilk bloğunda depolanır (yükleme kaydının birinci ünitede bulunduğu grup 1 hariç). Superblock Dosya sisteminin başlangıç \u200b\u200bnoktasıdır. 1024 bayt büyüklüğüne sahiptir ve her zaman dosya sisteminin başlangıcından itibaren 1024 bayt ofsetinde bulunur. Superblock'un birkaç kopyasının varlığı, bu dosya sistemi öğesinin aşırı öneminden kaynaklanmaktadır. Superblock kopyaları, hatalardan sonra dosya sistemini geri yüklerken kullanılır.

SuperBlock'ta depolanan bilgiler, diskteki diğer verilere erişimi ayarlamak için kullanılır. SuperBlock, dosya sisteminin boyutunu, bölümdeki maksimum dosya sayısını, boş alanın miktarını, boş alanın miktarını tanımlar ve boş alanın bulunduğu hakkında bilgi içerir. OS'yi başlattığınızda, SuperBlock belleğe okunur ve dosya sistemindeki tüm değişiklikler ilk önce ekranı OP'de bulunan SuperBlock'un kopyasında bulur ve yalnızca periyodik olarak kaydedilir. Bu, sistem performansını, birçok kullanıcı ve işlemin sürekli dosyaları güncellemenizi sağlar. Öte yandan, superblock kapalıyken, diske yazılmalıdır, bu da gücü tamamen kapatarak bilgisayarı kapatmanıza izin vermez. Aksi takdirde, bir sonraki yükle, SuperBlock'ta kaydedilen bilgiler, dosya sisteminin gerçek durumu için uygun olmayacaktır.

Superblock aşağıdaki yapıya sahiptir

Alanın adı

Bir tür

Yorum Yap

s_inodes_count

Ulong

Dosya sisteminde dizin tanımlayıcıları sayısı

s_blocks_count.

Ulong

Dosya sisteminde blok sayısı

s_r_blocks_count.

Ulong

Superuser için ayrılan blok sayısı

s_free_blocks_count.

Ulong

Ücretsiz blok sayısı

s_free_inodes_count.

Ulong

Ücretsiz dizin tanımlayıcılarının sayısının sayacını

s_first_data_block

Ulong

Veri içeren ilk blok. Ünitenin boyutuna bağlı olarak, bu alan 0 veya 1'e eşit olabilir.

s_log_block_size.

Ulong

Mantık bloğu boyutu göstergesi: 0 \u003d 1 KB; 1 \u003d 2 KB; 2 \u003d 4 kb.

s_log_frag_size.

Uzun.

Fragment boyutu göstergesi (görünüyor, bir parçanın kavramı şu anda kullanılmıyor)

s_blocks_per_group.

Ulong

Her blok bloğundaki blok sayısı

s_frags_per_group.

Ulong

Her blok bloğundaki parçaların sayısı

s_inodes_per_group

Ulong

Her blok bloğunda indeks tanımlayıcıları (inodes) sayısı

s_mtime.

Ulong

Dosya sisteminin en son monte edildiği zaman.

s_wtime.

Ulong

Dosya sisteminde en son kaydedilme süresi

s_mnt_count.

Ushort

Montaj dosya sisteminin metre. Bu sayaç bir sonraki alanda (S_MAX_MNT_COUNT) belirtilen değere ulaşırsa, dosya sistemi doğrulanmalıdır (bu yeniden başlatıldığında yapılır) ve sayaç sıfırlanır.

s_max_mnt_count.

Kısa

Dosya sisteminin kaç kez monte edilebileceğini belirleyen numara

s_magic

Ushort

"Magic Number" (0xef53), dosya sisteminin EX2FS türüne ait olduğunu belirten

s_state.

Ushort

Dosya sisteminin mevcut durumunu gösteren bayraklar (temiz mi (temiz), vb.)

s_Errors.

Ushort

Hata mesajlaşma prosedürlerini belirten bayraklar (hatalar bulunursa ne yapmalı).

s_pad.

Ushort

dolgu

s_lastcheck.

Ulong

Son dosya sistemi kontrolünün zamanı

s_checkinterval

Ulong

Dosya sistemi kontrolleri arasındaki maksimum süre

s_Creator_OS.

Ulong

Dosya sisteminin oluşturulduğu işletim sistemi tipinde belirtilmesi

s_rev_level.

Ulong

Revizyon Seviyesi Dosya Sistemi.

s_rerved

Ulong

1024 bayt'a kadar doldurma

Superblock'u takiben, blok grubunun (grup tanımlayıcılarının) bir açıklaması bulunur. Bu açıklama, aşağıdaki yapıya sahip bir dizidir.

Alanın adı

Bir tür

Amaç

bg_block_bitmap

Ulong

Bu grubun bit kartı bloklarını (blok bitmap) içeren bloğun adresi

bg_inode_bitmap

Ulong

Bu grubun indeks tanımlayıcılarının (inode bitmap) bitmapını içeren bloğun adresi

bg_inode_table

Ulong

Bu grubun bir dizin tanımlayıcıları (inode tablo) içeren bloğun adresi

bg_free_blocks_count.

Ushort

Bu gruptaki ücretsiz blok sayısının sayacını

bg_free_inodes_count

Ushort

Bu gruptaki ücretsiz dizin tanımlayıcısının sayısı

bg_used_dirs_count.

Ushort

Katalog olan bu gruptaki endeks tanımlayıcıları sayısı

bG_PAD.

Ushort

dolgu

bg_reserved.

Ulong

dolgu

Bloğun blok açıklamasının boyutu olarak hesaplanabilir (beden_group_blok_v_ext2 * number_groups) / beden_block (Gerekirse, yuvarlatılmış).

Grup açıklamasında depolanan bilgiler, blok ve dizin tanımlayıcılarının bit kartlarını ve dizin tanımlayıcılarının bir tablosunu bulmak için kullanılır. Blokların ve blok bloklarının 1'den numaralandırıldığını unutmayın.

Bit Harita Bloğu (BLOCK Bitmap), her bir bit, karşılık gelen bloğun kendisine atanmadığını belirten bir yapıdır. Bit 1 ise, blok meşgul. Bu kart, dosyanın altındaki yeri vurgulamak için gerekli olan durumlarda ücretsiz blokları aramak için hizmet vermektedir, blokların bitmapı, eşit olan blokların sayısını işgal eder. (Number_block_v_group / 8) / beden_block (Gerekirse, yuvarlatılmış).

Dizin tanımlayıcılarının bitmapı, dizin tanımlayıcılarının tablosu ile ilgili benzer bir işlevi yerine getirir: hangi tanımlayıcıların meşgul olduğunu gösterir.

Blok yapı yapısındaki aşağıdaki alan, dizin dosya tanımlayıcılarının tablosunu saklamaya yarar. Dizin tanımlayıcısının yapısı aşağıdaki alt bölümde göz önünde bulundurulur.

Nihayet, blok grubundaki kalan yer aslında dosyaları saklamak için tahsis edilir.

Dosya sistemiExt. 2 ile karakterizedir:

  • hiyerarşik yapı
  • veri dizilerinin kararlaştırılmış işlenmesi,
  • dinamik dosya uzantısı,
  • dosyalarda Bilgi Güvenliği
  • dosya olarak çevresel cihazların (terminaller ve teyp cihazları gibi) yorumlanması.

Dosyaların iç görünümü

EXT 2 sistemindeki her dosya benzersiz bir dizine sahiptir. Dizin, dosyaya başvurmak için herhangi bir işlem için gerekli bilgileri içerir. İşlemler Açıkça tanımlanmış bir sistem araması kümesini kullanarak dosyalara atıfta bulunun ve kompozit bir dosya adı olarak hareket eden dosya dizgisi dosyasını tanımlama. Her bir kompozit isim dosyayı kesinlikle belirler, böylece sistem çekirdeği bu adı dosya dizinine dönüştürür. Dizin, diskteki dosya bilgilerinin bir adres tablosu içerir. Diskteki her blok, numarasına değindiğinden, bu tablo disk bloğu numaralarını saklar. Esnekliği artırmak için, çekirdek dosyaya bir blokta tutturur, dosya bilgilerinin tüm dosya sisteminin üzerine dağılmasını sağlar. Ancak bu yerleştirme şeması veri arama görevini de karmaşıklaştırır. Adres tablosu, dosyanın sahip olduğu dosyayı içeren bir blok numaralarının bir listesini içerir, ancak basit hesaplamalar, dizindeki dosya bloklarının doğrusal bir listesinin kontrol edilmesi zor olduğunu göstermektedir. Küçük bir dizin yapısının büyük dosyalarla çalışması için, Disk Bloğu adresleri tablosu, Şekil 1'de gösterilen yapıya sahip olarak getirilir.

EXT 2 sistemindeki çoğu dosya, 10 KB'yi ve hatta 1 kb'ı geçmeyen bir boyuta sahiptir! 10 KB dosyası doğrudan adresleme bloklarında bulunduğundan, dosyalarda depolanan verilerin çoğunda, erişim bir temyizde yapılabilir. diske. Bu nedenle, büyük dosyalara erişimin aksine, standart boyut dosyalarıyla çalışmak hızlı bir şekilde gelir.

Dizin Dosyası Tanımlayıcıları

Diskteki her bir dosya, dosya dizini - dizi numarası ile tanımlanan bir ve yalnızca bir indeks dosyasına karşılık gelir. Bu, dosya sisteminde oluşturulabilecek dosyaların sayısının, bir dosya sistemi oluştururken tanımlanan veya disk bölümünün fiziksel hacmine dayanarak hesaplanan indeks tanımlayıcıları sayısıyla sınırlı olduğu anlamına gelir. Hint Descpports, statik formda diskte var ve çekirdeği çalışmaları için başlamadan önce onları bellekte okur.

Dizin dosya tanıtıcısı aşağıdaki yapıya sahiptir:

Alanın adı

Bir tür

Açıklama

İ_mode.

Ushort

Bu dosyaya tür ve erişim hakları.

İ_uid

Ushort

Dosya sahibi tanımlayıcısı (sahibi UID).

İ_size.

Ulong

Bayt cinsinden dosya boyutu.

İ_atime.

Ulong

Son erişimin dosyaya zamanı (erişim süresi).

İ_ctime

Ulong

Dosya oluşturma süresi.

İ_mtime.

Ulong

Dosyanın son modifikasyonunun zamanı.

İ_dtime

Ulong

Dosya silme süresi.

İ_gid

Ushort

Grup tanımlayıcısı (GID).

İ_links_count

Ushort

İlişkiler sayacı (bağlantılar sayısı).

İ_blocks.

Ulong

Dosya tarafından işgal edilen blokların sayısı.

İ_flags.

Ulong

Dosya bayrakları Dosya bayrakları)

İ_rerved1

Ulong

İşletim sistemi için ayrılmış

İ_block

Ulong

Dosya verilerinin kaydedildiği bloklara işaretçiler (Şekil 1'deki doğrudan ve dolaylı adres örneği)

İ_version.

Ulong

Dosya Sürümü (NFS için)

İ_file_acl

Ulong

ACL dosyası.

İ_dir_acl

Ulong

ACL kataloğu

İ_faddr.

Ulong

Fragment Adresi (Parça Adresi)

İ_frag

Uchar.

Fragment Numarası (Fragment Numarası)

İ_fsize.

Uchar.

Parça Boyutu (Parça Boyutu)

İ_pad1

Ushort

dolgu

İ_rerved2.

Ulong

Ayrılmış

Dosyaya tür alanı ve erişim hakları, her biri, bir biti, belirli bir dosyanın belirli bir türüne veya kurulumuna belirli bir tür veya kurulumda gösteren bir bayrak olarak hizmet veren iki baytlık bir kelimedir.

Tanımlayıcı

Değer vermek

Randevu Bayrağı (Alanlar)

S_ifmt.

F000.

Dosya Türü Maskesi

S_ifsock

A000.

Etki Alanı Yuvası (Soket)

S_iflnk.

C000

S_ifreg.

8000

Normal (normal) dosya

S_ifblk.

6000

Blok yönelimli cihaz

S_ifdir.

4000

Katalog

S_ifchr

2000

Bayt yönelimli (sembolik) cihaz

S_iffo.

1000

Adlandırılmış Kanal (FIFO)

S_isuid

0800

Suid - Bit Shift Sahibi

S_isgid.

0400

SGID - Grup Vardiyası Bitleri

S_isvtx

0200

Görev Koruma Bit (Yapışkan Bit)

S_irwxu.

01C0.

Dosya Sahibinin Hakları Maskesi

S_irusr.

0100

Okuma hakkı

S_iwusr.

0080

Yazma hakkı

S_ixusr.

0040

Yürütme hakkı

S_irwxg.

0038

Grup Maskesi Grubu

S_irgrp.

0020

Okuma hakkı

S_iwgrp.

0010

Yazma hakkı

S_ixgrp.

0008

Yürütme hakkı

S_irwxo.

0007

Diğer kullanıcıların haklarının maskesi

S_iroth

0004

Okuma hakkı

S_iwoth

0002

Yazma hakkı

S_ixoth

0001

Yürütme hakkı

Endeks tanımlayıcıları arasında özel amaçlar için ayrılmış ve dosya sisteminde özel bir rol oynayan birkaç tanımlayıcı vardır. Bunlar aşağıdaki tanımlayıcılardır

Tanımlayıcı

Değer vermek

Açıklama

Ext2_bad_ino.

Diskteki arızalı blokların adreslerinin listelendiği indeks tanımlayıcısı (Kötü bloklar inode)

Ext2_root_ino.

Dosya Sistemi Kök Dizin Endeksi Tanımlayıcısı (Kök INODE)

Ext2_acl_idx_ino.

ACL inode

Ext2_acl_data_ino.

ACL inode

Ext2_boot_loader_ino.

Yükleyici Endeksi Tanımlayıcısı (Boot Loader Inode)

Ext2_undel_dir_ino.

Rehberin inode'sini geri al.

Ext2_first_ino.

İlk proje dışı tanımlayıcı olmayan

Bu listedeki en önemli sap kök dizin tanımlayıcısıdır. Bu tanımlayıcı, tüm dizinler gibi, aşağıdaki yapının kayıtlarından oluşan kök dizinine işaret eder:

Alanın adı

Bir tür

Açıklama

Dosya numarası

Ulong

dosya Dizini Tanımlayıcı Numarası (Dizin)

rec_len.

Ushort

Bu rekorun uzunluğu

name_len.

Ushort

Dosya adı uzunluğu

İsim.

Char.

Dosya adı

Kataloğa ayrı bir giriş blok sınırını geçemez (yani, tamamen bir bloğun içinde bulunmalıdır). Bu nedenle, bir sonraki giriş tamamen bu bloğa sığmazsa, bir sonraki bloğa aktarılır ve önceki kayıt, bloğu sonuna kadar dolduracak şekilde devam eder.

Şekil 1 Endekste doğrudan ve dolaylı adres blokları

Şekil 2 Blok Boyundaki Bayt cinsinden dosyanın hacmi 1 KB

Şekil 3. Disk Endeksi Örneği

Şekil 3, belirli bir dosyanın disk dizinini göstermektedir. Bu endeks, sahibi, sahibi "MJB" ve boyutu 6030 bayttır. Sistem, "MJB" kullanıcısının dosyayı okumasını, yazmasını ve yürütmesini sağlar; "OS" grubunun üyeleri ve diğer tüm kullanıcıların yalnızca dosyayı okumak veya yürütmek için izin verilir, ancak içine veri kaydetmek için izin verilir. Dosyanın en son 23 Ekim 1984'te 13: 45'te okunması, 22 Ekim 1984'te 10: 30'da yapılan kayıt yapıldı. Endeks, en son 23 Ekim 1984 tarihinde 13: 30'da değişti, ancak bu zamanda bilgi kaydedilmedi. Çekirdek, yukarıdaki verilerin tümünü endeksdeki kodlar. Dizinin içeriğinin ve dosyanın içeriğinin kaydındaki farkına dikkat edin. Dosyanın içeriği yalnızca dosya kaydedildiğinde değişir. Dizin içeriği, dosyanın içeriğini değiştirirken ve dosyanın sahibini değiştirirken, erişim hakları ve işaretçi setlerini değiştirirken değişiyor. Dosyanın içeriğini otomatik olarak değiştirme, endeks düzeltmesine neden olur, ancak dizin düzeltmesi dosyanın içeriğini değiştirmek anlamına gelmez.

Kataloglar

Kataloglar, dosya sisteminin hiyerarşik yapısının inşa edildiği dosyalardır; Dosya adını dizin numarasına çevirmede önemli bir rol oynarlar. Dizin, dizin numarasından ve dizinde bulunan dosya adından oluşan bir kayıt kümesi olan bir dosya içeren bir dosya. Kompozit adı, boş bir sembolle tamamlanan ve ("/"), birkaç bileşende paylaşılan ("/") ile tamamlanan bir sembol dizisidir. Her bir bileşen, ikincisine ek olarak, bir dizin adı olmalıdır, ancak son bileşen bir dizin olmayan bir dosya olabilir. UNIX sisteminin V sürümünde, her bir bileşenin uzunluğu 14 karakterle sınırlıdır; Böylece, indeks numarasına ayrılan 2 bayt ile birlikte, dizinin kayıt boyutu 16 bayttır.

Bayt olarak ofset
Katalog içinde

İndeks numarası
(2 bayt)

İsim vermekdosya

1798

içinde

1276

fsck.

clri

1268

mOTD.

1799

mount

mknod.

2114

passwd.

1717

umut.

1851

kontrol Listesi.

fsdbld

config

1432

getty.

Çarpışma.

mkfs.

Şekil 4 Katalog formatı / vb

Şekil 4, "vb" dizinin formatını göstermektedir. Her dizinin, belirtilen nokta ve bu kataloğun ve ebeveyn kataloğunun dizin numaralarına eşleşen iki nokta ("" ve "") ve iki nokta (".") Ve dizin numaralarını sırasıyla. Dosya için dizin numarası "." "/ Etc" dizininin ofset 0 ve değeri 83 ile bir adrese sahiptir. ".." dosyasının indeks numarası, dizinin başlangıcından itibaren ofset 16 ve değeri 2. Dizindeki girişler boş olabilir ve endeks numarası 0'dır. Örneğin, "/ etc" dizininde "/ etc" dizininde adres 224 ile kaydedilmesi, bir kez "kilitlenme" adlı dosya için giriş noktasını içermesine rağmen. MKFS programı, dosya sistemini dosyalar için dizin numaralarının böyle bir şekilde başlatır. ". Ve ".." Kök dizini, dosya sisteminin kök dizin numarasıyla çakışıyor.

Çekirdek, dizindeki verileri, dizin yapısını ve doğrudan ve dolaylı adresleme düzeyleri ile blokları kullanarak normal tip dosyasında olduğu gibi, aynı şekilde depolar. İşlemler, dizinlerden gelen verileri düzenli dosyaları okudukları gibi okuyabilir, ancak dizin için özel giriş hakkı, dizin yapısının doğruluğunu sağlayan çekirdek tarafından ayrılır. Katalog erişim hakları aşağıdaki anlamlara sahiptir: Okuma hakkı, katalogdan veri okuma fırsatını işler verir; Kayıt hakkı, işlemin, kataloğunun içeriğinin içeriği olduğu bir sonucu olarak, dizinde yeni girişler oluşturmalarını veya eski (Creat, MKNod, Link ve UnLink System işlemlerini kullanarak) oluşturmasını sağlar; Yürütme hakkı, işlemin dizini dosya adına göre aramasına izin verir ("katalog" anlamına gelir).

Herhangi bir program dosyanın yolunu kullandığında, Dizin Descip'in ilgili NoP'si kataloglarda içeriyor. Dosya adı Dizin Açıklama Numarasında kullanıldıktan sonra, bu Descippot belleğe yerleştirilir ve ardından sonraki ZAP'de kullanılır.

UNIX dosya sistemleri kavramı referans kavramını içermektedir. Bir indeks descipboard, birden fazla dosya adıyla ilişkilendirilebilir. Deskpott, bir alanla, dosya ortakları olan bir hinner tarafından desteklenir. Bir bağlantı eklemek, Dizin Descippet numarasının bir diskpot olduğunu ve DESCPPORT'taki referans sayacındaki bir artış olduğu bir dizin girişi oluşturmaktır. Zehirin bağlantılarını silmelisiniz, referans sayacını azaltır ve bu sayaç bir boşsa, Desqpot'u siler.

Bu tür bağlantılar sert denir ve yalnızca bir dosya sisteminde kullanılabilir (bir dosya sistemi için bir dosya sistemi için bir bağlantı oluşturamazsınız). Ayrıca, sert bir bağlantı yalnızca bir dosya belirleyebilir (dosya sistemine odaklanmak için dizine sıkı bir referans).

Çoğu UNIX sisteminde, başka bir bağlantı türü var. Sadece dosya adını tanıtan bu bağlantılar sembolik olarak adlandırılır. Dosyanın yolunu Dizin Descipboard'a kullanırken, bu tür bir bağlantıyı kullanırken, zehir, Referansın adını DESCITE yazılımına (yani, hedef dosyanın adına) değiştirir ve yeniden internet yolları değiştirir. dosyanın yolu. Sembolik bağlantı Desqpot'i göstermediğinden, dezenfektif bir dosya sisteminde bulunan dosyalara bağlantılar oluşturmak mümkündür. Bu bağlantılar, var olmayanlarda bile herhangi bir türün dosyasını gösterebilir. Sembolik bağlantılar çok kullanılır, çünkü sert bir bağlantısı olan yanmalara sahip değillerdir. Bununla birlikte, dizin descipboard ve veri bloklarının izin verdiği diskte bir miktar hacimdiler. Kullanımları, dosyanın yolunu Dosyanın yolunu indeks Descipboard'a kullanmanın, bu, zehirin sembolik bağlantılarının sembolizasyonunun dosyanın yolunu tekrar girmesi gerektiği gerçeğinden kaynaklanıyor.

Dosya Aygıtları

UNIX benzeri işletim sistemlerinde, cihazlara erişim özel dosyalardan gerçekleştirilir. Bu dosya dosya sisteminde gerçekleşmez. Aygıt sürücüsüne sadece bir erişim noktasıdır.

İki tür cihaz dosyası vardır: sembolik ve blok. Sembolik bir tür kullanırken, cihazla yalnızca karakter modunda veri alışverişinde bulunmak mümkündür, Blok Tipi Cihaz Dosyaları, yalnızca tamponu kullanarak blokları değiştirmenize izin verir. Cihaz dosyasına bir G / Ç isteği talep ederken, bu sorgu uygun cihazın sürücüsüne yönlendirilir. Her bir dosya, cihazın türünü ve cihazın kendisini belirleyen genç odayı tanımlayan kıdemli bir numaraya karşılık gelir.

Ek özellikler Ext2FS.

UNIX, Ext2FS Bağımsız özelliklere ek olarak, genellikle UNIX dosya sistemleri tarafından gönderilmeyen bazı ek özellikler vardır.

Dosya Atpibuts, dosyaları kullanarak dosyaları kullanarak kutupların basılmasını değiştirmenizi sağlar. Dosya veya dizine yükleyebilirsiniz. İkinci durumda, bu dizinde oluşturulan dosyalar bu atıcık miras alır.

Sistemin montizasyonu sırasında, dosya atıcıları ile ilgili bazı özel özellikler kurulabilir. Montaj seçeneği, yönetimin dosyaları oluşturma özelliklerini seçmesine izin verir. BSD'nin özellikleriyle dosya sisteminde, dosyalar aynı tanımlayıcı GPPP ile ve ayrıca daire kataloğu ile oluşturulur. Özellikler sistemi v biraz daha karmaşıktır. SetGID biti kataloğu ayarlanmışsa, bu dizinin GPPS tanımlayıcısının oluşturduğu dosyalar alınır ve alt dizinler GPPP ve SetGID bitlerinin tanımlarını devralır. Mevcut davada, dosyalar ve kataloglar, neden olan PPCress'in GPPP'nin temel tanımlayıcısı ile oluşturulur.

EXT2FS sistemi, BSD sistemine benzer bir senkronize veri modifikasyonu kullanabilir. Montaj seçeneği, DC'de kaydedilen tüm verileri (Dizin Descplistlists, Bits, Dolaylı Bloklar ve Dizin Blokları) değiştirilmelerine göre belirlemesini sağlar. Bu, yüksek bilgi kayıtlarını elde etmek için kullanılabilir, aynı zamanda rahiplikte de bozulmaya devam eder. Aslında, bu özellik genellikle kullanılmaz, çünkü proliferasyonun bozulmasından bu yana, bu, dosya sistemi kullanılarak işaretlenmeyen kullanıcıların kullanıcılarını terlemek için kullanılabilir.

EXT2FS, mantıksal bir blok seçmek için bir dosya sistemi oluşturmanıza olanak sağlar. Bir pazmer 1024, 2048 veya 4096 bayt olabilir. G / Ç opsiyonlaması için büyük bir hacim blokların (diske emme miktarı azalırken) ve bu nedenle başın daha küçük bir başlığına kullanılması. Bloğun diğer tarafı ile, büyük bir blok blokların disk emekli aylığının kadranına kullanılması. Tipik olarak, dosyanın son bloğu tamamen bilgi alanı için kullanılmaz, bu nedenle, bloğun hacminde bir artışla, TEPED disk yumruğunun hacmi arttırılır.

EXT2FS, Oskized Sembolic Bağlantıları kullanmanızı sağlar. Bu tür bağlantıları kullanarak, blok veri blokları kullanılmaz. Hedef dosyanın adı veri bloğunda değil, dizin descipboard'ında. Böyle bir yapı, disk yumruğunu koruman ve sembolik bağlantıların viskilerini buharlaştırmanıza olanak sağlar. Tabii ki, alçakgönüllü, lapa lapsası altında bir boru var, bu yüzden her bağlantı, hersel olarak yetersiz kalmayacak. İkincil bir bağlantıya dosya adının maksimum uzunluğu 60 karakterlidir. Yakın gelecekte, bu şemayı küçük hacimli dosyalar için duraklatması planlanmaktadır.

EXT2FS, dosya sisteminin durumunu takip eder. Zayıf, dosya sisteminin durumunu belirtmek için süspansiyonda ayrı bir alan kullanır. Dosya sistemi okuma / yazmaya monte edilirse, durumu "temiz değil" olarak yüklenir. Salt okunur eğlenceye tekrar sökülür veya monte edilirse, durumunu "temiz" olarak yüklenir. Sistemin sistemi ve dosya sistemi devam ettiğinde, bu bilgi bir dosya sistemine olan ihtiyacı çalıştırmak için kullanılır. Zavallı da bu alanda bazı yaramaz hatalar yerler. Uygun olmayan zehir açıldı, dosya sistemi "hatalı" olarak işaretlenmiştir. Dosya sisteminin simülatörü, durumu gerçekten "temiz" olsa bile, sistem sistemi için bu bilgileri test edecektir.

Uzun süreli görmezden gelen dosya sistemi testi Bazen bazen bazı yeterliliklerle olabilir, bu nedenle EXT2FS, düzenleyici sistem için iki yöntem içerir. Spearlock, sistem montaj sayacı tarafından desteklenir. Bu sayaç, sistem okuma / yazma özelliğine monte edildiğinde her payı arttırır. Değeri maksimuma ulaşırsa (aynı zamanda süspansiyonda da huddedilir), ardından durumun "temiz" olsa bile, dosya sistemi testi ödeme tarafından başlatılır. İkincisi, ilk kez ve birincisi arasındaki maksimum zeki, süspansiyonda da homurduyur. Pembeler arasında maksimum zeka elde edildiğinde, dosya sistemi durumu yoksayılır ve kontrol noktası başlatılır.

EXT2FS sistemi şimdiki için yardımcı olur. TUNE2FS BRAMMA, değiştirmek için kullanılabilir:

  • eylem PRI hatası açma. Uyumsuzluksuz bir zehirle açıldığında, dosya sistemi "hatalı" olarak işaretlenmiştir ve aşağıdaki adımlardan biri yapılabilir: yürütmenin uygulanması, ondan kaçınmak için salt okunur zevk alanındaki dosya sisteminin güncellenmesi Kuplaj, sistemin dosya sistemi için çağrı sistemi.
  • maksimum monte edilmiş değer.
  • pinler arasında maksimum zeka.
  • kök kullanıcı için tahrik edilen mantıksal blokların sayısı.

Monte ile belirtilen seçenekler, hata zehirinin yükümlülüğünün eylemlerini değiştirmek için de kullanılabilir.

ATPIBIVe'yi kullanmak, kullanıcıların sıralama dosyalarını silmelerini sağlar. Benzer bir dosyayı, bu dosyayı kullanmak için kullanılan bloklarda silebilirsiniz, rastgele bilgi tarafından kaydedilir. Bu, bu dosyanın ilk katına otorite içinden erişebilmek için tanıtılacaktır ve disk arama yardımı.

EXT2FS sistemi yakın zamanda 4.4 BSD dosya sisteminden alınan yeni türler ekledi. Koyma tipi dosyalar yalnızca okumak için kullanılabilir: Kimse onları değiştirmek veya bunları silmek zorunda değildir. Bu, önemli yapılandırma dosyalarını korumak için kullanılabilir. Dosya türü dosyaları, bunlar kayıt fonksiyonlarına dönüştürülebilen dosyalardır ve veriler yalnızca bu dosyanın sonuna eklenebilir. Bu tür dosyalar da kaldırılabilir veya kalıcı olabilir. Yalnızca birimde artabilen Zeper dosyaları olarak kullanılabilirler.

Gizlilik Optimizasyonu

EXT2FS sistemi, profilini optimize eden birçok fonksiyon tarafından kolaylaştırılır, bu da dosya okuma ve yazma hakkında bilgi alışverişinde bir artışa yol açar.

EXT2FS aktif olarak bir disk tamponu kullanır. Ünite okunması gerektiğinde, zehir, G / Ç opt / çıkış opakını görüntüler. Böylece, fakirler, okunması gereken bir sonraki bloğun zaten bir disk tamponundan sorumlu olduğundan emin olmaya çalışır. Bu tür fırsatlar genellikle seri okuma dosyaları kullanılarak gerçekleştirilir.

EXT2FS sistemi ayrıca büyük miktarda bilgi optimizasyonu sağlar. Bloklar, ilgili dizin descippets ve veri bloklarını birleştirmek için kullanılır. Zehir her zaman bir dosyanın veri bloklarını bir GPUP'de ve desqpot'taki veri bloklarını sıkmaya çalışır. Bu, başlık kafalarının işlemlerini ve tanımlayıcıyı ve buna karşılık gelen karşılık gelen veri bloklarını azaltmak için uygulanır.

Dosyadaki bu veri kayıtları, EXT2FS, yeni bloğu kullanarak 8 bitişik bloğu güçlendirir. Böyle bir yöntem, sistemin sistemin güçlü yönlerinin yüksek faaliyetlerini gerçekleştirmenize olanak sağlar. Ayrıca, sonraki okumalarına uyan dosyalar için bitişik blokları kullanmanızı sağlar.

Kütüphane EXT2FS.

Ext2FS zararlılarının kullanımını ve bu dosya sisteminin temas strostlarının kontrolünü kullanmak için LIBEXT2FS kütüphanesi kolaydı. Bu kütüphane, fiziksel olarak elimine etmek için atıfta bulunarak bu Ext2 dosya sistemini çalıştırmak ve değiştirmek için kullanılabilecek işlevler sunar.

Çoğu Ext2FS yardımcı programları (Mke2FS, E2FSCK, TUNE2FS, DUMPE2FS, DEPUGFS ve DP.) Bu kütüphaneyi kullanın. Bu yardımcı programların modifikasyonunu güçlü bir şekilde tamamlarken, EXT2FS dosya sistemine ek özellikler getirecek herhangi bir değişiklik yalnızca Ext2FS kitaplığında yalnız olmalıdır.

Ext2FS Internet Kütüphanesi yeterince Shiyky ve Yardımcı olduğundan, dosya sisteminin kullanılabileceği çalışmaları için kolayca yazılacak olan yardımıyla kolayca yazılabilir. Uygula, EXT2FS kütüphanesi 4.4 BSD dökümü ve bazı yardımcı programların geri kazanımı tarafından kullanıldı. Bu kullanımları Linux'a uyarlamak için çok az değişiklik yapmak için öldürüldü (Dosya Sistemi ile birlikte Ext2FS kitaplığına çağırmak için birkaç işlevi değiştirmek gerekliydi).

EXT2FS kütüphanesi, birkaç sınıfın işlemlerine erişimi içerir. Bir ergenlik sınıfı, dosya sistemi ile ilgili bir opaktır. Herhangi bir şampoam, dosya sistemini açabilir veya kaydırabilir, bit bloğu okuyabilir veya yazabilir, diskte yeni bir dosya sistemi oluşturabilir. Kötü blok sistemi bloklarının listesinin de işlevleri vardır.

İkinci opak sınıfı katalogları kullanacaktır. EXT2FS kütüphanesini kullanarak proplama, dizinde bir dizini oluşturabilir veya izleyebilir veya dizinde kayıt ekleyebilir veya silebilir. Dosyaya Dosyaya Dosyaya Descipping Yolu'ndaki pervaneler ve belirtilen Descip'e göre dosyaya yolun yolunu oluşturur.

Son opak sınıfı indeks descilepts ile açılır. DESCPPORT tablosunu okumak, DESCPOTP'yi saymak veya yazmak mümkündür, PP Belirtilen desqpotun tüm bloklarını görüntüleyin. Blokların ve DESCPPORT'ların oluşumunun ve serbest bırakılması fonksiyonlarına devam etmek mümkündür.

EXT2FS sisteminin bölümü

EXT2FS sistemi için, tamamlayıcı kullanımın güçlü kullanımı kullanılmıştır. Bu kullanımlar, Ext2FS dosya sistemlerinde herhangi bir tutarsızlık oluşturmak, değiştirmek ve coppe oluşturmak için kullanılır. Mke2FS programı, boş bir EXT2FS dosya sistemi sağlayan bir disk yapıştırın yüklemek için kullanılır.

TUNE2FS uygulaması, PapalMet'in Dosya Sisteminin Gücü için kullanılabilir .cc, gelişmekte olan hatalara, maksimum sistem montaj sayısına, sistemin ilerlemeleri ile yönlendirilen mantıksal blokların sayısı ve Kök kullanıcı.

Belki de en akıllı kullanım basitleştirilmiş dosya sistemidir. E2FSCK, tüm sistemin aldıktan sonra dosya sisteminde tutarsızlıkları tamamlamaya başladı. E2FSCK proplamasının ilk sürümü, Minix dosya sistemi için Linus Torvald FSCK dosyasına dayanmaktadır. Bununla birlikte, Ext2FS kütüphanesini kullanan ve daha hızlı ve daha hızlı olan ve yalnızca soruşturma alanındaki daha fazla hata içinde, Papaling Vexa ile hazırlığa göre daha fazla sayıda hatayla gerçekleştirilebilir. Bununla birlikte, aktarımın geçerli sürümleri.

E2FSCK utanç, maksimum hızla yapılması için böyle bir zamanda incelendi. Dosya sisteminin hıyarları disk kafasına çağrıldığından, e2fsck yanıp sönen algoritmaları optimize etmelisiniz, böylece dosya sistemi için prosedürün daha kolay kullanılması gerektiği. Ve ayrıca, Disket Descpts ve dizinlerinin müzakereleri, disk sürücüsü kafalarını azaltmak için blok numarasına göre gerçekleştirilecektir.

E2FSCK'ın kırılmasında, dosya sistemi tüm indeks indirimleri ve bir descipputs tarafından sistemin ayrı bir elemanı olarak pistened. Böyle bir fırsat, bu testler dosya sistemi nesnelerine uymuyor. Bu tür pimlerin amaçlarından biri, dosya türünün varlığının, aynı zamanda descpeppetteki tüm blokların mevcut numaralarına sahip bloklarla yazışmalarının varlığının girişidir. Tetiklemede, bitler blok ve descplistlerin kullanımını gösteren çalışmalarda çalışır.

E2FSCK veri bloklarını bulursa, noms birden fazla kireçlenmede toplanır, daha sonra 1B 1D yolculuklar tutarsızlıkları belirlemek için, ya taşınabilir blokları veya bir veya daha fazla descipput'ün çıkarılmasını artırarak tutarlar.

Tüm indeks Descippets'in hafızaya ve ayrılmaz olarak okunması gerektiğinden en yakın pepping en iyi şekilde kapanıyor. Sonraki kuruluşlarda giriş / çıkış işlemlerini azaltmak için, gerekli tüm bilgi hareketi tamponda kalır. Bu şemanın mutlu bir okunması, dosya sistemi dizininin tüm bloklarını aramaktır. Bu bilgiyi elde etmek için, tüm dosya sistemi dizinlerinin dizileri ikinci gezilerde okunur.

İkinci döşemede, dizinler dosya sisteminin bireysel unsurları olarak yazılıyor. Her dizinin bloğu, DPUCH dizini bloklarına atıfta bulunmadan ayrıdır. Bu, E2FSCK'nın tüm dizinlerin blok sayısındaki tüm blokları ayırmasını ve diske erişimini azaltarak çalışma süresinde bunlarla iletişim kurmasını sağlar. Katalog blokları, kayıtlarının gerçekliğinin yazışmaları için test edilmiştir ve mevcut numaraya sahip olan descputs'a referanslara katkıda bulunurlar (kopmada açıldığı gibi).

Dizin bloğu için dizinin her bir programındaki, girişlerin varlığı mevcut olacaktır. "." ve "..", ve descppet numarası kayıt içindir. " Geçerli dizine karşılık gelir. (".." olarak kaydedilmesi için plan numarası. Açılıncaya kadar test etmiyor.)

İkinci bir phood yaparken, apartman kataloğuna karşılık gelen bilgi hareketi tampona kaydedilir.

İkinci Pchoda'nın sonunda, bir diski olan neredeyse tüm giriş / çıkış açma işlemlerinin kapsanacağı belirtilmelidir. Binlerce dördüncü ve beşinci yolculuklar için deneyen tüm bilgi hareketi, ancak PPPSSOP'un kalan çukurları, toplam E2FSCK uygulamasının% 5-10'undan azını sürdürür.

Katalog bağlantıları biberine dahil edilmiştir. E2FSCK, ikinci phood tarafından elde edilen bilgileri kullanarak her dizinin yolunu yatırır. İşte her katalog için ".." rekoru. İlk olarak tanımlanan ve bağlantılara sahip olmayan tüm kataloglar / kayıp + bulundu dizinine yerleştirilir.

Dördüncü olarak, E2FSCK yolculukları, her bir indeks descip için referans sayaçları, tüm descpports pplaying ile içerir ve referans sayaçlarını yansıtır (bu bilgi bir çapraz sıkıcıdan tutulur), değerleri hesaplanan iç metrelerle saniye alt ve gövdeleri. Sıfır referans ölçerli tüm başarısız dosyalar ayrıca / kayıp + bulundu dizinine yerleştirilir.

Son olarak, Beşinci olarak, E2FSCK, Dosya Sistemindeki tüm bilgi bilgilerinin yazışmalarıdır. Burada, ilk sökülmüş parçalarda elde edilen blok ve descplistlerin parçaları, geçerli değerler ve gerekirse, disk üzerindeki disk bilgisi uygun olur.

Dosya sistemi hata ayıklayıcısının faydalı kullanımını kullanın. Debugfs, Dosya Sistemi durumunu azaltmanıza ve ayarlamanıza izin veren güçlü bir vanitydir. Temel olarak, EXT2FS kütüphanesine, yani kütüphane işlevlerini arayacak tipik komutlar için etkileşimli bir internettir.

Debugfs, iç dosya sistemi striktürini kullanmak, kurtarma sisteminden ayrılmak veya E2FSCK için şartlı testler oluşturmak için kullanılabilir. Ne yazık ki, bu Jammy, nasıl kullanılacağını bilmiyorsanız, dosya sistemini kazanabilir. Bu güçle, dosya sistemini yok etmek yeterlidir. Bu nedenle, debugfs dosya sistemini varsayılan salt okunur konumuna dönüştürür. Okuma / Yazma zarfına erişmek için, -W seçeneğini belirtmelisiniz.

Gizlilik Hesaplaması

Bonnie testi sonuçları aşağıdaki tablodan görülebilir:

Şeker Kayıt (CB / S)

Yama Girişi (CB / S)

Performans (KB / S)

Şeker okuma (CB / S)

Parça okuma (KB / s)

BSD Async.

BSD SYNC.

EXT2 FS.

1237

1033

Xia FS.

Sonuçlar blok giriş / çıkışa yeterince aşinadır: EXT2FS sistemi referans sisteminde kazanır. Bu, PA yaklaşımında yer alan optimizasyondan kaynaklanmaktadır. Gupien pureminde kukla olduğu gerçeğine göre giriş de yeterince hızlı. Yüksek okuma hızı, blokların bir dosyaya çekildiği gerçeğiyle ilgilidir, bu nedenle başlık başlıkları iki okuma arasında gerçekleştirilmez ve ilk okumanın optimizasyonu tam olarak tamamen olacaktır.

Tarafın diğer tarafı ile, FreeBSD sistemi yukarıdaki referans değerinin sembolik bir girişi / çıkışını içerir. Belki de bu, FreeBSD ve Linux'un, ilgili C kütüphanelerine karşılık gelen kütüphanelerle uygun şekilde kullandığı gerçeğinden kaynaklanmaktadır. Ek olarak, FreeBSD'de, daha optimize edilmiş sembolik okuma kütüphanesi ve bu nedenle burada biraz daha iyi olur.

Test sonuçları Andrew.

Andrew test sonuçları aşağıdaki tablodan görülebilir:

Papa 1 Oluşturma

Tesisat 2 Kopyalama

Tesisat 3 durumu

Tesisat 4 Baptesi

Tesisatçı 5 derleme

2203

7391

6319

17466

75314

BSD SYNC.

2330

7732

6317

17499

75681

EXT2 FS.

Son iki çukurun sonuçları, Linux'un Asynchonal veri değişimini kazanacağını göstermektedir. Dizinler ve dosya oluşturuyorsunuz, BSD sistemi, dizinlerin descportlarını ve kayıtlarını senkronize bir şekilde kaydeder. FreeBSD için asenkron subdepending'in henüz tam olarak uygulanmadığı bir çağrı var.

Linux ve BSD değerinin haraçta çok benzer. BSD yukarıda açıklandığında, Linux VFS sistemine dosya adları için bir puansiyel eklemek bu türde ayarlanır.

Beşinci ve Beşinci PPOD'lerde, Linux, esas olarak kombine buket kullanımının kullanımında hızlı bir şekilde dondurulacaktır. Tamponun hacmi, sabit hacmin kullanıldığı FreeBSD'den daha fazla bellek alabilir ve daha fazla bellek alır. EXT2FS ve XIA FS yanıtlarının sonuçları, EXT2FS'de karşılaşılan optimizasyonun gerçekten kullanıldığını göstermektedir: bu sistemlerin failinin yaklaşık% 5-10'udur.

Sonuç

Ext2 dosya sistemi, Linux kullanıcılarında en kısa sürede kullanılmaktadır. UNIX standart özellikleri ve ek işlevler sunar. Ayrıca, zehirdeki optimizasyon sayesinde mükemmel yanıt sonuçlarını gösterir.

EXT2FS sistemi yeni özellikler eklemek için işlevleri içerir. Bazı insanlar, gerçek dosya sistemi için PAS'ın kullanımına dikkat eder: bir erişim kontrolünün listesi, ilgili POSIX standa, uzak dosyaları geri yükleme ve dosyaları uzun ölçekli bir konutta sıkıştırın.

İlk olarak, EXT2FS sistemi Linux zehirine entegre edildi ve işletim sistemlerinin çalışmasına aktif olarak hareket ediyor. EXT2FS, şu anda otopslardan biri tarafından incelenen Masik çalışma sisteminin önemli bir bileşenidir.