【发布时间】:2020-12-29 12:41:45
【问题描述】:
我的文件系统 (FS)(特别是 ZFS)支持写时复制 (COW),即复制(如果操作正确)是一种非常便宜的常量操作,实际上并不复制底层内容。仅在我编写/修改新文件后才会复制内容。
实际上,我刚刚发现,ZFS-on-Linux 实际上还没有为用户空间实现这一点(对吧?)。 但是例如BTRFS 或 XFS 都有。 (见here, here, here, here.)
对于 (GNU) cp 实用程序,您将传递 --reflink=always 选项
(见here。)
cp 致电ioctl (dest_fd, FICLONE, src_fd)
(见here、here)。
如何在 Python 中获得这种行为(如果可能)?
我假设“零拷贝”(例如here via os.sendfile)不会导致这种行为,对吧?因为查看shutils _fastcopy_sendfile 实现(here),它仍然是使用一些自定义字节数(假设是块大小,max(os.fstat(infd).st_size, 2 ** 23))围绕os.sendfile 的循环。还是会?
COW,这是文件级别还是块级别?
如果可能的话,我也希望它是通用的和跨平台的,尽管我的问题有点集中在 Linux 上。
一个专门关于 Mac 的相关问题似乎是this。
MacOSX cp 有 -c 选项来克隆文件。
【问题讨论】:
标签: python copy-on-write