glusterfs+ctdb+samba+nfs-ganesha搭建指导

时间:2024-04-03 20:56:16

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  #重启生效

glusterfs+ctdb+samba+nfs-ganesha搭建指导

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

glusterfs+ctdb+samba+nfs-ganesha搭建指导

 

[[email protected] ~]# mkfs.xfs /dev/sdb1 #建议创建xfs文件系统

glusterfs+ctdb+samba+nfs-ganesha搭建指导

 

[[email protected] ~]# mkdir /gluster

[[email protected] ~]# mount /dev/sdb1 /gluster/

[[email protected] ~]# echo /dev/sdb1  /gluster xfs defaults 0 0 >> /etc/fstab #配置自动挂载,配置完,请重启检查前面步骤是否有错,如正常可以新建快照保留此刻状态。

glusterfs+ctdb+samba+nfs-ganesha搭建指导

 

二、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.

 

glusterfs+ctdb+samba+nfs-ganesha搭建指导

[[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创建文件,在节点23查看是否存在该文件。若有,则以上步骤正常,可以新建快照保存此时状态。

[[email protected] glusterfs]# ls

[[email protected] glusterfs]# touch test

[[email protected] glusterfs]# ls

Test

glusterfs+ctdb+samba+nfs-ganesha搭建指导

 

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均可以得到大幅提升。

glusterfs+ctdb+samba+nfs-ganesha搭建指导

 

下面还有好多内容,很多坑踩了有点吐血,所有坑都已经踩完,如需完整版或帮助请留言。