在我看来,大多数网络“文件共享”协议都比较陈旧、缓慢且不安全。最常用的协议似乎是 SMB、NFS 和 WebDAV。
我坐在这里,看着 iTunes 试图通过 SMB 扫描媒体库,它的速度大约是每秒 2 MB。它通过有线千兆网络连接,共享位于 RAID 阵列上,即使在搜索时,该阵列的吞吐量也可以达到 50 倍。这太荒谬了!
过去的一些文件共享协议可能包括:
- 安德鲁文件系统
- Plan9 / Inferno 的 9P/Styx 协议
- 来自旧 System V 的 RFS
- AppleShare 协议
- Novell Netware 协议
我的要求相当简单:
- 现代安全——理想情况下,使用像 SSH 这样的公钥/私钥。通过 TLS 进行隧道传输会很棒。
- 高性能——扫描文件系统或读取批量数据应以服务器和网络可以支持的速度运行。
- Windows 和 Linux 的本机客户端 - 其他的对我来说虽然不错但并不感兴趣。
- 与 Linux 和 Windows 兼容的文件锁定。
- 更改与 Linux 和 Windows 兼容的通知。
- 理想情况下,有高质量的开源实现可用,但我愿意支付少量许可费。(不,不是整个企业的“小额”——我只是一个有家庭和抵押贷款的普通人)
我是否遗漏了什么?
答案1
NFS 4 有什么问题?
现代安全——理想情况下,使用像 SSH 这样的公钥/私钥。通过 TLS 进行隧道传输会很棒。
NFS 4 提供现代身份验证。数据安全应通过 VPN 实现。
高性能——扫描文件系统或读取批量数据应以服务器和网络可以支持的速度运行。
NFS 4 在一般情况下具有相当高的性能。大量缓存、命令聚合等。
Windows 和 Linux 的本机客户端 - 其他的对我来说虽然不错但并不感兴趣。
我对此一无所知。任何合理的、广泛使用的解决方案都来自一个角落,在另一个世界中仅作为次要公民受到支持。话虽如此:我认为可以公平地说,例如,Unix 世界中对 SMB 的支持(通过 Samba)比 Windows 世界中对 NFS 的支持更好。
与 Linux 和 Windows 兼容的文件锁定。
NFS 为您提供这个。
更改与 Linux 和 Windows 兼容的通知。
好问题。我不认为 NFS 对此有很好的支持。至少我不知道有任何命令会在(元数据)服务器上发生更改时调用回调。
用 SMB 达到 2 MB/s 的速度?一定是配置错误。SMB 的速度肯定比这要快。在合理的配置下,100 MB/s(GB 线速)应该没有问题。
答案2
世界上最快的文件共享协议也无法弥补某些应用程序在编写时没有考虑远程文件系统这一事实,因此它们会分派大量小型读取或写入,并等待一个操作完成后再开始下一个操作。这对于延迟相对较低的本地磁盘来说没什么问题,但在延迟高得多的网络上就很麻烦了。
如果您希望快速扫描远程媒体库,则需要让服务器上运行的代码进行扫描并将结果一次性报告回客户端进程。
答案3
多路径 TCP在 Linux 和 Windows 上均受支持。我不确定兼容性。如果您有超过 1 条 n/w 路径,则可以使用它来提高性能。除了安全性,还要寻找可靠性。大多数启用了写入缓存的缓存系统都在这里交易。