`
standalone
  • 浏览: 613077 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Copy-On-Write Strategy in ZFS

ZFS 
阅读更多



 http://blogs.sun.com/bjoyes/entry/zfs

 

Zfs is a transaction-based filesystem, as ZFS makes copy-on-write operations when there are modifications of files from filesystems, by transactions. This means that we theorically should have on disks at a given moment a  kind of versioning of data, so an image of the data before file modification, or after, but never while the modification, so that filesystem inconsistency is normally impossible.

The transactionnal mode also means that when transaction is committed on disks, it is committed on the whole pool in an atomic way meaning that all pointers to data are updated in the same time, the uberblock and checksum for blocks too.

Here is a fantastic and very clear schema and explanation I'd like to copy from http://www.sun.com/bigadmin/.

Transaction-Based Copy-on-Write Operations

ZFS is a combination of file system and volume manager; the file system-level commands require no concept of the underlying physical disks because of storage pool virtualization. All of the high-level interactions occur through the data management unit (DMU), a concept similar to a memory management unit (MMU), only for disks instead of RAM. All of the transactions committed through the DMU are atomic, so data is never left in an inconsistent state.

In addition to being a transaction-based file system, ZFS only performs copy-on-write operations. This means that the blocks containing the in-use data on disk are never modified. The changed information is written to alternate blocks, and the block pointer to the in-use data is only moved once the write transactions are complete. This happens all the way up the file system block structure to the top block, called the uberblock.

As shown in Figure 1, transactions select unused blocks to write modified data and only then change the location to which the preceding block points.

Figure 1: Copy-On-Write Transactions
Image source: Jeff Bonwick

If the machine were to suffer a power outage in the middle of a data write, no corruption occurs because the pointer to the "good" data is not moved until the entire write is complete. (Note: The pointer to the data is the only thing that is moved.) This eliminates the need for a journaling or logging file system and any need for a fsck or mirror resync when a machine reboots unexpectedly.

  • 大小: 33.9 KB
分享到:
评论

相关推荐

    zfs-0.8.4 zfs zfs-0.8.4安装包

    ZFS(Zettabyte File System)是一款先进的、开源的文件系统,由Sun Microsystems开发,旨在提供高可用性、数据完整性以及高效的数据管理。ZFS在0.8.4版本中继续展现出其强大的功能和可靠性,尤其适合大规模存储环境...

    zfs-master.rar

    在性能优化方面,ZFS引入了“Copy-on-Write”(写时复制)策略,避免了传统文件系统在修改数据时的额外开销。另外,ZFS还具备数据压缩功能,可以在存储数据时自动进行压缩,从而节省存储空间。 最后,ZFS的用户界面...

    Pop-OS-ZFS-Install-Script-main.zip

    本文将深入探讨如何使用提供的"Pop-OS-ZFS-Install-Script-main.zip"压缩包来在ZFS文件系统上安装Pop!_OS。 首先,我们来看`README.md`文件,这是项目文档的常见组成部分,它通常包含安装步骤、注意事项和使用指南...

    sbo-zfsonlinux:适用于SlackBuilds.org的ZFS-on-Linux SlackBuild脚本

    ZFS-on-Linux是一款在Linux系统上实现Sun Microsystems的ZFS文件系统的开源项目。这个项目使得用户能够在Linux环境中享受到ZFS的强大功能,如数据完整性、快照、克隆、池化存储以及高效率的文件系统管理。...

    cockpit-zfs-manager:Cockpit ZFS Manager 是 Cockpit Linux 管理包上的交互式 ZFS

    $ sudo cp -r cockpit-zfs-manager/zfs /usr/share/cockpit 桑巴舞 自动生成的快照名称以 YYYY.MM.DD-HH.MM.SS 格式创建。 建议将以下属性添加到 Samba 配置文件中,以允许在 Windows 资源管理器中访问以前的版本:...

    zfs-tuning-handout

    ZFS(Zettabyte File System)是一种现代化的128位开源文件系统,它采用写时复制(Copy-On-Write, COW)机制来确保数据的一致性和完整性。ZFS支持多种高级功能,如快照、克隆、压缩、去重以及数据校验等,这些功能在...

    zfs-0.8.0.tar.gz

    标题中的"zfs-0.8.0.tar.gz"是一个软件源码包的名称,它包含了一个名为"zfs"的文件系统版本0.8.0的源代码。"tar.gz"是两种常见的文件打包和压缩格式的组合,即tarball(tar)和Gzip。在Linux和Unix-like操作系统中,...

    SUN Solaris ZFS介绍

    ZFS的核心优势在于其对数据完整性和性能的重视,它引入了多项创新技术,如128位地址空间、copy-on-write事务、端到端的数据校验和RAID-Z保护。 1. 128位文件系统:ZFS是世界上第一个支持128位地址空间的文件系统,...

    cpp-ZFSonLinux用于Linux的官方OpenZFS实现

    ZFS on Linux是将Sun Microsystems(现Oracle)开发的开源文件系统ZFS引入Linux内核的一个项目。ZFS最初是为Solaris操作系统设计的,它以其强大的数据完整性、高级的池管理和快照功能而闻名。在Linux环境下,ZFS on ...

    PyPI 官网下载 | zfs-replicate-1.0.0.tar.gz

    《PyPI官网下载:zfs-replicate-1.0.0.tar.gz——探索Python在分布式存储中的应用》 PyPI(Python Package Index)是Python社区的重要资源库,它为开发者提供了一个方便的平台,用于发布和下载各种Python库。在PyPI...

    zfs-prune-snapshots:从一个或多个符合给定条件的zpool中删除快照

    zfs-prune-snapshots 1w 与上述相同,但增加了详细程度,并且没有实际删除任何快照(试运行) zfs-prune-snapshots -vn 1w 删除tank1和tank2 /备份上超过3周的快照。 注意,该脚本将通过所有罐1及以下TANK2 /备份...

    zfs-remote-mirror, 关于为家庭使用设置远程ZFS镜像的详细教程.zip

    zfs-remote-mirror, 关于为家庭使用设置远程ZFS镜像的详细教程 用于家庭使用的远程镜像更新:现在使用内置 ZFS 树莓派 映像 ! 跳转到附录以获得更多信息。 in: Flash 图像,更改密钥,发送快照。 注意:对于ECC内存...

    win-zfs:Windows中ZFS的用户模式实现

    `win-zfs-master` 压缩包包含了项目的源代码和其他资源。通常,一个这样的项目会包含以下部分: 1. **源代码目录**:存放所有源代码文件,包括头文件和实现文件。 2. **构建脚本**:用于编译和构建项目的批处理或...

    ZFS-Tune-Bench:查找读写速度优化的基准程序

    《ZFS-Tune-Bench:探索Rust语言在ZFS文件系统优化中的应用》 ZFS-Tune-Bench是一款基于Rust编程语言开发的工具,专门用于测试和优化ZFS文件系统的读写性能。ZFS,全称Zettabyte File System,是由Sun Microsystems...

    debian-buster-zfs-root:将Debian 10(Buster)安装到本机ZFS根文件系统

    debian-buster-zfs-root 使用将Debian GNU / Linux 10 Buster安装到本地ZFS根文件系统。 最终的系统是一个完全可更新的debian系统,没有任何怪癖或解决方法。警告由于UEFI的问题,安全引导已被禁用,直到可以使用...

    zabbix_zfs-on-linux:zabbix模板和用户参数以在Linux上监视zfs

    在Zabbix上Linux上监视ZFS 该模板是pbergdolt完成的原始工作的修改版本,并在不久前发布在zabbix论坛上: ://www.zabbix.com/forum/zabbix-cookbook/35336-zabbix-zfs-discovery-monitoring 。 该变体的原始目录也...

    nagios-zfs-go:Nagios插件用于ZFS池状态。 用Go编写,具有便携性和超赞性!

    nagios-zfs-go Nagios检查用Go编写的ZFS池状态。 使用Go可以在不同平台上提供静态二进制文件的好处。 唯一的外部依赖项是“ zpool”,您可能在要使用它的地方。 经过测试: SmartOS v0.147 +版本:20150612T...

    zfs-recompress:在一组文件上触发ZFS压缩

    zfs-recompress.sh名称zfs - recompress.sh-在一组文件上触发ZFS压缩概要 zfs-recompress.sh [OPTION1], [OPTION2], ...描述调用zfs-recompress.sh脚本以复制,验证和覆盖当前工作目录及其所有后代目录中的所有文件...

    ZFS-iostat-to-Zabbix:将 ZFS (zpool) iostat 输出发送到 Zabbix 服务器的 Shell 脚本

    此脚本已在 ZFS-on-Linux (Ubuntu 14.04) 和 FreeBSD(10.0 和 10.1)上进行了测试。 我们发布了这个,因为我们找不到这个问题的任何解决方案,其他人似乎在同一条船上。 关于如何使用它的文档在脚本本身中。 我们...

Global site tag (gtag.js) - Google Analytics