1. 程式人生 > 其它 >文件資訊

文件資訊

Inode and Block概述

檔案儲存在硬碟上,硬碟的最小儲存單位叫“扇區”(sector),每個扇區擁有512位元組。

作業系統從硬碟上讀取資料時,不會按照扇區的方式讀取,這樣讀取效率太低,而是一次性連續讀取多個扇區,即一次性讀取一個“塊”(Block,由多個扇區的空間組成)。這種由多個扇區組成的“塊”,是檔案存取的最小單位。“塊”的大小,最常見的是4KB,Block儲存檔案資料。

檔案資料儲存在“塊”中,那麼還必須找到一個地方儲存檔案的元資訊,比如檔案的所屬使用者、檔案所屬組、檔案的型別、檔案的許可權、檔案的建立時間、檔案的修改時間、檔案的訪問時間、檔案使用的Block資訊、檔案的硬連結數、檔案的大小等等屬性資訊。這種儲存檔案元資訊的區域叫做Inode。中文譯名為“索引節點”,也叫i節點。

Inode和Block是檔案系統組成的基本核心概念檔案系統是在分割槽格式化的時候形成的,檔案系統負責組織檔案在分割槽上的存放的。

注意:

inode 不包含檔名。檔名是儲存在目錄的目錄項中。

一個檔案必須佔用一個inode,至少佔用一個 block。

檢視檔案的inode資訊:statstat install.log

Atime、MtimeCtime詳解:

英文 別稱 中文翻譯 何時修改 檢視命令

Access Atime 訪問時間 讀取 ls -lu

Modify Mtime 修改時間 寫入、修改 ls -l

Change/Create Ctime. 改變時間/建立時間 修改檔名、寫入 Is-lc。

修改、改許可權、做連結

操作示例:

讀取檔案內容,檢視Atime的改變:

echo haha >a.txt stat a.txt

檔案寫入內容,檢視Mtime/Ctime 的改變 stat a.txt

建立硬連結,檢視Ctime的修改stat a.txt

修改檔案許可權,檢視Ctime的改變 stat a.txt

目錄檔案的結構

目錄也是一種檔案

每個inode都有一個號碼,作業系統用inode號碼來識別不同的檔案。

檔案系統內部不使用檔名引用檔案,而是使用inode號碼來識別檔案。對於檔案系統來說,檔名只是inode號碼便於識別的別稱,檔名是目錄的資料。

Inode的號碼

檔案系統訪問檔案的步驟:

1使用者在目錄中看到要訪問的檔名

2通過目錄的資料找到這個檔名對應的inode號碼。

3.通過inode號碼,獲取inode資訊(檔案的元資訊)

4.根據inode資訊,找到檔案資料所在的block,讀出資料

inode一般為128位元組或256位元組,每個inode中都記錄著檔案所使用的block號,每條記錄著block號的資訊佔用4位元組。inode中關於block號的記錄一共包含有12個直接、1個間接、1個雙間接和1個三間接。"

12個直接連線,共佔用48位元組磁碟空間,包含著12個直接指向block號的資訊,若此檔案系統預設的block大小為4KB,則僅僅可以指向12*4=48KB大小的檔案內容。

然而我們的檔案若較大時,則需要使用到更多的block,肯定要多於12個block,進而有間接、雙間接和三間接。

間接指的是,inode中所記錄這4位元組的內容,所指向一個block,這個block中存放的不是真是的檔案內容,而是真實檔案所存放位置的block號資訊,若每個block大小為4KB,那麼可以存放1024個block號資訊,1個間接可以存放的檔案大小為1024*4=4096KB

雙間接則可以存放更大的檔案內容,即在間接的基礎上再進行間接,若此時block大

小為預設的4KB則1個雙間接可以存放的檔案內容大小為:1024*1024*4-4096MB

三間接即在雙間接的基礎上在進行間接,若此時block大小為預設的4KB,則1個三間

接可以存放的檔案內容大小為:1024*1024*1024*4=4096GB

也就是說,在一個block大小預設為4KB的檔案系統中,一個檔案最大儲存可以達到48KB+4096KB+4096MB+4096GB,約為4100GB。

檢視檔案的inode號碼

Is -i 檔名

stat 檔名 Is -iaa.txt1186522 aa.txt

刪除指定inode號所對應的檔案

格式:find./-inuminode號-execrm-if\;

示例:當檔名中包含特殊符號時我們可以刪除其inode號達到刪除檔案的目的

touchabc de!4'txt Is -li

從/root/目錄下查詢3天內修改的檔案,並複製到/tmp下。 find /root/-mtime -3-a -type f -exec cp {}/tmp\;

檢視檔案系統的inode與block的資訊

df-i裝置名(檔案系統已掛載時查詢,查詢inode總數與已用數量)

dumpe2fs-h裝置名(檔案系統無需掛載)

tune2fs1裝置名(檔案系統無需掛載) df-i/data