初探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的概念


关于 Timo
XNIX SA & MYSQL DBA

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: