文档章节

通过GlusterFS黏合多节点SSD剩余空间

openthings
 openthings
发布于 2018/11/14 22:07
字数 1300
阅读 100
收藏 0

固态盘(SSD)的速度比机械硬盘快很多(400MB/s~1.7GB/s),但是价格昂贵,所以往往容量比较小。通过GlusterFS可以把多节点SSD黏合为一块大的网络SSD,可以在局域网上任意节点上连接使用,从而更方便使用,大幅度提高SSD的使用效率,提升系统速度、降低总体成本。

  • 建议使用多口的万兆网络,否则网络会成为GlusterFS传输的瓶颈。
  • 带宽计算参考:一般带宽使用bps计算,标称带宽*80%/8为以Byte计算的带宽。
    • 如10Gbps网络,实际传输速度大概为1GB/s。
    • Intel 760P写入速度大概1.4GB/s,Samsung 960P写入速度大约1.7GB/s。
    • 同一个盘同时读写,速度至少减半。

这里使用的系统为Ubuntu18.04.1 LTS版本,下面是对实验过程的一些记录。

1、安装支持软件

安装软件:

#安装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

2、创建三种GlusterFS卷

主要创建分布式卷、条带卷、副本卷三种进行测试。

  • 分布式卷,将不同文件分别放到不同的节点文件夹中,可以获得一个虚拟的“大”硬盘。
    • 比如,我这三个节点分别有2T、2T、1T的空间,最后可以得到5T的GlusterFS虚拟卷。
    • 对单个文件的读写是由单节点完成,性能受制于该选中节点的最大速度。
    • 节点之间没有镜像等容错,建议节点内设置RAID1/5等容错机制。
  • 条带卷,将同一个文件分带存放到不同节点文件夹,容量加合可以获得“大”硬盘,可以并行地对条带读写,适合大文件。
  • 副本卷,将同一个文件在多个节点上复制,可以提升可靠性和读取性能,写入性能比单节点略有降低。
  • 还有一些其它的的卷类型(比如副本+条带),这里暂不做测试。

脚本命令如下:

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

3、挂载GlusterFS卷

可以从任意一个节点挂载GlusterFS网络卷。如下:

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查看挂载卷的信息。

  • 注意:显示的每个卷容量是共享的最大容量,系统并没有所显示的加和总容量。

4、性能简单测试

使用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连接的外置磁盘盒。

  • 对于机械硬盘建议使用ZFS或RAID工具建立条带或冗余机制,以加快性能和提升容错能力。

 

© 著作权归作者所有

openthings
粉丝 322
博文 1133
码字总数 685064
作品 1
东城
架构师
私信 提问
GlusterFS强制删除节点

GlusterFS中,修改了节点名称,导致找不到了,想删除掉重新加入。 没想到,gluster peer detach server02方法失败,竟然用了各种方法都删除不掉,提示节点无效(废话!有效的我还要删除么?!...

openthings
2018/11/17
129
0
Kubernetes中挂载GlusterFS的volume

Kubernetes可以直接挂载多种文件系统,其中包括GlusterFS(https://kubernetes.io/docs/concepts/storage/volumes/#glusterfs)。 这里采用最简单的方法,挂载宿主系统的GlusterFS卷给Kuber...

openthings
2018/11/26
489
0
Glusterfs简介以及其工作流程的简单分析

Glusterfs简介 GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP...

老叮当猫
2013/11/16
2.1K
2
kubernetes中部署Heketi和GlusterFS

前言 在kubernetes中,使用GlusterFS文件系统,操作步骤通常是: 创建brick-->创建volume-->创建PV-->创建PVC-->Pod挂载PVC 如果要创建多个PV,则需要手动重复执行这些繁锁步骤,Heketi可以解...

Flywithmeto
2018/07/01
0
0
换个视角深入理解GlusterFS,GlusterFS缺点分析

转自 http://blog.sina.com.cn/s/blog_6b89db7a0101gbcy.html 换个角度深入理解GlusterFS GlusterFS(GNU ClusterFile System)是一个开源的分布式文件系统,它的历史可以追溯到2006年,最初...

天飞.h
01/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Replugin借助“UI进程”来快速释放Dex

public static boolean preload(PluginInfo pi) { if (pi == null) { return false; } // 借助“UI进程”来快速释放Dex(见PluginFastInstallProviderProxy的说明) return PluginFastInsta......

Gemini-Lin
今天
4
0
Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
今天
4
0
CSS--属性

一、溢出 当内容多,元素区域小的时候,就会产生溢出效果,默认是纵向溢出 横向溢出:在内容和容器之间再套一层容器,并且内部容器要比外部容器宽 属性:overflow/overflow-x/overflow-y 取值...

wytao1995
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
7
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部