zoukankan      html  css  js  c++  java
  • [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 未本地化版本许可协议进行许可。



     

  • 相关阅读:
    转:高层游戏引擎——基于OGRE所实现的高层游戏引擎框架
    转: Orz是一个基于Ogre思想的游戏开发架构
    转:Ogre源代码浅析——脚本及其解析(一)
    IntelliJ IDEA添加过滤文件或目录
    为什么要使用ConcurrentHashMap
    volatile关键字解析
    Spring Boot MyBatis 通用Mapper 自动生成代码
    使用mysql乐观锁解决并发问题
    使用Redis分布式锁处理并发,解决超卖问题
    浅析 pagehelper 分页
  • 原文地址:https://www.cnblogs.com/youngerchina/p/5624477.html
Copyright © 2011-2022 走看看