存储大师班 | ZFS存储池块管理与事务模型

本文介绍了ZFS的起源、发展历程以及其主要特性,包括存储池的块管理、事务模型和COW机制。ZFS通过存储池实现对物理设备的动态管理和空间扩展,其COW策略确保数据一致性。此外,文章还探讨了ZFS的事务模型,保证了文件操作的原子性和数据安全性。
摘要由CSDN通过智能技术生成

ZFS History

file

  1. ZFS 的诞生:ZFS 由 Sun 存储部门的 CTO 、研究员 Jeff Bonwick 带领团队开发。开发于 2001 年,作为 Sun Microsystems Solaris 操作系统的一部分。

    • 带领开发 ZFS 的是 Jeff Bonwick。他首先有了对 ZFS 整体架构的构思,然后游说 Sun 高层,亲自组建起了 ZFS 开发团队。

    • 招募了当时刚从大学毕业的 Matt Ahrens,又从 Solaris 的 Storage Team 抽调了 UFS 部分的负责人 Mark Shellenbaum 和 Mark Maybee 来开发 ZFS。

  2. ZFS 的开源:在 2005 年,Sun 开源 Solaris 的大部分,包括 ZFS 开源;开源项目 OpenSolaris。

  3. illumos 项目成立,OpenZFS:

    • 在 2010 年,Sun 被 Oracle 收购,ZFS 成为 Oracle 的注册商标。Oracle 停止为 OpenSolaris 和 ZFS 项目提供更新的源代码,三分之二的 ZFS 核心开发者决定离开 Oracle 公司。
    • illumos 项目的成立,维护已经存在的开源的 Solaris 代码,并且在 2013 年成立 OpenZFS 以配合 ZFS 开源的发展。
  4. ZFS on Linux:2013 年,Linux 上 ZFS 的第一个稳定版本,继续发展。

ZFS Overview

file

ZFS(Zettabyte File System)是一个跨时代的文件系统,被称为最后一个单机文件系统,已经被证实可以移植到多种 OS 平台上。它拥有如下特性:

  1. 完全兼容 posix 语义(ZPL: ZFS POSIX Layer)。

  2. 提供逻辑卷功能(ZVOL: ZFS Volumes)。

  3. 提交完善的管理功能:通过 libzfs 的工具,经过 ioctl 发送管理命令到 zfs kernel module。

  4. 提供接近无限的存储空间:将物理存储设备进行池化管理,文件系统建立在设备存储池上。当文件系统空间不够,可以将物理设备动态添加存储池中。存储池上的单个文件系统极限值:

    • 支持 2^{48} 个快照。

    • 支持 2^{48} 个文件。

    • 单个文件最大 16EB。

    事务模型 + COW:

    file

  5. 事务模型和 COW 是强绑定的关系。

  • COW(Copy On Write):对文件的数据不是原地直接修改,而是拷贝更新的方式,数据块的内容更新不存在中间状态。

  • 事务:保证了对文件的一组操作都是原子性的,并且每个事务之间是相互独立的。所有文件的同一个事务 ID 的集合打包成一个事务组,进行从 file 到 root 的全局的拓扑的更新。

  • 事务 TX 和事务组 TXG 的关系(在事务模型章节详细介绍):

    • XG:在同一个事务 ID(TXG-num)下的 TX 构成一个事务组 TXG

    • 当一个 TXG 中的被需要改的数据达到一个阈值(脏数据阈值),或者周期到了,发生一次事务组的轮转,在这个事务组的 sync 结束之后,生成一个全新的 root 的拓扑树(layout)。

  1. 端到端的数据安全性:

file
file

  • 256 位的 Checksum,Checksum 的数据存储在父亲节点上。

  • 形成一棵自验证的 Merkle Tree, 当 ZFS 在 load 数据时会进行校验。

  • 它在负责读取数据的时候会自动和 256 位校验码进行校验,会主动发现这种 Silent Data Corruption:

    • 通过相应的 Mirror 硬盘或者通过 RAID-Z 阵列中其他硬盘得到正确的数据返回给上层应用,并且同时自

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值