Vagrant共享目錄檔案系統sshfs、nfs、vboxfs、native fs效能比較測試
工作中使用vagrant作為開發環境,一直比較懶,直接用的預設方式共享目錄,但隨著專案越來越大,而且我的筆記本一般又不關機,都是直接合上,導致系統越來越慢,不但在guest中慢(比如切換目錄要1秒),連在host上開啟目錄也變得很慢。
終於有一天實在受不了,決定查查原因,網上看了很多文章,包括官網的文件,瞭解到大概有這樣幾種共享目錄的方式:
NFS、RSync、SMB、sshfs、vboxfs、unionfs
其中
- RSync和Unionfs不是我的菜,因為它們是基於同步原理,同樣的檔案,host和guest中都得留一份。(當然我也沒配置成功,說是ssh無許可權,但我用預設私鑰ssh是正常的)
- SMB也不是我的菜,因為它會留下一下匿名的共享賬戶,安全性很成問題(當然我也沒配置成功,只要設定type為smb,vagrant啟動時就會卡在啟動第一步:clean port什麼的)
- nfs官方說明:NFS folders do not work on Windows hosts.不過有個外掛vagrant-winnfsd安裝一下就可以支援了。
- sshfs資料很少,僅有的幾篇文章中說它的效能不錯。
- vboxfs為預設的共享目錄檔案系統,都說效能很差,我日常應用時,如果長時間不重啟系統,也會覺得有點卡。
不過一直很少有看到對這幾種系統的效能作一個全面對比的評測。
所以我決定用幾個簡單的測試大體看看sshfs、nfs、vboxfs、native的效能到底有多大區別。
測試環境為:Vagrant 1.9.7, VirtualBox 5.1.26, 每次切換掛載的檔案系統前用df -T 檢視檔案系統,防止vb使用預設檔案系統掛載。
測試A:大量檔案及目錄的資訊讀取 (命令:sync;time du -h /www)
測試B:大量檔案及目錄的資訊讀取(warm) (命令:sync;time du -h /www)
測試C:大量檔案的內容讀取 (命令:sync;time ./read.sh)
測試D:大量檔案的內容讀取(warm) (命令:sync;time ./read.sh
測試E:1GB連續檔案的寫入 (命令:sync;time bash -c "(dd if=/dev/zero of=/tmp/test.dd bs=50K count=20000;sync)")
測試F:10000個100KB檔案的寫入 (命令:sync;time ./write.sh)
測試G:10000個100KB檔案的刪除 (命令:sync;time rm /www/test -R)
其中我選擇了一個我日常開發所在的專案目錄 /www來掛載到virtualBox中,總大小為2.88GB, 共80079個檔案, 12254個資料夾,含有多個深層目錄,對它的一次遍歷也是挺耗時的。兩個指令碼如下:
#! /bin/bash
###read.sh
#read file in directory recursively
function read_dir(){
for file in `ls $1`
do
if [ -d $1"/"$file ]
then
read_dir $1"/"$file
else
cat $1"/"$file > /dev/null
fi
done
}
read_dir /www
#!/bin/bash
###write.sh
#large amount of small file write
for (( i = 1; i <=10000; i++ ))
do
dd if=/dev/zero of=/www/test/${i}.dd bs=100K count=1;sync
done
測試成績如下:
結果格式 h:m:s.ms |
sshfs (目錄大小為2.8GB) |
nfs (目錄大小為2.8GB) |
vboxfs (目錄大小為2.8GB) |
native (目錄大小為3.3GB) |
---|---|---|---|---|
測試A 大量檔案及目錄的資訊讀取 |
10:14 | 1:15 | 1:35 | 23 s |
測試B (warm A) |
10:12 | 1:28 | 1:35 | 19 s |
測試C 大量檔案的內容讀取 |
1:45:17.58 | 7:55.11 | 9:22.67 | 9:15.17 |
測試D (warm C) |
1:46:11.21 | 7:53.79 | 9:23.76 | 8:36.96 |
測試E 1GB連續檔案的寫入 |
1:05.9013 15.5 MB/s |
29.5498 s 34.7 MB/s |
30.3650 s 33.7 MB/s |
4.30492 s 238 MB/s |
測試F 10000個100KB檔案的寫入 |
17:12.82 | 2:12.43 | 2:16.95 | 2:09.65 |
測試G 10000個100KB檔案的刪除 |
34.227 s | 10.152 s | 14.860 s | 1.096 s |
從資料上看nfs和vboxfs的差距並不大,但是nfs寫入時會有莫名其妙的問題,有時在java中無法建立中文目錄,也不報錯,但是同樣的程式碼僅僅將共享目錄換成vboxfs就可以正常建立中文目錄。因此我覺得還是繼續用預設的vboxfs吧,我把pm2的watch和webpack的watch都關閉掉,感覺也流暢了不少,只是在目錄切換時還是會停留1-2s,懷疑是git的原因。
由於時間和精力有限,沒能做更多的測試,如有不對處歡迎指正。
相關推薦
Vagrant共享目錄檔案系統sshfs、nfs、vboxfs、native fs效能比較測試
工作中使用vagrant作為開發環境,一直比較懶,直接用的預設方式共享目錄,但隨著專案越來越大,而且我的筆記本一般又不關機,都是直接合上,導致系統越來越慢,不但在guest中慢(比如切換目錄要1秒),連在host上開啟目錄也變得很慢。 終於有一天實在受不了,決定查查原因,
開啟 NFS 檔案系統提升 Vagrant 共享目錄的效能
開發十年,就只剩下這套架構體系了! >>>
nfs啟動:u-boot啟動後從ubuntu tftp下載核心及裝置樹,檔案系統掛載在nfs伺服器目錄
U-Boot# setenv netargs "setenv bootargs console=${console} ${optargs} root=/dev/nfs rootfstype=nfsroot nfsroot=${serverip}:${rootpath} ip=${ipaddr
NFS介紹、NFS服務端安裝配置、NFS配置選項、exportfs命令、NFS客戶端問題 、FTP介紹、用vsftpd搭建ftp、xshell使用xftp傳輸檔案、使用pure-ftpd搭建ftp服務
一、NFS介紹 NFS(Network File System)即網路檔案系統,是FreeBSD支援的檔案系統中的一種,它允許網路中的計算機之間通過TCP/IP網路共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS伺服器上的檔案,就像
mini6410基於linux2.6.36核心通過NFS啟動根檔案系統總結(四製作根檔案系統及通過NFS掛載檔案系統)
本系列文章有本人yinjiabin製作,轉載請註明出處: http://blog.csdn.net/yinjiabin/article/details/7489563根檔案系統一般包括: 1)基本的檔案系統結構,包含一些必須的目錄,比如:/dev,/proc,/bin,/
基於busybox製作mini2440根檔案系統及使用nfs掛載
常見的檔案系統有yaffs2, jffs2,他們是適用於根檔案系統映象存在於NAND Flash上的情況。而傳統的Linux EXT2/EXT3檔案系統格式適用於傳統的block裝置,比如SD卡或者硬碟。 cramfs同時適用於以上兩種情況。其不管採用哪種格式,核心都必
AIX 5L支援的5種檔案系統:JFS,JFS2,NFS,CDRFS,UDFS
JFS(Journaled File System): 日誌型檔案系統JFS2(Enhanced Journalted File System): 增強的日誌型檔案系統NFS(Network File System): 網路檔案系統CDRFS(C
C#訪問共享目錄 得到共享目錄檔案列表和修改裡面的檔案
建一個IdentityScope類,並引用相應的包using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Intero
jz2440開發板製作燒寫根檔案系統,使用NFS啟動
1在製作根檔案系統時,需要用到mkyaffs2image命令(這個命令檔案需要去相應資料夾中去拷貝) 將相應命令檔案拷貝到/bin/ 目錄中 增加可執行許可權 chmod +x /bin/mkyaffs2image 2mkyaffs2image命令用法 mkyaff
busybox檔案系統與簡單驅動學習(1)-busybox檔案系統搭建與nfs掛載配置
一、busybox編譯安裝 2、參考資料:訊為4412精英版開發手冊9.5章節 3、實際操作環境:Ubuntu14.04、交叉編譯環境 arm-none-linux-gnueabi-(直接用訊為提供的,也可以網上用其他的)、busybox版本
C# 讀取共享目錄檔案
建立連線 public static bool connectShareDoc(string path, string userName, string passWord) {
linux不同伺服器間共享目錄配置過程,通過nfs共享目錄
假設有機器:22.5.242.1(目錄 /appfs盤需要和其他ip共享)、22.5.242.2、22.5.242.3 22.5.242.1機器的/appfs 目錄硬碟需要共享給 22.5.242.2機器和22.5.242.3機器 方法: 1)在22.5.242.1 機器
Linux 虛擬檔案系統四大物件:超級塊、inode、dentry、file之間關係
更多嵌入式原創文章,請關注公眾號:一口Linux # 一:檔案系統 ## 1. 什麼是檔案系統? 作業系統中負責管理和儲存檔案資訊的軟體機構稱為檔案管理系統,簡稱檔案系統。 通常檔案系統是用於儲存和組織檔案的一種機制,便於對檔案進行方便的查詢與訪問。 檔案系統是對檔案儲存裝置的空間進行組織和分配,負責
java自動裝箱、自動拆箱和正常情況效能比較
自動裝箱和自動拆箱是java5.0版本引入的,能自動將基本型別轉換為對應的基本型別包裝物件,那麼我們比較一下他們的效能情況。 package com.wmmad.test; import junit.framework.TestCase; /** * @author ma
對於Synchronized、ReentrantLock、Atomic、CAS在併發下面的效能比較測試
對於Synchronized、ReentrantLock、Atomic、CAS在併發下面的效能比較,在JDK1.6和JDK1.8下面測試通過。 我們考慮一個最簡單的併發場景,對物件自增欄位在併發下面的處理: 介面:Counter public interface Co
讓Vagrant在Windwos下支持使用NFS/SMB共享文件夾從而解決目錄共享IO緩慢的問題
隱患 1.0 erl set ring htm minute 情況 如果 此問題是在擁有相同配置的環境中,項目在win10跑的慢而在win7就正常的情況下發現的,一步步調試之後發現是文件操作的相關行為變的很慢,於是考慮到可能是系統問題,後來在如下鏈接找到了解決辦法:http
Atitit 分散式檔案系統 hdfs nfs fastfs 目錄 1. 分散式檔案系統 1 2. 什麼是FastDFS 1 2.1. FastDFS特性: 1 2.1.1. fastdfs是否可在
Atitit 分散式檔案系統 hdfs nfs fastfs 目錄 1. 分散式檔案系統 1 2. 什麼是FastDFS 1 2.1. FastDFS特性: 1 2.1.1. fastdfs是否可在windows系統下安裝?可以的話,哪位可以..._百度知道 2
Atittit HDFS hadoop 大資料檔案系統java使用總結 目錄 1. 作業系統,進行操作 1 2. Hdfs 類似nfs ftp遠端分散式檔案服務 2 3. 啟動hdfs服務start
Atittit HDFS hadoop 大資料檔案系統java使用總結 目錄 1. 作業系統,進行操作 1 2. Hdfs 類似nfs ftp遠端分散式檔案服務 2 3. 啟動hdfs服務start-dfs.cmd 2 3.1. 配置core-site
常見檔案系統對比分析(NFS、GFS、NAS)
本章我們來分析下常見檔案系統對比分析,這裡我們主要講解NFS、GFS、NAS相關概念及區別。 《一》NFS NFS 是Network File System的縮寫,中文解釋是網路檔案系統,它是FreeBSD支援的檔案系統中的一種,它允許網路中的計算機之間通過TCP/IP網路共享資源。在N
01: 儲存技術與應用 iSCSI技術應用 、 udev配置 NFS網路檔案系統 、 Multipath多路徑 、 NFS網路檔案系統 、 udev配置
Top NSD CLUSTER DAY01 1 案例1:配置iSCSI服務 1.1 問題 本案例要求先搭建好一臺iSCSI伺服器,並將整個磁碟共享給客戶端: 伺服器上要額外配置一塊硬碟 服務端安裝target,並將新加的硬碟配置為iSCSI 的共享磁碟 在客