Linux系統下軟硬鏈接底層工作原理的理解

軟硬鏈接底層工作原理

文件系統的分為元數據區和數據區?

元數據區用來保存文件的相關屬性信息,如: inode編號,時間戳,所屬關系(ownership),鏈接數,數據區指針,而文件數據則存儲在數據區中,文件訪問時首先查看文件元數據信息中的inode編號進而根據數據區指針找到數據區文件的實際存放位置?

而對于目錄來講,數據區保存的則是文件夾下文件名與inode編號之間的映射關系,通過查找文件名對應的inode號進而可以找到該inode編號對應文件的數據?

如圖所示:

2

對于目錄A下的兩個文件file1,file2,file1對應的inode編號為1000,file2對應的inode編號為1203,目錄A的節點編號為1010
查看文件inode編號 # ls -il filename
查看文件夾inode編號 # ls -di dirname

若要訪問目錄A下的文件file1, 操作系統首先要根據文件夾的元數據信息查看用戶是否有訪問權限,若具有訪問權限則根據目錄A的data指針查找到數據區中file1對應的inode編號,再通過該inode編號的data指針查找到指針所指向的文件數據

硬鏈接:
對于硬鏈接而言,是在數據區中增加一條不同文件名對應相同inode編號的一條對應關系(file1 <–> 1000, file3 <—> 1000),所以刪除一條對應關系數據并不會影響文件的訪問,由于在linux操作系統中不同的分區的文件可能具有相同的inode編號,系統通過相同編號就會找到不同的文件數據,所以硬鏈接的創建是不允許跨分區的,刪除硬鏈接就是刪除數據區保存的文件名與inode編號的對應關系,所以只要存在一條任何對應關系就可以訪問文件,硬鏈接的inode編號與文件名和原文件的inode編號與文件名在數據區存儲時處于同等地位,所以在存在硬鏈接的情況下,刪除原文件也并不會影響文件的訪問。由于數據區中同一個inode編號與對應多個文件名存在映射關系,那么存在的映射關系的數量就是文件夾的鏈接數,由于數據區只能存儲文件名與inode編號的對應關系,所以不能為目錄創建硬鏈接


軟連接:
對于軟連接而言,軟鏈接數據區指針指向是原文件的元數據,所以刪除原文件會導致鏈接不可用,而如果刪除軟鏈接只是刪除一條指向原文件的元數據指針,刪除之后并不會影響元數據的訪問,也就是因為軟連接是創建的指針,所以軟連接的創建是允許跨分區的,同時,由于軟連接的創建并不會在數據區創建文件名與inode的鏈接關系,所以,軟連接并不會增加文件的鏈接數

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/93943

(3)
滌生滌生
上一篇 2018-03-31
下一篇 2018-03-31

相關推薦

欧美性久久久久