Linux文件系統 軟鏈接 硬鏈接

要理解軟硬鏈接,就先要從ext文件系統的存儲原理說起

 

硬盤上最小的存儲單位是sector, 大小爲512bytes.

因爲數據往往都大於512bytes所以我們把多個sector連起來存儲數據, 這樣做的目的是減少磁盤I/O的負擔

這個多個連起來的sector叫做block。Block的大小是2的n次方倍512bytes

 

存儲空間分爲:數據區和元數據區

數據區:block存儲真實數據,一般大小爲1kb 2kb, 4kb

元數據區: inode存儲元數據,包括inode索引,名稱,大小,修改時間等,inode爲128bytes

 

ls –i可以查看文件對應的索引編號

stat 可以查看文件的inode信息

inode信息裏面的索引標號應該和擦看文件信息的索引編號相對應的,如下圖,a文件的索引編號都爲1052822

wKioL1WfbFLyotK9AABQuV7bUxw826.jpg

wKiom1WfaoLhMRJXAAC3HOvfgps136.jpg

這裏需要說明下,目錄和文件在block存儲的內容性質不一樣

文件存儲的是文件內容本身

目錄要存儲目錄下所有文件的inode index和文件名,它的目的是幫助查找文件或其他目錄


圖詳細描述了訪問文件的過程

wKiom1WfasaDbQSBAAFCAzolYgU223.jpg


理解上圖後我們來說說硬鏈接


我們考慮下如果/tmp目錄下還有個b文件,它的inode index和a一樣也是指向同一個inode

wKiom1WfZ8qQwqACAAB3QAbx7MA689.jpg

這是我們就是a,b是彼此的硬鏈接

查看方式是ls –l a 或ls–l b, 屬主前有個2,就是說有另外一個硬鏈接

wKioL1WfacLx5TG_AABohThHcNY392.jpg

命令:ln被鏈接文件鏈接文件例如ln a b


軟鏈接

wKioL1Wfaf3SDOxDAAChn7C1tog465.jpg


b的inode指向的內容是a文件的路徑,再通過這個路徑查找inode

查看方式是

wKiom1WfaCuCQgAnAABw4ES0WIA753.jpg



這裏的b是指向a的,而大小就是1個字節大小.也就是a這個相對路徑

命令:ln–s被鏈接文件鏈接文件例如ln –s a b

軟硬鏈接的區別

軟鏈接:

·        可以跨分區鏈接-因爲指向的只是路徑

·        可以鏈接文件或目錄

·        刪除不影響源文件-和windows的快捷鍵類似

硬鏈接

·        不可以跨分區鏈接-應爲inode只能被本區的文件指向

·        不可以鏈接目錄-目錄下的目錄可能指向父目錄,產生死循環

·        刪除使inode的鏈接數降低爲0在整個文件刪除



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章