Linux系統中的Inode節點表

索引節點是指在許多類Unix文件系統中的一種數據結構。每個索引節點保存了文件系統中的一個文件系統對象的元信息數據,但不包括數據內容或者文件名。

Inode

? ? ? ? ?首先需要明白的是,在Unix操作系統中的任何資源都被當作文件來管理。如目錄、光驅、終端設備等等,都被當作是一種文件。從這方面來說,Unix操作系統中的所有的目錄、硬件設備跟普通文件一樣,具有共同的屬性。而這些屬性的話,就是保存在inode塊中。

? ? ? ? Inode塊中保存了一個文件系統中的全部Inode節點。也就是說,當系統創建了一個文件(或者添加了一個新設備)時,系統就會從這個塊中給 這個文件分配一個Inode結點。在這個結點中存儲了這個文件的大部分屬性,如創建、修改時間等等。但是需要注意的是,有兩個屬性不包含在這個inode 結點中,分別為文件名與結點號。這主要是因為inode節點按順序排列,所以系統內核就可以采用簡單的算法,就可以得出inode節點號。

索引節點

  • inode(index node)表中包含文件系統所有文件列表
  • 一個節點 (索引節點)是在一個表項,包含有關文件的信息(元數據 ),包括:

? ? ? ? ? ? ? ? ? ? ? ? ? ?文件類型,權限,UID,GID
鏈接數(指向這個文件名路徑名稱個數)
該文件的大小和不同的時間戳
指向磁盤上文件的數據塊指針
有關文件的其他數據

文件分為兩部分:

  • 元數據:大小、權限、所有者atime、ctime、mtime……
  • 數據本身:文件的內容
  • 存放的位置不是集中存放的,文件的索引信息和數據本身是分開存放的。索引信息(元數據)和數據本身是分開存放的

圖片1

inode表結構

圖片2

節點表

有很多元數據的信息:Mode、Owner info、Size……

直接指針:直接指向數據的位置。(指向的位置就是數據塊)

一個數據塊的大?。?K = 4096字節

? ? ? ? ?有12個直接指針,能表示的空間總大小為:12個 * 每個4K = 48K

如果一個指針放不下數據的內容,就是用兩個指針指向數據的位置,用來標識文件的位置

只要數據低于12*4K以內,都可以用直接指針找到(低于48K,用直接指針就可以找到);如果超過48k,就使用間接指針

間接指針:【一級指針】

間接指針直接指向的不是數據塊,是一個指針塊,不是存數據的地方,是一個指針塊,通過指針塊,指向數據塊;指針塊也是4k大小,里面記錄了數據塊的路徑,每個數據塊占用的指針塊的空間是4個字節(也就是說數據塊在什么位置要消耗4個字節倆描述)

指針塊:4k 4096個字節,可以指向1024個數據塊

? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?表示的空間總大小為:

間接指針1 ?* ?指針塊4K大小指向的1024個數據塊?(每個數據塊的位置用4個字? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? 節表示) * ?每個數據塊的大小4K = 4M

二級指針:【間接指針的間接指針】

?二級指針 —-> ?指向間接指針(2),間接指針在指向另外一個指針表(3),通過另外一個指針表(3)指向數據的位置。

每個指針塊同樣是4k大小,指向的三級指針塊同樣占用4個字節表示

總大小為:

三級指針1個*二級指針快1個表示1024個三級指針 * 3級指針1024個,指向 1024個數據塊? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? 1*1024*1024*4K=4G

 

指針大小計算

1.前12個直接指針,直接指向內存存儲的數據區域1.前12個直接指針,直接指向內存存儲的數據區域 如Books大小為4096,則前12個直解指針可以保存48KB的文件。

2.一級指針可存儲文件大小計算 保存每個指針,估計占4個字節,則以及指針指向的Block可保存4096/4個指針可以指向1024個 Block塊,一級指針可存儲文件數量大小為1024個指針指向的數據塊*每個數據塊4096K=4M

