我正在考虑对CIFS / SMB进行写优化,以便抑制重复块的写入。例如,我从远程共享中读取文件,然后修改文件末尾附近的部分。保存文件时,我只想将实际已更改的文件部分的写请求发送回远程端。因此,基本上,抑制所有写入,直到遇到非重复写入为止。到那时,抑制将被禁用,并且将照常允许写入。问题是我找不到任何文档MS-SMB / MS-SMB2 / MS-CIFS或其他说明这是否是有效的操作。有人知道这是否有效吗?

最佳答案

深入研究Linux内核的源代码,有关于CIFS的文档-包括源代码和文本。例如。 http://www.mjmwired.net/kernel/Documentation/filesystems/cifs.txt

如果您想研究例如如果您使用CIFS协议,则可以使用Unix命令“ dd”对其进行测试。通过CIFS挂载任何远程文件系统,例如进入/media/remote。切换到该文件夹​​cd / media / remote现在创建一个包含一些随机内容的文件(例如,来自内核的随机池):dd if = / dev / urandom of = test.bin bs = 4M count = 5在此示例中,您应该看到大约20MB的流量。然后在您的计算机上的某个位置(例如,家用文件夹)创建另一个较小的文件:dd if = / dev / urandom of =〜/ test_chunk.bin bs = 4M count = 1如果尝试编写,会发生什么有趣的事情将块放入远程测试文件的特定位置:dd if =〜/ test_chunk.bin of = test.bin bs = 4M count = 1 seek = 3 conv = notrunc实际上,这仅应更改5中的块#4目标文件。
我猜您可以调整块大小...我用4 MB块做到了这一点。但这应该有助于了解网络上发生的情况。

10-04 13:51