Chinaunix首页 | 论坛 | 博客
  • 博客访问: 407735
  • 博文数量: 48
  • 博客积分: 764
  • 博客等级: 上士
  • 技术积分: 1133
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-17 13:29
文章分类

全部博文(48)

文章存档

2014年(5)

2013年(34)

2012年(9)

分类: LINUX

2013-08-19 11:18:49

== Structure ==
1 扩展性 (scalability)  为大型存储设计,不仅限于此。Extent,B-Tree 和动态 inode 创建
2 数据一致性 (data integrity) ,cow , checksum
3 多设备管理 快照 (snapshot),和克隆 (clone) 管理多个物理设备,使得传统的卷管理软件变得多余。
4 延迟分配,小文件的存储优化,目录索引

== Understand ==
scalability
======
1 Btree 管理
btrfs 文件系统中所有的 metadata 都由 BTree 管理,如目录。
不同的tree也是由Btree 管理的。
FS Tree 管理文件相关的元数据,如 inode,dir 等
 Chunk tree 管理设备,每一个磁盘设备都在 Chunk Tree 中有一个 item 
Extent Tree 管理磁盘空间分配,btrfs 每分配一段磁盘空间,便将该磁盘空间的信息插入到 Extent tree 。类似于vmalloc 区 和进程地址空间。
checksum Tree 保存数据块的校验和。
2 基于 Extent 的文件存储
 extent 替代 block 来管理磁盘。起始block + length 等于extent
Ext 使用 bitmap 来达到这个目的。bitmap有时哟会很大。
一个是一个block一个bit,10个blok 10个bit,另外一个不管多大都是start block + length
3 动态 inode 分配
 ext2 中 inode 区是被预先固定分配的
 inode 只是 BTree 中的一个节点

data integrity
========
COW,即每次写磁盘数据时,先将更新数据写入一个新的 block,当新数据写入成功之后,再更新相关的数据结构指向新 block 。
类似于内核中RCU锁机制。
2 事务,保证必须所有步骤都成功才算成功。
3 Checksum

多设备管理
=======
为了灵活利用设备空间,Btrfs 将磁盘空间划分为多个 chunk 。每个 chunk 可以使用不同的磁盘空间分配策略。比如某些 chunk 只存放 metadata,某些 chunk 只存放数据。一些 chunk 可以配置为 mirror,而另一些 chunk 则可以配置为 stripe 。这为用户提供了非常灵活的配置可能性。

Subvolume
=======
Subvolume 是很优雅的一个概念。即把文件系统的一部分配置为一个完整的子文件系统,称之为 subvolume 。

快照和克隆
=====

RAID
===
RAID0 阵列,从而变成了一个大容量的磁盘; RAID1 和更高级的 RAID 配置还提供了数据冗余保护

Delay allocation
=========
延迟分配的一段时间内,磁盘分配器可以收到很多的分配请求,一些请求也许可以合并,一些请求在这段延迟期间甚至可能被取消。通过这样的“等待”,往往能够减少不必要的分配,也有可能将多个小的分配请求合并为一个大的请求,从而提高 IO 效率。
Inline file
====
 btrfs 将小文件的内容保存在元数据中,不再额外分配存放文件数据的磁盘块。改善了内部碎片问题,也增加了文件的访问效率。
阅读(2279) | 评论(0) | 转发(0) |
0

上一篇:Kernel —— Grsecurity

下一篇:Kernel —— TCP

给主人留下些什么吧!~~