自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于 Linux 中的索引節(jié)點 Inode,你需要知道的一切

系統(tǒng)
Inode 不是您直接與之交互的東西,但它們扮演著重要的角色。

你是否抱怨過你的 Linux 系統(tǒng)沒有剩余空間,而你顯然還有足夠多的空間?

發(fā)生在我的親身經(jīng)歷,我還有很多 GB,但我的 Linux 系統(tǒng)卻抱怨沒有空間了。這是我開始了解索引節(jié)點 inode 的時候。

inode 簡介

Inode 將系統(tǒng)上每個文件的元數(shù)據(jù)存儲在通常位于分區(qū)開頭附近的表狀結(jié)構(gòu)中。它們存儲除文件名和數(shù)據(jù)之外的所有信息。

給定目錄中的每個文件都是一個帶有文件名和 inode 編號的條目。通過引用索引節(jié)點號從索引節(jié)點表中檢索有關(guān)該文件的所有其他信息。

Inode 編號在分區(qū)級別是唯一的。每個分區(qū)都有自己的 inode 表。

如果 inode 用完了,即使給定分區(qū)上還有剩余空間,也無法創(chuàng)建新文件。

Linux 中的 inode 是什么?

inode(Index Node)譯成中文就是索引節(jié)點。雖然歷史上對此不太確定,但這是他們提出的最合乎邏輯、最好的猜測。它曾經(jīng)寫成I-node,但連字符隨著時間的推移丟失了。

如linfo.org上所述:

inode是一種數(shù)據(jù)結(jié)構(gòu)…… …… 它存儲文件的所有信息,除了文件名和實際數(shù)據(jù)。

Inode 存儲有關(guān)它引用的文件的元數(shù)據(jù)。此元數(shù)據(jù)包含有關(guān)所述文件的所有信息。

  • 文件大小
  • 訪問權(quán)限
  • 創(chuàng)建時間
  • 修改時間
  • 數(shù)據(jù)在磁盤的位置
  • 其他信息

每個使用的 inode 引用一個文件。每個文件都有一個 inode。目錄、字符文件和塊設(shè)備都是文件。它們每個都有一個 inode。

對于目錄中的每個文件,都有一個條目,其中包含文件名和與之關(guān)聯(lián)的索引節(jié)點號。

Inode 在分區(qū)級別是唯一的。如果兩個文件位于不同的分區(qū)上,則它們可以具有相同的 inode 編號。Inodes 信息存儲在每個分區(qū)的戰(zhàn)略部分的類似表的結(jié)構(gòu)中,通常在開頭附近找到。

如何在 Linux 中查看 inode?

您可以使用以下命令輕松列出 inode 編號:

ls -i

下面的圖片顯示了我的根目錄以及相應(yīng)的 inode 編號。

每個文件系統(tǒng)擁有的 inode 數(shù)量是在創(chuàng)建文件系統(tǒng)時決定的。對于大多數(shù)用戶來說,默認的 inode 數(shù)量已經(jīng)足夠了。

創(chuàng)建文件系統(tǒng)時的默認設(shè)置是每 2K 字節(jié)空間創(chuàng)建 1 個索引節(jié)點。這為大多數(shù)系統(tǒng)提供了大量 inode。在用完 inode 之前,您很可能會用完空間。如果需要,您可以在創(chuàng)建文件系統(tǒng)時指定要創(chuàng)建多少 inode。

如果您用完 inode,您將無法創(chuàng)建新文件。您的系統(tǒng)也將無法這樣做。大多數(shù)用戶不會遇到這種情況,但這是可能的。

例如,郵件服務(wù)器會存儲大量非常小的文件。許多這些文件將小于 2K 字節(jié)。它也有望不斷增長。因此,郵件服務(wù)器有可能在空間用完之前用完 inode。

一些文件系統(tǒng),如Btrfs、JFS、 XFS 已經(jīng)實現(xiàn)了動態(tài)索引節(jié)點。如果需要,他們可以增加可用的 inode 數(shù)量。

索引節(jié)點是如何工作的?

創(chuàng)建新文件時,會為其分配一個 inode 編號和文件名。inode 編號是該文件系統(tǒng)中的唯一編號。名稱和 inode 編號都作為條目存儲在目錄中。

當我運行l(wèi)s 命令“ ls -li / ”時,文件名和 inode 編號是存儲在目錄/中的內(nèi)容。使用 inode 編號從 inode 表中檢索剩余信息用戶、組、文件權(quán)限、大小等。

您可以在 Linux 中使用 df 命令列出每個文件系統(tǒng)的 inode 信息:

┌──(linuxmi?linuxmi)-[~]
└─$ df -hi

在 Linux 中列出 inode 信息

索引節(jié)點和軟/硬鏈接

軟鏈接或符號鏈接是 Linux 的一個眾所周知的功能。但是,當您在 Linux 中創(chuàng)建符號鏈接時,Inode 會發(fā)生什么情況?在下一張圖片中,我有一個名為“ dir1 ”的目錄,一個名為“ file1 ”的文件,在“ dir1 ”中我有一個名為“ slink1 ”的軟鏈接,它指向“ ../file1 ”

┌──(linuxmi?linuxmi)-[~/linuxmi]
└─$ tree
.
├── dir1
└── slink1 -> ../file1
└── file1

1 directory, 2 files

現(xiàn)在我可以遞歸列出并顯示 inode 信息。

