什麼是日誌文件系統?
所謂日誌文件系統是在傳統文件系統的基礎上,加入文件系統更改的日誌記錄,它的設計思想是:跟蹤記錄文件系統的變化,並將變化內容記錄入日誌。日誌文件系統在磁盤分區中保存有日誌記錄,寫操作首先是對記錄文件進行操作,若整個寫操作由於某種原因(如系統掉電)而中斷,系統重啓時,會根據日誌記錄來恢復中斷前的寫操作。在日誌文件系統中,所有的文件系統的變化都被記錄到日誌,每隔一定時間,文件系統會將更新後的元數據及文件內容寫入磁盤。在對元數據做任何改變以前,文件系統驅動程序會向日志中寫入一個條目,這個條目描述了它將要做些什麼,然後它修改元數據。
Ext文件系統結構
MBR:
MBR全稱Master Boot record,即硬盤的主引導記錄。前446字節爲引導器,64字節分區表,2字節校驗,大小一共512字節。
Linux文件系統以“Block”做爲存儲單元。
Block通常有若干個連續的扇區組成,通常爲1KB,2KB,4KB,8KB,此值大小通常記錄在位於文件系統2-3號扇區的superblock中;
所有的block都被賦予地址,由0開始編號,0號起始於文件系統的第一個扇區;
所有blok被劃分若干個相等的塊組,每個塊組中包含相同數量的block,但由於文件系統可能不是塊大小的整數倍,所以最有一個塊組可能小於其他塊組;
如果superblock定義了文件系統開始出保留的區域,則此區域不屬於任何block,0號block也在保留區域後開始。
SuperBlock:
superblock位於系統的1024字節處,爲其分配空間爲1024字節,但其中部分字節並沒使用
由基本信息組成,如塊大小,總塊數,每組塊數以及第一個快前保留塊數,還有inode數量和每塊組inode數量;
還有一些非實質性的數據,如卷名,最後寫入時間,文件系統是否乾淨,是否需要一致性檢查。2使用dumpe2fs可查看信息。dump2fs /dev/sda1;
日誌文件系統會把SuperBlock在datablock裏做一個備份,當SuperBlock更新時,備份也同樣更新;
superblock和backup block之間同步的時間15s或30s;
GDT(組描述符表):
組描述符表,位於superblock之後,每個組描述符佔用32字節,通常組描述符不會超過一個塊組;記錄block bitmap和inode bitmap等起始位置的信息;
block bitmap(塊位圖):
管理塊組中的塊的分配情況;
inode bitmap(Inode位圖):
位於block bitmap之後,大小隻佔用一個block;
管理組中inode的分配情況;
起始位置在GDT中給出,通常inode數量小於組中的塊數,不過可以手動更改;
Inode Table(inode表):
inode大小爲128字節;
所有inode存放在inode table中,每個塊組都有一個本地組的inode table
1-10號inode被用作保留,並在inode table中設置爲已分配;
1號inode節點用於表明壞塊,但在linux內核中沒有標定的值;
8號節點通常爲日誌使用,但可以在superblock中重新定義;
第一個用戶文件通常使用11號節點,但此一般被lost+found目錄使用;