通过 NFS 移动/复制稀疏文件

通过 NFS 移动/复制稀疏文件

我创建了一个稀疏文件

truncate -s 4T image.img

在通过 NFS 安装的 ext4 文件系统上。以下测试表明系统在识别稀疏文件方面存在问题:

cp --sparse=always /mnt/data_extension/a.img /tmp/a.img # where a.img is created the same way image.img is
rsync --sparse /mnt/data_extension/a.img /tmp/a.img

花费很长时间,而且我从不让它完成,因为该命令花费超过一秒钟的时间表明稀疏文件无法被识别,并且复制/移动孔会消耗 I/O,但事实并非如此。

tar --sparse -c -v -f /tmp/a.tar /mnt/data_extension/a.img

立即返回并生成一个 tar,如果 a.img 为空,则可以解压该 tar,如果我在里面写入某些内容(例如用创建一个伪 btrfs 文件系统sudo mkfs.btrfs /mnt/data_extension/a.img),它就会停止工作,即像上面的命令一样需要很长时间。

一切都在本地目标 ext4 文件系统上运行良好,即复制和移动演示图像a.img只需 1 秒或更短的时间。

当我将上述命令应用到实际图像时image.imgwatch du -h /local/image.img0 的大小从未更新,但它应该在写入第一个字节后更新。

安装信息/mnt/data_extension

$ mount | grep /mnt/data_extension
192.168.178.76:/volume1/data_extension on /mnt/data_extension type nfs (rw,addr=192.168.178.76)

如何image.img从 NFS 挂载移动/复制到本地文件系统,而不需要读取 4TB?!

编辑:指定sparse-version=1.0使tar客户端工作,但不通过 NFS 工作(cifs我尝试过,但行为相同)。这至少允许在服务器上对稀疏文件进行 tar 处理,并以客户端上一次不必要的 untar 操作为代价传输结果。

答案1

创建是通过支持的,将在 4.2 版中添加SEEK_SET对的支持(目前正在开发中)[fallocatehttp://www.spinics.net/lists/linux-nfs/msg44500.html]

相关内容