1. 节点准备
192.168.100.101 master1
192.168.100.102 node1
192.168.100.103 node2
2. 挂载存储盘
$ mkfs.xfs -i size=512 /dev/sdb
$ mkdir -p /bricks/brick1
$ echo "/dev/sdb /bricks/brick1 xfs defaults 1 2" >> /etc/fstab
$ mount -a && mount
3. 安装GFS服务(所有节点)
$ modprobe dm_snapshot && modprobe dm_mirror && modprobe dm_thin_pool
$ sudo tee /etc/sysconfig/modules/glusterfs.modules <<-'EOF'
#!/bin/bash
/sbin/modprobe dm_snapshot
/sbin/modprobe dm_mirror
/sbin/modprobe dm_thin_pool
EOF
$ chmod +x /etc/sysconfig/modules/glusterfs.modules
$ yum install -y centos-release-gluster
$ yum install -y glusterfs-server
$ systemctl start glusterd && systemctl enable glusterd
4. 创建集群(master节点执行)
$ gluster peer probe node1
$ gluster peer probe node2
5. 安装客户端Heketi(可以master节点,也可以单独一台机器)
$ yum install -y heketi heketi-client
$ systemctl start heketi && systemctl enable heketi
6. 配置Heketi拓扑结构
sudo tee /etc/heketi/topology.json <<-'EOF'
{
"clusters": [{
"nodes": [{
"node": {
"hostnames": {
"manage": ["192.168.100.101"],
"storage": ["192.168.100.101"]
},
"zone": 1
},
"devices": ["/dev/sdc"]
}, {
"node": {
"hostnames": {
"manage": ["192.168.100.102"],
"storage": ["192.168.100.102"]
},
"zone": 1
},
"devices": ["/dev/sdc"]
}, {
"node": {
"hostnames": {
"manage": ["192.168.100.103"],
"storage": ["192.168.100.103"]
},
"zone": 1
},
"devices": ["/dev/sdc"]
}]
}]
}
EOF
7. 挂载拓扑结构
$ export HEKETI_CLI_SERVER=http://master1:8080
$ heketi-cli topology load --json=/etc/heketi/topology.json
8. 存储卷操作
-
创建 复制券(同一个文件在不同节点上各存一份)
$ gluster volume create gv1 replica 3 \ master1:/bricks/brick1/gv1 \ node1:/bricks/brick1/gv1 \ node2:/bricks/brick1/gv1
-
创建 分布式券(文件通过Hash分布在不同的节点,容量为各节点和)
$ gluster volume create gv2 \ master1:/bricks/brick1/gv2 \ node1:/bricks/brick1/gv2 \ node2:/bricks/brick1/gv2
-
启动存储卷
$ gluster volume start gv1 $ gluster volume start gv2
-
挂载存储卷
$ mkdir -p /data/gv1/ && mount -t glusterfs master1:gv1 /data/gv1/ $ mount -t glusterfs master1:gv2 /data/gv2/
其他
gluster volume list #列出glusterfs中的所有存储卷
gluster volume info #查看存储卷状态
gluster volume start models #启动名为models的存储卷
gluster volume stop models #停止名为models的存储卷
gluster volume delete models #删除名为models的存储卷
GlusterFS 五种卷
* 1. Distributed:分布式卷
文件通过 hash 算法随机分布到由 bricks 组成的卷上。
* 2. Replicated: 复制式卷
类似 RAID 1,replica 数必须等于 volume 中 brick 所包含的存储服务器数,可用性高。
* 3. Striped: 条带式卷
类似 RAID 0,stripe 数必须等于 volume 中 brick 所包含的存储服务器数,文件被分成数据块,以 Round Robin 的方式存储在 bricks 中,并发粒度是数据块,大文件性能好。
* 4. Distributed Striped: 分布式的条带卷
volume中 brick 所包含的存储服务器数必须是 stripe 的倍数(>=2倍),兼顾分布式和条带式的功能。
* 5.【推荐使用】 Distributed Replicated: 分布式的复制卷
volume 中 brick 所包含的存储服务器数必须是 replica 的倍数(>=2倍),兼顾分布式和复制式的功能。
分布式复制卷的brick顺序决定了文件分布的位置,一般来说,先是两个brick形成一个复制关系,然后两个复制关系形成分布。 企业一般用后两种,大部分会用分布式复制(可用容量为 总容量/复制份数),通过网络传输的话最好用万兆交换机,万兆网卡来做。这样就会优化一部分性能。它们的数据都是通过网络来传输的。
# 将原有的【复制卷gv1】进行扩容,使其成为分布式复制卷
$ gluster volume add-brick gv1 replica 2 \
node03:/bricks/brick1/gv1 \
node04:/bricks/brick1/gv1 \
node05:/bricks/brick1/gv1