it-swarm-tr.com

Superblock, Inode, Dentry ve Dosya Nedir?

Makale Linux dosya sisteminin anatomisi M. Tim Jones tarafından, Linux'un tüm dosya sistemlerini ortak bir nesne kümesi perspektifinden görüntülediğini ve bu nesnelerin süper blok, inode, dişçilik ve dosya. Paragrafın geri kalanı yukarıdakileri açıklasa da, bu açıklama konusunda o kadar rahat değildim.

Birisi bana bu terimleri açıklayabilir mi?

132
Sen

Her şeyden önce ve bunun sorunuzun şartlarından biri olmadığını anlıyorum, meta verileri anlamalısınız. Özlü ve Wikipedia'dan çalınan meta veriler, veriler hakkındaki verilerdir. Yani meta veriler bir veri parçası hakkında bilgi içerir. Örneğin, bir arabam varsa, o zaman araba hakkında bir takım bilgilerim var, ancak arabanın bir parçası değil. Kayıt numarası, marka, model, üretim yılı, sigorta bilgileri vb. Gibi bilgiler. Tüm bu bilgiler topluca meta veri olarak adlandırılır. Linux ve UNIX dosya sistemlerinde meta veriler, gördüğünüz gibi birden çok kuruluş düzeyinde bulunur.

superblock temel olarak dosya sistemi meta verileridir ve dosya sistemi türünü, boyutunu, durumunu ve diğer meta veri yapıları (meta verilerin meta verileri) hakkındaki bilgileri tanımlar. Süperblok dosya sistemi için çok önemlidir ve bu nedenle her dosya sistemi için birden fazla yedek kopyada saklanır. Süperblok, dosya sistemi için çok "üst düzey" bir meta veri yapısıdır. Örneğin, bir bölümün süper bloğu/var, bozulursa, söz konusu dosya sistemi (/ var) işletim sistemi tarafından bağlanamaz. Genellikle bu olayda, otomatik olarak süper bloğun alternatif, yedek bir kopyasını seçecek ve dosya sistemini kurtarmaya çalışacak fsck çalıştırmanız gerekir. Yedek kopyalar, dosya sistemi boyunca yayılmış blok gruplarında saklanır, ilki bölümün başlangıcından itibaren 1 blok ofsetinde saklanır. Manuel kurtarma gerektiğinde bu önemlidir. Manuel kurtarma girişimi durumunda yararlı olan dumpe2fs /dev/foo | grep -i superblock Komutuyla ext2/ext3/ext4 süper blok yedeklemeleri hakkındaki bilgileri görüntüleyebilirsiniz. Dumpe2fs komutunun Backup superblock at 163840, Group descriptors at 163841-163841 Satırını çıkardığını varsayalım. Bu süper blok yedeği kullanmaya çalışmak için bu bilgileri ve dosya sistemi yapısı hakkında ek bilgileri kullanabiliriz: /sbin/fsck.ext3 -b 163840 -B 1024 /dev/foo. Bu örnek için 1024 baytlık bir blok boyutu aldığımı lütfen unutmayın.

Bir dosya sisteminde veya üzerinde bir inode vardır ve bir dosya hakkındaki meta verileri temsil eder. Anlaşılır olması açısından, bir Linux veya UNIX sistemindeki tüm nesneler dosyalardır; gerçek dosyalar, dizinler, cihazlar vb. Bir inode'da yer alan meta veriler arasında, insanların düşündüğü gibi bir dosya adı bulunmadığını, bunun daha sonra önemli olacağını lütfen unutmayın. Bir inode temel olarak sahiplik (kullanıcı, grup), erişim modu (okuma, yazma, yürütme izinleri) ve dosya türü hakkında bilgi içerir.

A dentry, inode numaralarını dosya adlarıyla ilişkilendirerek inode ve dosyaları bir arada tutan yapıştırıcıdır. Ayrıca, en iyi kullanılan dosyaları daha hızlı erişim için el altında tutan dizin önbelleklemede diş hekimleri de rol oynar. Dosya sistemi geçişi, dizinler ve dosyaları arasında bir ilişki sürdürdüğü için diş macununun başka bir yönüdür.

A file, insanların Word'le sunulduğunda tipik olarak düşündüklerine ek olarak, gerçekten sadece mantıksal olarak ilişkili rastgele verilerin bir bloğu. Bunları takip etmek için yapılan tüm çalışmalar (yukarıda) göz önüne alındığında nispeten çok sıkıcıdır.

Birkaç cümlenin bu kavramların hiçbirinin tam bir açıklamasını sağlamadığının tamamen farkındayım, bu yüzden gerektiğinde ve gerektiğinde ek ayrıntı istemekten çekinmeyin.

144
Tok

Dosya

Bir dosya sadece belirli bir sırada düzenlenmiş bir demet bayt anlamına gelir. Bir dosyanın içeriğini normal insanlar olarak adlandırır. Linux bir dosyayı açtığında, dosyanın nerede depolandığı ve hangi işlemlerin kullandığı ile ilgili verileri tutan bir dosya nesnesi de oluşturur. Dosya kapatıldığında dosya nesnesi (ancak dosya verisinin kendisi değil) atılır.

