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創建文件,在節點2和3查看是否存在該文件。若有,則以上步驟正常,可以新建快照保存此時狀態。 [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均可以得到大幅提升。
|
下面還有好多內容,很多坑踩了有點吐血,所有坑都已經踩完,如需完整版或幫助請留言。