Answers:
sshfs使用SSH文件传输协议,这意味着加密。
如果仅通过NFS挂载,则由于未加密,因此当然会更快。
您是否要在同一网络上装载卷?然后使用NFS。
scp
速度却和一样慢sshfs
。
如果需要提高sshfs连接的速度,请尝试以下选项:
oauto_cache,reconnect,defer_permissions,noappledouble,nolocalcaches,no_readahead
命令将是:
sshfs remote:/path/to/folder local -oauto_cache,reconnect,defer_permissions
defer_permissions
(未知选项)。
nolocalcaches
降低性能吗?这有矛盾吗?auto_cache
no_readahead
呢
除了已经提出的完全有效的使用Samba / NFS的解决方案外,您还sshfs
可以通过提供-o Ciphers=arcfour
选项来实现更快的坚持速度(通过使用更快的加密(身份验证将像往常一样安全,但是传输的数据本身将更容易解密))到sshfs
。如果您的计算机的CPU较弱,此功能特别有用。
-oCipher=arcfour
使用随机数据创建的141 MB文件对我的测试没有影响。
我没有其他推荐的方法,但是我可以提供有关如何加快sshfs速度的建议:
sshfs -o cache_timeout=115200 -o attr_timeout=115200 ...
当您尝试读取会话中早先已检索到的文件的内容或权限时,这应该避免某些往返请求。
sshfs在本地模拟删除和更改,因此,尽管超时很大,但由于将自动删除缓存的数据,因此应立即显示在本地计算机上进行的新更改。
但是,如果远程文件可能在本地机器不知情的情况下(例如,由其他用户或远程ssh shell进行)更新,则不建议使用这些选项。在这种情况下,较低的超时时间将是可取的。
这是我尝试过的一些其他选项,尽管我不确定它们是否有所作为:
sshfs_opts="-o auto_cache -o cache_timeout=115200 -o attr_timeout=115200 \
-o entry_timeout=1200 -o max_readahead=90000 -o large_read -o big_writes \
-o no_remote_lock"
工作流中最大的问题是,当我尝试读取许多文件夹(例如在一棵深树中)时,因为sshfs分别为每个文件夹执行往返请求。这也可能是您遇到Eclipse的瓶颈。
并行请求多个文件夹可以帮助解决此问题,但是大多数应用程序却不这样做:它们是为具有预读缓存的低延迟文件系统设计的,因此它们在等待一个文件状态完成之前便转到下一个。
但是sshfs可以做的是先查看远程文件系统,在我请求它们之前收集文件夹统计信息,并在不立即占用连接时将它们发送给我。这将使用更多带宽(来自从未使用的前瞻数据),但可以提高速度。
我们可以通过在开始执行任务之前甚至在后台进行任务时运行sshfs来进行一些预读缓存:
find project/folder/on/mounted/fs > /dev/null &
这应该预先缓存所有目录条目,从而减少往返后的一些开销。(当然,您需要像我之前提供的那样使用较大的超时,否则此缓存的数据将在您的应用访问之前被清除。)
但这find
将花费很长时间。与其他应用程序一样,它在请求下一个文件夹之前等待一个文件夹的结果。
通过要求多个查找过程查找不同的文件夹,可以减少总时间。我还没有测试过,看看是否真的更有效。这取决于sshfs是否允许并行请求。(我认为是。)
find project/folder/on/mounted/fs/A > /dev/null &
find project/folder/on/mounted/fs/B > /dev/null &
find project/folder/on/mounted/fs/C > /dev/null &
如果您还想预缓存文件内容,则可以尝试以下操作:
tar c project/folder/on/mounted/fs > /dev/null &
显然,这将花费更长的时间,将传输大量数据,并要求您拥有巨大的缓存大小。但是,完成后,访问文件应该会感觉很好且快速。
SSHFS确实很慢,因为它即使不需要传输文件内容(执行cp时)也可以传输文件内容。我向上游和Debian报告了此问题,但没有回应:/
mv
。不幸的是,当您在cp
本地运行时,FUSE仅看到打开文件进行读写的请求。它不知道您正在复制文件。熔断它看起来与普通文件写入没有什么不同。因此,我担心除非本地cp
变得更加支持FUSE / FUSE,否则无法解决此问题。(或者FUSE cp
像rsync一样怀疑a时可能会发送块哈希而不是整个块,但这会很复杂,并且可能会使其他操作变慢。)
经过搜索和试用。我刚刚发现增加-o Compression=no
速度很多。延迟可能是由压缩和解压缩过程引起的。此外,使用“ Ciphers = aes128-ctr”似乎比其他人快,而一些帖子对此做了一些实验。然后,我的命令是这样的:
sshfs -o allow_other,transform_symlinks,follow_symlinks,IdentityFile = / Users / maple / .ssh / id_rsa -o auto_cache,重新连接,defer_permissions -o Ciphers = aes128-ctr -o Compression = no maple@123.123.123.123〜/ home / map / mntpoint
如果文件很大,则使用NFS或Samba。将NFS与720p电影和废话结合使用确实是一种PITA。Samba会做得更好,由于其他许多原因,我不喜欢Samba,因此通常不推荐这样做。
对于小文件,NFS应该可以。
以root身份登录。
通过使用“ cd /”访问顶级目录。
然后,确保已创建一个安装文件夹,或使用“ mkdir folder_name”创建一个安装文件夹。
之后,只需使用“ mount xxxx:/ remote_mount_directory / local_mount_directory”。
如果一切都顺利进行,那么在此之前您应该已经成功安装了。您可能要检查并确保使用“ exportfs”命令共享目标目录,以确保能够找到它们。
希望这可以帮助。这不是来自lvie环境,它已经在使用VMware和Fedora 16的LAN上进行了测试。