Düğüm

Bir inode ("dizin düğümü" kısaltması), Linux'un depoladığı bir dosyayla ilgili bir dizi özelliktir. Her dosya için bir inode vardır (bazı dosya sistemlerinde, Linux kendi inodelarını oluşturmak zorundadır, çünkü bilgi dosya sistemine yayılmıştır). Inode, dosyanın sahibi olan, dosyanın ne kadar büyük olduğu ve dosyayı kimin açmasına izin verildiği gibi bilgileri depolar. Her inode ayrıca dosya sistemi bölümüne özgü bir sayı içerir; bu inode tarafından tanımlanan dosya için bir seri numarası gibidir.

Dentry

Bir dizgi ("dizin girişi" kısaltması) Linux çekirdeğinin dizinlerdeki dosyaların hiyerarşisini takip etmek için kullandığı şeydir. Her diş macunu bir inode numarasını bir dosya adına ve bir üst dizine eşler.

Superblock

Süperblok bir dosya sistemindeki benzersiz bir veri yapısıdır (ancak bozulmaya karşı koruma sağlamak için birden fazla kopya vardır). Süperblok, dosya sistemi hakkında üst veri dizini ve kullanılan dosya sistemi türü gibi meta veriler tutar.

50
pingswept

süper blok , dizin düğümü (veya inode ), dizin girişi ( veya dentry ) ve son olarak, dosya nesnesi sanal dosya sistemi (VFS) veya sanal dosya sistemi anahtarı . Bir VFS'nin amacı, istemci uygulamalarının farklı türde beton dosya sistemlerine tek tip bir şekilde erişmesine izin vermektir.

VFS'deki ana nesnelerin ilişkileri

enter image description here


Inode , Unix/Linux dosya sistemindeki bir veri yapısıdır. Bir inode, normal bir dosya, dizin veya başka bir dosya sistemi nesnesi hakkındaki meta verileri depolar. Inode, dosyalar ve veriler arasında bir arayüz görevi görür. Bir inode, bir dosyaya veya bir dizine veya başka bir nesneye sembolik bir bağlantıya işaret edebilir. Benzersiz bir numara (i-numarası), dosyanın ad, tarih, boyut ve okuma/yazma izinleri gibi öznitelikleri ve dosyanın konumuna bir işaretçi içerir. DOS/Windows dünyasında FAT tablosunun karşılığıdır.

Programlar, hizmetler, metinler, resimler vb. Hepsi dosyalardır . Sisteme göre giriş ve çıkış aygıtları ve genellikle tüm aygıtlar dosyaları olarak kabul edilir.

süper blok , bir dosya sistemi hakkında üst düzey meta veriler için kapsayıcıdır. Süperblok, diskte (aslında yedeklilik için diskte birden çok yer) ve ayrıca bellekte bulunan bir yapıdır. Dosya sisteminin yönetim parametrelerini (örneğin, toplam blok sayısı, serbest bloklar, kök dizin düğümü) tanımladığı için diskteki dosya sistemi ile başa çıkmak için temel sağlar.

Dentry, dosyalar ve Inodes arasındaki arayüzdür. Ayrıca, en iyi kullanılan dosyaları daha hızlı erişim için el altında tutan dizin önbelleklemede diş hekimleri de rol oynar.

Kaynak

14
Premraj

Basit olarak, dişçilik ve inode aynı şeydir, dosya veya dizinin soyutlanmasıdır. Dentry ve inode arasındaki farklar, dentry'nin dizine özgü işlemleri kolaylaştırmak için kullanılmasıdır, inode sadece dosya veya dizin hakkında bir meta veri topluluğudur. Süper blok dosya sisteminin soyutlamasıdır.

struct file, Linux çekirdeğinde diğer adlar (örn. struct address_space) Olarak adlandırılır ve gerçek bir "dosyanın" (örn./Etc/passwd) bir soyutlaması değildir. Açık bir "dosya" veya dizin anlamına gelir. struct file Çekirdekte sys_open Tarafından oluşturulur, böylece bir işlem aynı dosya için çok sayıda struct file S içerebilir.

Neden dişçiliğe ihtiyacımız var? Yol adından (örn./Etc/passwd) inode'a çevirmeyi hızlandırmak için kullanılır. Linux çekirdeği isimlerini değil, "dosya" ya da dizini değiştirmek için inode kullanır.

5
firo

Bu terimlerin Linux'a özgü olmadığını, dosya sistemine özel olduğunu unutmayın. Mevcut Unix ve Unix benzeri sistemler tarafından kullanılan çoğu dosya sistemi, süper blok ve inode deyimlerini tanımlayan orijinal Unix dosya sisteminden türetilir veya esinlenir. Linux ayrıca, süper yaygın ve/veya inode kavramının bulunmadığı, en yaygın olanı FAT olan birkaç dosya sistemini de bağlayabilir. Bir diğeri ZFS süper blokları değil überblokları kullanıyor.

4
jlliagre