天天看点

上手更快的网络文件系统 —— oxfs

什么时候需要网络文件系统?

  • 做嵌入式的同学经常会使用 NFS 讲 host 上的某个目录挂载到开发板上,方便 host 上编译构建后能直接在板子上运行,减少手工拷贝操作。
  • 网站开发时,在 host 上利用 IDE 进行开发后,发到线上机器上运行测试时,使用网络文件系统能更快的减少数据同步,提高开发效率。
  • C/C++ 等大型项目开发时,团队使用统一的开发机构建代码时,使用网络文件系统能够挂载开发机文件到本地,你可以方便的使用易用的图形化编辑器写代码。
  • 各种各样的原因,你需要使用网络文件系统,但是你的网络够快吗?网路文件系统还能再快吗?

NFS 还是 SSHFS ?

  • 笔者用过 NFS,也用过 SSHF,都挺不错。但是在网络条件不理想的时候,卡顿现象非常明显。
  • 网络条件不够理想时使用图形化的软件编辑远程文件体验很不好,尤其是使用 oh my zsh 这样重量级的插件工作在远端的文件目录时。
  • 网上曾有人对比过 NFS 和 SSHFS (http://www.admin-magazine.com/HPC/Articles/Sharing-Data-with-SSHFS),SSHFS 确实相对来说很不错。
  • 知道笔者用上了 oxfs 以后,这个问题终于缓解了 :)

Oxfs 介绍

  • Oxfs 是一个类似与 SSHFS 的用户态网络文件系统,底层数据传输基于 SFTP 协议。
  • Oxfs 引入异步延迟同步策略解决网络速度与用户文件读写速度不匹配引起的卡顿问题。
    • Oxfs 写文件时,会首先写入本地缓存文件,并提交异步更新任务将内容更新到远程主机上。
    • 同样的,读文件时优先从本地缓存文件中进行读取。
    • Oxfs 的数据缓存最终落到磁盘,几遍是重新挂载后,依旧可以利用历史缓存。
  • 同样的,Oxfs 也引入了文件属性,目录结构的 Memory 缓存,对齐了 SSHFS。
  • 可以说,Oxfs 是替代 SSHFS 的一个更好选择 :)

Oxfs 用法

  • Oxfs 的安装非常简单。
$ pip install oxfs           
  • Oxfs 的用法也很简单。
$ mkdir remote
$ sudo oxfs -s [email protected] -m remote -r /home/oxfs -p /tmp/oxfs           
  • -s

    配置远程主机访问的地址和用户,要求远程主机上配置了当前机器的 SSH 公钥。
  • -m

    设置本地挂载点。
  • -r

    设置要挂载到本地的远程主机目录。
  • -p

    设置 Oxfs 运行时工作目录,用于数据缓存。

Oxfs 性能

  • 摘录来自 Oxfs Github 主页。
  • Oxfs vs Sshfs
  • Sshfs performance (default parameters).
    • Sshfs enable the kernel cache by default, that's why re-read is deadly fast.
  • Oxfs performance (default parameters).
    • Oxfs just enable the fuse auto_cache flag.