┌──(linuxmi?linuxmi)-[~/linuxmi]
└─$ ls -liR
.:
總計 4
13247036 drwxr-xr-x 2 linuxmi linuxmi 4096 2 3 20:19 dir1
13119533 -rw-r--r-- 2 linuxmi linuxmi 0 1 8 14:28 file1

./dir1:
總計 0
13247041 lrwxrwxrwx 1 linuxmi linuxmi 8 2 3 20:19 slink1 -> ../file1

正如預期的那樣,dir1 和 file1 具有不同的 inode 編號。而且軟鏈接也是如此。創(chuàng)建軟鏈接時,您創(chuàng)建了一個新文件。在其元數(shù)據(jù)中,它指向目標。對于您創(chuàng)建的每個軟鏈接,您都使用一個 inode。

使用ln 命令在 dir1 中創(chuàng)建硬鏈接后:

┌──(linuxmi?linuxmi)-[~/linuxmi/dir1]
└─$ ln ../file1 hlink1

inode 編號列表為我提供了以下信息:

┌──(linuxmi?linuxmi)-[~/linuxmi]
└─$ ls -liR
.:
總計 4
13247036 drwxr-xr-x 2 linuxmi linuxmi 4096 2 3 20:23 dir1
13119533 -rw-r--r-- 2 linuxmi linuxmi 0 1 8 14:28 file1

./dir1:
總計 0
13119533 -rw-r--r-- 2 linuxmi linuxmi 0 1 8 14:28 hlink1
13247041 lrwxrwxrwx 1 linuxmi linuxmi 8 2 3 20:19 slink1 -> ../file1

您可以看到“ file1”和“ hlink1 ”具有相同的 inode 編號。說實話,由于索引節(jié)點,硬鏈接成為可能。硬鏈接不會創(chuàng)建新文件。它只是為相同的數(shù)據(jù)提供了一個新名稱。

在舊版本的 Linux 中,可以硬鏈接目錄。甚至可以讓給定的目錄成為它自己的父目錄。由于 inode 實現(xiàn),這成為可能。這現(xiàn)在受到限制,以防止用戶創(chuàng)建非?;靵y的目錄結(jié)構(gòu)。

inode 的其他含義

inode 的工作方式也是不可能在不同文件系統(tǒng)之間創(chuàng)建硬鏈接的原因。允許這樣的任務(wù)將打開 inode 編號沖突的可能性。另一方面,可以跨不同的文件系統(tǒng)創(chuàng)建軟鏈接。

因為硬鏈接和原文件有相同的inode號,你可以刪除原文件,數(shù)據(jù)仍然可以通過硬鏈接訪問。在這種情況下,您所做的只是刪除指向該 inode 編號的名稱之一。鏈接到此 inode 編號的數(shù)據(jù)將保持可用,直到刪除與其關(guān)聯(lián)的所有名稱。

索引節(jié)點也是 Linux 系統(tǒng)無需重啟即可更新的重要原因。這是因為一個進程可以使用庫文件,而另一個進程可以用新版本替換該文件。因此,為新文件創(chuàng)建一個新的 inode。已經(jīng)運行的進程將繼續(xù)使用舊文件,而每次對其進行新調(diào)用都會導致使用新版本。

inode 附帶的另一個有趣的特性是能夠?qū)?shù)據(jù)存儲在 inode 本身中。這稱為內(nèi)聯(lián)。這種存儲方法具有節(jié)省空間的優(yōu)點,因為不需要數(shù)據(jù)塊。它還通過避免更多的磁盤訪問來獲取數(shù)據(jù)來增加查找時間。

某些文件系統(tǒng)(如 ext4)有一個名為 inline_data 的選項。啟用后,它允許操作系統(tǒng)以這種方式存儲數(shù)據(jù)。由于大小限制,內(nèi)聯(lián)僅適用于非常小的文件。ext2 及以后的版本經(jīng)常會這樣存儲軟鏈接信息。也就是說,如果大小不超過 60 字節(jié)。

結(jié)論

Inode 不是您直接與之交互的東西,但它們扮演著重要的角色。如果一個分區(qū)要包含許多非常小的文件,比如郵件服務(wù)器,了解它們是什么以及它們?nèi)绾喂ぷ骺梢詾槟苊夂芏鄦栴}。

責任編輯:趙寧寧 來源: Linux迷
相關(guān)推薦

2022-08-27 12:15:51

Linux Mint操作系統(tǒng)

2023-02-10 08:44:05

KafkaLinkedIn模式

2017-04-29 09:00:14

Linux程序進程

2022-09-01 15:26:45

物聯(lián)網(wǎng)人工智能傳感器

2018-06-15 23:00:56

2022-07-15 14:58:26

數(shù)據(jù)分析人工智能IT

2022-04-24 09:00:00

滲透測試安全數(shù)字時代

2022-12-30 11:24:21

2019-05-22 15:10:43

2020-12-22 11:04:05

人工智能AI機器學習

2022-11-28 00:07:47

2017-11-14 13:48:26

數(shù)據(jù)結(jié)構(gòu)學習

2022-12-29 11:42:27

2016-02-29 09:37:44

5G

2020-11-17 10:38:40

云計算工具技術(shù)

2023-10-12 07:06:32

2023-10-12 09:42:44

2023-02-27 15:47:31

2021-12-29 14:24:12

物聯(lián)網(wǎng)IoT5G

2023-09-11 07:36:35

點贊
收藏

51CTO技術(shù)棧公眾號