出品|开源中国

文|局长

FreeBSD 基金会宣布了 ZFS 的一项新特性:RAID-Z Expansion

centos通过光纤挂载磁盘阵列(ZFS引入RAID-Z)(1)

根据介绍,此功能可以对现有的数据进行重新排列 (reflow) —— 本质上是将数据重写到一个新的磁盘阵列上,即在原来的组加上一个新增加的磁盘。此操作会在逻辑 RAID-Z 组的末尾创建一个新的相邻空闲空间块,从而在每个物理磁盘的末尾也进行同样的操作。

重新排列的数据会保留原始的逻辑 stripe width,这意味着数据与奇偶校验位的比率将保持不变。新写入的数据会使用新的逻辑 stripe width,并优化数据与奇偶校验位的比率。和其他 zfs 和 zpool 操作一样,重新排列操作会在线进行。

Expansion 可以多次进行,不过前提是存储池处于健康状态,如果磁盘挂掉,此过程会被暂停,以允许被重新构建,目前适用于 RAIDZ-1/2/3。

下面的两张图说明了 RAID 4/5/6 的传统扩展方式(图 1)与新 RAID-Z Expansion 工作方式(图 2)之间的差异。

centos通过光纤挂载磁盘阵列(ZFS引入RAID-Z)(2)

▲ 图 1

重新排列的数据不会改变或读取块指针。读取和写入是按顺序进行的。空间图显示了哪些数据需要被复制。此外,每个 logical stripe 都是独立的,无需知道奇偶校验的位置。分段则仍然存储在不同的磁盘上,这保证了数据的冗余。

centos通过光纤挂载磁盘阵列(ZFS引入RAID-Z)(3)

▲ 图 2

使用方法

从命令行开始:

zpoolattachtestraidz2-0/var/tmp/6

centos通过光纤挂载磁盘阵列(ZFS引入RAID-Z)(4)

centos通过光纤挂载磁盘阵列(ZFS引入RAID-Z)(5)

虽然 RAID-Z Expansion 的所有功能都已实现,而且到目前为止所有的测试都已通过,但仍有一些未尽事宜需要解决。具体来说,还需要清理代码、删除冗长的日志,编写代码文档,以及其他类似的相对较小的任务。官方称目标是在第三季度前完成这些工作。不过最需要额外帮助的是进一步测试该功能,并在集成此功能前进行代码审查。


,