ext4 檔案系統會把分割槽主要分為兩大部分:小部分用於儲存檔案的 inode (i 節點)資訊;剩餘的大部分用於儲存 block 資訊。
inode 的預設大小為 128 byte,用來記錄檔案的許可權(r、w、x)、檔案的所有者和屬組、檔案的大小、檔案的狀態改變時間(ctime)、檔案的最近一次讀取時間(atime)、檔案的最近一次修改時間(mtime)、檔案的資料真正儲存的 block 編號。每個檔案需要占用乙個 inode。在inode 中是不記錄檔名的,那是因為檔名記錄在檔案所在目錄的 block 中。
block 的大小可以是 1kb、2kb、4kb,預設為 4kb。block 用於實際的資料儲存,如果乙個 block 放不下資料,則可以占用多個 block。例如,有乙個 10kb 的檔案需要儲存,則會占用 3 個 block,雖然最後乙個 block 不能佔滿,但也不能再放入其他檔案的資料。這 3 個 block 有可能是連續的,也有可能是分散的。
每個檔案都獨自占用乙個 inode,檔案內容由 inode 的記錄來指向;
如果想要讀取檔案內容,就必須借助目錄中記錄的檔名找到該檔案的inode,才能成功找到檔案內容所在的 block 塊;
硬鏈結相當於乙個指標,指向檔案索引節點,系統並不為它重新分配inode。可以用:ln命令來建立硬鏈結。
當建立了乙個檔案的硬鏈結時,硬鏈結會使用和檔案相同的inode號,此時原來的檔案的inode連線數由最初的1變為了2,實際上硬鏈結和檔案使用了相同的inode,只不過是inode連線數增加了,刪除檔案不會影響硬鏈結,刪除硬鏈結也不會影響檔案,硬鏈結的inode數會從2變為1,如下所示:
只有所有指向檔案內容的指標都未被引用時,也即鏈結數減為0時,核心才會把檔案內容從磁碟上刪除。另外,硬鏈結,只能應用於檔案,而不能應用於目錄,而且不能跨檔案系統(即分割槽)。
儘管硬鏈結節省空間,也是linux系統整合檔案系統的傳統方式,但是存在一下不足之處:(1)不可以在不同檔案系統的檔案間建立鏈結(2)不能對目錄建立硬鏈結,以防進入死迴圈。
符號鏈結是對乙個檔案的間接指標。硬鏈結直接指向檔案的inode節點。
軟鏈結克服了硬鏈結的不足,沒有任何檔案系統的限制,任何使用者可以建立指向目錄的符號鏈結。它具有更大的靈活性,可以跨越不同機器、不同網路對檔案進行鏈結。建立軟鏈結,只要在ln後面加上選項 –s。
在建立檔案的軟鏈結時,軟鏈結會使用乙個新的inode,所以軟鏈結的inode號和檔案的inode號不同,軟鏈結的inode裡存放著指向檔案的路徑,刪除檔案,軟鏈結也無法使用了,因為檔案的路徑不存在了;當再次建立這個檔案時(檔名與之前的相同),軟鏈結又會重新指向這個檔案(inode號與之前的不同了),如下所示:
硬鏈結原檔案&鏈結檔案公用乙個inode號,說明他們是同乙個檔案,而軟鏈結原檔案&鏈結檔案擁有不同的inode號,表明他們是兩個不同的檔案;在檔案屬性上軟鏈結明確寫出了是鏈結檔案,而硬鏈結沒有寫出來,因為在本質上硬鏈結檔案和原檔案是完全平等關係,就像檔案被複製了乙份一樣;鏈結數目是不一樣的,軟鏈結的鏈結數目不會增加,硬鏈結會相應的加一;檔案大小是不一樣的,硬鏈結檔案顯示的大小是跟原檔案是一樣的,而這裡軟鏈結顯示的大小與原檔案就不同了。
Linux 軟連線與硬連線
linux 軟連線與硬連線 2008 10 31 15 44 13 標籤 linux 職場休閒 軟連線與硬連線 linux 軟連線與硬連線 對於乙個檔案來說,有唯一的索引接點與之對應,而對於乙個索引接點號,卻可以有多個檔名與之對應。因此,在磁碟上的同乙個檔案可以通過不同的路徑去訪問該檔案。注意在li...
Linux軟連線與硬連線
linux鏈結概念 linux鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為符號鏈結 symbolic link 預設情況下,ln命令產生硬鏈結,ln s命令產生軟連線。硬連線 硬連線指通過索引節點來進行連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配...
linux中的軟連線與硬連線
1.原理上 硬鏈結 hard link a是b的硬鏈結 a和b都是檔名 則a的目錄項中的inode節點號與b的目錄項中的inode節點號相同,即乙個inode節點對應兩個不同的檔名,兩個檔名指向同乙個檔案,a和b對檔案系統來說是完全平等的。如果刪除了其中乙個,對另外乙個沒有影響。每增加乙個檔名,in...