inode、軟硬鏈接區分、ln命令
一、inode
inode記錄的是文件的屬性及文件實際放在那塊數據塊中的。inode包含以下數據:
1. 該文件的可被訪問的權限(read/write/excute)
2. 該文件的屬主、屬組(owner、group)
3. 該文件的大小
4. 該文件創建或者狀態改變的時間(Ctime)
5. 最近一次讀取時間(atime)
6. 最近一次修改時間(mtime)
7. 定義文件特性的標志(flag),如SetUID等
8. 該文件內容真實的指向(pointer)
實際在我們進行分區操作的時候就講inode的大小固定,固定為128bytes,并且每個文件都會僅僅占用一個inode,因此一個文件能存放多少文件和inode有關。
注意:一個分區不能存放文件,不僅僅是該分區容量滿啦,還有可能是該分區的inode個數滿啦。使用df -i 可以查看具體inode的個數
[root@local usr]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda2 2580480 65924 2514556 3% / tmpfs 125517 1 125516 1% /dev/shm /dev/sda1 51200 38 51162 1% /boot
二、inode對文件內容進行指向
每個inode里面存放了,一個文件的真實內容所在的數據庫位置,系統讀取一個文件內容時,先會讀取inode里面的權限和用戶是否吻合,然后在開始讀取所指向的數據塊的內容。情況如下圖 每一個下一級目錄的inode表放在上一級的目錄的數據塊中。
因此,我們可以看到Linux每次尋找一個文件或者目錄需要經過很多inode表和數據塊。這樣很費時間,所以系統會幫我把我們訪問過的路徑緩存在內存中,這樣就可以節約時間了。
三、inode結構
借用鳥哥畫的inode結構示意圖為例,這是以ext家族為對象畫的。ext文件系統家族是Linux最常用,歷史比較久遠的文件系統。
我們知道一個數據塊的大小只能為1k、2k、4k??墒俏覀兇娣诺奈募热葸h遠大于一個數據塊的容量。因此,我們就需要多個數據塊,但是存放在多個數據塊后,系統如何能夠調用相應的數據塊。因此出現了前面的inode,它出現的目的就是幫系統快速的識別和分類相應的數據塊。
同時,我們也知道inode表放在數據塊中,一個數據塊不僅要存放inode表還要存放其他數據,因此光一個數據塊的inode肯定不夠,所以誕生了間接inode,雙間接,三間接。
以ext家族1kb數據塊為例,一個inode能12個直接指向數據塊:12×1k=12k,也是就記錄12條信息。
間接指向:256×1k=256k,也就是256條記錄。
雙間接256×256×1k=65536K=64M ,也就是65536條記錄。
三間接指向為:256×65536K=16777216K=8G,也就是16777216條記錄。 總額就是將三者相加就是16G。
四、軟硬鏈接的區別
1.硬鏈接:
就是在目錄下新建一條文件名鏈接到某inode號碼的關聯記錄。 可以看出1或者2都是找到real然后去讀實際內容,因此任意刪掉一條路徑沒有任何影響,這也就是硬鏈接。
注意:1.硬鏈接不能跨文件系
2.不能鏈接到目錄。
2、軟鏈接:
軟鏈接其實就是windows操作系統里面的快捷方式,原文件不存在,這個快捷方式所指向的路徑就不在了。如下圖所示 可以看到1指向2再指向real再指向實際內容。1就是2的軟鏈接,2以后的路要是斷了,1也訪問不到實際內容
五、ln
ln這個命令就是用來實現軟、硬鏈接的命令。
用法:1.創建一個硬鏈接
[root@local tmp]# ln test.txt test1.txt [root@local tmp]# ll total 4 drwxr-xr-x. 3 root root 4096 Jul 29 12:34 test1 -rw-rw-r--. 2 gentoo gentoo 0 Jul 29 09:28 test1.txt -rw-rw-r--. 2 gentoo gentoo 0 Jul 29 09:28 test.txt
可以看到硬鏈接所有屬性都是和原來的文件一樣。
2.創建一個軟鏈接
[root@local tmp]# ln -s test.txt test2.txt [root@local tmp]# ll total 4 drwxr-xr-x. 3 root root 4096 Jul 29 12:34 test1 -rw-rw-r--. 2 gentoo gentoo 0 Jul 29 09:28 test1.txt lrwxrwxrwx. 1 root root 8 Jul 30 05:44 test2.txt -> test.txt -rw-rw-r--. 2 gentoo gentoo 0 Jul 29 09:28 test.txt
可以發現所有的信息都改變了。
原創文章,作者:fighter,如若轉載,請注明出處:http://www.www58058.com/26994