cari
RumahTutorial sistemLINUXrekod inode di bawah Linux

rekod inode di bawah Linux

Feb 11, 2024 am 09:51 AM
linuxtutorial linuxsistem linuxarahan linuxskrip shellembeddedlinuxBermula dengan linuxpembelajaran linux

Fail disimpan pada cakera keras.

Unit storan terkecil pada cakera keras dipanggil sektor.

Setiap sektor menyimpan 512 bait (bersamaan dengan 0.5kb).

Apabila sistem pengendalian membaca cakera keras, ia tidak membaca sektor demi sektor, yang tidak cekap.

Sebaliknya, ia membaca berbilang sektor secara berturut-turut, iaitu satu blok pada satu masa.

"Blok" ini terdiri daripada pelbagai sektor dan merupakan unit akses fail terkecil.

Saiz blok, yang paling biasa ialah 4kb, iaitu deretan lapan sektor membentuk satu blok.

rekod inode di bawah Linux

Data fail disimpan dalam "blok", jadi jelas sekali kita mesti mencari tempat untuk menyimpan meta-maklumat 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".

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.
rekod inode di bawah Linux

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. Andaikan bahawa dalam cakera keras 1GB, saiz setiap nod inod ialah 128 bait, dan satu inod ditetapkan setiap 1KB Kemudian 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 | grep "Inode size"

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.

node inod

rekod inode di bawah Linux

Setiap inod mempunyai nombor, dan sistem pengendalian menggunakan nombor inod untuk mengenal pasti fail yang berbeza.

Perlu diulang di sini bahawa 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. Malah, proses dalam sistem dibahagikan kepada tiga langkah: pertama, sistem mencari nombor inode 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

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.

Arahan

ls hanya menyenaraikan semua nama fail dalam fail direktori:

ls /etc
Arahan

ls -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

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".

Perintah

ln boleh mencipta pautan keras:

ln 源文件 目标文件

运 行上面这条命令以后,源文件与目标文件的inode号码相同,都指向同一个inode。inode信息中有一项叫做”链接数”,记录指向该inode的文 件名总数,这时就会增加1。反过来,删除一个文件名,就会使得inode节点中的”链接数”减1。当这个值减到0,表明没有文件名指向这个inode,系 统就会回收这个inode号码,以及其所对应block区域。

这里顺便说一下目录文件的”链接数”。创建目录时, 默认会生成两个目录项:”.”和”..”。前者的inode号码就是当前目录的inode号码,等同于当前目录的”硬链接”;后者的inode号码就是当 前目录的父目录的inode号码,等同于父目录的”硬链接”。所以,任何一个目录的”硬链接”总数,总是等于2加上它的子目录总数(含隐藏目录),这里的 2是父目录对其的“硬链接”和当前目录下的”.硬链接“。

rekod inode di bawah Linux

软链接

除了硬链接以外,还有 一种特殊情况。文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打 开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的”软链接”(soft link)或者”符号链接(symbolic link)。

这 意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:”No such file or directory”。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode”链接数”不会因此 发生变化。

ln -s命令可以创建软链接。

ln -s 源文文件或目录 目标文件或目录

inode的特殊作用

由于inode号码与文件名分离,这种机制导致了一些Unix/Linux系统特有的现象。

\1. 有时,文件名包含特殊字符,无法正常删除。这时,直接删除inode节点,就能起到删除文件的作用。

\2. 移动文件或重命名文件,只是改变文件名,不影响inode号码。

\3. 打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。因此,通常来说,系统无法从inode号码得知文件名。

第3点使得软件更新变得简单,可以在不关闭软件的情况下进行更新,不需要重启。因为系统通过inode号码,识别运行中的文件,不通过文件名。更新的时 候,新版文件以同样的文件名,生成一个新的inode,不会影响到运行中的文件。等到下一次运行这个软件的时候,文件名就自动指向新版文件,旧版文件的 inode则被回收。

实际问题

