初窺Linux之ext2/ext3檔案系統

來源:互聯網
上載者:User

Linux最傳統的磁碟檔案系統(filesystem)使用的是ext2,所以要瞭解檔案系統就得要由ext2開始。

一、檔案系統特性
磁碟分割完畢後還需要進行格式化,之後作業系統才能夠使用這個分區。這是因為每種作業系統所設定的檔案屬性/許可權並不相同,為了存放這些檔案所需的資料,因此就需要將分區進行格式化,以成為作業系統能夠利用的檔案系統格式。傳統的磁碟與檔案系統的應用中,一個分區誻只能夠被格式化成為一個檔案系統,所以我們可以說一個檔案系統就是一個分區。
  www.2cto.com  
作業系統的檔案資料除檔案內容外,通常還有非常多的屬性,Linux中的檔案許可權(rxw)與檔案屬性(所有者,群組、時間參數等)。檔案系統通常會將這兩部分資料分別存放在不同的塊,許可權與屬性放置到inode中,至於實際資料則放置到data block塊中。另外還有一個超級塊(super block)會記錄整個檔案系統的的整體資訊,包括inode與block的總量、使用量、剩餘量,以及檔案系統的格式與相關資訊等。
inode:記錄檔案的屬性,一個檔案佔用一個inode,同時記錄此檔案的資料所在的block號碼。
block:實際記錄檔案的內容,若檔案太大時,會佔用多個block。

由於每個inode與block都有編號,而每個檔案都會佔用一個inode,inode內則有檔案資料放置的block號碼。因此,如果能找到檔案的inode的話,那麼自然就會知道這個檔案所放置資料的block號碼,也就能夠讀出該檔案的實際資料。
  www.2cto.com  
,假設某一個檔案的許可權與屬性資料放置到inode 4號下(小方格)而這個inode記錄了檔案資料的實際放置點為2,7,13,15這4個block號碼,此時我們的作業系統就能夠據此來排列磁碟的讀取順序,可以一下子將4個block內容讀出來。


二、Linux的ext2檔案系統
檔案系統一開始就將inode與block規劃好了,除非重新格式化(或者利用resize2fs等命令變更檔系統大小)否則inode與block固定後就不再變動。為了方便管理,ext2檔案系統在格式化時基本上是區分為多個塊組的。每個塊組都有獨立的inode/block/super block系統。如所示:


檔案系統最前面有一個開機磁區,這個開機磁區可以安裝引導裝載程式,這樣我們就能夠將不同的引導裝載程式安裝到個別的檔案系統最前端,而不用覆蓋整塊硬碟唯一的MBR,這樣也才能製作出多重開機的環境。

*data block:用來放置檔案內容的地方,在ext2檔案系統中所支援的block的大小有1KB,2KB,4KB,在格式化時大小就固定了,每個block內最多隻能放置一個檔案的資料,如果檔案大於一個block的大小,則一個檔案會佔用多個block數量,若檔案小於block,則該block的剩餘空間就不能夠再被使用了。block的大小而產生的ext2檔案系統限制如下:


*inode table(inode 表格)
inode記錄的檔案資料至少有:
1、該檔案的訪問模式;(rwx)
2、該檔案的所有者與組(ower/group);
3、該檔案的大小;
4、該檔案建立或狀態改變的時間(ctime);
5、最近一次讀的時間(atime);
6、最近修改的時間(mtime);
7、該檔案的特性的標誌(flag);
8、該檔案真正內容的指向(pointer);

而有這麼強大功能的inode的大小均固定為每個128B。inode除了檔案許可權屬性記錄地區外,還有12個直接,1個間接,一個雙間接與一個三間接記錄區。12個直接指向號碼的對照,這12個記錄就能夠直接取得block號碼,至於所謂的間接就是再拿一個block來當作block號碼的記錄區,如果檔案太大,就會使用間接的block來記錄編號。同理,如果檔案持續長大,那麼就複用所謂的雙間接,第一個僅再指出下一個記錄編號的block在哪裡,實際記錄在第二個block當中。依此類推,三間接就是複用第三層block來記錄編號。如所示:


*Super block:
Super block是非常重要的,因為檔案系統的基本資料都寫在這裡,一個檔案系統應該僅有一個super block而已。它記錄的資訊主要有:
1、block與inode總量;
2、未使用與已使用的inode、block數量;
3、block與inode的大小;
4、檔案系統的掛載時間、最近一次寫入資料的時間,最近一次檢驗磁碟的時間等檔案系統的相關資訊;
5、一個validbit數值,若此檔案系統已掛載,則validbit為0,若未掛載,則validbit為1;
  www.2cto.com  
*File system Description(檔案系統描述說明)
這個區段可以描述每個block group的開始與結束的號碼,以及說明每個區段分別介於哪一個block號碼之間。可以用dumpe2fs來查看。

*block bitmap(塊對照表)
通過block bitmap可以知道哪些block是空的,因此我們的系統就能夠很快速地找到可以使用的空間來處置檔案。同樣,如果你刪除某些檔案時,那麼那些檔案原本佔用的block號碼就得要釋放出來,此時在block bitmap當中相對應到該block號碼的標誌就得要修改成為“未使用”。

*inode bitmap(inode對照表)
與block bitmap相似。

三、與分類樹的關係
1、目錄:在Linux下的ext2檔案系統建立一個目錄時,ext2會分配一個inode與至少一塊block給該目錄。inode記錄該目錄的相關許可權與屬性,並可記錄分配到的那塊block號碼;而block則是記錄在這個目錄下的檔案名稱與該檔案名稱佔用的inode號碼資料。

2、檔案:在Linux下的ext2檔案系統建立一個檔案時,ext2會分配一個inode與相對於該檔案大小的block數量給該檔案。注意,如果檔案太大,block的數量還要加上間接,雙間接和三間接指向所指向的block。

3、由上述可知,inode本身並不記錄檔案名稱,檔案名稱的記錄是在目錄的block當中。當我們要讀取某個檔案進,就務必會經過目錄的inode與block,然後才能夠找到那個待讀取檔案的inode號碼,最終才會讀到正確的檔案的block內的資料。由於分類樹是由根目錄開始讀起,因此系統通過掛載的資訊可以找到掛載點的inode號碼,此時就能夠得到根目錄的inode內容,並依據該inode讀取根目錄的block內的檔案名稱資料,再一層層地往下讀到正確的檔案名稱。
  www.2cto.com  
四、ext3檔案系統
為了避免檔案系統不一致的情況發生,在檔案系統當中規划出一個塊,該塊專門記錄寫入或修訂檔案時的步驟,也就是加入了記錄檔系統。這就是ext3檔案系統,它是ext2檔案系統的升級版。

五、掛載點的意義
每個檔案系統都有獨立的inode、block、super block等資訊,這個檔案系統要能夠連結到分類樹才能被我們使用。將檔案系統與分類樹結合的操作我們稱為掛載。掛載點一定是目錄,該目錄為進入該檔案系統的入口,必須要“掛載”到分類樹後,才能夠使用該檔案系統。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.