Linux 符號鏈結與 inode

2021-07-13 18:09:16 字數 1314 閱讀 1166

stat:

ln -s 原始檔 目標檔案

當我們需要在不同的目錄,用到相同的檔案時,我們不需要在每乙個需要的目錄下都放乙個必須相同的檔案,我們只要在某個固定的目錄,放上該檔案,然後在其它的目錄下用 ln 命令鏈結(link)它就可以,不必重複的占用磁碟空間。例如:

ln -s /bin/less /usr/local/bin/less
-s 是代號(symbolic)的意思。

有兩點需要注意:

inode 是什麼?

理解inode,要從檔案儲存說起。

檔案儲存在硬碟上,硬碟的最小儲存單位叫做"扇區"(sector)。每個扇區儲存512位元組(相當於0.5kb)。

作業系統讀取硬碟的時候,不會乙個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取乙個"塊"(block)。這種由多個扇區組成的"塊",是檔案訪問的最小單位。"塊"的大小,最常見的是 4kb,即連續八個 sector組成乙個 block。

檔案資料都儲存在"塊"中,那麼很顯然,我們還必須找到乙個地方儲存檔案的元資訊(meta info),比如檔案的建立者、檔案的建立日期、檔案的大小等等。這種儲存檔案元資訊的區域就叫做 inode,中文譯名為"索引節點"。

檔案分為兩部分:

inode 的內容

inode包含檔案的元資訊,具體來說有以下內容:

可以用stat命令,檢視某個檔案的inode資訊:

stat example.txt
總之,除了檔名以外的所有檔案資訊,都存在inode之中。至於為什麼沒有檔名,下文會有詳細解釋。

inode 的大小

inode 也會消耗硬碟空間,所以硬碟格式化的時候,作業系統自動將硬碟分成兩個區域。

每個 inode 節點的大小,一般是 128位元組 或 256 位元組。inode 節點的總數,在格式化時就給定,一般是每 1kb 或每 2kb 就設定乙個 inode。假定在一塊1gb的硬碟中,每個inode節點的大小為128位元組,每1kb就設定乙個inode,那麼inode table的大小就會達到128mb,佔整塊硬碟的12.8%。

檢視每個硬碟分割槽的inode總數和已經使用的數量,可以使用 df 命令。

df -i
檢視每個inode節點的大小,可以用如下命令:

sudo dumpe2fs -h /dev/hda | grep "inode size"
由於每個檔案都必須有乙個inode,因此有可能發生inode已經用光,但是硬碟還未存滿的情況。這時,就無法在硬碟上建立新檔案。

Linux的inode 軟鏈結 硬鏈結

ln s myfile.txt mylink 建立符號鏈結,即軟鏈結 ln myfile.txt hardlink 建立硬鏈結 linux的檔案系統 硬碟 分為2部分 inode table 與 data area。inode table上有許多的inode,每個inode分別記錄乙個檔案的屬性與這...

Linux的硬鏈結與軟鏈結(符號鏈結)

linux的檔案鏈結方式分為硬鏈結與軟鏈結 也叫符號鏈結 兩種,在linux中鏈結也被視為檔案來看待,一樣可以被執行 編輯和訪問。對系統中的應用程式而言,對鏈結的操作就是對原始檔案的操作,所以鏈結不是副本。如果熟悉linux的檔案系統與目錄樹 相關部落格鏈結擴充套件檔案系統 檔案系統與目錄樹的關係 ...

Linux中實體鏈結與符號鏈結詳解

在 linux 底下的鏈結檔有兩種,一種是類似 windows 的快捷方式功能的檔案,可以讓你快速的鏈結到目標檔案 或目錄 這種是軟鏈結 另一種則是透過檔案系統的 inode 鏈結來產生新檔名,而不是產生新檔案!這種稱為硬鏈結 hard link 這兩種玩意兒是完全不一樣的東西呢!現在就分別來談談。...