Pertama dan terpenting, dan saya menyadari bahwa itu bukan salah satu syarat dari pertanyaan Anda, Anda harus memahami metadata . Secara ringkas, dan dicuri dari Wikipedia, metadata adalah data tentang data. Artinya metadata berisi informasi tentang sepotong data. Sebagai contoh, jika saya memiliki mobil maka saya memiliki seperangkat informasi tentang mobil tetapi yang bukan merupakan bagian dari mobil itu sendiri. Informasi seperti nomor registrasi, merek, model, tahun pembuatan, informasi asuransi, dan sebagainya. Semua informasi itu secara kolektif disebut sebagai metadata. Di Linux dan sistem file UNIX, metadata ada di berbagai tingkat organisasi seperti yang akan Anda lihat.
The superblok dasarnya sistem file metadata dan mendefinisikan jenis file sistem, ukuran, status, dan informasi tentang struktur metadata lainnya (metadata dari metadata). Superblock sangat penting untuk sistem file dan oleh karena itu disimpan dalam beberapa salinan berlebih untuk setiap sistem file. Superblock adalah struktur metadata yang sangat "tinggi" untuk sistem file. Misalnya, jika superblok partisi, / var, menjadi rusak maka sistem file yang dimaksud (/ var) tidak dapat dipasang oleh sistem operasi. Umumnya dalam acara ini, Anda harus berlarifsck
yang secara otomatis akan memilih salinan cadangan alternatif superblok dan berupaya memulihkan sistem file. Salinan cadangan sendiri disimpan dalam kelompok blok yang disebarkan melalui sistem file dengan yang pertama disimpan pada offset 1 blok dari awal partisi. Ini penting dalam hal pemulihan manual diperlukan. Anda dapat melihat informasi tentang cadangan superblok dengan perintah dumpe2fs /dev/foo | grep -i superblock
yang berguna jika terjadi upaya pemulihan manual. Mari kita anggap bahwa perintah dumpe2fs menampilkan baris Backup superblock at 163840, Group descriptors at 163841-163841
. Kami dapat menggunakan informasi ini, dan pengetahuan tambahan tentang struktur sistem file, untuk mencoba menggunakan cadangan superblok ini: /sbin/fsck.ext3 -b 163840 -B 1024 /dev/foo
. Harap perhatikan bahwa saya telah mengasumsikan ukuran blok 1024 byte untuk contoh ini.
Sebuah inode ada di, atau pada, sistem file dan mewakili metadata tentang file. Untuk lebih jelasnya, semua objek dalam sistem Linux atau UNIX adalah file; file aktual, direktori, perangkat, dan sebagainya. Harap perhatikan bahwa, di antara metadata yang terkandung dalam inode, tidak ada nama file seperti yang dipikirkan manusia, ini akan menjadi penting nanti. Inode pada dasarnya berisi informasi tentang kepemilikan (pengguna, grup), mode akses (baca, tulis, jalankan izin), dan jenis file.
Sebuah dentry adalah lem yang memegang inode dan file bersama-sama oleh berkaitan nomor inode untuk mengajukan nama. Gigi tiruan juga berperan dalam caching direktori yang, idealnya, menyimpan file yang paling sering digunakan untuk akses yang lebih cepat. Travers sistem file adalah aspek lain dari dentry karena mempertahankan hubungan antara direktori dan file-file mereka.
Sebuah berkas , selain menjadi apa yang manusia biasanya pikirkan ketika disajikan dengan kata, benar-benar hanya sebuah blok data sewenang-wenang terkait secara logis. Relatif sangat membosankan mengingat semua pekerjaan yang dilakukan (di atas) untuk melacak mereka.
Saya sepenuhnya menyadari bahwa beberapa kalimat tidak memberikan penjelasan lengkap tentang konsep-konsep ini jadi jangan ragu untuk meminta rincian tambahan kapan dan di mana diperlukan.
Mengajukan
File hanya berarti banyak byte yang disusun dalam urutan tertentu. Itu yang orang biasa sebut sebagai isi file. Ketika Linux membuka file, itu juga membuat objek file, yang menyimpan data tentang di mana file disimpan dan proses apa yang menggunakannya. Objek file (tetapi bukan data file itu sendiri) dibuang ketika file ditutup.
Inode
Inode (kependekan dari "node indeks") adalah banyak atribut tentang file yang disimpan oleh Linux. Ada satu inode untuk setiap file (walaupun dengan beberapa filesystem, Linux harus membuat inode sendiri karena informasi tersebar di sekitar filesystem). Inode menyimpan informasi seperti siapa yang memiliki file tersebut, seberapa besar file tersebut, dan siapa yang diizinkan untuk membuka file tersebut. Setiap inode juga berisi nomor unik untuk partisi sistem file; itu seperti nomor seri untuk file yang dijelaskan oleh inode itu.
Dentry
Dentry (kependekan dari "entry direktori") adalah apa yang digunakan kernel Linux untuk melacak hierarki file dalam direktori. Setiap dentry memetakan nomor inode ke nama file dan direktori induk.
Superblock
Superblock adalah struktur data unik dalam sistem file (meskipun ada banyak salinan untuk melindungi dari korupsi). Superblock menyimpan metadata tentang sistem file, seperti inode mana yang merupakan direktori tingkat atas dan jenis sistem file yang digunakan.
sumber
superblock , simpul indeks (atau inode ), entri direktori (atau dentry ), dan akhirnya, objek file adalah bagian dari sistem file virtual (VFS) atau switch sistem file virtual . Tujuan dari VFS adalah untuk memungkinkan aplikasi klien untuk mengakses berbagai jenis sistem file beton dengan cara yang seragam.
Hubungan benda-benda utama di VFS
Sebuah inode adalah struktur data pada sistem file Unix / Linux. Inode menyimpan data meta tentang file biasa, direktori, atau objek sistem file lainnya. Inode bertindak sebagai antarmuka antara file dan data. Inode dapat merujuk ke file atau direktori atau tautan simbolik ke objek lain. Ini berisi nomor unik (nomor-i), atribut file, termasuk nama, tanggal, ukuran dan izin baca / tulis, dan penunjuk ke lokasi file. Ini adalah pasangan ke tabel FAT di dunia DOS / Windows.
Program, layanan, teks, gambar, dan sebagainya, semuanya adalah file . Perangkat input dan output, dan umumnya semua perangkat, dianggap sebagai file , menurut sistem.
The superblok adalah wadah untuk metadata tingkat tinggi tentang sistem file. Superblock adalah struktur yang ada pada disk (sebenarnya, beberapa tempat pada disk untuk redundansi) dan juga dalam memori. Ini memberikan dasar untuk berurusan dengan sistem file on-disk, karena ia mendefinisikan parameter pengelolaan sistem file (misalnya, jumlah total blok, blok bebas, simpul indeks root).
Dentry adalah antarmuka antara file dan Inode. Gigi tiruan juga berperan dalam caching direktori yang, idealnya, menyimpan file yang paling sering digunakan untuk akses yang lebih cepat.
Sumber
sumber
Dalam kesederhanaan, dentry dan inode adalah hal yang sama, sebuah abstraksi dari file atau direktori. Perbedaan antara dentry dan inode adalah bahwa dentry digunakan untuk memfasilitasi operasi direktori-spesifik, inode hanyalah kumpulan metadata tentang file atau direktori. Superblock adalah abstraksi dari sistem file.
struct file
, di kernel linux, disalahartikan sebagai banyak yang lain (misalstruct address_space
) dan bukan abstraksi dari "file" nyata (mis. / etc / passwd). Itu singkatan dari "file" atau direktori yang terbuka.struct file
dibuat olehsys_open
dalam kernel, sehingga suatu proses dapat memiliki banyakstruct file
s untuk file yang sama.Mengapa kita membutuhkan gigi? Ini digunakan untuk mempercepat penerjemahan dari nama path (mis. / Etc / passwd) ke inode. Kernel Linux menggunakan inode untuk memanipulasi "file" atau direktori, bukan nama mereka.
sumber
Perhatikan bahwa istilah ini tidak spesifik untuk Linux tetapi khusus untuk sistem file. Sebagian besar filesystem yang digunakan oleh sistem Unix dan Unix like saat ini diturunkan atau terinspirasi oleh filesystem Unix asli yang mendefinisikan idiom superblock dan inode. Linux juga dapat me-mount beberapa filesystem yang tidak ada konsep superblock dan / atau inode, yang paling umum adalah FAT. Satu lagi, ZFS, tidak menggunakan superblok tetapi überblock.
sumber