一篇理解Ext-Ext4文件系统_日志JBD2
1.使用Ext3文件系统的Linux内核中实现三个级别的日志记录:日记journal(最低风险,效率低),顺序ordered和回写writeback(提供较好的性能,但有较大的风险)。 日志文件系统的3种日志方法
一、Ext4文件系统特性
Ext4是第四代扩展文件系统,是Linux系统下的日志文件系统,是Ext3文件系统的后继版本。内核2.6.28引入Ext4文件系统称为稳定版。
更大的文件系统和更大的文件
更多的子目录数量:EXT4理论上支持无限个 更多的块和i-节点数量 多块分配 持久性预分配 延迟分配 盘区结构 日志校验功能 支持无日志模式 在线碎片整理 支持快速fsck 支持纳秒级时间戳
二、Ext4文件系统磁盘布局结构

Ext4文件系统被分成一系列块组,为减少磁盘碎片产生的性能瓶颈,块分配器尽量保持每个文件的数据块都在同个块组中,从而减少寻道时间。以4KB数据块为准,一个块组可以包含32768个数据块,也就是128M。 当格式化磁盘成为Ext4文件系统时,mkfs将在块组描述符表后面分配预留GDT表数据块(主要作用用于将扩展文件系统)。
【文章福利】小编推荐自己的Linux内核技术交流群:【891587639】整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!!!(含视频教程、电子书、实战项目及代码)


三、Ext4文件系统数据结构
1.超级块
专门用于描述文件系统的全部配置信息:比如inode数量,数据块个数,管理信息等。

2.块组描述符(GDT)
块组描述符用保存元祖的信息,其占用一个或多个数据块,具体取决于文件系统的大小,他主要包含块位图,inode位图和inode表位置等。

3.节点表(inode Table)
inode存储了inode号,文件属性元数据,指向文件占用的block的指针,每一个inode占用128字节或者256字节。

4.数据块位图
用于描述该块组所管理的块的分配状态。
5.inode位图
用于描述该块组所管理的inode分配状态
6.Extent树
Ext4中用extent树代替逻辑块映射,用一个struct ext4_extent结构就可以映射多个数据块,减少元数据块的使用。

