Cur*_*ind 92 linux remote filesystems nfs sshfs
我一直在使用 sshfs 远程工作,但它真的很慢而且很烦人,尤其是当我在上面使用 eclipse 时。
有没有更快的方法在本地挂载远程文件系统?我的第一要务是速度。
远程机器是 Fedora 15,本地机器是 Ubuntu 10.10。如有必要,我也可以在本地使用 Windows XP。
Mee*_*com 51
如果您需要提高 sshfs 连接的速度,请尝试以下选项:
oauto_cache,reconnect,defer_permissions,noappledouble,nolocalcaches,no_readahead
Run Code Online (Sandbox Code Playgroud)
命令将是:
sshfs remote:/path/to/folder local -oauto_cache,reconnect,defer_permissions
Run Code Online (Sandbox Code Playgroud)
ala*_*and 22
除了已经提出的使用 Samba/NFS 的解决方案,这是完全有效的,您还可以sshfs
通过使用更快的加密来实现一些速度提升(身份验证将像往常一样安全,但传输的数据本身更容易解密)通过提供-o Ciphers=arcfour
选项到sshfs
。如果您的机器 CPU 较弱,这将特别有用。
小智 20
sshfs 使用的是 SSH 文件传输协议,这意味着加密。
如果你只是通过 NFS 挂载,它当然更快,因为没有加密。
您是否尝试在同一网络上安装卷?然后使用 NFS。
joe*_*dle 15
我没有任何替代方法可以推荐,但我可以提供有关如何加速 sshfs 的建议:
sshfs -o cache_timeout=115200 -o attr_timeout=115200 ...
Run Code Online (Sandbox Code Playgroud)
当您尝试读取先前在会话中检索到的文件的内容或权限时,这应该可以避免一些往返请求。
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"
Run Code Online (Sandbox Code Playgroud)
我的工作流程中最大的问题是当我尝试读取许多文件夹时,例如在深树中,因为 sshfs 分别为每个文件夹执行往返请求。这也可能是您在使用 Eclipse 时遇到的瓶颈。
并行请求多个文件夹可能会对此有所帮助,但大多数应用程序不会这样做:它们是为具有预读缓存的低延迟文件系统而设计的,因此它们会等待一个文件统计信息完成,然后再转到下一个.
但是 sshfs 可以做的是提前查看远程文件系统,在我请求之前收集文件夹统计信息,并在连接没有立即被占用时将它们发送给我。这将使用更多带宽(来自从未使用过的前瞻数据)但可以提高速度。
我们可以强制 sshfs 进行一些预读缓存,方法是在您开始执行任务之前运行它,或者甚至在您的任务已经进行时在后台运行:
find project/folder/on/mounted/fs > /dev/null &
Run Code Online (Sandbox Code Playgroud)
这应该预先缓存所有目录条目,减少往返行程的一些后期开销。(当然,你需要像我之前提供的那样使用大超时,否则这个缓存的数据将在你的应用程序访问它之前被清除。)
但这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 &
Run Code Online (Sandbox Code Playgroud)
如果你还想预缓存文件内容,你可以试试这个:
tar c project/folder/on/mounted/fs > /dev/null &
Run Code Online (Sandbox Code Playgroud)
显然,这将花费更长的时间,将传输大量数据,并且需要您拥有巨大的缓存大小。但是当它完成时,访问文件应该感觉很好而且很快。
小智 7
经过搜索和试用。我刚刚发现增加-o Compression=no
了很多速度。延迟可能是由压缩和解压缩过程引起的。此外,使用 'Ciphers=aes128-ctr' 似乎比其他人更快,而一些帖子对此做了一些实验。然后,我的命令是这样的:
sshfs -o allow_other,transform_symlinks,follow_symlinks,IdentityFile=/Users/maple/.ssh/id_rsa -o auto_cache,reconnect,defer_permissions -o Ciphers=aes128-ctr -o Compression=no maple@123.123.13:123. / 点
归档时间: |
|
查看次数: |
93172 次 |
最近记录: |