回覆列表
-
1 # 位元匠人
-
2 # 產品經理老胡
從我這樣一個計算機專業科班生的角度出發來理解的話,Linux中的inode其實很好理解,它就是一些記錄檔案元資料的資料結構。其中有一些是檔案屬性,比如檔案的大小、訪問許可權、訪問修改時間等,還有一些就是用於記錄檔案的資料塊資訊,比如塊的數量和inode表的索引。下圖就是Linux中使用stat命令檢視到的一個檔案的inode資訊:
inode的產生在Linux中,格式化磁碟建立檔案系統時,會將一個磁碟分區劃分成inode表和資料區。資料區內劃分為檔案讀取的最小單位——塊(block),windows叫做“簇”。我們使用的檔案系統常見的塊大小是4KB,也可以格式化成1KB,2KB,8KB等其它大小。
inode是怎樣記錄一個檔案的每一個檔案的資訊用一個inode來記錄,每一個inode裡除了記錄檔案的元資料之外,更關鍵的是記錄了檔案資料存放的塊號碼。
ext4檔案中一個inode的大小是256位元組。
每個塊號碼用4個位元組表示,每一個inode包含12個塊的號碼,1個間接塊的號碼,1個二級間接塊的號碼,一個三級間接塊的號碼。這是因為一個檔案可能12個塊存放不下,於是就乾脆用間接塊號碼指定一個塊,用來存放所有資料塊的號碼,再存不下的話,就使用一個二級間接塊號碼指定一個塊,用來存放一些塊,這些塊記錄了存放資料塊的號碼;如果還是不夠用,就使用三級間接塊。下面是示意圖:綜上所述,inode其實就是一個主要用於記錄檔案資料存放位置的記錄,同時記錄了檔案的大小等元資料。一個磁碟分割槽內的inode數量是有限的,所以當一個分割槽內建立的檔案數量太多的話,就會出現把inode耗光的現象,此時磁碟空間看上去還有剩餘,但就是不能再寫入資料了。
ls -i
塊儲存的組織方式
index node 儲存檔案的元資訊