我经常使用 sshfs 通过网络挂载各种磁盘。不过,我有一台非常小的机器(配有一个 Atom 处理器),我需要使用 sshfs 从中挂载目录。
是否可以在使用 sshfs 挂载时禁用所有压缩,甚至加密,以限制挂载目录的机器上的 CPU 使用率?
答案1
虽然高性能 ssh添加无密码,arcfour 密码几乎一样快并且包含在标准中。
使用:-o Ciphers=arcfour
我一直在本地网络上使用它,我得到了 100Mbps 以太网的约 85% 或约 10.625MB/s
(回应 vava 的回答,即使 ssh 的加密关闭,sshfs 仍然是原来的状态,因为身份验证协议仍然处于活动状态,如果没有它,您可能还会使用 telnet。)
我最近发现@osgx 的注释OpenSSL:密码选择其中包括以下图表:
以下是该页面的结果部分。图表和结果值得怀疑,因为它们没有说明基准测试是如何进行的以及在什么硬件上进行的,但我认为它们相差不大。
100,000 KB/s 是我可接受的性能阈值。这表示 1 个 CPU 核心(在我的情况下是 8 个)以 100% 的利用率运行,传输 780Mbit/s 的数据(这是千兆以太网链路的合理饱和点)。
RC4 是最快的密码,如果你使用的处理器不支持澳大利亚电力学会。
AES-128 是第二快的密码,如果您有 AESNI 支持,它比 RC4 快得多。如果不支持,它会慢 54% 左右。AES-256 更慢,除非另有明确配置,否则任何支持 AES-128 的浏览器也将支持 AES-256。
上面引用的内容清楚地表明 arcfour (以及 AES澳大利亚电力学会) 可以使现代机器上的千兆链路饱和。
如果您不需要加密,hpn-ssh 的无密码会更快,但仅当您需要使用几倍于千兆链路的带宽来饱和链路或需要减少 CPU 使用率时才需要它。
答案2
对于没有加密的 sftp,使用sshfs
+socat
在服务器端运行
socat TCP4-LISTEN:7777 EXEC:/usr/lib/sftp-server
在客户端
sshfs -o directport=7777 remote:/dir /local/dir
来源:http://pl.atyp.us/wordpress/index.php/2009/09/file-transfer-fun/
答案3
没有办法禁用加密 - 毕竟这是 ssh。而且看起来压缩默认是禁用的,因为您必须使用开关请求它-C
。
但你可能需要检查~/.ssh/config
文件中有关压缩的设置。如果你在该文件顶部添加以下几行,则应禁用压缩:
Host *
Compression no
答案4
我认为,只有当压缩时间与传输数据的时间相抵时,压缩才会真正加快速度。因此,在慢速连接上进行压缩可以比不进行压缩提高速度多达 6 倍。在快速连接上进行压缩根本没有用,因为它会因您或主机系统的压缩延迟而降低速度。有些主机根本不接受压缩,因为它们不想将处理器能力花在用户身上。
我认为这个开关-o Ciphers=arcfour
会将加密速度提高到几乎不加密,并且-o cache=yes -o kernel_cache -o large_reads -o compression=no
可能会大大提高您的速度,因为它会稍微优化 sshfs。如果可以压缩,低速连接上的压缩将大大加快您的传输速度;大多数情况下都是可以的。例如,我确实在 2 Mbit/s 下行和 0.3 Mbit/s 上行连接下使用它,它将传输速度提高了大约 3-5 分钟,而不是大约 30 MByte 的 25-30 分钟。