V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
YUyu101
V2EX  ›  NAS

关于文件系统 cow

  •  
  •   YUyu101 · 45 天前 · 1591 次点击
    这是一个创建于 45 天前的主题,其中的信息可能已经有所发展或是发生改变。

    zfs 是不是没有命令进行 cow 的复制啊,还是说只有开启去重后才能达到类似的效果,我查到 btrfs 是有 cp -reflink 的,但 zfs 貌似没有。 另一个问题是微软的 refs 也有 cow ,那通过 powershell 或界面复制能达到 cp -reflink 这种效果吗,还是说只能靠 win server 上的定时去重任务来做。

    8 条回复    2024-03-13 22:43:47 +08:00
    juranjue
        1
    juranjue  
       45 天前
    zfs 整个文件系统就是机遇 cow 机制,并且无法关闭。
    guoyijun163
        2
    guoyijun163  
       45 天前
    openzfs 2.2 支持了 block clone, 不过貌似有 bug 又给关上了
    bjfane
        3
    bjfane  
       45 天前
    refs 不是说还不完全稳定的么
    YUyu101
        4
    YUyu101  
    OP
       45 天前
    @juranjue 但直接复制的话不是 cow ,网上搜到 btrfs 倒是有这功能
    juranjue
        5
    juranjue  
       45 天前
    @YUyu101 是我理解错了 reflink 的功能,相当于 ZFS 对单个文件进行 Deduplication
    Jirajine
        6
    Jirajine  
       45 天前   ❤️ 1
    Cow == copy on write
    指的是 write 的过程中会发生 copy (一般来说即把覆盖写入已有数据的请求重定向到空白区块)
    而不是 copy 的过程中有什么特别的行为。snapshot/dedup/cp -reflink 等等是根据这种特性(被覆盖的数据仍然存在、且是 immutable 的)实现的不同的功能。
    显然不是每个 Cow 的文件系统都实现了每个 Cow 可能实现的功能。如果你要 shallow copy,硬链接或许就足够;如果你要以 copy on write 的语义创建文件的多个副本,snapshot 也可以达到。
    YUyu101
        7
    YUyu101  
    OP
       45 天前
    @Jirajine 清楚了,感谢,目前是在 zfs 上用的硬链接,snapshot 貌似也不能对单个文件使用,感觉不太便利。
    laminux29
        8
    laminux29  
       45 天前
    1.楼主需要的,其实是 zfs 的实时去重功能,当新建 zfs pool 后,是需要手动开启的:
    zfs set dedup=on New-ZFS-Pool-Name

    2.COW ,或者说 Copy on Write ,这个名字是有问题的,因为它没考虑到对原始文件的相同区域 write 了相同的 data ,相当于原始文件没有发生任何更改,此时就不需要对原始文件进行复制出新版本的操作。

    更严谨的叫法,应该是 Copy on Update:COU 。

    也就是说,只有当一个原始文件的某一个引用,对其进行修改时,才能对原始文件,进行复制出新版本的行为。修改操作主要有 3 种:改动已有字节、append 、删除并新建相当于 realloc

    3. ZFS 是目前地球上最强单机 FS ,不仅是因为它支持实时去重,而且支持实时 zstd 或 lz4 压缩、支持 raid 、支持热备盘、支持 cache disk 分层存储、支持独立读写存储介质隔离。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1032 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:37 · PVG 02:37 · LAX 11:37 · JFK 14:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.