固态盘(SSD)的速度比机械硬盘快不少(400MB/s~1.7GB/s),可是价格昂贵,因此每每容量比较小。经过GlusterFS能够把多节点SSD黏合为一块大的网络SSD,能够在局域网上任意节点上链接使用,从而更方便使用,大幅度提升SSD的使用效率,提高系统速度、下降整体成本。linux
这里使用的系统为Ubuntu18.04.1 LTS版本,下面是对实验过程的一些记录。服务器
安装软件:网络
#安装ZFS系统 sudo apt install zfsutils-linux #安装GlusterFS系统 sudo apt install glusterfs-server
在全部节点上安装上面的软件,也能够经过ansible来批量完成。分布式
在每一个节点建立好zfs的存储池zpool,如:sudo zpool create zpool /dev/sda /dev/sdb /dev/sdc,更多的设置模式参见:工具
而后在每一个节点上添加存储的对端节点,以下(假设操做服务器为server1):性能
gluster peer probe server2 gluster peer probe server3
而后,确认一下设置是否成功:测试
gluster peer status
主要建立分布式卷、条带卷、副本卷三种进行测试。ui
脚本命令以下:spa
echo "建立分布式卷gvx" gluster volume create gvx \ server1:/home/supermap/gvx \ server2:/home/supermap/gvx \ server3:/home/supermap/gvx echo "建立条带卷gvxs" gluster volume create gvxs strip 3 \ server1:/home/supermap/gvxs \ server2:/home/supermap/gvxs \ server3:/home/supermap/gvxs echo "建立分布式卷gvxr" gluster volume create gvx0 replica 3 \ server1:/home/supermap/gvx \ server2:/home/supermap/gvx \ server3:/home/supermap/gvx echo "启动卷gvx gvxs gvxr" gluster volume start gvx gvxs gvxr echo "当前Gluster的卷信息:" gluster volume info
能够从任意一个节点挂载GlusterFS网络卷。以下:.net
echo "挂载分布式卷/home/supermap/gvxv" mkdir /home/supermap/gvxv mount -t glusterfs server1:/gvx /home/supermap/gvxv echo "挂载条带卷/home/supermap/gvxsv" mkdir /home/supermap/gvxsv mount -t glusterfs server1:/gvxs /home/supermap/gvxsv echo "挂载副本卷/home/supermap/gvxrv" mkdir /home/supermap/gvxrv mount -t glusterfs server1:/gvxr /home/supermap/gvxrv
使用命令 ls -l 查看目录信息,df -h查看挂载卷的信息。
使用dd进行简单的测试,以下:
echo "==============================================" echo "测试分布式SSD,基于GlusterFS。" echo "=================" echo "测试分布式卷gvxv" echo "写入:" sudo dd if=/dev/zero of=/home/supermap/gvxv/testx.img bs=1M count=20480 echo "复制:" sudo dd if=/home/supermap/gvxv/testx.img of=/home/supermap/gvxv/testx2.img bs=1M count=20480 echo "读取:" sudo dd if=/home/supermap/gvxv/testx2.img of=/dev/null bs=1M count=20480 echo "=================" echo "测试条带卷gvxsv" echo "写入:" sudo dd if=/dev/zero of=/home/supermap/gvxsv/testx.img bs=1M count=20480 echo "复制:" sudo dd if=/home/supermap/gvxsv/testx.img of=/home/supermap/gvxsv/testx2.img bs=1M count=20480 echo "读取:" sudo dd if=/home/supermap/gvxsv/testx2.img of=/dev/null bs=1M count=20480 echo "=================" echo "测试复本卷gvxrv" echo "写入:" sudo dd if=/dev/zero of=/home/supermap/gvxrv/testx.img bs=1M count=20480 echo "复制:" sudo dd if=/home/supermap/gvxrv/testx.img of=/home/supermap/gvxrv/testx2.img bs=1M count=20480 echo "读取:" sudo dd if=/home/supermap/gvxrv/testx2.img of=/dev/null bs=1M count=20480 echo "==============================================" echo "Finished, by openthings" echo "=============================================="
更细节的测试,可使用pts,具体方法参见 Ubuntu测试-使用phoronix-test-suite 。
上面的方法也适用于其它磁盘,包括经过USB链接的外置磁盘盒。