AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 985659
Accepted
Zhro
Zhro
Asked: 2019-09-26 14:15:59 +0800 CST2019-09-26 14:15:59 +0800 CST 2019-09-26 14:15:59 +0800 CST

是否存在可以智能处理冗余块以节省磁盘空间和即时复制的文件系统?

  • 772

如果我想要复制一个非常大的连续文件(千兆字节),我的磁盘必须分配所有必要的空间并写入每个块的副本。

为什么从某种意义上说,副本不能“快速”,而是复制对块的引用并仅在进行更改时才写入新块?

我知道这将导致磁盘上的数据量(由于块引用)与磁盘似乎包含超过其实际容量的数据的可能性脱钩。这也可能导致写入占用大量空间,因为当它们从源块更改时必须写入全新的块。

这样的文件系统肯定会有独特的惩罚,但这听起来像是一个有趣的用例。

当今是否存在任何利用类似方式处理数据的文件系统?

请注意,我不是文件系统方面的专家,所以我的一些假设可能是令人尴尬的错误。我欢迎评论中的任何更正。

filesystems
  • 3 3 个回答
  • 522 Views

3 个回答

  • Voted
  1. Spooler
    2019-09-26T20:43:41+08:002019-09-26T20:43:41+08:00

    您指的是“写入时复制”或 COW 的文件系统,您所指的特定功能是 reflink 文件副本。

    COW 文件系统可以让一个新文件引用另一个文件的内容,而不是复制文件内容,只记录两个文件之间的相互增量。这使得您所说的复制过程几乎是瞬时的。

    COW 文件系统也能够使用相同的模型对现有数据进行重复数据删除。例如,请参阅带有 bedup 或 ZFS 的 BTRFS。

    这种方法的一个缺点是维护此类文件链接所需的元数据维护 - COW 文件系统往往会消耗相当多的磁盘空间来存储元数据。支持此功能和其他相关功能也需要相当多的 CPU 时间。

    • 3
  2. Best Answer
    Andrew Henle
    2019-10-17T02:45:43+08:002019-10-17T02:45:43+08:00

    你指的是一个reflink. 根据Linuxcp手册页:

    指定时--reflink[=always],执行轻量级复制,其中数据块仅在修改时才被复制。如果这不可能,则复制失败,或者如果--reflink=auto已指定,则回退到标准副本。用于--reflink=never确保执行标准副本。

    在 Linux 上,这是通过调用实现的FICLONE ioctl():

    如果一个文件系统支持文件在多个文件之间共享物理存储(“reflink”),这个ioctl(2)操作可以通过共享底层存储,使文件中的部分数据src_fd出现在dest_fd 文件中,比制作单独的物理副本更快的数据。这两个文件必须驻留在同一个文件系统中。如果文件写入发生在共享区域,文件系统必须确保更改对正在写入的文件保持私有。这种行为通常被称为“写时复制”。

    BTRFS 和Linux 内核 4.8 中的 XFS支持 Reflink :

    2016 年 8 月的 Linux 内核 4.8 增加了一个新特性,“反向映射”。这是大量计划功能的基础:快照、写入时复制 (COW) 数据、重复数据删除、reflink 副本、在线数据和元数据清理、数据丢失或坏扇区的高度准确报告以及显着改进的重建损坏或损坏的文件系统。这项工作需要更改 XFS 的磁盘格式。

    cp -z ...并且该reflink()功能在 Solaris 11.4 for ZFS 上可用。ZFS reflink 支持可能会在某个时候在 OpenZFS 和 ZFSonLinux 中可用。见https://github.com/zfsonlinux/zfs/issues/405

    • 3
  3. fmyhr
    2019-09-27T07:57:41+08:002019-09-27T07:57:41+08:00

    只需添加几个链接到@Spooler 的答案:

    • Linux 项目上的 ZFS。非常积极地开发,在我的经验中效果很好。可用于许多流行 Linux 发行版的软件包。(并与 Ubuntu 捆绑在一起。)
    • Aaron Toponce 的 ZFS 页面。有点过时了,但很好的介绍
    • 1

相关问题

  • 我如何知道 AIX 中磁盘上的文件系统是什么?

  • 控制 UNIX 目录内容用户组所有权

  • 在 Ubuntu 上将 Windows 磁盘分区与 Linux 分区合并

  • 在 VMPlayer 上 Windows 和 Linux 之间共享目录的最佳方式

  • md5sum 重复为同一台机器上的同一文件提供不同的校验和

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve