軟連線、硬連結 和 i節點(inode)
一. inode
-
inode(索引節點):用來存放檔案及目錄的基本資訊,包含時間、檔名、使用者及群組等。
-
inode 是 UNIX 作業系統中的一種資料結構,其本質是結構體,它包含了與檔案系統中各個檔案相關的一些重要資訊。在 UNIX 中建立檔案系統時,同時將會建立大量的 inode 。通常,檔案系統磁碟空間中大約百分之一空間分配給了 inode 表。
-
Linux的檔案系統三個部分:
①超級塊(super block):記錄此檔案系統的整體資訊。包括inode/block的總量、使用量、剩餘量,以及檔案系統的格式等。
②inode:記錄檔案的屬性,一個檔案佔用一個inode,同時記錄此檔案資料所在的block號碼。
③資料區(block):實際的檔案內容。如果檔案小於block,只能獨佔這個block,空閒部分不能再被其他檔案使用。如果檔案太大時,會佔用多個block。 -
i節點(inode的表格中內容、inodetable):
①每個inode大小固定為128位元組,含有有關一個檔案的資訊。
②主要內容:檔案訪問模式(rwx)、檔案的所有者和組、檔案大小、ctime、atime、mtime、檔案特性標誌、檔案真正內容指向(磁碟地址表)。
③在i節點中最重要的一項是磁碟地址表。 -
ls -i命令可顯示出inode:
-
建立一個檔案的過程,這個過程需要4個步驟:
①檔案屬性的儲存:核心先在i節點表中找到一個空的節點(假設是47,表示的是i節點表中第9個位置的i節點),將檔案的屬性激勵進去。
②檔案內容的儲存:一個檔案的內容往往需要許多的儲存塊(假設是3個塊)才能容納,而這些儲存塊是不連續的。核心會從自由塊的列表中找出3個自由的儲存塊,分別是塊300,100,200(核心找塊的順序不一定是從小到大排的)。核心就會把資料一次複製到塊300,100,200中。
③將檔案儲存檔案內容的資訊記錄到i節點中:上面已經將檔案依次放到塊300,200,100中了,所以在i節點的磁碟分佈區中依次記錄這3個標號,代表檔案存放的地方以及組合順序。
④新增檔名到目錄中:這個檔名就是使用者取的名字(假設是name)。核心將(8,name)新增到目錄檔案中,這樣檔名和i節點就對應起來了,就可以通過檔名來知道檔案的屬性和訪問檔案的內容。
二. 軟連線和硬連結
-
Linux連結分兩種:①硬連結(Hard Link)②符號連結(Symbolic Link)。
-
預設情況下,ln命令產生硬連結。
1. 硬連結
- 硬連線指通過索引節點來進行連線。在Linux中,多個檔名指向同一索引節點是存在的。一般這種連線就是硬連線。
- 硬連線的作用是允許一個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要檔案,以防止“誤刪”的功能。其原因如上所述,因為對應該目錄的索引節點有一個以上的連線。
- 只刪除一個連線並不影響索引節點本身和其它的連線,只有當最後一個連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案真正刪除的條件是與之相關的所有硬連線檔案均被刪除。
- 硬連結的兩個限制:
①不允許給目錄建立硬連結。
②只有在同一檔案系統中的檔案之間才能建立連結。 即不同硬碟分割槽上的兩個檔案之間不能夠建立硬連結。這是因為硬連結是通過結點指向原始檔案的,而檔案的i-結點在不同的檔案系統中可能會不同。
- Linux中建立硬連線測試:
2.軟連線
- 軟連線檔案有類似於Windows的快捷方式。它實際上是一個特殊的檔案。
- 在軟連線中:檔案實際上是一個文字檔案,其中包含的有另一檔案的位置資訊。
- Linux中建立軟連線測試:
參考文章:
相關文章
- 硬連結和軟連結
- Linux軟連結和硬連結Linux
- linux硬連結和軟連結Linux
- Linux硬連結和軟連線有哪些知識點?Linux入門Linux
- Linux(8) —— 硬連結和軟連結Linux
- 軟連結和硬連結詳解
- Linux 軟連結和硬連結簡介Linux
- “軟連結”和“硬連結”的區別
- 硬連結和軟連結的區別
- 軟連結 vs. 硬連結
- 硬連結與軟連結詳解
- 在Linux中,什麼是硬連結和軟連結?Linux
- linux 軟硬連結Linux
- 簡談linux中軟連結和硬連結的區別Linux
- 軟連結與硬連結的區別
- 5分鐘讓你明白“軟連結”和“硬連結”的區別
- Linux常用基本命令(軟連結與硬連結 )Linux
- Linux中軟連結和硬連結之間有什麼區別和聯絡?Linux
- Linux---檔案、軟連結於硬連結檔案Linux
- scrapy軟連線失效和pip軟連線失效
- Redis筆記 — 連結串列和連結串列節點的API函式(三)Redis筆記API函式
- 『學了就忘』Linux基礎命令 — 22、Linux中的硬連結和軟連結Linux
- 特定深度節點連結串列
- 一文帶你瞭解Linux軟連結與硬連結!Linux
- ln命令:軟連結與硬連結的區別與應用
- Windows 中的硬連結、目錄聯接(軟連結)、符號連結、快捷方式Windows符號
- 使用Docker Context連線遠端節點DockerContext
- K個節點翻轉連結串列
- 雙向連結串列 尾節點插入
- 【連結串列問題】刪除單連結串列的中間節點
- 【LeetCode連結串列#9】圖解:兩兩交換連結串列節點LeetCode圖解
- [連結串列]leetcode1019-連結串列中的下一個更大節點LeetCode
- 以太坊公鏈節點連線節點超時問題排查
- 單連結串列-相鄰節點交還
- 長連線和短連線
- Socket連線和Http連線HTTP
- 【連結串列問題】打卡3:刪除單連結串列的中間節點
- 2024/11/27 【連結串列】LeetCode 24 兩兩交換連結串列中的節點 & LeetCode 19 刪除連結串列的倒數第N個節點LeetCode