Linux中Inode概念
Linux中的Inode
要理解Inode,就要從文件存儲說起。文件存儲在硬盤上,那麽硬盤中最小的存儲單位叫做"扇區",這裏簡單跳出一下,跟大家說簡單解釋一下什麽叫扇區,如下圖:
下面是單個硬盤盤片的示意圖,一個硬盤就是由若幹個同樣的盤片構成的(具體詳細的其他概念,我們擇日再說),這裏就關註扇區。
在單個盤片上,從裏到位有很多個同心圓,每個同心圓叫做磁道(Track)
從圓心向最外側按一定度數劃分很多縱切線,這個每個磁道被切割成若幹的,每個被切割的磁道就叫做扇區,扇區是硬盤存儲數據的最小單位。
一般來說,每個扇區能存儲512字節,也就是相當於0.5k(512/1024=0.5)。
雖然扇區(sector)是硬盤存儲數據的最小單位,但是操作系統在讀取硬盤的時候,卻不會一個扇區一個扇區的去讀取,這樣效率太慢了,操作系統是按"塊"為單位進行讀寫的。塊,是由多個扇區組成的,是操作系統文件存取的最小單位。不同的操作系統支持不同的塊大小,最常見的塊大小是4KB,即由連續的8個扇區(sector)組成一個塊(block)。
文件信息都存儲在"塊"中,那麽很顯然,我們還必須要找到一個地方去存儲文件的元信息,所謂文件的元信息,就是除了文件內容之外的和該文件有關的一些屬性,比如文件的創建者,文件的大小等等。這些元信息並沒有很文件內容信息混合在一起存儲,這種元信息存儲的區域就叫做inode。中文譯名可以叫做"索引節點"。
那麽Inode包含文件的元信息,具體來說大概有一下幾種內容:
*文件的字節數
*文件擁有者的User ID
*文件的Group ID
*文件的讀,寫,執行權限
*文件的時間戳(大概有三個相關的時間戳,ctime指上一次變動的時間,mtime指文件內容上一次變動的時間,atime指上一次文件打開的時間)
*鏈接數, 即有多少個文件名指向這個inode
*文件數據block的位置
Linux中Inode概念