zfs 是不是没有命令进行 cow 的复制啊,还是说只有开启去重后才能达到类似的效果,我查到 btrfs 是有 cp -reflink 的,但 zfs 貌似没有。 另一个问题是微软的 refs 也有 cow ,那通过 powershell 或界面复制能达到 cp -reflink 这种效果吗,还是说只能靠 win server 上的定时去重任务来做。
1
juranjue 257 天前
zfs 整个文件系统就是机遇 cow 机制,并且无法关闭。
|
2
guoyijun163 257 天前
openzfs 2.2 支持了 block clone, 不过貌似有 bug 又给关上了
|
3
bjfane 257 天前
refs 不是说还不完全稳定的么
|
6
Jirajine 257 天前 1
Cow == copy on write
指的是 write 的过程中会发生 copy (一般来说即把覆盖写入已有数据的请求重定向到空白区块) 而不是 copy 的过程中有什么特别的行为。snapshot/dedup/cp -reflink 等等是根据这种特性(被覆盖的数据仍然存在、且是 immutable 的)实现的不同的功能。 显然不是每个 Cow 的文件系统都实现了每个 Cow 可能实现的功能。如果你要 shallow copy,硬链接或许就足够;如果你要以 copy on write 的语义创建文件的多个副本,snapshot 也可以达到。 |
8
laminux29 257 天前
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 分层存储、支持独立读写存储介质隔离。 |