1. 复制卷
复制卷(Replicated Glusterfs Volume,又称AFR(Auto File Replication)),特点如下:
- 每个文件同步复制镜像到多个brick,相当于文件级raid1;
- 副本数量通常设置为2或3,设置的副本数量需要是brick数量(至少为2)的倍数(如2台brick server,可设置副本数为2/4/6/…;如3台brick server,可设置副本数为3/6/9/…;依次类推),且每个brick的容量相等;
- 读性能提升,写性能下降,因为glusterfs的复制是同步事务操作,即写文件时,先把这个文件锁住,然后同时写两个或多个副本,写完后解锁,操作结束(ceph采用异步写副本,即写到一个主OSD便返回,这个OSD再通过内部网络异步写到其余OSD);
- 通常与分布式卷或条带卷组合使用,解决前两者的冗余问题;
- 提升数据可靠性,但磁盘利用率低;
- 副本数设置为2时,可能会有脑裂(Split-brain)的风险(风险提示,但可配置),主要因在两个副本不一致时,无法仲裁以哪个副本为准,解决方案是加入仲裁或者设置3副本。
1)创建复制卷
# 命令:gluster volume create NEW-VOLNAME [replica COUNT] [transport [tcp | rdma | tcp,rdma]] NEW-BRICK... # 以上命令在任意server节点操作均可,以glusterfs01节点为例; # 创建名为”replica-volume”的逻辑卷; # 必须指定卷类型(默认为分布式卷)与对应的副本数量,数量需要与后续使用brick server数量对等; # “transport tcp”指定集群通信方式; # 副本数为2时,有脑裂风险提示,提示采用3副本或仲裁机制,验证环境略过即可 [[email protected] ~]# gluster volume create replica-volume replica 2 transport tcp glusterfs01:/brick1/repl_volume glusterfs02:/brick2/repl_volume
2)启动卷
[[email protected] ~]# gluster volume start replica-volume [[email protected] ~]# gluster volume info replica-volume
3)client挂载
[[email protected] ~]# mkdir /mnt/replica [[email protected] ~]# mount.glusterfs 172.30.200.51:replica-volume /mnt/replica/
4)查看挂载情况
# 已挂载卷的容量是1个brick的容量 [[email protected] ~]# df -Th
5)存储测试
# 在client的挂载目录下创建若干文件 [[email protected] ~]# cd /mnt/replica/ [[email protected] replica]# touch replica{1..4}.txt # 向replica1.txt文件写入内容 [[email protected] replica]# echo "this is replica1.txt" >> replica1.txt # glusterfs01节点 [[email protected] ~]# tree /brick1/repl_volume/ [[email protected] ~]# cat /brick1/repl_volume/replica1.txt
# glusterfs02节点 [[email protected] ~]# tree /brick2/repl_volume/ [[email protected] ~]# cat /brick2/repl_volume/replica1.txt
结论:复制卷将1个文件同步镜像到多个brick server,数据有冗余备份。