在一台配置较低的Linux服务器(内存、硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h命令查看了一下磁盘使用情况,发现/data分区只使用了66%,还有12G的剩余空间,按理说不会出现这种问题。 后来用df -i查看了一下/data分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件。

查找原因:

/data/cache目录中存在数量非常多的小字节缓存文件,占用的Block不多,但是占用了大量的inode。

解决方案:

1、删除/data/cache目录中的部分文件,释放出/data分区的一部分inode。

2、用软连接将空闲分区/opt中的newcache目录连接到/data/cache,使用/opt分区的inode来缓解/data分区inode不足的问题:

ln -s /opt/newcache /data/cache

Atas ialah kandungan terperinci rekod inode di bawah Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Artikel ini dikembalikan pada:良许Linux教程网. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Apakah perbezaan bagaimana pemacu peranti Linux dan Windows?Apakah perbezaan bagaimana pemacu peranti Linux dan Windows?Apr 25, 2025 am 12:13 AM

Perbezaan antara Linux dan Windows dalam pengendalian pemacu peranti terutamanya ditunjukkan dalam fleksibiliti pengurusan pemandu dan persekitaran pembangunan. 1. Linux mengamalkan reka bentuk modular, dan pemandu boleh dimuatkan dan dipasang secara dinamik. Pemaju perlu mempunyai pemahaman yang mendalam tentang mekanisme kernel. 2. Windows bergantung pada ekosistem Microsoft, dan pemandu perlu dibangunkan melalui WDK dan ditandatangani dan disahkan. Perkembangan ini agak rumit tetapi memastikan kestabilan dan keselamatan sistem.

Bandingkan dan sebaliknya model keselamatan Linux dan Windows.Bandingkan dan sebaliknya model keselamatan Linux dan Windows.Apr 24, 2025 am 12:03 AM

Model keselamatan Linux dan Windows masing -masing mempunyai kelebihan mereka sendiri. Linux menyediakan fleksibiliti dan kebolehpercayaan, membolehkan keselamatan melalui kebenaran pengguna, keizinan sistem fail, dan selinux/apparmor. Windows memberi tumpuan kepada keramahan pengguna dan bergantung kepada WindowsDefender, UAC, Firewall dan Bitlocker untuk memastikan keselamatan.

Bagaimanakah keserasian perkakasan berbeza antara Linux dan Windows?Bagaimanakah keserasian perkakasan berbeza antara Linux dan Windows?Apr 23, 2025 am 12:15 AM

Linux dan Windows berbeza dalam keserasian perkakasan: Windows mempunyai sokongan pemacu yang luas, dan Linux bergantung kepada komuniti dan vendor. Untuk menyelesaikan masalah keserasian Linux, anda boleh menyusun pemandu secara manual, seperti pengklonan RTL8188EU Repositori pemandu, menyusun dan memasang; Pengguna Windows perlu menguruskan pemandu untuk mengoptimumkan prestasi.

Apakah perbezaan sokongan virtualisasi antara Linux dan Windows?Apakah perbezaan sokongan virtualisasi antara Linux dan Windows?Apr 22, 2025 pm 06:09 PM

Perbezaan utama antara Linux dan Windows dalam sokongan virtualisasi adalah: 1) Linux menyediakan KVM dan XEN, dengan prestasi dan fleksibiliti yang luar biasa, sesuai untuk persekitaran penyesuaian yang tinggi; 2) Windows menyokong virtualisasi melalui Hyper-V, dengan antara muka yang mesra, dan disepadukan dengan ekosistem Microsoft, sesuai untuk perusahaan yang bergantung pada perisian Microsoft.

Apakah tugas utama pentadbir sistem Linux?Apakah tugas utama pentadbir sistem Linux?Apr 19, 2025 am 12:23 AM

Tugas utama pentadbir sistem Linux termasuk pemantauan sistem dan penalaan prestasi, pengurusan pengguna, pengurusan pakej perisian, pengurusan keselamatan dan sandaran, penyelesaian masalah dan resolusi, pengoptimuman prestasi dan amalan terbaik. 1. Gunakan alat atas, HTOP dan lain -lain untuk memantau prestasi sistem dan menyesuaikannya. 2. Menguruskan akaun pengguna dan keizinan melalui arahan USERADD dan arahan lain. 3. Gunakan APT dan YUM untuk menguruskan pakej perisian untuk memastikan kemas kini sistem dan keselamatan. 4. Konfigurasi firewall, memantau log, dan lakukan sandaran data untuk memastikan keselamatan sistem. 5. menyelesaikan masalah dan menyelesaikan melalui analisis log dan penggunaan alat. 6. Mengoptimumkan parameter kernel dan konfigurasi aplikasi, dan ikuti amalan terbaik untuk meningkatkan prestasi sistem dan kestabilan.

Adakah sukar untuk belajar Linux?Adakah sukar untuk belajar Linux?Apr 18, 2025 am 12:23 AM

Pembelajaran Linux tidak sukar. 1.Linux adalah sistem operasi sumber terbuka berdasarkan UNIX dan digunakan secara meluas dalam pelayan, sistem tertanam dan komputer peribadi. 2. Memahami sistem fail dan pengurusan kebenaran adalah kunci. Sistem fail adalah hierarki, dan keizinan termasuk membaca, menulis dan melaksanakan. 3. Sistem pengurusan pakej seperti APT dan DNF menjadikan pengurusan perisian mudah. 4. Pengurusan proses dilaksanakan melalui PS dan arahan teratas. 5. Mula belajar dari arahan asas seperti MKDIR, CD, Touch dan Nano, dan kemudian cuba penggunaan lanjutan seperti skrip shell dan pemprosesan teks. 6. Kesilapan umum seperti masalah kebenaran dapat diselesaikan melalui sudo dan chmod. 7. Cadangan Pengoptimuman Prestasi termasuk menggunakan HTOP untuk memantau sumber, membersihkan fail yang tidak perlu, dan menggunakan SY

Apakah gaji Pentadbir Linux?Apakah gaji Pentadbir Linux?Apr 17, 2025 am 12:24 AM

Purata gaji tahunan pentadbir Linux ialah $ 75,000 hingga $ 95,000 di Amerika Syarikat dan € 40,000 hingga € 60,000 di Eropah. Untuk meningkatkan gaji, anda boleh: 1. Secara berterusan mempelajari teknologi baru, seperti pengkomputeran awan dan teknologi kontena; 2. Mengumpulkan pengalaman projek dan menubuhkan portfolio; 3. Mewujudkan rangkaian profesional dan mengembangkan rangkaian anda.

Apakah tujuan utama Linux?Apakah tujuan utama Linux?Apr 16, 2025 am 12:19 AM

Penggunaan utama Linux termasuk: 1. Sistem Operasi Pelayan, 2. Sistem Terbenam, 3. Linux cemerlang dalam bidang ini, menyediakan kestabilan, keselamatan dan alat pembangunan yang cekap.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod