Metadata fail dalam sistem Linux: penjelasan terperinci inode
Inode ialah struktur data penting dalam sistem Linux Ia digunakan untuk menyimpan metadata fail, seperti jenis fail, saiz, kebenaran, cap waktu, bilangan pautan, lokasi blok data, dll. Inode ialah komponen teras sistem fail, yang boleh digunakan untuk mencipta, memadam, mengubah suai, mencari dan operasi lain pada fail. Dalam artikel ini, kami akan memperkenalkan prinsip dan ciri inod, termasuk penomboran inod, peruntukan, pelepasan, carian, pengindeksan, dsb., dan memberi contoh penggunaan dan langkah berjaga-jaganya.
Nama fail -> inod -> blok peranti
1. Apakah itu inode?
Memahami inod bermula dengan penyimpanan fail.
Fail disimpan pada cakera keras Unit storan terkecil cakera keras dipanggil "Sektor". Setiap sektor menyimpan 512 bait (bersamaan dengan 0.5KB).
Apabila sistem pengendalian membaca cakera keras, ia tidak membacanya sektor demi sektor, yang terlalu tidak cekap sebaliknya, ia membaca pelbagai sektor secara berterusan pada satu masa, iaitu, ia membaca satu "blok" pada satu masa. "Blok" yang terdiri daripada pelbagai sektor ini ialah unit akses fail terkecil. Saiz "blok" yang paling biasa ialah 4KB, iaitu, lapan sektor berturut-turut membentuk satu blok.
Data fail disimpan dalam "blok", jadi jelas sekali, kita juga mesti mencari tempat untuk menyimpan maklumat meta fail, seperti pencipta fail, tarikh penciptaan fail, saiz fail, dll. Kawasan yang menyimpan metamaklumat fail ini dipanggil inode, dan terjemahan bahasa Cinanya ialah "nod indeks".
2. Kandungan inode
inode mengandungi maklumat meta fail, khususnya kandungan berikut:
* Bilangan bait dalam fail
* ID pengguna pemilik fail
* ID Kumpulan fail
* Fail baca, tulis dan laksanakan kebenaran
* Terdapat tiga cap masa untuk fail: ctime merujuk kepada masa inod kali terakhir ditukar, mtime merujuk kepada masa kandungan fail kali terakhir ditukar dan atime merujuk kepada masa kali terakhir fail dibuka.
* Bilangan pautan, iaitu, berapa banyak nama fail yang menunjuk ke inod ini
* Lokasi blok data fail
Anda boleh menggunakan arahan stat untuk melihat maklumat inod bagi fail tertentu:
stat example.txt
Ringkasnya, semua maklumat fail kecuali nama fail disimpan dalam inode. Mengenai mengapa tiada nama fail, akan ada penjelasan terperinci di bawah.
3. Saiz Inode
Inode juga menggunakan ruang cakera keras, jadi apabila cakera keras diformat, sistem pengendalian secara automatik membahagikan cakera keras kepada dua kawasan. Satu ialah kawasan data, yang menyimpan data fail; yang lain ialah kawasan inode (jadual inode), yang menyimpan maklumat yang terkandung dalam inode.
Saiz setiap nod inod secara amnya ialah 128 bait atau 256 bait. Jumlah bilangan nod inod diberikan semasa pemformatan, biasanya satu inod ditetapkan setiap 1KB atau setiap 2KB. Dengan mengandaikan bahawa dalam cakera keras 1GB, saiz setiap nod inod ialah 128 bait, dan satu inod ditetapkan untuk setiap 1KB, maka saiz jadual inod akan mencapai 128MB, menyumbang 12.8% daripada keseluruhan cakera keras.
Untuk melihat jumlah bilangan inod dan nombor terpakai bagi setiap partition cakera keras, anda boleh menggunakan arahan df.
df -i
Untuk melihat saiz setiap nod inod, anda boleh menggunakan arahan berikut:
sudo dumpe2fs -h /dev/hda |
Oleh kerana setiap fail mesti mempunyai inod, mungkin berlaku inod telah habis tetapi cakera keras tidak penuh. Pada masa ini, fail baharu tidak boleh dibuat pada cakera keras.
4. Nombor Inode
Setiap inod mempunyai nombor, dan sistem pengendalian menggunakan nombor inod untuk mengenal pasti fail yang berbeza.Perlu diulang di sini, sistem Unix/Linux tidak menggunakan nama fail secara dalaman, tetapi menggunakan nombor inod untuk mengenal pasti fail. Untuk sistem, nama fail hanyalah alias atau nama panggilan untuk nombor inod untuk pengenalan mudah. Di permukaan, pengguna membuka fail dengan nama fail. Sebenarnya, proses dalam sistem ini dibahagikan kepada tiga langkah: pertama, sistem mencari nombor inod yang sepadan dengan nama fail kedua, mendapatkan maklumat inode melalui nombor inod, akhirnya, berdasarkan maklumat inode; blok di mana data fail terletak dan membaca data.
Gunakan arahan ls -i untuk melihat nombor inod yang sepadan dengan nama fail:
ls -i example.txt
5. Fail direktori
Dalam sistem Unix/Linux, direktori juga merupakan sejenis fail. Membuka direktori sebenarnya bermakna membuka fail direktori.Struktur fail direktori adalah sangat mudah, ia adalah senarai siri entri direktori (dirent). Setiap entri direktori terdiri daripada dua bahagian: nama fail fail yang terkandung, dan nombor inod yang sepadan dengan nama fail.
Arahanls hanya menyenaraikan semua nama fail dalam fail direktori:
ls /etc
Arahanls -i menyenaraikan keseluruhan fail direktori, iaitu nama fail dan nombor inod:
ls -i /etc
Jika anda ingin melihat maklumat terperinci fail, anda mesti mengakses nod inod dan membaca maklumat mengikut nombor inod. Perintah ls -l menyenaraikan maklumat terperinci tentang fail.
ls -l /etc
6. Pautan keras
Secara amnya, nama fail dan nombor inod mempunyai hubungan "satu-dengan-satu surat-menyurat", dan setiap nombor inod sepadan dengan nama fail. Walau bagaimanapun, sistem Unix/Linux membenarkan berbilang nama fail untuk menunjuk ke nombor inod yang sama. Ini bermakna kandungan yang sama boleh diakses dengan nama fail yang berbeza, mengubah suai kandungan fail akan menjejaskan semua nama fail, namun pemadaman satu nama fail tidak akan menjejaskan akses kepada nama fail yang lain; Keadaan ini dipanggil "pautan keras".
Perintahln boleh mencipta pautan keras:
dalam fail sumber fail sasaran
Selepas menjalankan arahan di atas, nombor inod bagi fail sumber dan fail sasaran adalah sama dan menghala ke inod yang sama. Terdapat item dalam maklumat inode yang dipanggil "Bilangan Pautan", yang merekodkan jumlah bilangan nama fail yang menunjuk ke inod, dan akan dinaikkan sebanyak 1 pada masa ini. Sebaliknya, pemadaman nama fail akan mengurangkan "bilangan pautan" dalam nod inod sebanyak 1. Apabila nilai ini berkurangan kepada 0, menunjukkan bahawa tiada nama fail yang menunjuk ke inod ini, sistem akan mengitar semula nombor inod dan kawasan blok yang sepadan.
By the way, mari kita bincangkan tentang "bilangan pautan" fail direktori. Semasa membuat direktori, dua entri direktori dijana secara lalai: "." dan "..". Nombor inod yang pertama ialah nombor inod bagi direktori semasa, yang bersamaan dengan "pautan keras" direktori semasa; nombor inod yang terakhir ialah nombor inod direktori induk bagi direktori semasa, iaitu bersamaan dengan "pautan keras" direktori induk. Oleh itu, jumlah bilangan "pautan keras" mana-mana direktori sentiasa bersamaan dengan 2 ditambah jumlah bilangan subdirektorinya (termasuk direktori tersembunyi 2 di sini ialah "pautan keras" direktori induk dan "pautan keras". daripada direktori semasa.
7. Pautan lembut
Selain pautan keras, terdapat kes khas. Walaupun nombor inod fail A dan fail B berbeza, kandungan fail A ialah laluan fail B. Apabila membaca fail A, sistem secara automatik akan mengarahkan pelawat ke fail B. Oleh itu, tidak kira fail mana yang dibuka, fail B akhirnya dibaca. Pada masa ini, fail A dipanggil "pautan lembut" atau "pautan simbolik" bagi fail B.
Ini bermakna fail A bergantung pada fail B untuk kewujudan Jika fail B dipadamkan, ralat akan dilaporkan semasa membuka fail A: "Tiada fail atau direktori sedemikian". Ini adalah perbezaan terbesar antara pautan lembut dan pautan keras: fail A menunjuk kepada nama fail B, bukan nombor inod fail B. "Nombor pautan" inod fail B tidak akan berubah akibatnya.
Arahanln -s boleh mencipta pautan lembut.
ln -s fail sumber atau fail sasaran direktori atau direktori
8 Fungsi khas inode
Disebabkan pemisahan nombor inod dan nama fail, mekanisme ini membawa kepada beberapa fenomena unik kepada sistem Unix/Linux.
1 Kadangkala, nama fail mengandungi aksara khas dan tidak boleh dipadamkan seperti biasa. Pada masa ini, pemadaman terus nod inod boleh memainkan peranan untuk memadam fail.
2. Memindahkan fail atau menamakan semula fail hanya menukar nama fail dan tidak menjejaskan nombor inod.
3 Selepas membuka fail, sistem akan mengenal pasti fail berdasarkan nombor inod dan tidak lagi mempertimbangkan nama fail. Oleh itu, secara amnya, sistem tidak dapat mempelajari nama fail daripada nombor inod.
Point 3 menjadikan kemas kini perisian mudah Ia boleh dikemas kini tanpa menutup perisian dan tanpa memulakan semula. Kerana sistem mengenal pasti fail yang sedang berjalan melalui nombor inod, bukan nama fail. Apabila mengemas kini, versi baharu fail akan menjana inod baharu dengan nama fail yang sama, yang tidak akan menjejaskan fail yang sedang berjalan. Apabila perisian dijalankan pada masa akan datang, nama fail akan secara automatik menghala ke versi baharu fail, dan inod versi lama fail akan dikitar semula.
Sembilan soalan praktikal
Apabila mencipta fail dalam partition /data pelayan Linux dengan konfigurasi rendah (memori kecil dan cakera keras), sistem menggesa bahawa ruang cakera tidak mencukupi saya menggunakan arahan df -h untuk menyemak penggunaan cakera dan mendapati bahawa partition /data hanya menggunakan Ia telah mencapai 66%, dan masih terdapat 12G ruang yang tinggal. Kemudian, saya menggunakan df -i untuk menyemak nod indeks (inod) partition /data dan mendapati ia penuh (IUsed=100%), menyebabkan sistem tidak dapat mencipta direktori dan fail baharu.
Cari sebabnya:
Terdapat sejumlah besar fail cache bait kecil dalam direktori /data/cache, yang menduduki tidak banyak Blok, tetapi menduduki sejumlah besar inod.
Penyelesaian:
1. Padamkan beberapa fail dalam direktori /data/cache dan lepaskan beberapa inod dalam partition /data.
2. Gunakan sambungan lembut untuk menyambungkan direktori newcache dalam partition percuma /opt to /data/cache, dan gunakan inode partition /opt untuk mengurangkan masalah inode yang tidak mencukupi dalam partition /data:
ln -s /opt/newcache /data/cache
Melalui artikel ini, kami memahami prinsip dan ciri inode, yang boleh digunakan untuk mengurus dan mengendalikan fail. Kita harus memilih sistem fail yang sesuai berdasarkan keperluan sebenar dan mengikuti beberapa prinsip asas, seperti mengelakkan keletihan inode, kerap menyemak status inod, menggunakan pautan keras atau pautan lembut, dsb. Inode ialah salah satu konsep paling asas dalam sistem Linux Ia boleh mengabstrak dan merangkum fail, dan juga boleh meningkatkan prestasi dan kebolehpercayaan sistem fail. Saya harap artikel ini dapat membantu dan memberi inspirasi kepada anda.
Atas ialah kandungan terperinci Metadata fail dalam sistem Linux: penjelasan terperinci inode. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Menggunakan Python di Terminal Linux ...

Multithreading dalam bahasa dapat meningkatkan kecekapan program. Terdapat empat cara utama untuk melaksanakan multithreading dalam bahasa C: Buat proses bebas: Buat pelbagai proses berjalan secara bebas, setiap proses mempunyai ruang ingatan sendiri. Pseudo-Multithreading: Buat pelbagai aliran pelaksanaan dalam proses yang berkongsi ruang memori yang sama dan laksanakan secara bergantian. Perpustakaan multi-threaded: Gunakan perpustakaan berbilang threaded seperti PTHREADS untuk membuat dan mengurus benang, menyediakan fungsi operasi benang yang kaya. Coroutine: Pelaksanaan pelbagai threaded ringan yang membahagikan tugas menjadi subtask kecil dan melaksanakannya pada gilirannya.

Untuk membuka fail web.xml, anda boleh menggunakan kaedah berikut: Gunakan editor teks (seperti Notepad atau TextEdit) untuk mengedit arahan menggunakan persekitaran pembangunan bersepadu (seperti Eclipse atau NetBeans) (Windows: Notepad Web.xml; Mac/Linux: Open -A -A TextEdit Web.xml)

Mengenai masalah menghapuskan penterjemah python yang dilengkapi dengan sistem Linux, banyak pengagihan Linux akan memasang semula penterjemah python apabila dipasang, dan ia tidak menggunakan pengurus pakej ...

Linux paling baik digunakan sebagai pengurusan pelayan, sistem tertanam dan persekitaran desktop. 1) Dalam pengurusan pelayan, Linux digunakan untuk menjadi tuan rumah laman web, pangkalan data, dan aplikasi, menyediakan kestabilan dan kebolehpercayaan. 2) Dalam sistem tertanam, Linux digunakan secara meluas di rumah pintar dan sistem elektronik automotif kerana fleksibiliti dan kestabilannya. 3) Dalam persekitaran desktop, Linux menyediakan aplikasi yang kaya dan prestasi yang cekap.

