glusterfs+ctdb+samba+nfs-ganesha(非完整版本)
如需完整版本,请留言联系。由于花费了太多心血,需给个买雪糕红包,嘿嘿!
GlusterFS是一个免费的开源可扩展文件系统,可用于数据存储在本地网络中。它可用于通过DNS轮循机制设置具有故障转移和负载平衡的双活文件系统群集。
一、安装操作系统配置基础环境
1、操作系统环境(2块磁盘、3张网卡、安装GUI)
[[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) |
2、基础环境配置(3个节点均需操作)
1)关闭防火墙 #为了避免干扰,这里把防火墙关闭 [[email protected] ~]# systemctl stop firewalld.service [[email protected] ~]# systemctl disable firewalld.service 2)关闭selinux #重启生效 3)可以连接公网,使用yum安装所需的包 4)添加host解析 #所有节点 [[email protected] ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.0.60.33 msnode1 172.0.60.34 msnode2 172.0.60.35 msnode3 |
3、hostname and IPs
管理网络
Hostname |
IP-address |
msnode1 |
172.0.60.33 |
msnode2 |
172.0.60.34 |
msnode3 |
172.0.60.35 |
心跳网络
Hostname |
IP-address |
msnode1 |
11.7.8.33 |
msnode2 |
11.7.8.34 |
msnode3 |
11.7.8.35 |
服务网络
Hostname |
IP-address |
msnode1 |
192.168.2.100 |
msnode2 |
192.168.2.101 |
msnode3 |
192.168.2.102 |
挂载点
Mountpoint |
What to mount |
/gluster |
每个节点挂载brick |
/glusterfs |
每个节点挂载volume |
4、创建本地文件系统(3个节点均需操作)
[[email protected] ~]# fdisk /dev/sdb
[[email protected] ~]# mkfs.xfs /dev/sdb1 #建议创建xfs文件系统
[[email protected] ~]# mkdir /gluster [[email protected] ~]# mount /dev/sdb1 /gluster/ [[email protected] ~]# echo /dev/sdb1 /gluster xfs defaults 0 0 >> /etc/fstab #配置自动挂载,配置完,请重启检查前面步骤是否有错,如正常可以新建快照保留此刻状态。
|
二、gluster环境搭建
1)安装gluster包(所有节点执行)
[[email protected] ~]# yum install centos-release-gluster #Using Storage SIG Yum 源 [[email protected] ~]# yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma #安装gluster相关包 安装成功会显示complete! [[email protected] ~]# systemctl enable glusterd.service [[email protected] ~]# systemctl start glusterd.service [[email protected] ~]# systemctl status glusterd.service ● glusterd.service - GlusterFS, a clustered file-system server Loaded: loaded (/usr/lib/systemd/system/glusterd.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-06-06 19:13:59 CST; 11s ago Docs: man:glusterd(8) Process: 32449 ExecStart=/usr/sbin/glusterd -p /var/run/glusterd.pid --log-level $LOG_LEVEL $GLUSTERD_OPTIONS (code=exited, status=0/SUCCESS) Main PID: 32451 (glusterd) Tasks: 9 CGroup: /system.slice/glusterd.service └─32451 /usr/sbin/glusterd -p /var/run/glusterd.pid --log-level INFO
Jun 06 19:13:59 msnode3 systemd[1]: Starting GlusterFS, a clustered file-system server... Jun 06 19:13:59 msnode3 systemd[1]: Started GlusterFS, a clustered file-system server.
[[email protected] ~]# gluster peer probe msnode2 #添加节点2到集群中 peer probe: success. [[email protected] ~]# gluster peer probe msnode3 #添加节点3到集群中 peer probe: success.
|
2)创建复制卷(#此处为CTDB准备环境,需要使用复制卷,任一节点运行)
[[email protected] ~]# gluster volume create data1 replica 3 msnode1:/gluster/brick msnode2:/gluster/brick msnode3:/gluster/brick #创建3复制卷 volume create: data1: success: please start the volume to access data [[email protected] ~]# gluster volume start data1 #启动volume volume start: data1: success [[email protected] ~]# gluster volume status data1 #查看volume卷 Status of volume: data1 Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------------------------ Brick msnode1:/gluster/brick 49152 0 Y 23570 Brick msnode2:/gluster/brick 49152 0 Y 22686 Brick msnode3:/gluster/brick 49152 0 Y 22855 Self-heal Daemon on localhost N/A N/A Y 23591 Self-heal Daemon on msnode2 N/A N/A Y 22707 Self-heal Daemon on msnode3 N/A N/A Y 22876
Task Status of Volume data1 ------------------------------------------------------------------------------ There are no active volume tasks 3)挂载gluster-volume(3节点都需操作)
|
[[email protected] ~]# mkdir /glusterfs #创建共享目录 [[email protected] ~]# mount -t glusterfs msnode1:/data1 /glusterfs/ #挂载gluster复制卷 [[email protected] ~]# mount |grep glusterfs #查看挂载信息 msnode1:/data1 on /glusterfs type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072)
[[email protected] ~]# vi /etc/fstab #添加自动挂载,3节点都需要添加,添加后重启检查是否添加正确,不正确,系统将启动失败。 [[email protected] ~]# cat /etc/fstab
# # /etc/fstab # Created by anaconda on Sat Jun 6 17:22:54 2020 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/centos-root / xfs defaults 0 0 UUID=e9de4e28-dca3-4b7b-988b-c67677acac0d /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 /dev/sdc1 /gluster xfs defaults 0 0 msnode1:/data1 /glusterfs glusterfs defaults 0 0
[[email protected] ~]# cd /glusterfs/ #检查复制卷是否创建成功,进入glusterfs目录,在节点1创建文件,在节点2和3查看是否存在该文件。若有,则以上步骤正常,可以新建快照保存此时状态。 [[email protected] glusterfs]# ls [[email protected] glusterfs]# touch test [[email protected] glusterfs]# ls Test
O补充知识: VFS FUSE
1、Linux中文件系统是一个很重要的子系统,vfs作为了Linux一个抽象的文件系统,提供了统一的接口,屏蔽了所有的底层的磁盘文件系统的类型提供了一套统一的接口,这样在用户态的用户需要文件系统编程的时候,只需要关注vfs提供的API(posix接口)。在Linux平台有众多的磁盘文件系统,比如xfs、ext4,磁盘文件系统在格式化初始化时候都会在vfs注册自己的信息以及相关的ops操作,这样在挂载之后上层应用操作文件时候,vfs则能够在注册信息里面选择相应的磁盘文件系统,磁盘文件则会选择出相应的操作执行。 2、fuse不同于磁盘文件系统,fuse作为一个用户态的文件系统,在调用register_filesystem(struct file_system_type *)函数在vfs虚拟文件系统中注册信息以及fuse的ops操作之后把如果实现文件的读写等操作留给了开发人员。这样在用fuse的挂载目录下执行文件系统类操作,经过vfs层,vfs会选择相应的fuse注册函数执行。这时候fuse会把请求写入到等待队列当中,进入睡眠等待上层应用处理。glusterfs文件作为一个分布式文件系统(用户态类)这时候会启动线程去轮询读fuse的设备,得出请求的ops类型,执行结束之后返回fuse设备。 3、GlusterFS分布式文件系统最为常用的访问接口是Native协议接口,即基于FUSE实现的POSIX兼容接口。 4、libgfapi接口,是一个用户空间的GlusterFS数据访问接口API函数库,可以绕开FUSE挂载点直接访问glusterfs卷,直接在应用程序通过调用API来访问数据。它缩减了FUSE和内核VFS层的I/O访问路径,通过它访问glusterfs卷,性能和latency均可以得到大幅提升。
|
下面还有好多内容,很多坑踩了有点吐血,所有坑都已经踩完,如需完整版或帮助请留言。