Linux 写时复制文件系统
前小节介绍了 Linux 日志系统,本小节介绍 Linux 写时复制系统。
1. ZFS 系统介绍
ZFS
系统的为 Zettabyte File Sy
,也叫动态系统(Dynamic File Sy
),是第 128
位系统。最初是由 Sun
公司为 Solaris 10
操作系统开发的系统。作为 OpenSolaris
开源计划的一部分,ZFS
于 2005 年 11 月发布,被 Sun
称为是终极系统,经历了 10
年的活跃开发。而最新的开发将全面开放,并重新命名为 OpenZFS
。
ZFS
是一款 128bit
系统,总容量是现有 64bit
系统的 1.84x10^19
倍,其的单个存储卷容量达到 16EiB
(2^64byte
,即 16x1024x1024TB
); zpool
存储池可以拥有 2^64
个卷,总容量最大 256ZiB
(2^78 byte
);整个系统又可以拥有 2^64
个存储 池。可以说在相当长的未来时间内,ZFS
几乎不太可能出现存储空间不足的问题。另外,它还拥有自优化,校验数据完整性,存储池/卷系统易管理等诸多优点。较 ext3
系统有较大运行速率,提高大约 30%-40%
。
ZFS
系统是革命性的全新的系统,它从根本上改变了系统的管理方式,这个系统的特色和其带来的好处至今没有其他系统可以与之媲美,ZFS
被设计成强大的、可并易于管理的。ZFS
用 “存储池” 的概念来管理物理存储空间。过去,系统都是构建在物理设备之上的。为了管理这些物理设备,并为数据提供冗余,“卷管理” 的概念提供了单设备的映像。但是这种设计了复杂性,同时根本没法使系统向更高层次发展,因为系统不能跨越数据的物理位置。
ZFS
完全抛弃了 “卷管理”,不再创建虚拟的卷,而是把所有设备集中到存储池中来进行管理,“存储池” 描述了存储的物理特征(设备的布局,数据的冗余等等),并扮演能够系统的专门存储空间。从此,系统不再局限于单独的物理设备,而且系统还允许物理设备把他们的那些系统共享到这个 “池” 中。你也不再需要预先规划好系统的大小,因为系统可以在 “池” 的空间内的增大。当新的存贮介质时,所有 “池” 中的所有系统能立即使用新增的空间,而不需要额外的操作。在很多情况下,存储池扮演了虚拟内存。
ZFS
使用一种写时拷贝事务模型技术。所有系统中的块指针都 256 位的能在读时被重新校验的关于目标块的校验和。含有活动数据的块从来不被覆盖;而是分配新块,并把过的数据写在新块上。所有与该块相关的元数据块都被重新读、分配和重写。为了减少该过程的开销,多次读写更新被归纳为事件组,并且在必要的时候使用日志来同步写操作。
利用写时拷贝使 ZFS
的快照和事物的实现变得更简单和自然,快照更灵活。缺点是,COW
使碎片化问题更加严重,对于顺序写的大,如果以后的对其中的一部分进行了更改,那么这个在硬盘上的物理地址就变得不再连续,未来的顺序读会变得比较差。
2. BTRFS 系统介绍
BTRFS
(通常念成 Butter FS
),由 Oracle
于 2007 年宣布并进行中的 COW
(copy-on-write
式)系统。目标是取代 Linux ext3
系统,改善 ext3
的限制,特别是单一大小的限制,总系统大小限制以及加入校验和特性。加入 ext3/4
未的一些,例如可写的磁盘快照(snapshots
),以及递归的快照(snapshots of snapshots
),内建磁盘阵列(RAID
),子卷(Subvolumes
)的概念,允许在线调整系统大小。
首先是扩展性 (scalability
) 相关的特性,btrfs
最重要的设计目标是应对大型机器对系统的扩展性要求。 Extent
、B-Tree
和动态 inode
创建等特性保证了 btrfs
在大型机器上仍有卓越的表现,其整体而不会随着系统容量的而降低。其次是数据一致性 (data integrity
) 相关的特性。系统面临不可预料的硬件故障,Btrfs
采用 COW
事务技术来保证系统的一致性。 btrfs
还 checksum
,避免了 silent corrupt
的出现。而传统系统则无法做到这一点。第三是和多设备管理相关的特性。 Btrfs
创建快照 (snapshot
),和克隆 (clone
) 。 btrfs
还能够方便的管理多个物理设备,使得传统的卷管理软件变得多余。最后是其他难以归类的特性。这些特性都是比较先进的技术,能够显著提高系统的时间/空间,延迟分配,小的存储优化,目录索引等。
3. BTRFS 系统特性
可由底层多个物理卷进行。
数据存储形式 RAID
,同时在联机的情况下进行“硬盘”、“移除硬盘”、“系统的大小”。
写时复制更新机制,即当我们时,btrfs先复制一份原,对新进行,结束时,原名指向新。
卷的快照和快照的快照。
透明压缩,即当系统存储时,系统会将进行压缩再存储,当时,系统进行解压缩,但是看不到此过程。
扩展性 (scalability
),btrfs
最重要的设计目标是应对大型机器对系统的扩展性要求。Extent
、B-Tree
、inode
创建等特性保证了 btrfs
在大型机器上仍有卓越的表现,其整体而不会随着系统容量的而降低。
数据一致性 (data integrity
)。系统面临不可预料的硬件故障,Btrfs
采用 COW
事务技术来保证系统的一致性。 btrfs
还 checksum
,避免了 silent corrupt
的出现。而传统系统则无法做到这一点。
多设备管理相关的特性。 Btrfs
创建快照 (snapshot
)、克隆 (clone
) 。 btrfs
还能够方便的管理多个物理设备,使得传统的卷管理软件变得多余。
4. 小结
本小节介绍了 ZFS
、BTRFS
两种写时复制系统,写时复制系统采用了日志式技术,你就必须在安全性和之间选择,尽管数据模式日志提供了最高的安全性,但是会对带来影响,因为索引节点和数据都需要被日志化,就系统而言,日志式的另一种选择是一种叫 写时复制
的技术。