Debianlinux terkenal dengan kestabilan dan keselamatannya dan digunakan secara meluas dalam persekitaran pelayan, pembangunan dan desktop. Walaupun kini terdapat kekurangan arahan rasmi mengenai keserasian langsung dengan Debian dan Hadoop, artikel ini akan membimbing anda tentang cara menggunakan Hadoop pada sistem Debian anda. Keperluan Sistem Debian: Sebelum memulakan konfigurasi Hadoop, sila pastikan sistem Debian anda memenuhi keperluan operasi minimum Hadoop, yang termasuk memasang Java Runtime Environment (JRE) dan pakej Hadoop. Langkah Penyebaran Hadoop: Muat turun dan Unzip Hadoop: Muat turun versi Hadoop yang anda perlukan dari laman web Apachehadoop rasmi dan selesaikannya

Adakah saya perlu memasang klien oracle semasa menyambung ke pangkalan data oracle menggunakan GO? Semasa membangun di GO, menyambung ke pangkalan data Oracle adalah keperluan biasa ...

"Debianstrings" bukan istilah standard, dan makna khususnya masih belum jelas. Artikel ini tidak dapat mengulas secara langsung mengenai keserasian penyemak imbasnya. Walau bagaimanapun, jika "debianstrings" merujuk kepada aplikasi web yang dijalankan pada sistem Debian, keserasian penyemak imbasnya bergantung kepada seni bina teknikal aplikasi itu sendiri. Sebilangan besar aplikasi web moden komited untuk keserasian penyemak imbas. Ini bergantung kepada standard web berikut dan menggunakan teknologi front-end yang serasi (seperti HTML, CSS, JavaScript) dan teknologi back-end (seperti PHP, Python, Node.js, dll.). Untuk memastikan bahawa aplikasi itu serasi dengan pelbagai pelayar, pemaju sering perlu menjalankan ujian silang dan menggunakan responsif
