日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

文件節點表和原理

之前在安裝操作系統時,將一塊硬盤分成了四個分區,每個分區有自己的目錄結構,而分區下每個文件的數據分為元數據和數據本身兩部分組成。文件在磁盤中存儲的結構,而文件的元數據包含文件的時間(Timestamps)、大小(Size)、所屬組(Group info)以及所主(Owner info)和權限(Mode)以外,還包含文件的索引節點(index node)以及指針,而指針按照不同的文件大小分為直接指針、間接指針和雙重間接指針。

高級Linux運維工程師養成記-文件節點表和原理

 

而直接指針有12個,直接塊指針指向數據塊,每個數據塊是4k大小,因此如果文件的大小不超過48k,使用直接指針指向數據塊即可。如果文件大小超過了48k,并且小于4M,那么就需要使用間接指針,間接指針指向的是指針塊,指針塊本身不存放數據,大小也是4K,存放的是指針,每個指針占用4個字節的空間,合計就是1024個指針,最多指向1024*4k即4M大小的文件。如果文件大小超過4M,不超過4G,那么就需要使用雙重間接塊指針,雙重間接塊指針指向的是一個文件塊指針。依此類推

在刪除文件時刪除的是文件的節點表,那對應節點表指向的數據塊會被標記為空閑,但是文件內容不會被立即刪除。因此刪除的數據可能是被還原的。而文件能不能刪除不是由文件決定,而是由文件所在的文件夾決定的。

高級Linux運維工程師養成記-文件節點表和原理

inode


數據存在磁盤上時,每個文件都有唯一的索引節點編號,創建文件之后,在查看文件詳細信息時,可以使用ll -i選項查看,節點編號由系統自動分配。

[root@centos8 data]# touch file{1..10}.log
[root@centos8 data]# ll -i
total 0
140 -rw-r--r--. 1 root root 0 Aug  9 12:40 file10.log
131 -rw-r--r--. 1 root root 0 Aug  9 12:40 file1.log
132 -rw-r--r--. 1 root root 0 Aug  9 12:40 file2.log
133 -rw-r--r--. 1 root root 0 Aug  9 12:40 file3.log
134 -rw-r--r--. 1 root root 0 Aug  9 12:40 file4.log
135 -rw-r--r--. 1 root root 0 Aug  9 12:40 file5.log
136 -rw-r--r--. 1 root root 0 Aug  9 12:40 file6.log
137 -rw-r--r--. 1 root root 0 Aug  9 12:40 file7.log
138 -rw-r--r--. 1 root root 0 Aug  9 12:40 file8.log
139 -rw-r--r--. 1 root root 0 Aug  9 12:40 file9.log

每個分區的節點編號也是有限制的,例如/boot分區的可用節點是130762

[root@centos8 data]# df -i /boot
Filesystem     Inodes IUsed  IFree IUse% Mounted on
/dev/sda1      131072   310 130762    1% /boot

每創建一個文件,可用的文件編號就會自動減少

[root@centos8 boot]# touch test.txt
[root@centos8 boot]# df -i /boot
Filesystem     Inodes IUsed  IFree IUse% Mounted on
/dev/sda1      131072   311 130761    1% /boot

如果磁盤的節點編號耗盡,那么即使磁盤空間沒有滿,也無法再使用。

[root@centos8 testdir]# echo file{1..130761}|xargs touch
touch: cannot touch 'file130761': No space left on device

本質原因是文件節點編號耗盡

[root@centos8 testdir]# df -i /boot
Filesystem     Inodes  IUsed IFree IUse% Mounted on
/dev/sda1      131072 131072     0  100% /boot

刪除文件后便可以再次在/boot目錄下創建文件

[root@centos8 testdir]# rm -rf ../testdir/
[root@centos8 testdir]# df -i /boot
Filesystem     Inodes IUsed  IFree IUse% Mounted on
/dev/sda1      131072   312 130760    1% /boot

cp命令和inode

在執行cp命令時,系統會分配一個空閑的inode,并在inode表匯總生成新條目,在目錄中創建一個目錄項,將名稱與inode編號關聯,并拷貝數據生成新的文件。

rm和inode

在執行rm命令時,鏈接數遞減,從而釋放的inode號可以被重復使用,把數據塊放在空閑列表中,刪除目錄項,數據實際上不會立馬被刪除,但是當另一個文件使用數據塊時會被覆蓋。

在創建文件時,默認的鏈接數為1

數字1表示硬連接數為1

[root@centos8 data]# ll -i /data
total 0
140 -rw-r--r--. 1 root root 0 Aug  9 12:40 file10.log
131 -rw-r--r--. 1 root root 0 Aug  9 12:40 file1.log
132 -rw-r--r--. 1 root root 0 Aug  9 12:40 file2.log
133 -rw-r--r--. 1 root root 0 Aug  9 12:40 file3.log
134 -rw-r--r--. 1 root root 0 Aug  9 12:40 file4.log
135 -rw-r--r--. 1 root root 0 Aug  9 12:40 file5.log
136 -rw-r--r--. 1 root root 0 Aug  9 12:40 file6.log
137 -rw-r--r--. 1 root root 0 Aug  9 12:40 file7.log
138 -rw-r--r--. 1 root root 0 Aug  9 12:40 file8.log
139 -rw-r--r--. 1 root root 0 Aug  9 12:40 file9.log

當在同一個分區下創建一個硬連接后鏈接數會增加

file1.log和file1.log.link的鏈接數都是2,硬鏈接的本質是同一個文件有多個文件名

[root@centos8 data]# ln file1.log  file1.log.link
[root@centos8 data]# ll !*
ll file1.log file1.log.link
-rw-r--r--. 2 root root 0 Aug  9 12:40 file1.log
-rw-r--r--. 2 root root 0 Aug  9 12:40 file1.log.link

當刪除file1.log時,硬連接文件不會受影響,但是鏈接數會遞減

[root@centos8 data]# rm file1.log
[root@centos8 data]# ll|grep file1.log.link 
-rw-r--r--. 1 root root 0 Aug  9 12:40 file1.log.link

文件夾不能創建硬連接

分享到:
標簽:Linux
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定