1.inode簡介
理解inode,要從文件儲存說起。文件儲存在硬盤上,硬盤的最小存儲單位叫做”扇區(qū)”(Sector)。每個扇區(qū)儲存512字節(jié)(相當(dāng)于0.5KB)。操作系統(tǒng)讀取硬盤的時候,不會一個個扇區(qū)地讀取,這樣效率太低,而是一次性連續(xù)讀取多個扇區(qū),即一次性讀取一個”塊”(block)。這種由多個扇區(qū)組成的”塊”,是文件存取的最小單位?!眽K”的大小,最常見的是4KB,即連續(xù)八個 sector組成一個 block。文件數(shù)據(jù)都儲存在”塊”中,那么很顯然,我們還必須找到一個地方儲存文件的元信息,比如文件的創(chuàng)建者、文件的創(chuàng)建日期、文件的大小等等。這種儲存文件元信息的區(qū)域就叫做inode,中文譯名為”索引節(jié)點(diǎn)” 。
2.inode包含內(nèi)容
Linux中目錄的數(shù)據(jù)塊中的每一項(xiàng)中都包含了文件名和其對應(yīng)的inode。inode記錄了文件的屬性以及該文件實(shí)際存儲位置,即數(shù)據(jù)塊號(block number),每一個block(常見大小4KB),通過inode可以實(shí)現(xiàn)文件的查找定位。inode是Linux中的,Unix中是vnode。基本上,inode包含的信息至少有如下這些:
(1)文件的類型
(2)文件訪問權(quán)限;
(3)文件的所有者與組;
(4)文件的大小;
(5)鏈接數(shù),即指向該inode的文件名總數(shù);
(6)文件的狀態(tài)改變時間(ctime)、最近訪問時間(atime)和最近修改時間(mtime);
(7)文件特殊屬性,SUID、SGID和SBIT;
(8)文件內(nèi)容的真正指向(pointer)。
可以用stat命令,查看某個文件的inode信息。
3.inode特點(diǎn)
inode的數(shù)量與大小在磁盤格式化的時候就已經(jīng)固定了,inode的特點(diǎn)有:
(1)每一個inode的大小均固定為128B??梢酝ㄟ^命令dumpe2fs來顯示ext2/ext3/ext4文件系統(tǒng)信息。
$ dumpe2fs -h /dev/sda1 | grep "Inode size" dumpe2fs 1.41.12 (17-May-2010) Inode size: 128
(2)每個文件都只占用一個inode。因此,文件系統(tǒng)能夠建立的文件數(shù)量與inode數(shù)量有關(guān)。系統(tǒng)讀取檔案時需要先找到inode,并分析inode所記錄的權(quán)限與用戶是否符合,若符合才能夠開始實(shí)際讀取block的內(nèi)容。
4.操作系統(tǒng)讀取磁盤文件的流程
操作系統(tǒng)讀取磁盤文件的流程是這樣的:
(1)根據(jù)給定的文件的所在目錄,獲取該目錄的數(shù)據(jù)實(shí)體,根據(jù)數(shù)據(jù)實(shí)體中的數(shù)據(jù)項(xiàng),找到對應(yīng)文件的inode;
(2)根據(jù)文件inode,找到inodeTable;
(3)根據(jù)inodeTable中的對應(yīng)關(guān)系,找到對應(yīng)的block;
(4)讀取文件。
系統(tǒng)讀取磁盤文件流程示意圖如下:
舉例來說,如果想要讀取/etc/passwd文件,讀取流程如下:
(1)獲取根目錄/的inode。透過掛載點(diǎn)的信息找到根目錄的inode號為2;
ll -di / 2 dr-xr-xr-x 19 root root 4096 Feb 14 09:32 /
(2)根據(jù)根目錄的inode,找到根目錄的數(shù)據(jù)實(shí)體block,可以理解為一個文件到inode號的映射表,找到目錄etc的inode號;
ll -di /etc 786433 drwxr-xr-x 98 root root 12288 Feb 13 17:18 /etc
(3)根據(jù)目錄etc的inode號,讀取目錄etc的數(shù)據(jù)實(shí)體block,并找到文件passwd的inode號;
ll -i /etc/passwd 787795 -rw-r--r-- 1 root root 1552 Jan 4 14:56 /etc/passwd
(4)根據(jù)/etc/passwd文件的inode號,即可獲取/etc/passwd文件的數(shù)據(jù)實(shí)體block,完成文件的讀取。
5.inode的諸多優(yōu)點(diǎn)
(1)對于有些無法刪除的文件可以通過刪除inode節(jié)點(diǎn)來刪除;
(2)移動或者重命名文件,只是改變了目錄下的文件名到inode的映射,并不需要實(shí)際對硬盤操作;
(3)刪除文件的時候,只需要刪除inode,不需要實(shí)際清空那塊硬盤,只需要在下次寫入的時候覆蓋即可(這也是為什么刪除了數(shù)據(jù)可以進(jìn)行數(shù)據(jù)恢復(fù)的原因之一);
(4)打開一個文件后,只需要通過inode來識別文件。
以上就是詳解Linux索引節(jié)點(diǎn)inode的詳細(xì)內(nèi)容,更多關(guān)于Linux索引節(jié)點(diǎn)inode的資料請關(guān)注腳本之家其它相關(guān)文章!
標(biāo)簽:佛山 云南 畢節(jié) 安陽 晉中 巴中 南寧 衡水
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解Linux索引節(jié)點(diǎn)inode》,本文關(guān)鍵詞 詳解,Linux,索引,節(jié)點(diǎn),inode,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。