一、測試目的:
1、測試分布卷(Distributed)、分布式復制卷(Distributed-Replicate)、條帶卷(Strip)和分布式條帶復制卷(Distributed-Strip-Replicate)的讀寫性能。
2、測試網絡對文件系統讀寫性能的影響。
一、測試准備:
1、三台千兆網測試機:dn151,dn152,dn154。每台測試機上有七塊1T硬盤,dn151等是測試機的hostname。hostname配置方式,以及glusterfs的安裝見https://www.cnblogs.com/ForestCherry/p/10876049.html。
2、創建目錄:mkdir -p /data01 /data02 /data03 /data04 /data05 /data06 /data07 /Distributed-test /Distributed-Replicate-test /Strip-test /Distributed-Strip-Replicate-test(前面的是磁盤掛載目錄,后面是卷節點掛載目錄)
3、掛載磁盤:mount /dev/sdb /data01;mount /dev/sdc /data02;mount /dev/sdb /data03;mount /dev/sde /data04;mount /dev/sdf /data05;mount /dev/sdg /data06;mount /dev/sdh /data07;
4、測試命令:time dd if=/dev/zero bs=1M count=4096 of=4G.file(也可以借助fio工具測試)
三、開始測試:
1、創建gluster集群:gluster peer probe dn152;gluster peer probe dn154(這里是在dn151上創建的,也可以在其他兩台上創建)
2、創建卷:(任意一台上執行)
1)gluster volume create Distributed-Strip-Replicate-test strip 2 replica 2 dn151:/data01 dn152:/data01 dn151:/data02 dn152:/data02 dn151:/data03 dn152:/data03 dn151:/data04 dn152:/data04 force 創建分布式條帶復制卷
2)gluster volume create Distributed-test dn151:/data05 dn152:/data05 force 創建分布卷
3)gluster volume create Strip-test strip 2 dn151:/data06 dn152:/data06 force 創建條帶卷
4)gluster volume create Distributed-Replicate-test replica 2 151:/data07 dn152:/data07 force 創建分布式復制卷
3、啟動卷:gluster volume start Distributed-Strip-Replicate-test;gluster volume start Distributed-test; gluster volume start Strip-test;gluster volume start Distributed-Replicate-test(任意一台上執行)
4、掛載卷:mount -t glusterfs dn151:/Distributed-Replicate-test Distributed-Replicate-test;mount -t glusterfs dn151:/Distributed-Strip-Replicate-test Distributed-Strip-Replicate-test; mount -t glusterfs dn151:/Distributed-test Distributed-test;mount -t glusterfs dn151:/Strip-test Strip-test(每台上都要執行)
5、查看卷信息:gluster volume info
圖一:




6、測試及現象:
dn151上:
圖二:

dn152上:
圖三:

dn154上:
圖四:

dn151上:
圖五:

dn152上:
圖六:

說明:上訴dd命令是在一台上執行完后再去另一台上執行(相當於只測試了讀或寫),如果幾台同時執行dd(相當於並發讀寫測試),那么性能會有所下降。
四、測試結果分析:(來自小白的簡單分析,可能不准確,求大神指教)
1、glusterfs下讀寫請求的處理流程分析:請參照https://www.cnblogs.com/chaozhu/p/6402000.html
2、從圖二或圖三或圖四可以看出:本地 > 條帶卷 > 分布卷 ≈ 復制卷 ≈ 分布式條帶復制卷
分析:
1)條帶卷大於分布卷:結合圖五圖六可以看出,在dn151上執行dd命令,分布卷目錄下根據哈希算法,隨機將文件4G.flie151存儲在dn152:/data05上;而條帶卷是將4G.flie151分別存在dn151和dn152上的/data06上。所以就跨網來說,分布卷時4G全部使用socket存儲,而條帶卷只有2G文件通過socket存儲,所以此時表現條帶卷速度大於分布卷(如果分布卷存儲通過哈希算法,在dn151上也將文件存儲在dn151上,那么肯定是分布卷速度遠大於條帶卷速度,讀者可自行測試)。
2)值得一提,創建條帶卷時,當Number of Bricks: 為n*2(n >= 2)時,如果創建語句為:gluster volume create Strip-test strip 2 dn151:/data06 dn151:/data07 dn152:/data06 dn152:/data07 force(未跨網絡分段),
如果創建語句為:gluster volume create Strip-test strip 2 dn151:/data06 dn152:/data06 dn151/data07 dn152:/data07 force(跨網絡分段,不好的習慣,性能下降),兩者的速度是不一樣的,前者速度明顯大於后者。
3)分布式復制卷 ≈ 分布式條帶復制卷:測試文件不夠大或者網絡條件制約(千兆網的傳輸速率門檻大概在128MB/s),沒體現出條帶卷的優勢。
2、圖二和圖三和圖四對比可得:圖四 < 圖三 = 圖二
分析:拿復制卷來說。
1)無論是在dn151上執行還是在dn152上執行,文件都是先在本地創建了4G.flie151或4G.flie152,然后再通過socke備份到另一台上,而當本地執行完請求后就會返回;而在dn154上執行,是要通過socket將文件存儲到dn151和dn152上,所以返回響應會更久。
2)從結果117MB/s的測試結果可以看出,網絡是制約影響文件系統讀寫性能的主要因素。
3、求指教:
1、以上分析是在當前條件下測試,結果和分析可能不太准確,如有不當,還請指教。
2、網上說fuse層對性能的影響很小,那么為什么在本地執行dd命令和通過flusterfs的掛載目錄執行dd命令速度會慢那么多(咱們可以在dn151上執行 gluster volume create test-volume dn151:/test1 /dn151:/test2 force試一下)
3、求大神對上面的測試結果進行專業的分析。
