最初为了方便维护,选择使用replication模式组建glusterfs卷,并且选择了按照主机数量来建立副本数量。这样的简化模式有以下优点:

  • 每个glusterfs节点的文件系统都是完整的副本,包括glusterfs卷的所有文件。即使glusterfs出现异常,也可以访问底层文件系统取到所有的文件。
  • 可以部署跨机房的镜像,如果某个机房故障,也能确保另外一个机房提供完整的文件系统。

不过,上述的replication模式也有缺点:

  • 文件副本是由单独的节点提供,如果应用访问有热点(例如需要反复多次读写文件),就会导致集群中某个节点负载非常高,而集群中其他节点不能起到分担负载作用。
  • 常规的双副本或者三副本使得访问某个文件最多只能由两个或者三个节点来提供服务,大量的并发访问回存在流量瓶颈。

对于某些不需要数据高可靠性(例如数据丢失也可以重建,并且丢失数据或者暂停服务无重大影响),追求高性能的应用场景,可以选择 stripe 模式,这样可以实现将文件拆分成很多数据块分布到整个集群,提供并发读写的高性能。

使用stripe模式类似条带化,要求用于大文件高负载环境 – 因为小文件拆分会导致碎片,网络性能很差。

Striped Volume

条带化卷(Striped Volume)将数据分块存储到卷的brick上,最适合非常大的文件的高压力环境。

bricks的数量也等于一个条带化卷的条带长度(stripe count)

striped_volume

创建构成brick的目录 - 以下命令在每个节点上执行

mkdir /data/s_backup

创建striped volume

gluster volume create gs_backup stripe 6 transport tcp \
gserver-1:/data/s_backup gserver-2:/data/s_backup gserver-3:/data/s_backup \
gserver-4:/data/s_backup gserver-5:/data/s_backup gserver-6:/data/s_backup

注意: stripe 6 和提供数据存储的节点数量一致

启动glusterfs卷

gluster volume start gs_backup

性能调优

glusterfs缓存对性能影响较大,高性能的文件复制环境,如果读写文件较大,超过了glusterfs默认的32MB缓存,可以将默认的缓存设置更大

采用以下命令将缓存设置成 1GB

gluster volume set gs_backup performance.cache-size 1GB

参考