linux儲存 inode詳解(六)

2021-10-08 12:37:18 字數 2915 閱讀 4925

當劃分磁碟分割槽並格式化的時候,整個分割槽會被劃分為兩個部分,即inode區和data block(實際資料放置在資料區域中)這個inode即是(目錄、檔案)檔案在乙個檔案系統中的唯一標識,需要訪問這個檔案的時候必須先找到並讀取這個檔案的 inode。 inode 裡面儲存了檔案的很多重要引數,其中唯一標識稱作 inumber, 其他資訊還有建立時間(ctime)、修改時間(mtime) 、檔案大小、屬主、歸屬的使用者組、讀寫許可權、資料所在block號等資訊

所以檔案就有兩部份組成:

元資料:inode table(索引節點表)

資料內容:資料塊(block)

inode包含檔案的元資訊,具體來說有以下內容:

鏈結數,即有多少檔名指向這個inode

檔案資料block的位置

檔案系統一開始就將inode與block規劃好了,除非重新格式化,否則inode和block固定後就不會在發生變化。每個inode與block都與自己的編號,inode就是記錄檔案的屬性,乙個檔案占用乙個inode,同時記錄此檔案資料所在的block碼。block則是實際記錄檔案的內容,若檔案過大則會占用多個block。

由於每個inode與block都有自己的編號,而每個檔案都會占用inode,inode內有資料 block的位置,因此可以制動啊,如果能夠找到檔案的inode,就可以找到檔案所放置資料的block號碼,也就能夠找到檔案的時間資料所在了。所以inode就有指標的作用,而在inode結構中,並不是只有一種指標,而是有多種。

在inode表中將第1 - 12塊指標當作直接塊指標,由於乙個指標只能指向乙個block塊,所以如乙個block塊有4k的儲存空間,那麼使用直接塊指標的檔案最大不能超過48k,這時就需要用到間接塊指標,或雙重間接塊指標,或三重間接塊指標。

直接快指標

直接塊指標就是inode中直接記錄了block塊的號碼,直接指向block塊,

假如乙個檔案的屬性與許可權資料放置在inode4號,而這個inode記錄了檔案資料的實際位置放置點位2,7,13,15這四個block號碼,此時作業系統可以據此來排列磁碟的閱讀順序,可以直接將四個block的內容讀出來,資料的讀取如下圖所示

間接塊指標

間接塊指標,其實和直接塊指標大同小異,他們都是指標,只是直接塊指標式直接指向的block塊儲存的是檔案的資料,而間接塊指標是將指向的block塊繼續當作指標塊使用,所以間接指標指向的block塊儲存的是指標資訊,它將繼續指向下乙個block塊中儲存的檔案資料。

雙重間接塊指標

理解了間接指標塊,那麼雙重間接指標塊就容易理解了,它是在間接指標塊的基礎上將第二次指向的block塊也當作指標使用,這樣就可以指向更的的block塊。

三重間接塊指標

三重間接塊指標的道理就和雙重的道理一樣了,只是把第三次指向的block塊也當作指標塊當作指標使用,這樣就可以執行跟過的block塊。

前面已經提到使用直接塊指標的檔案最大不能超過48k,假定乙個指標塊需要4個位元組,乙個block塊有4k的儲存空間,那麼乙個block塊就可以儲存1024個指標塊,所以間接塊指標的檔案最大就可以儲存1024*4k=4m的檔案,以此類推使用雙重間接塊指標的檔案最大儲存空間就有1024*1024*4k=4g,使用三重間接塊指標的檔案最大儲存空間就可以達到1024*1024*1024*4k=4t

檔案是儲存在硬碟上,硬碟的最小儲存單位叫扇區。每個扇區能儲存大小是0.5kb。進行硬碟分割槽後就需要將其是格式化。在linux 系統中ext4檔案系統中將資料儲存劃分兩個區域inode區與資料區,這樣做的目的是提高檔案的讀寫速度。作業系統讀取硬碟的時候,不會乙個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取乙個塊(block),也即是上圖中所示的簇。這種由多個扇區組成的塊是檔案訪問的最小單位,塊最常見的是4kb,也即8個扇區組成,檔案裡面寫的資料都儲存在塊中。

inode表結構如圖所示:

目錄檔案:

普通檔案是由inode+block構成,在linux下目錄也是一種檔案,那麼目錄檔案又是什麼結構呢,目錄檔案的結構非常簡單,就是一系列目錄項(dirent)的列表。每個目錄項,由兩部分組成:所包含檔案的檔名,以及該檔名對應的inode號碼。通過目錄項找到目錄下檔案的inode資訊,然後就可以找到檔案的block塊及資料資訊

如圖所示:

訪問乙個檔案的時候,先進入目錄,目錄中有相應的目錄項,目錄項中有對應的檔名和inode號,通過裡面的指標指向相應的資料塊,這樣就訪問到檔案的內容了。目錄這種「特殊的檔案」,可以簡單地理解為是一張表,這張表裡面存放了屬於該目錄的檔案的檔名,以及所匹配的inode編號,它本身的資料也放在資料區中;讀寫乙個檔案時就這樣來回的從inode和資料區之間切換。可以把檔案比作一本書,inode相當於書的目錄,資料區相當於書的內容,讀書時得先查目錄,這本書呢又放在讀書館的書架上,書架可以理解為是目錄,看書前先查書架子的索引。

在檔案系統中使用者可以使用df命令檢視每個磁碟分割槽的inode總數和已使用的數量,

命令:df -i

由於inode也占用一定的磁碟空間,所以當inode使用空間用完的時候,即使磁碟仍有儲存空間也無法使用!所有當磁碟顯示仍有可用空間,但使用時卻提示空間不足,就有可能是inode使用完畢所造成的。

linux 索引節點 inode 詳解

1 inode簡介 理解inode,要從檔案儲存說起。檔案儲存在硬碟上,硬碟的最小儲存單位叫做 扇區 sector 每個扇區儲存512位元組 相當於0.5kb 作業系統讀取硬碟的時候,不會乙個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取乙個 塊 block 這種由多個扇區組成...

索引節點inode詳解

inode index node 索引節點。linux系統中,分割槽要進行格式化,建立檔案系統。在每個linux儲存裝置或儲存裝置的分割槽 可以是硬碟,軟盤,u盤等 被格式化為ext3檔案系統後,一般分為兩個部分 第一部分是inode,第二部分是block。而inode是用來儲存這些檔案屬性資訊的 ...

六 Linux 共享儲存

include include int shmget key t key,size t size,int shm 功能 得到乙個共享記憶體識別符號或建立乙個共享記憶體物件並返回共享記憶體識別符號 引數 key0 ipc private 會建立新共享記憶體物件 一般應用于父程序和子程序之間 大於0的 ...