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

glusterfs+ctdb+samba+nfs-ganesha(非完整版本)

 如需完整版本,請留言聯繫。由於花費了太多心血,需給個買雪糕紅包,嘿嘿!

GlusterFS是一個免費的開源可擴展文件系統,可用於數據存儲在本地網絡中。它可用於通過DNS輪循機制設置具有故障轉移和負載平衡的雙活文件系統羣集。    

一、安裝操作系統配置基礎環境

1、操作系統環境(2塊磁盤、3張網卡、安裝GUI

[root@msnode2 ~]# cat /etc/redhat-release

CentOS Linux release 7.6.1810 (Core)

2、基礎環境配置(3個節點均需操作)

1)關閉防火牆  #爲了避免干擾,這裏把防火牆關閉

[root@msnode1 ~]# systemctl stop firewalld.service

[root@msnode1 ~]# systemctl disable firewalld.service

2)關閉selinux  #重啓生效

3)可以連接公網,使用yum安裝所需的包

4)添加host解析 #所有節點

[root@msnode1 ~]# 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個節點均需操作)

[root@msnode2 ~]# fdisk /dev/sdb

 

[root@msnode3 ~]# mkfs.xfs /dev/sdb1 #建議創建xfs文件系統

 

[root@msnode3 ~]# mkdir /gluster

[root@msnode3 ~]# mount /dev/sdb1 /gluster/

[root@msnode3 ~]# echo /dev/sdb1  /gluster xfs defaults 0 0 >> /etc/fstab #配置自動掛載,配置完,請重啓檢查前面步驟是否有錯,如正常可以新建快照保留此刻狀態。

 

二、gluster環境搭建

         1)安裝gluster包(所有節點執行)

[root@msnode1 ~]# yum install centos-release-gluster #Using Storage SIG Yum

[root@msnode1 ~]# yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma #安裝gluster相關包

安裝成功會顯示complete

[root@msnode1 ~]# systemctl enable glusterd.service

[root@msnode1 ~]# systemctl start glusterd.service

[root@msnode1 ~]# 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.

 

[root@msnode1 ~]# gluster peer probe msnode2 #添加節點2到集羣中

peer probe: success.

[root@msnode1 ~]# gluster peer probe msnode3 #添加節點3到集羣中

peer probe: success.

 

2)創建複製卷(#此處爲CTDB準備環境,需要使用複製卷,任一節點運行)

[root@msnode1 ~]# 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

[root@msnode1 ~]# gluster volume start data1  #啓動volume

volume start: data1: success

[root@msnode1 ~]# 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節點都需操作)

 

[root@msnode1 ~]# mkdir /glusterfs  #創建共享目錄

[root@msnode1 ~]# mount -t glusterfs msnode1:/data1 /glusterfs/ #掛載gluster複製卷

[root@msnode1 ~]# 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)

 

[root@msnode1 ~]# vi /etc/fstab #添加自動掛載,3節點都需要添加,添加後重啓檢查是否添加正確,不正確,系統將啓動失敗。

[root@msnode1 ~]# 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

 

[root@msnode1 ~]# cd /glusterfs/ #檢查複製卷是否創建成功,進入glusterfs目錄,在節點1創建文件,在節點23查看是否存在該文件。若有,則以上步驟正常,可以新建快照保存此時狀態。

[root@msnode1 glusterfs]# ls

[root@msnode1 glusterfs]# touch test

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

 

下面還有好多內容,很多坑踩了有點吐血,所有坑都已經踩完,如需完整版或幫助請留言。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章