1. 程式人生 > >更快的網路檔案系統 —— Oxfs

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


更多詳情,可以訪問 Oxfs 專案首頁:https://github.com/RainMark/oxfs