我正在研究关于各种文件系统的稀疏文件,并且我试图找到一些具体的东西,表明网络文件系统(NFS)或服务器消息块(SMB)支持稀疏文件.@H_301_3@
我知道SMB在Windows中被广泛使用,根据这个entry,SMB服务器可以支持稀疏文件,即使底层文件系统没有.但是,如果我是对的,那么不支持稀疏文件的文件系统只会用零填充“漏洞”,这可能会导致性能问题.@H_301_3@
关于NFS,我无法找到有关使用支持稀疏文件的NFS的任何信息.@H_301_3@
因此,我的问题是,@H_301_3@
解决方法
cd /mnt/nfs truncate test.img -s 1G ls -lh test.img
-rw-r–r–. 1 root root 1.0G Oct 26 11:29 test.img@H_301_3@
du -hs test.img
0 test.img@H_301_3@
如您所见,test.img文件的磁盘大小为0字节.但是,使用dd if = test.img = / dev / null bs = 1M iflag = direct显示回读它@H_301_3@
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied,
10.2269 s,105 MB/s@H_301_3@
很明显,在传输稀疏文件时,它会扩展为包含全零.@H_301_3@
NFSv4.2将通过包括稀疏文件的网络传输的特殊处理来扩展.换句话说,使用NFSv4.2,上面的dd几乎可以立即完成.@H_301_3@
SMB:它与NFS具有相同的行为,至少在我的测试环境中,使用带有CIFS v1的Samba v3.6.x服务器和使用mount.cifs的Linux客户端.也许在Windows下,它表现得与众不同……@H_301_3@