EXT2/EXT3文件系統(一)

 

    整理自《鳥哥的Linux私房菜》,整理者:華科小濤http://www.cnblogs.com/hust-ghtao/微笑

 

1.文件系統概念引入

    文件系統是一種存儲和組織計算機數據的方法,它使得對其訪問和查找變得容易,文件系統使用文件樹形目錄的抽象邏輯概念代替了硬盤和光盤等物理設備使用數據塊的概念,用戶使用文件系統來保存數據沒必要關心數據實際保存在硬盤(或者光盤)的地址爲多少的數據塊上,只須要記住這個文件的所屬目錄和文件名。在寫入新數據以前,用戶沒必要關心硬盤上的那個塊地址沒有被使用,硬盤上的存儲空間管理(分配和釋放)功能由文件系統自動完成,用戶只須要記住數據被寫入到了哪一個文件中。前端

    咱們都知道磁盤分區後還要進行格式化,以後操做系統纔可以使用這個分區。這是由於每種操做系統所設置的文件屬性/權限不一樣,爲了存放這些數據所須要的數據,所以就要對分區進行格式化,以成爲操做系統可以利用的文件系統格式。node

    文件數據除了文件的實際內容外,還含有文件權限(RWX)與文件屬性(全部者、羣組、時間參數等)。文件系統一般會把這兩部分數據放到不一樣的塊,權限與屬性放置到inode中,至於實際數據則放置到data block中。另外,還有一個Superblock會記錄文件的總體信息,包括inode與block的總量、使用量、剩餘量等。spa

    每一個inode和block都有編號,這三個數據的意義簡要的說明以下:操作系統

  • superblock:記錄此文件的總體信息,包括inode/block的總量、使用量、剩餘量,以及文件系統的格式與相關信息等;
  • inode:記錄文件的屬性,一個文件佔用一個inode,同時記錄此文件的數據所在的block號碼;
  • block:實際記錄文件的內容,若文件太大時,會佔用多個block。

    用於inode和block都有本身的編號,而每一個文件都會佔有一個inode,inode內則含有文件數據放置的block號碼。因此,若是可以找到文件的inode,那麼天然就會知道數據存放到哪些block了,也就能夠對數據進行讀取。設計

    inode/block數據訪問示意圖:3d

                                      image

    今後圖咱們能夠看到,文件系統先格式化出inode與block的塊,假設一個文件的屬性與權限數據存放到inode4中,而inode4又記錄了文件數據的實際放置點爲2,7,13,15這4個block號碼,此時操做系統就能夠據此一會兒將數據內容讀出來。這種數據訪問的訪問稱爲「索引式文件系統」。orm

 

2.EXT2文件系統

    上面的示意圖,是將全部的inode和block都放到一塊兒。可是若是文件系統很大時,inode和block的數量就會不少,將它們放在一塊兒就不方便管理了。因此又提出了block group的概念,每一個block group內都有獨立的inode/block/superblock系統。咱們再看一下含有block group的文件系統示意圖:blog

                                      image

    注意,文件系統最前面有一個啓動扇區(boot sector),這個啓動扇區能夠安裝引導裝在程序(這是個很是nice的設計,如此一來就可以將不一樣的引導裝在程序安裝到個別的文件系統的最前端,而不用覆蓋掉MBR,這樣才能製做出多重引導的環境)。至於每個block group的主要內容:索引

2.1 data block

    用來放置文件內容的地方,在EXT2文件系統中所支持的block大小有1KB,2KB及4KB。因爲block大小的區別,會致使該文件系統可以支持的最大磁盤容量和最大單一文件容量不一樣。由於block大小而產生的EXT2文件系統限制以下所示:get

                             image

    除此以外對block的限制還包括:(1)原則上,block的大小與數量格式化完就不能變了;(2)每一個block內最多隻能存放一 個文件的數據;(3)若是文件大於block的大小,則會佔用多個block;(4)若文件小於block大小,則該block的剩餘空間就不能再用了。

2.2 inode table

    inode記錄的數據至少有下面這些:(1)該文件的訪問模式(RWX);(2)該文件的全部者(owner/group);(3)該文件的大小;(4)該文件建立或狀態改變的時間(ctime);(5)最後一次的讀取時間(atime);(6)最近修改的時間(mtime);(7)定義文件特性的標誌,如SetUID;(8)該文件真正內容的指向。

    下面讓咱們來分析一下inode/block與文件大小的關係。inode大小128B,記錄一個block用4B。假設文件很大,將須要不少記錄,爲了解決這個問題,操做系統將inode記錄block號碼的區域定義爲12個直接、一個間接、一個雙間接和一個三間接記錄區。如圖所示:

 

                                       image

 咱們計算一下這樣的inode能指定多少block?咱們假設block大小爲1KB:

  • 12個直接:12*1KB=12KB
  • 間接:256*1K=256KB,每條block號碼花4B,所以1K大小記錄256個。
  • 雙間接:256*256*1K=256^2KB
  • 三間接:256*256*256=256^3KB
  • 總額=12個直接+間接+雙間接+三間接= 16GB

    此時咱們知道當文件系統將block格式化爲1K時,可以容納的最大文件爲16GB,和前面提到的相一致。但這個方法不能用在2K和4K大小的block的計算中,由於它們還會受到文件系統自己的限制。

   

   捕獲

相關文章
相關標籤/搜索