Ext4 学习笔记

       Ext4 出来也一段时间了,是不是考虑引入线上系统,先了解一下Ext4有哪些改进。

       ext4 是一个改进的文件系统,在2.6.28内核中引进,debian lenny以及之前的发行版不支持ext4,ext3 可以升级到ext4 ,这个过程不可逆,debian lenny(2.6.28)不支持ext4,因为ext4还有一些实验性的特性,但是提供了ext4模块ext4dev,你可以以只读的方式挂载ext4

       tune2fs -E test_fs /dev/xxx

       mount -t ext4dev -o ro /dev/xxx /mnt/yyy

      ext3可以升级到ext4,只是可以让不支持ext4文件格式的系统来读取该分区,但是性能没有完全使用ext4的格式好,仅有少部分特性可以使用。

      Bigger File System and File Sizes:

      ext3支持16TB的文件系统和最大2TB的文件,而ext4采用48bit的块地址,可以支持1EB的文件系统和最大16TB的文件,1EB=1024PB,1PB=1024TB。

      Sub directory scalability :

      ext3支持32000个子目录,ext4对此没有限制,可以创建无限多个。

      Extents:

      ext3系统都是用块映射表来记录数据块分配给那些文件的,对于大文件这样的话效率不高,特别是当删除文件或者插入数据时,因为块映射表是针对每一个块的,而大文件有很多块,块表将会变得非常大,现代操作系统引入了一个叫做'extents'的方法,一个extents包含一些连续集中的数据块,一个100MB的文件将被分配给一个 单独的Extents,这样就不用像Ext3那样新增25600个数据块的记录(一个数据块是4KB)。而超大型文件会被分解在多个extents里。这样可以提高性能。

      Multiblock allocation:

      多块分配,当ext3写数据到磁盘上时,ext3一次分配一个4KB的块,因为不知道具体要分配多少块,因此不能做优化,ext4允许一次分配多个块,避免了过多的调用,这样就提高了性能,对延迟分配和extents很有用,ext4的这些性能不会影响磁盘的格式。

      Delayed allocation:

      延迟分配,在xfs zfs btrfs reiser4 这些少数的现代操作系统中有延迟分配这个特性,他尽可能慢的分配块,例如:一个写进程,当数据写入的时候系统会尽可能快的分配块,即使数据不立即写入磁盘而是在cache中保存一段时间,这种性能不高。还有,一个进程不断的写一个文件,连续的为写数据分配块,但是他们不知道文件是否增长了。延迟分配,换句话说就是在进程写数据时不立即分配块,当文件保持在cache中时他会延迟分配块,直到数据真的写入磁盘时才分配,这样就给了时间让块分配器优化当前的情况,延迟分配应该谨慎对待,因为很多workloads就是写入磁盘。

      Fast fsck:

      快速检查,普通的快速检查很慢,第一步他会检查系统中所有的inodes,在ext4的每组inode表中会存储一个未用inodes列表,因此fsck不会检查这些inodes,这样使fsck的效率提升了2-20倍,未使用inodes节点列表是由fsck维护而不是ext4,这就意味着你必须运行fsck得到未使用inodes节点列表,这样下一次fsck才会更快。

      Journal checksumming:

      日志效验,日志要算是磁盘中最常用的部分了,也是最容易使硬盘出问题的机制之一。如果你不幸使用一个已经崩溃的日志来恢复系统的话,将导致更大规模的系统崩溃,ext4通过检查日志数据可以知道日志块是否损坏,他还带来一个好处是把ext3中两个阶段的日志提交合并成一个步骤,在某些情况下性能可以提升20%。

      "No Journaling" mode:

      禁掉日志效验,在一些特殊情况下不需要日志效验功能,在ext4中可以禁止日志效验功能,会带来一点性能上的提升。

      Online defragmentation:

      在线碎片整理,延迟分配块,extents,多块分配有助于减少碎片,但是随着系统的使用还是会产生一些碎片,为了解决这些问题,ext4支持在线碎片整理,e4defrag可以整理文件碎片或者整个系统碎片。

      Inode-related features:

      inode相关特征,ext4把inode size从128 bytes增大到256 bytes,他需要空间存储其他内容,如:nanosecond timestamps or inode versioning,剩下的空间足够存储inode信息,他会使访问更快一些,inode预留机制,当一个目录被创建时会预留一些inode以防将来会用到,这回提升性能,因为在这样的目录下建立文件时他会使用预留的inode节点,文件的建立和删除效率更高,ext4把ext3的inode file从s提升到了ns。

      Persistent preallocation:

      持续的预分配机制,他允许应用程序预先申请磁盘空间,操作系统会分配必要的空间,但这时这些块是空的,里面并没有数据。

 


      上面只是写了一些大概的改进,具体的还请看官方文档。

      

     参考链接:

     https://ext4.wiki.kernel.org/articles/e/x/t/Ext4_Howto_d00b.html

     http://kernelnewbies.org/Ext4

转载于:https://my.oschina.net/guol/blog/37303

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值