win*_*ung 18 nfs server-message-block sparse-files
这个问题之前在堆栈溢出中被问到过,但那里的好人建议我试试这里的社区。
我正在研究与各种文件系统有关的稀疏文件,并试图找到一些具体的内容,说明网络文件系统 (NFS) 或服务器消息块 (SMB) 支持稀疏文件。
我知道 SMB 在 Windows 中被广泛使用,根据这个条目,即使底层文件系统不支持,SMB 服务器也可以支持稀疏文件。但是,如果我是对的,不支持稀疏文件的文件系统只会用零填充“漏洞”,这可能会导致性能问题。
关于 NFS,我无法找到有关使用 NFS 支持稀疏文件的任何信息。
因此,我的问题是,
NFS 和 SMB 是否支持稀疏文件?
sho*_*hok 12
NFS:它对稀疏文件有部分支持。基本上,它支持创建一个稀疏文件,但在读取时,文件被扩展为包含零。这意味着,虽然您可以通过 NFS 创建一个稀疏文件,但在读回相同的文件时,传输中的网络数据将包括在原始文件中找到的任何零。一个简单的测试表明该行为:
cd /mnt/nfs
truncate test.img -s 1G
ls -lh test.img
Run Code Online (Sandbox Code Playgroud)
-rw-r--r--。1 根 1.0G 10 月 26 日 11:29 test.img
du -hs test.img
Run Code Online (Sandbox Code Playgroud)
0 测试.img
如您所见,test.img 文件的磁盘大小为 0 字节。然而,回读它使用dd if=test.img of=/dev/null bs=1M iflag=direct节目
1024+0 条记录输入
1024+0 条记录输出
1073741824 字节 (1.1 GB) 复制,10.2269 秒,105 MB/s
很明显,在传输稀疏文件时,它被扩展为包括所有零。
NFSv4.2 将通过包含对稀疏文件网络传输的特殊处理进行扩展。换句话说,使用 NFSv4.2,上述操作dd几乎可以立即完成。
SMB:它具有与 NFS 相同的行为,至少在我的测试环境中,使用带有 CIFS v1 的 Samba v3.6.x 服务器和使用 mount.cifs 的 Linux 客户端。也许在 Windows 下它的行为有所不同......
abl*_*igh 10
是的,NFS 4.2 完全支持稀疏文件(请参阅此规范文档和此演示文稿)。
在 NFS 4.2 之前,NFS 客户端/服务器模型支持稀疏文件,因为 API 支持所有 POSIX 文件操作。这意味着在支持后备文件系统上的稀疏文件的服务器上写入稀疏文件会导致创建稀疏文件(而不是存储大量零)。但是读取文件会导致稀疏元素传输大量零。IE 的答案是“部分”。
NFS 4.2 增加了客户端“查看”文件中漏洞的能力,因此服务器不必传输所有这些零。从身份证:
1.4.3. Sparse Files
Sparse files are ones which have unallocated or uninitialized data
blocks as holes in the file. Such holes are typically transferred as
0s during I/O. READ_PLUS (see Section 15.10) allows a server to send
back to the client metadata describing the hole and DEALLOCATE (see
Section 15.4) allows the client to punch holes into a file. In
addition, SEEK (see Section 15.11) is provided to scan for the next
hole or data from a given location.
Run Code Online (Sandbox Code Playgroud)
尽管规范支持稀疏文件,但懒惰的实现者可能会避免在客户端或服务器中实现对稀疏文件的支持。
我对 SMB 了解较少,但我相信如果设置了相关的 FS 功能位,它也确实支持稀疏文件。请参阅此处了解更多信息。
| 归档时间: |
|
| 查看次数: |
5051 次 |
| 最近记录: |