初探ext4文件系统

在RHEL6中ext4就会成为了默认的文件系统,

我想还是有必要了解个大概。 ext4文件系统是对于ext3文件系统的扩展。ext4已经是RHEL6的默认文件系统了。它能够支持最大16TB的单个文件和1EB的文件系统。它支持无限数量的子目录(而ext3是最多32000个子目录) 主要的特点: ext4使用extents(不像ext3和ext2那种block映射的模式),这提高了当使用大文件时候的性能和减少了大文件的元数据过载。另外,ext4标记那些未被分配的block group和相应的inode表,这样就可以当文件系统check的时候可以跳过它们不检查。这样就可以更快的检查文件系统,这个在越来越大的文件系统上是非常有用的。 分配的特点 ext4文件系统的分配模式: 持续的预分配 延迟分配 多个块同时分配 stripe-aware分配:对于底层的条带化存储来说配额和I/O是一样的一种分配行为。这是依赖于在mkfs的时候有效的条带化信息。做一致的分配I/O能够有效的避免无效的读-修改-写的周期在底层存储上。 由于延迟分配和其它的性能加速,导致ext4写文件到磁盘的行为跟ext3有所不同。程序写数据到文件系统并不保证写到磁盘上,除非程序在后面执行fsync()方法。 而默认的,ext3都会自动的几乎是立刻的强制创建文件到磁盘上,甚至不需要执行fsync()方法。这种行为隐藏了问题当程序没有使用fsync()来确认写数据到磁盘上。ext4文件系统在另外一方面,经常会等待几秒去把更改的数据写到磁盘上,允许合并和更改写比ext3拥有更好的磁盘性能。 注意事项: 不像ext3,ext4文件不用强制数据写入到磁盘就跟事务提交一样。本身,它花费更长缓存写然后刷新到磁盘上。在任何文件系统,使用数据完整的回调类似fsync()来确定数据写入到永久的存储中。 其他特性 ext4同样支持以下特性: 增强的属性(xattr),允许系统给每个文件赋予其他的name/value值。 磁盘配额日志,这样就避免在系统崩溃时候漫长的磁盘配额检查。 亚秒级别的时间线。 ext4主要的特性就是上面这些。下面一些对上面的解释。 在ext4中引入了extent的概念, 下面一些内容是摘自:http://www.ibm.com/developerworks/cn/linux/l-cn-filesrc5/ 所谓extent就是描述保存文件数据使用的连续物理块的一段范围。每个extent都是一个ext4_extent类型的结构,大小为 12 字节。 图 ext4中extent 树的布局结构

下面这个是ext3 与 ext4 磁盘布局对比。从这个图中我们可以很清楚的看到ext4中多了个group的概念