概念:
我們知道檔案都有檔名與資料,這在 linux 上被分成兩個部分:使用者資料 (user data) 與元資料 (metadata)。使用者資料,即檔案資料塊 (data block),資料塊是記錄檔案真實內容的地方;而元資料則是檔案的附加屬性,如檔案大小、建立時間、所有者等資訊。在 linux 中,元資料中的 inode 號(inode 是檔案元資料的一部分但其並不包含檔名,inode 號即索引節點號)才是檔案的唯一標識而非檔名。檔名僅是為了方便人們的記憶和使用,系統或程式通過 inode 號尋找正確的檔案資料塊。
inode
inode是unix/linux作業系統中的一種資料結構,本質上是乙個結構體,裡面定義了一些變數,這些變數用來記錄與文件相關的資訊。在作業系統建立檔案系統的時候就會建立大量的inode。inode相當於是乙個索引節點,,用來存放檔案的基本資訊。
inode的儲存
inode也會消耗磁碟空間,所以硬碟在格式化的時候,作業系統會將硬碟自動分成兩個區域,乙個是資料區用來儲存檔案資料,另乙個是inode區域,存放inode所存放所有資訊。可見作業系統管理檔案是需要代價的。
每次建立乙個檔案,就會為這個檔案分配乙個inode。
inode耗盡
存在一種情況,就是資料區還有大量的空間,但是inode區域已經被占用滿。此時,檔案系統中就無法在建立更多的檔案了
假如inode被耗盡,解決方法是:
建立較小的inode區段
作業系統如何找到檔案
(1)通過檔名找到對應的inode編號
(2)通過inode獲取檔案資訊
(3)根據inode資訊找到檔案資料所儲存的位置
關於軟連線和硬連線的一些基本的概念
在unix/linux檔案系統中,儲存在硬碟上的檔案不管是什麼型別的都會給他分配乙個inode編號。一般情況下檔名與inode編號是一一對應的,但是在unix/linux中是允許乙個inode編號鏈結多個檔名,也就是同乙份資料對應著多個名字。這是「引用計數」的原理,在inode中又乙個links變數記錄這個inode鏈結的檔名個數。所以只有links的值為0的時候,系統才會**inode的空間以及他所對應的資料塊。
建立硬鏈結
硬鏈結可由命令 link 或 ln 建立。
建立軟鏈結
軟鏈結又稱為符號連線,他在執行另乙個檔案的特殊檔案,這種檔案的內容就是他所連線的檔名的路徑名。軟鏈結是為了克服硬鏈結的不足而提出來的,他是通過檔案路徑名找到它所連線的檔名。
軟連線的檔案有自己的inode,並在磁碟上有一塊小空間存放路徑名。軟連線能夠跨檔案系統,也能和目錄進行鏈結,軟連線也可以和乙個不存在的檔名進行連線,但是必須在這個不存在的檔案在建立以後才能開啟鏈結
軟鏈結與硬鏈結不同,若檔案使用者資料塊中存放的內容是另一檔案的路徑名的指向,則該檔案就是軟連線。軟鏈結就是乙個普通檔案,只是資料塊內容有點特殊。軟鏈結有著自己的 inode 號以及使用者資料塊。因此軟鏈結的建立與使用沒有類似硬鏈結的諸多限制:
抽象理解軟硬連線
首先說二者的共同點:如果使用者對鏈結進行開啟,修改等其實就是對目標檔案的操作。
(1)軟鏈結可以指向檔案和目錄;硬鏈結只能指向檔案;
(2)軟鏈結可以跨檔案系統;硬鏈結不可;
(3)在原始檔消失後,軟鏈結會失效,所佔空間大小不變;硬鏈結不會失效,它所佔的空間為變成原始檔的大小。基於這種特性,硬鏈結常用來備份。
(4)軟鏈結指向的原始檔的路徑;而硬鏈結指向的原始檔的記憶體位址。這也是為什麼原始檔被刪除了。硬鏈結仍能使用的原因。
linux中軟鏈結和硬鏈結
linux中存在兩種鏈結檔案,軟鏈結和硬鏈結。硬鏈結 使用方式 ln sourcefile destfile 原理 linux檔案系統中每個檔案所對應的實際硬碟位置資訊會儲存在檔案的inode中,目錄結構的實現即是通過inode的組織實現的,具體還涉及到檔案塊的分配等,以後有機會在寫文章回顧大學學的...
Linux中的硬鏈結和軟鏈結
1.linux鏈結概念 linux鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為符號鏈結 symbolic link 預設情況下,ln命令產生硬鏈結。硬連線 硬連線指通過索引節點來進行連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節...
linux中的硬鏈結和軟鏈結
硬鏈結 指向同乙個索引節點,進而指向同乙個物理檔案。只要有乙個硬鏈結存在,物理檔案就不會被清除。硬鏈結和原檔案是 平等 的,只刪除乙個不能使檔案真正被刪除。軟鏈結 指向乙個新的索引節點,該節點指向的空間存的是檔案的路徑,根據路徑找到物理檔案。如果軟鏈結建立時指定的那個目錄被 刪除 則無法訪問物理檔案...