什么是日志文件系统?node
所谓日志文件系统是在传统文件系统的基础上,加入文件系统更改的日志记录,它的设计思想是:跟踪记录文件系统的变化,并将变化内容记录入日志。日志文件系统在磁盘分区中保存有日志记录,写操做首先是对记录文件进行操做,若整个写操做因为某种缘由(如系统掉电)而中断,系统重启时,会根据日志记录来恢复中断前的写操做。在日志文件系统中,全部的文件系统的变化都被记录到日志,每隔必定时间,文件系统会将更新后的元数据及文件内容写入磁盘。在对元数据作任何改变之前,文件系统驱动程序会向日志中写入一个条目,这个条目描述了它将要作些什么,而后它修改元数据。linux
Ext文件系统结构
ide
MBR:spa
MBR全称Master Boot record,即硬盘的主引导记录。前446字节为引导器,64字节分区表,2字节校验,大小一共512字节。设计
Linux文件系统以“Block”作为存储单元。日志
Block一般有若干个连续的扇区组成,一般为1KB,2KB,4KB,8KB,此值大小一般记录在位于文件系统2-3号扇区的superblock中;orm
全部的block都被赋予地址,由0开始编号,0号起始于文件系统的第一个扇区;xml
全部blok被划分若干个相等的块组,每一个块组中包含相同数量的block,但因为文件系统可能不是块大小的整数倍,因此最有一个块组可能小于其余块组;blog
若是superblock定义了文件系统开始出保留的区域,则此区域不属于任何block,0号block也在保留区域后开始。get
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目录使用;