3.二級指針可存儲文件大小計算 同樣按照數據塊(Black)大小為4096,則二級指針可保存的數據塊指針數量為(4096/4)*(4096/4)= 1024 * 1024,則二級指針可保存的文件數量的大小為(1024*1024)*4096K=4GB

4.三級指針可存儲文文件大小計算 以一級、二級指針計算方法類推,三級指針可存儲的文件數據大小為(1024*1024*1024)*4096K=4TB

無標題

 

 

EXT4表示的數據可以超過4T的空間,每個指針的路徑占4個字節,一個字節是8位,4個字節32位,2的32次方個字節就是4T

 

EXT4在存放數據的時候,指針的數據塊占用的是48位(6個字節),48位就是2的48次方個字節,也就是:281474976710656字節=256T

 

1K=1024字節

1M=1024K

1G=1024M

1T=1024G

 

查看節點號:

[root@localhost ~]# ll -i

total 8

100663362?-rw——-. 1 root root 1908 Nov ?7 16:15 anaconda-ks.cfg

100663373?-rw-r–r–. 1 root root 1939 Nov ?7 16:23 initial-setup-ks.cfg

 

[root@localhost ~]# df -i

Filesystem ??????Inodes ?IUsed ???IFree IUse% Mounted on

/dev/sda2 ?????26214400 120596 26093804 ???1% /

devtmpfs ????????250313 ???398 ??249915 ???1% /dev

tmpfs ???????????253989 ?????1 ??253988 ???1% /dev/shm

tmpfs ???????????253989 ???592 ??253397 ???1% /run

tmpfs ???????????253989 ????16 ??253973 ???1% /sys/fs/cgroup

/dev/sda3 ?????10485760 ?????6 10485754 ???1% /app

/dev/sda1 ???????524288 ???329 ??523959 ???1% /boot

tmpfs ???????????253989 ????17 ??253972 ???1% /run/user/1000

/dev/sr0 ?????????????0 ?????0 ???????0 ????– /run/media/ding/CentOS 7 x86_64

tmpfs ???????????253989 ?????1 ??253988 ???1% /run/user/0

節點編號會被重復利用,改文件名不會改變節點編號。在一個分區上節點編號是有范圍的,每個文件消耗一個節點編號。節點編號用完就不能創建文件了

 

 

ps:部分內容來自百度百科

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

(1)
無言勝千言無言勝千言
上一篇 2017-11-16 13:50
下一篇 2017-11-16 19:22

相關推薦

  • 一、循環語句:for, while, until 循環執行:將某代碼段重復運行多次重復運行多少次:循環次數事先已知循環次數事先未知有進入條件和退出條件 1.for……do……done for 變量 in 列表 ; do    循環體done 執行機制:依次將列表中的元素賦值給“變量名”; 每次賦值后即執行一次循環體; 直到列表中…

    Linux干貨 2016-08-19
  • 腳本小練習

    1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。                            …

    Linux干貨 2016-08-15
  • PXE實踐

    本篇只以記錄個人部署pxe過程中所遇問題,至于原理,只做部分簡單說明。 pxe部署必要軟件: syslinux (用于提供引導中所必備文件) tftp(用于提供存放vmlinuz,initrd,syslinux.0等引導類文件) dhcp(用于自動獲取IP包括指明去哪個主機獲取syslinux.0文件) 最后還需要一個web或者ftp服務,已提供系統安裝中所…

    Linux干貨 2017-02-05
  • ansible

    運維自動化發展歷程,ansible 命令使用

    2018-01-13
  • 怎么解決VMware“該虛擬機似乎正在使用中”問題

    1)故障現象:  最近使用vmware workstation測試資料,經常會出現打開虛擬機的時候提示:“該虛擬機正在被使用”,點擊“獲取所有權”或者“取消”都不能處理問題(一般是沒有正常虛擬機導致的)。 2)處理方法: a.查找*.lck文件,然后刪除。 b.重啟vmware workstation服務 3)參考資料 http://jingyan…

    Linux干貨 2016-07-29
欧美性久久久久