天天看點

上手更快的網絡檔案系統 —— 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.