歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux的標准文件系統----EXT2

Linux的標准文件系統----EXT2

日期:2017/2/28 15:48:47   编辑:Linux教程

EXT2分為幾個重要部分:

inode、block、superblock

EXT2將文件分為兩部分存儲,文件的權限等屬性放在inode中,而其實際的數據放在block中,superblock當然就是記錄整個文件系統的inode和block的信息了。

(1)inode:

一個inode的大小被固定為128字節,一個文件占用一個inode,但是並不代表一個inode只保存一個block的指向,因為一個文件通常都是由N個block保存的。

inode基本上記錄了文件的訪問權限、所屬用戶/用戶組、大小、atime、ctime、mtime、指向。。。

從128字節的固定大小來看,文件系統能夠創建的文件數量就一定與inode的數量有關了,這個稍後討論

(2)block:

在目錄中:記錄該目錄下的文件名和該文件名所占用的inode號碼

在數據中:記錄文件數據

一個block大小分為1K,2K,4K三種,如果是4K的,那麼要建一個100K的文件,就需要25個block了

有了上面inode和block的介紹,我們就可以討論一個文件系統所能保存的最大文件量了。

如果一個inode指向一個block,那麼按100K的文件來算,就需要25個inode了,這實在很浪費啊,因為inode再小也有128字節,EXT2為了解決這種資源浪費問題,

設計了inode的指向,將inode分為12個直接指向、一個間接指向、一個雙間接指向和一個三間接指向,剩下的用來記錄文件權限和屬性

以1K的block來算:

12個直接指向,直接指向block,那麼最大就可以指向12個block,最大文件大小為:12*1K = 12K

一個間接指向,指向block,再由block指向其他block,而記錄一個block號碼的指針占4個字節,這樣1K的block最大指向256個block,最大文件大小為:256*1K = 256K

一個雙間接指向,指向一個block,在由這個block指向256個block,每個block再指向256個block,這樣,最大文件大小為:256*256*1K

一個三間接指向,按雙間接指向推理的話,就是讓第三層的256個block每一個又指向256個block,最大文件大小為:256*256*256*1K

顯然,1K的block的文件系統最大可存入的文件大小為:16GB

(2K、4K的會由於EXT2本身的限制而得出不符合實際的結果)

(3)superblock

記錄整個文件系統的相關信息,與文件系統共存亡

記錄了inode和block的總量、未使用和已使用的inode和block量、文件系統掛載的相關信息。。。。

(4)查看文件系統

  1. $ df
這個命令會讓你找到每一個掛載的設備文件,如/dev/hdc2
  1. $ dumpe2fs /dev/hdc2
這個命令可以顯示出這個設備文件所使用文件系統及其類似於superblock的信息(應該說比superblock記錄可能還多,因為實在很多,沒有看完。。。)

(5)從目錄樹讀取文件

以讀取/etc/passwd為例

系統首先通過掛載點的信息找到當前設備文件的根目錄的inode,當它檢測到inode中記錄了根目錄的r和x權限時,就可以進入根目錄了,並且取得block的內容;

進入根目錄後,跟據block,找到到/etc目錄的inode;

讀取inode,當讀取到用戶擁有r和x的權限時,就獲得並讀取block,進入該目錄;

根據block,找到passwd的inode,讀取inode,有r權限時,就可以讀取passwd的block內容了。

Copyright © Linux教程網 All Rights Reserved