我使用 SSHFS 在 Linux 下在笔记本和台式机之间传输文件。它比 NFS 更简单,因为不需要预先配置挂载点和权限。
现在,使用 SSHFS 的速度比我预期的 100MBit 以太网连接要慢(遗憾的是,笔记本电脑没有千兆以太网)。我得到的速度大约是 10MiB/秒,而不是 12.5MiB/秒。协议的开销能否“抵消”“其余部分”(即 2.5MiB/秒)?
从 IPv4 切换到 IPv6 并没有提高速度。使用-C
压缩使得过程更加缓慢。
SSHFS 允许将参数传递给底层 SSH(使用-o SSHOPT=VAL
)。嗯,那里有很多 SSH 参数。
根据经验,这些参数中的哪一个可以提高 SSHFS 连接的速度?
答案1
您的 100 Mb/s 链路可获得约 80 Mb/s 的速率。这非常接近链路的理论极限(您很少能获得像标称链路速度那样的速率),并且是完全合理的数字。
除此之外,除了运行加密隧道 (SSH) 的开销之外,您还需要承担 TCP 开销以及使用该连接的任何其他流量。我认为,实际上,如果不改用开销较低的协议,您不太可能实现更好的吞吐量。
答案2
sshfs -o Ciphers=arcfour,Compression=no,auto_cache
打包/解包时压缩速度变慢
arcfour 速度超快 !!!虽然!!!! 不是 100% 安全。仅限局域网
auto_cache 允许您将文件本地存储在某个临时位置,这样就不会再次通过网络访问它。
对于我来说,有了这个 1GB 的服务器连接,速度就快了一倍。
答案3
您可以使用“arcfour”作为密码来“限制”加密开销。SSH 选项是“-c arcfour”
答案4
SSHFS 通过 SSH 工作。关于 SSH 性能的关键因素之一是您用于加密数据的密码算法。SSH 开发人员不断添加新算法来加强安全性,并弃用通常较轻的旧算法。
根据两端的 SSH 版本,您可能能够通过在 SSHFS 选项或 /etc/ssh/ssh_config 文件中进行设置来使用一些较旧的较轻算法,如 arcfour 或 blowfish。
您可以使用两端的 ssh 客户端二进制文件检查可用的算法。
[root@backup]# ssh -Q cipher
3des-cbc
blowfish-cbc
cast128-cbc
arcfour
arcfour128
arcfour256
aes128-cbc
aes192-cbc
aes256-cbc
[email protected]
aes128-ctr
aes192-ctr
aes256-ctr
[email protected]
[email protected]
[email protected]
如果 arcfour 和/或 blowfish 不可用(2023 年最有可能的情况),你可以使用[电子邮件保护],这是一种非常轻量但快速的密码。
影响性能的另一个重要参数是压缩。根据您的 CPU,禁用它可能会更快,如下例所示。
compression=yes|no
缓存(用户空间和内核)可能会有所帮助,但对于新数据则不然。请谨慎使用缓存,否则最终可能会返回过时的数据。
cache=yes,kernel_cache
最简单的测试方法是在 mount 命令中包含选项。
sshfs -o [email protected],compression=no,reconnect,cache=yes,kernel_cache,ThreadCount=2 [email protected]:~/ /mnt/sshfs
除此之外,您还可以在网络中启用巨型帧,这将有助于提高传输大文件的速度。您可以在此处了解如何在 Windows 和 Linux 中设置巨型帧:
https://33hops.com/vmware-esxi-enable-jumbo-frames-increase-mtu.html