什么是日志文件系统?
所谓日志文件系统是在传统文件系统的基础上,加入文件系统更改的日志记录,它的设计思想是:跟踪记录文件系统的变化,并将变化内容记录入日志。日志文件系统在磁盘分区中保存有日志记录,写操作首先是对记录文件进行操作,若整个写操作由于某种原因(如系统掉电)而中断,系统重启时,会根据日志记录来恢复中断前的写操作。在日志文件系统中,所有的文件系统的变化都被记录到日志,每隔一定时间,文件系统会将更新后的元数据及文件内容写入磁盘。在对元数据做任何改变以前,文件系统驱动程序会向日志中写入一个条目,这个条目描述了它将要做些什么,然后它修改元数据。
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目录使用;
-