发布于: Jul 29, 2022
ZFS 文件系统的存储池、缓存、快照等特性,可以为多种业务场景包括数据库、快照备份、 HPC、EDA 任务等提供可扩展的、安全的、高性能的共享文件系统
ZFS 是一个开源的文件系统,ZFS (Zettabyte File System) 是由 SUN 公司的 Jeff Bonwick 领导设计的一种基于 Solaris 的文件系统,最初发布于 2014 年 9 月 14 日。 SUN 被 Oracle 收购后,现在称为 Oracle Solaris ZFS。它有一些有趣的特性,比如:
- 存储池。ZFS 使用存储池的概念来管理物理存储,完全避免使用卷管理。ZFS 将设备聚集到存储池中,而不是强制要求创建虚拟卷。存储池描述了存储的物理特征(设备布局、数据冗余等),可以在上面创建文件系统,并充当任意的数据存储库。文件系统不再受限于单个设备,允许它们与池中的所有文件系统共享磁盘空间。对于用户来说,不再需要预先确定文件系统的大小,因为文件系统会在分配给存储池的磁盘空间内自动增长。添加新存储器后,无需执行其他操作,池中的所有文件系统即可立即使用所增加的磁盘空间。
- 缓存。ZFS 可以使用单独的高速缓存设备以改善读取性能。高速缓存设备在主内存和磁盘之间提供了一个进行高速缓存的附加层。使用高速缓存设备,可以最大程度地提高大多数静态内容的随机读取工作的性能。通过在 Amazon Web Services 提供的 I3 或者 I3en 机型里的实例存储上部署 ZFS 缓存,可以极大提高数据读取的性能
- 写时拷贝。ZFS 是事务性文件系统,数据是使用写复制语义管理的。数据永远不会被覆盖,并且任何操作序列会全部被提交或全部被忽略。因此,文件系统绝对不会因意外断电或系统崩溃而被损坏。尽管最近写入的数据片段可能丢失,但是文件系统本身将始终是一致的。此外,只有在写入同步数据(使用 O_DSYNC 标志写入)后才返回,因此同步数据决不会丢失。
- 数据完整性验证和自动修复。对于 ZFS,所有数据和元数据都通过用户可选择的校验和算法进行验证。ZFS 使用校验和的存储方式,从而可确保检测到数据块故障并可以正常地从其中进行恢复。所有校验和验证与数据恢复都是在文件系统层执行的,并且对应用程序是透明的。
- 快照。快照是文件系统或卷的只读副本,可以快速创建快照。
- RAID-Z。ZFS 还提供具有单/双/三奇偶校验容错性的 RAID-Z 配置。单奇偶校验 RAID-Z (raidz 或 raidz1) 与 RAID-5 类似。双奇偶校验 RAID-Z (raidz2) 与 RAID-6 类似。
ZFS 文件系统的存储池、缓存、快照等特性,可以为多种业务场景包括数据库、快照备份、 HPC、EDA 任务等提供可扩展的、安全的、高性能的共享文件系统。
前文已经提到,基于 Amazon I3/I3en 系列实例最高提供 60T 的本地实例存储,高达 25Gbps(最高甚至达到 100Gbps)带宽,结合 ZFS 文件系统存储池、读写缓存、快照、Raid- Z等特性,可以为 EDA 任务的 Library/Project 数据搭建一个可扩展的、安全的、低成本、高性能的共享文件系统。下图显示了一个使用了 I3 机型(以 i3.16xlarge 机型为例)以及 ZFS 搭建的共享存储架构。
性能方面,ZFS 可以使用单独的高速缓存设备以改善读取性能,因此可以充分利用 Amazon I3/I3en 的 NVMe SSD 的本地实例存储充当 ZFS 文件系统的缓存,提高共享存储的 IOPS 性能。对于 EDA 的任务,library 目录几乎是只读的场景,所以只需要挂载读缓存,而对于 home 目录或者 project 目录,可以同时挂载读/写缓存,写缓存还可以用两块 NVMe SSD 实现镜像从而提高可用性。另外,当某些场景需要的性能以上方式满足不了时,还可以直接把 Amazon I3/I3en 的 NVMe SSD 的本地实例存储做成一个 RAID 组,数据全部都存储在这些本地 NVMe SSD 上以支持超高的存储性能需求。
在扩展性方面,ZFS 的存储池可以实现动态增加 EBS 卷,从而动态扩容 ZFS 的存储容量,并且数据会在新增的存储设备上自动进行数据平衡,从而提升并发读写性能。对于大量并发 EDA 任务,或者长时间多项目的 EDA 任务,共享 Library、Project 等数据会随着时间的推移持续增长。因此,可以利用 ZFS 的存储池特性实现 EDA 共享存储的在线扩展,而不会对进行中的 EDA 任务造成任何影响。
安全方面,例如 project 目录或者 home 目录,通常会因为研发工程师在文件系统上的误操作要求恢复出某个指定时间前的文件,这个需求在前端的 HDL 阶段特别的多。由于 EDA 场景下会通过 ZFS 的存储池功能把多块 EBS 卷做成一个存储池,从而提高共享存储的性能以及容量,通过利用 ZFS 提供的快照功能,结合开源项目 Z3,可以实现 ZFS 存储池的快照存储到 Amazon S3、对象存储,从而实现数据的持久性存储以及基于快照的文件恢复。
相关文章