[ext4]空间管理 - 分配机制
来源:互联网 发布:神仙道 源码 编辑:程序博客网 时间:2024/06/06 00:59
在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)是一项仅仅少数现代文件系统才具有的优秀特性,比如XFS、ZFS、btrfs(betterFS)以及Reiser4。它能够尽可能的积累更多的数据块再分配出去,相对比,传统的文件系统则会尽快的将数据块分配出去,如Ext3,reiser3等。
这项特性会和Extents特性以及多块分配特性相结合,使得磁盘IO性能得到显著提高。
持久预分配(Persistent preallocation)
P2P软件为了保证下载文件有足够的空间存放,常常会预先创建一个与所下载文件大小相同的空文件,以免未来的数小时或数天之内磁盘空间不足导致下载失败。 Ext4在文件系统层面实现了持久预分配并提供相应的 API(libc中的 posix_fallocate()),比应用软件自己实现更有效率。
作者:Younger Liu,
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。
- [ext4]空间管理 - 分配机制
- [ext4]13 空间管理 - Prealloc分配机制
- [ext4]空间管理 - 与分配相关的关键数据结构
- [ext4]空间管理 - 查找块
- ext4的延迟分配
- ext4的延迟分配
- 内存管理第二谈:内存分配机制
- 内存管理 ---slab机制 分配对象
- EXT4文件系统之多块分配
- ORACLE空间管理实验2:区的管理与分配
- ext4 日志空间操作ext4_journalled_aops
- ext4 节点空间操作ext4_aops
- 空间分配
- 文件逻辑结构、外存分配和空闲空间管理
- linux内核用户地址空间分配与管理
- window磁盘管理下面的“未分配”与“可用空间”
- ext4文件系统错误处理机制
- Ext4使用总结(四)Ext4跨命名空间 引用
- POJ 2251 Dungeon Master
- tcp/ip状态变迁
- spring3,struts2,hibernate,junit,设计模式视频教程下载
- 10个精妙的Java编码最佳实践
- 10391 - Compound Words(stl map)
- [ext4]空间管理 - 分配机制
- [LeetCode] Single Number
- 双网卡绑定
- 深入学习JDK 线程池(之五)
- cocos2d-x 通过JNI实现c/c++和Android的java层函数交互
- 整合Eclipse与Tomcat开发第一个WEB程序
- C# 中点击按钮datagridview自行添加一空白行!
- [LeetCode] Single Number II
- android,viewpage实现应用程序员宝典;扩展包不管什么android版本都可以用;第一次安装使用从封面到提示帮助界面