• [ext4]空间管理


    

     Ext4系统中,存在很多分配策略,比如预分配、多块分配、延迟分配等

     

    Prealloc预分配

    ext4系统中,对于小文件和大文件的空间申请请求,都有不同的分配策略。对用小文件的空间请求,ext4尝试从一种叫per-CPU local group中分配空间。Per-CPU Local group就是有所有该CPU所执行的分配行为共享的空间,目的是保证这些小文件的聚集在一起,便于访问。对于大文件的空间请求,ext4尝试从一种叫per-inode preallocation中分配。这点就像Ext3系统的保留空间一样,Ext4为每个文件在内存中维护一段预分配空间,用于解决并发分配情况下的碎片问题。。

     

    多块分配

    Ext3中,将新的数据写入磁盘的哪些空闲块是由块分配器来控制的。但是Ext3的块分配器存在一定缺陷,那就是它一次只能够分配一个数据块(4KB),这就意味着,如果系统需要向磁盘中写入100MB的数据,那么需要调用块分配器25600次,而且由于块分配器无法获知总的分配块数,所以也无法对分配空间和分配位置进行优化。

    Ext4中,使用了多块分配器,即一次调用可以分配多个数据块,这种机制提高了系统的性能,而且使得分配器有了充足的优化空间。

    延迟分配

    延迟分配(Delayed allocation)是一项仅仅少数现代文件系统才具有的优秀特性,比如XFSZFSbtrfs(betterFS)以及Reiser4。它能够尽可能的积累更多的数据块再分配出去,相对比,传统的文件系统则会尽快的将数据块分配出去,如Ext3reiser3等。

    这项特性会和Extents特性以及多块分配特性相结合,使得磁盘IO性能得到显著提高。

    持久预分配(Persistent preallocation

    P2P软件为了保证下载文件有足够的空间存放,常常会预先创建一个与所下载文件大小相同的空文件,以免未来的数小时或数天之内磁盘空间不足导致下载失败。 Ext4在文件系统层面实现了持久预分配并提供相应的 APIlibc中的 posix_fallocate()),比应用软件自己实现更有效率。


    作者:Younger Liu,

    本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。



     

  • 相关阅读:
    设计模式之代理模式
    Java8内存模型—永久代(PermGen)和元空间(Metaspace)
    使用jconsole分析内存情况-JVM
    JVM(Java虚拟机)优化大全和案例实战
    JVM调优总结 -Xms -Xmx -Xmn -Xss
    聊聊jvm的PermGen与Metaspace
    Jconsole
    【Java VisualVM】使用 VisualVM 进行性能分析及调优
    JAVA基础(10)——IO、NIO
    JAVA基础(9)——容器(3)——并发容器
  • 原文地址:https://www.cnblogs.com/youngerchina/p/5624477.html
Copyright © 2020-2023  润新知