ZFS简介¶
ZFS历史¶
在很久很久以前的1980年代(计算机行业真是风云变换),计算机行业曾经有一个技术非常超前公司Sun(提出了震撼人心的 网络就是计算机
)。
这家影响了计算机行业的伟大公司,发明了JAVA和Solaris。曾经碾压Linux的Solaris操作系统,直到今天依然有着影响深远的文件系统ZFS,被移植到BSD和Linux系统,依然是众多文件系统中的翘楚。
备注
John Gage 在 1980 年代提出了“网络就是计算机”宣传口号,之后被 Sun 使用了数十年,直到 2010 年被甲骨文收购。
2019年,CDN 服务商Cloudflare 得到了这个口号,宣布它已经注册了商标。John Gage 对此到看得很开。但其他前 Sun 雇员则认为 “网络就是计算机” 永远是 Sun 的口号,无论是不是商标。 – Cloudflare 得到了 Sun 的“网络就是计算机”商标
今天(2020年)来回看ZFS文件系统,你会发现历时20年(2001年Matthew Ahrens 和 Jeff Bonwick开发出了ZFS)最初作为Sun Microsystem公司的Solaris核心文件系统,焕发出了强大的生命力:
2008年,ZFS被移植到FreeBSD
同年, ZFS on Linux 项目将ZFS引入Linux
2013年, OpenZFS项目 创建,维护和管理了核心ZFS代码,被广泛用于Unix-like系统中 (从2010年8月的OpenSolaris中Fork出代码)
ZFS集成了逻辑卷管理的文件系统,具有高扩展性,并且提供了大量保护措施防止数据损坏(存储在磁盘中数据可能会 腐败
),并且支持大存储容量、提供高性能数据压缩、卷管理也提供了快照以及写时复制、连续性完整性检查和自动修复,以及高级的RAID-Z(类似RAID5/6),并且提供原生NFSv4 ACL等功能。
ZFS最初是Solaris平台的专有软件,虽然企业级性能非常强大,但是由于闭源,所以和BSD/Linux没有什么关系。但是随着Sun公司的商业战略调整(因为受到Linux的竞争压力),Solaris从2005年开始开源大部分系统,使得ZFS基于CDDL协议进入开源领域,作为OpenSolaris项目的一部分。
2010年Sun被Oralce收购,Oracle停滞了OpenSolaris和ZFS开源更新,使得Oracle ZFS转为闭源。因此2013年,开源社区成立了 illumos 项目继续维护现有开源的Solaris项目,并且在2013年成立OpenZFS继续ZFS的开源发展。OpenZFS维护了核心ZFS代码,以及相关验证和集成工作,使得OpenZFS在UNIX系统中广泛使用。
备注
Don’t Use ZFS on Linux: Linus Torvalds Linux社区灵魂Linus并不信任Oracle公司,以及拒绝将ZFS引入Linux内核,除非Oracle采用GPL协议fableZFS。
ZFS特性¶
ZFS是 128 位文件系统,这个设计如此超前,以至于理论极限可能在当前现实中永远无法遇到 (OMG,我只能赞叹) – 项目领导Bonwick曾说:”要填满一个128位的文件系统,将耗尽地球上所有存储设备。除非你拥有煮沸整个海洋的能量,不然你不可能将其填满。”
特性:
写时复制
快照
克隆
动态条带化
可变块尺寸
轻量化文件系统创建
透明加密
我的实践规划¶
我在很多年前就开始接触和使用ZFS,最早是在一家电子邮件服务商公司工作时,部署和维护 Solaris 系统,曾经学习和使用 ZFS ,对其超前的性能和功能有很深的印象(另一项Solaris杀手锏技术是zones,也就是后来大火的容器技术)。
我在桌面上实践ZFS,并计划在后续 私有云架构 / 移动云架构 作为主要的存储架构来部署,不断增加实践经验:
2022年10月:
在公司配备的 Apple ARM架构芯片M1 Pro 的MacBook Pro上构建 移动云架构 (底层操作系统是基于 Arch Linux 的 Asahi Linux ) (补充: 由于
OpenZFS
目前仅最高内核v6.0,和 Asahi Linux 最新内核 v6.1冲突,所以暂时放弃在 Apple ARM架构芯片M1 Pro 的MacBook Pro上运行ZFS)在我自己的旧MacBook Pro 2013上采用ZFS来管理 Docker Atlas 和 Libvirt虚拟机管理器 存储
在 私有云架构 所使用的 HPE ProLiant DL160 Gen9服务器 ,使用了3块旧的HDD,构建ZFS存储池:
构建 libvirt ZFS存储池 ,扩展本地 libvirt 存储,以便能够运行较大存储规格的KVM虚拟机
构建 在Ubuntu的ZFS存储上部署Gluster ,通过3个Ubuntu虚拟机来实现测试环境的GlusterFS集群,模拟一些有趣的案例