1. 程式人生 > >檔案系統的執行—superblock/inode/block

檔案系統的執行—superblock/inode/block

鳥哥私房菜書上內容:

 

superblock:記錄此 filesystem 的整體資訊,包括inode/block的總量、使用量、剩餘量, 以及檔案系統的格式與相關資訊等;
inode:記錄檔案的屬性,一個檔案佔用一個inode,同時記錄此檔案的資料所在的 block 號碼;
block:實際記錄檔案的內容,若檔案太大時,會佔用多個 block 。

 

每個 inode 與 block 都有編號,而每個檔案都會佔用一個 inode ,inode 內則有檔案資料放置的 block 號碼。因此,我們可以知道的是,如果能夠找到檔案的 inode 的話,那麼自然就會知道這個檔案所放置資料的 block 號碼, 當然也就能夠讀出該檔案的實際資料了。

 

------------------------------------------------------------------------------------------------------

在標準的 Linux 檔案系統 Ext2 中,所支援的 block 大小有 1K, 2K 及 4K 三種

Ext2 檔案系統的 block 基本限制如下:
原則上,block 的大小與數量在格式化完就不能夠再改變了(除非重新格式化);
每個 block 內最多隻能夠放置一個檔案的資料;
承上,如果檔案大於 block 的大小,則一個檔案會佔用多個 block 數量;
承上,若檔案小於 block ,則該 block 的剩餘容量就不能夠再被使用了(磁碟空間會浪費)。

 

 

inode 記錄的檔案資料至少有下面這些:
該檔案的存取模式(read/write/excute);
該檔案的擁有者與群組(owner/group);
該檔案的容量;
該檔案建立或狀態改變的時間(ctime);
最近一次的讀取時間(atime);
最近修改的時間(mtime);
定義檔案特性的旗標(flag),如 SetUID...;
該檔案真正內容的指向 (pointer);
inode 的數量與大小也是在格式化時就已經固定了,除此之外 inode 還有些什麼特色呢?
每個 inode 大小均固定為 128 Bytes (新的 ext4 與 xfs 可設定到 256 Bytes);
每個檔案都僅會佔用一個 inode 而已;
承上,因此檔案系統能夠建立的檔案數量與 inode 的數量有關;
系統讀取檔案時需要先找到 inode,並分析 inode 所記錄的許可權與使用者是否符合,若符合才能夠開始實際讀取 block 的內
容。