Btrfs支持写时复制。我试图使用该功能来克隆目录:
cp -R --reflink=always foo_directory foo_directory.mirror
我希望该命令几乎立即完成(如btrfs subvolume snapshot
),但是该cp
命令似乎执行了缓慢的标准复制。
根据手册页,我希望--reflink=always
强制执行写时复制:
当指定--reflink [= always]时,执行轻量级复制,仅在修改时复制数据块。如果这不可能,则复制失败,或者如果指定了--reflink = auto,则退回到标准副本。
问题:
--reflink=always
不起作用吗?cp --reflink=always
几乎可以肯定地正常工作。如果不是,您将得到一个错误。按照设计,这之间的区别--reflink=always
和--reflink=auto
。该错误看起来像这样:
# Filesystem that does not support the feature at all
cp: failed to clone `xx' from `yy': Inappropriate ioctl for device
# Filesystem that does support it, but copy across filesystems
cp: failed to clone `xx' from `yy': Invalid cross-device link
您是否正在复制包含许多小文件的目录结构?在那种情况下,cp
仍然必须创建每个目录并打开和关闭每个文件,因此与不同,它仍然需要时间btrfs subvolume snapshot
。这最有可能解释了执行该操作所花费的时间。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句