BTRFS Defragmentation
备注:本文翻译自 IBM Research Report BTRFS - Linux Btree Filesystem
在写的时候,碎片整理以两种不同方式解决。为了碎片整理一个文件,它被读取,COWed,并在下一个检查点写入磁盘。这可能会使他更加顺序,因为分配器尝试在尽可能少的extents里写出来。缺点是与旧快照的共享丢失了。在许多情况下,这个简单的算法是有效的。在一些情况下,一个更加复杂的算法维持共享是需要的。
当缩减文件系统的时候,或者从磁盘删除数据,重新分配会被使用。这是一种算法扫描一个chunk和移动实时数据,同时保持共享。重新分配是复杂的程序,无论怎么样,在我们试图减少空间消耗的时候,无视共享可能会导致空间使用量的增加。
迁移通过chunks basis 工作在一个chunk上。一般的方案是:
1.迁走所有实时的extents(在chunk中)
2.找到所有引用发到chunks中。
3.在保持共享时修复引用
写时复制方法被贯穿使用;引用永远不会更新到位。表1 展示了一个简单的例子。一个数据extent,蓝色,需要被移动。
表1:在extent tree下进行范围内的查找,在chunk中找到所有的extents,拷贝所有的实时extents到新的位置。
为了加速一些引用跟踪,我们跟随back-references去找到所有顶层树块直接或者间接地引用chunk。结果存储在一个叫做backref_cache的DIAG类的数据结构。
表2:上层节点存储在一个backref_cache.
子卷树列表从backref_cache中引用的chunk被计算;这些树被顺序的克隆,看表3。这个操作有两种影响:(1)及时冻结子卷的状态。(2)它允许在为用户提供持续操作的同时对子卷进行即时修改。
表3:迁移树。这个例子中,子卷被克隆。可以对克隆尽心更改。
接下来,所有chunks的引用都被遵循, 使用back-references。COW在reloc tree中被用于更新。看表4。
表4:使用COW去修复在reloc树中的引用
最后一步是合并reloc trees和原始的。我们遍历树。我们找到在reloc树中被修改但是对应的部分在fs tree中没有被修改的子树。这些在reloc tree中的子树与fs树中的老同行交换。最终结果是新的fs-trees。最后,我们丢弃reloc trees,他们不再需要了。表5是一个例子。
合并reloc树和对应的fs树,然后drop掉reloc树。
新的文件系统DIAG在内存中,有正确的共享结构。它和原始的使用一样的数量,这就意味着文件系统空间使用时一样的。将DIAG写出到磁盘可以在连续的范围内完成,从而提高序列性。一旦完成,老的chunk可以被丢弃。
本文翻译自:IBM Research Report - BTRFS
BTRFS Defragmentation相关推荐
- A Beginner's Guide To btrfs
写得很好,原文被墙,转载过来收藏. 原文:http://www.howtoforge.com/a-beginners-guide-to-btrfs Version 1.0 Author: Falko ...
- 下一代Linux文件系统,存储那些事儿(二): 下一代Linux文件系统BTRFS简介
BTRFS,通常念成 Butter FS,Better FS 或B-tree FS.下一代的Linux文件系统. 它基于写时拷贝(copy-on-write),支持高效的snapshot和clone. ...
- btrfs的介绍与使用
源文献:http://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/index.html#ibm-pcon 简单看了一下这篇文章,对其中一些机制的实现还 ...
- 镁光ssd管理工具 linux,在 SSD 上使用 Btrfs 文件系统的相关优化
优化挂载参数 在 Linux 中挂载 SSD 上的 btrfs,可以采用各种参数进行优化: # UUID=/btrfs defaults,ssd,discard,noatime,compress=lz ...
- LVM逻辑卷的缩减与删除,LVM逻辑卷快照,btrfs文件系统,网络管理
逻辑卷缩减 缩减的时候要注意缩减的空间不要超过文件系统的空间,不然缩减的时候会损坏文件系统. 第一步要先取消挂载(必须) 第二部检查文件完整性(必须) e2fsck -f /dev/vg0/lv0 第 ...
- 新一代 Linux 文件系统 btrfs 简介
btrfs 的特性和使用 Btrfs 被称为是下一代 Linux 文件系统.近年来 ext2/3 遇到越来越多的扩展性问题,在期待 ext4 的同时,人们发现了 btrfs,据说它采用了很多先进的文件 ...
- Btrfs入门(一)
一.LVS和btrfs btrfs自己就支持动态扩展,所以不必建立lvm 1.LVS pv-->vg--->lv PE:由PE指定, ...
- linux中的软RAID实现,逻辑卷和btrfs文件系统
RAID: Redundant Arrays of Inexpensive Disks,廉价磁盘冗余阵列: Redundant Arrays of Independent D ...
- 资料收集新一代 Linux 文件系统 btrfs 简介
来自: http://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/ Btrfs 简介 文件系统似乎是内核中比较稳定的部分,多年来,人们一直使用 ext ...
- 红帽企业版linux 7.4更新启动,红帽Linux企业版7.4 淘汰Btrfs文件系统
我们不得不承认Btrfs是一种古老的文件系统,当初(2007年)是由甲骨文宣布并进行中的COW(copy-on-write式)文件系统,意图取代Linux的ext.但是天不遂人愿,2011年8月9日, ...
最新文章
- 将整数拆分为2的幂次方
- 51Nod:1085 背包问题
- Sublime-text
- vue --- http拦截,登录登出的逻辑设计
- Docker系列之一:入门介绍
- Spring Boot中表格的请求以及表格界面的显示
- 开启docker中MongoDB的认证授权
- 代码款空题 包的使用
- mysql查询字段变慢,MySQL Query IN()子句在索引列上变慢
- CSS中可以通过哪些属性定义,使得一个DOM元素不显示在浏览器可视范围内?
- 题解【luogu2045 方格取数游戏加强版】
- L3-017 森森快递 (30 分)-PAT 团体程序设计天梯赛 GPLT
- double精度丢失问题
- idea的使用记录一
- python vecm_用Eviews处理有关VARVECM模型的几个问题
- python输出实时时间
- String类练习:我国的居民身份证号码,由由十七位数字本体码和一位数字校验码组成。
- eMule中的server无法连接问题
- java ora 01002,ORA-01002 提取违反顺序
- 代谢组与转录组联合分析方法介绍