GlusterFS built-in NFS server supports only NFS version 3. GlusterFS offers NFS exports using NFS-Ganesha, which supports NFS version 3 and 4 protocols.
NFS-Ganesha server is a user-mode file sharing server, which offers a GlusterFS plugin to export GlusterFS volumes. In the following article, the NSF-Ganesha and GlusterFS are installed and a simple GlusterFS volume is created and then exported through NFS 3 and 4 version protocols.
The version of the software in this article:
- CentOS Stream release 8 (25.04.2021)
- GlusterFS 8.4
- NFS-Ganesha 3.5
STEP 1) Install GlusterFS.
dnf install -y centos-release-gluster dnf install -y glusterfs-server
The first line will installs a new repository under the SIG management – https://wiki.centos.org/SpecialInterestGroup/Storage. The second line installs the GlusterFS server.
STEP 2) Install NFS-Ganesha.
dnf install -y centos-release-nfs-ganesha30 dnf install -y nfs-ganesha nfs-ganesha-gluster
The first line again installs a new repository under the SIG management and the second line installs the NFS-Ganesha server with Gluster plugin.
STEP 3) Create GlusterFS volume
Start the GlusterFS server and create a simple 3 replicas volume with:
Start the GlusterFS on all the three nodes and enable the GlusterFS communication between the three nodes using firewall-cmd utility. So execute the following commands:
systemctl start glusterd firewall-cmd --permanent --new-zone=glusternodes firewall-cmd --permanent --zone=glusternodes --add-source=192.168.0.200 firewall-cmd --permanent --zone=glusternodes --add-source=192.168.0.201 firewall-cmd --permanent --zone=glusternodes --add-source=192.168.0.202 firewall-cmd --permanent --zone=glusternodes --add-service=glusterfs firewall-cmd --reload
On the first node create the GlusterFS volume. First, add the glnode2 and glnode3 to the cluster.
gluster peer probe glnode2 gluster peer probe glnode3 gluster volume create VOL1 replica 3 transport tcp glnode1:/mnt/storage/gluster/brick glnode2:/mnt/storage/gluster/brick glnode3:/mnt/storage/gluster/brick gluster volume start VOL1
glnode1, glnode2, glnode3 are names, which are added to the /etc/hosts (Of course, a FQDN could be used). The /mnt/storage/gluster/brick is the path, where GlusterFS will use to put its files. It may resides on a different (storage) partition.
Check out the detailed article about creating a GlusterFS 3 replicas volume here: glusterfs with localhost (127.0.0.1) nodes on different servers – glusterfs volume with 3 replicas Of course, 127.0.0.1 may not be used. Everything depends on the servers’ hostnames and their DNS records. A similar example, but not using localhost will be:
192.168.0.200 glnode1 192.168.0.201 glnode2 192.168.0.202 glnode3
STEP 4) Export the GlusterFS volume with NFS share using NFS-Ganesha
The configuration file is /etc/ganesha/ganesha.conf. Include the following configuration:
EXPORT { Export_Id = 1; Path = "/VOL1"; FSAL { name = GLUSTER; hostname = "glnode1"; volume = "VOL1"; } Access_type = RW; Squash = No_root_squash; Disable_ACL = TRUE; Pseudo = "/VOL1"; Protocols = "3","4"; Transports = "UDP","TCP"; SecType = "sys"; CLIENT { Clients = 127.0.0.1; } }
And then start the NFS-Ganesha daemon:
systemctl start nfs-ganesha
Here are some details about the EXPORT options:
- Export_Id – Unique ID for each export. Any number, ensure it is unique for the whole configuration.
- Path – The path GlusterFS volume would be exported. Mounting in the clients with IP:”Path”. The path name may not be the original name as of the GlusterFS volume.
- FSAL – File System Abstraction Layer. The plugin, which will be used to export a file system. In the case, GlusterFS volume to be exported, so Gluster plugin is used. hostname – the hostname or IP, where the GlusterFS is accessible. volume – the name of the GlusterFS volume to export.
- Access_type – Read only or read write access is exported.
- Pseudo – NFSv4 pseudo path for this export.
- Protocols – which NFS protocols to be suported.
- Transports – which transport protocols to be supported.
- CLIENT – the section control the access limitation by IP, password and so on. In addtion some of the export options above may be overidden. Multiple CLIENT sections may exist.
More EXPORT options here – https://github.com/phdeniel/nfs-ganesha/blob/master/src/config_samples/export.txt
Mount the share.
Mounting the above share with mount command:
mount -t nfs glnode1:/VOL1 /mnt/VOL1/
And /etc/fstab example:
glnode1:/VOL1 /mnt/VOL1 nfs defaults,hard,intr,noexec,nosuid,_netdev,fsc,vers=4 0 0
The whole output
[root@node1 ~]# dnf install -y centos-release-gluster Last metadata expiration check: 0:02:42 ago on Sun Apr 25 09:45:25 2021. Dependencies resolved. ========================================================================================================= Package Architecture Version Repository Size ========================================================================================================= Installing: centos-release-gluster8 noarch 1.0-1.el8 extras 9.3 k Installing dependencies: centos-release-storage-common noarch 2-2.el8 extras 9.4 k Transaction Summary ========================================================================================================= Install 2 Packages Total download size: 19 k Installed size: 2.4 k Downloading Packages: (1/2): centos-release-gluster8-1.0-1.el8.noarch.rpm 109 kB/s | 9.3 kB 00:00 (2/2): centos-release-storage-common-2-2.el8.noarch.rpm 96 kB/s | 9.4 kB 00:00 --------------------------------------------------------------------------------------------------------- Total 39 kB/s | 19 kB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : centos-release-storage-common-2-2.el8.noarch 1/2 Installing : centos-release-gluster8-1.0-1.el8.noarch 2/2 Running scriptlet: centos-release-gluster8-1.0-1.el8.noarch 2/2 Verifying : centos-release-gluster8-1.0-1.el8.noarch 1/2 Verifying : centos-release-storage-common-2-2.el8.noarch 2/2 Installed: centos-release-gluster8-1.0-1.el8.noarch centos-release-storage-common-2-2.el8.noarch Complete! [root@node1 ~]# dnf install -y glusterfs-server CentOS-8 - Gluster 8 129 kB/s | 50 kB 00:00 Dependencies resolved. ========================================================================================================= Package Architecture Version Repository Size ========================================================================================================= Installing: glusterfs-server x86_64 8.4-1.el8 centos-gluster8 1.4 M Installing dependencies: attr x86_64 2.4.48-3.el8 baseos 68 k device-mapper-event x86_64 8:1.02.175-5.el8 baseos 269 k device-mapper-event-libs x86_64 8:1.02.175-5.el8 baseos 269 k device-mapper-persistent-data x86_64 0.8.5-4.el8 baseos 468 k glusterfs x86_64 8.4-1.el8 centos-gluster8 689 k glusterfs-cli x86_64 8.4-1.el8 centos-gluster8 214 k glusterfs-client-xlators x86_64 8.4-1.el8 centos-gluster8 899 k glusterfs-fuse x86_64 8.4-1.el8 centos-gluster8 171 k libaio x86_64 0.3.112-1.el8 baseos 33 k libgfapi0 x86_64 8.4-1.el8 centos-gluster8 125 k libgfchangelog0 x86_64 8.4-1.el8 centos-gluster8 67 k libgfrpc0 x86_64 8.4-1.el8 centos-gluster8 89 k libgfxdr0 x86_64 8.4-1.el8 centos-gluster8 61 k libglusterd0 x86_64 8.4-1.el8 centos-gluster8 45 k libglusterfs0 x86_64 8.4-1.el8 centos-gluster8 350 k lvm2 x86_64 8:2.03.11-5.el8 baseos 1.6 M lvm2-libs x86_64 8:2.03.11-5.el8 baseos 1.1 M psmisc x86_64 23.1-5.el8 baseos 151 k python3-pyxattr x86_64 0.5.3-18.el8 centos-gluster8 35 k rpcbind x86_64 1.2.5-8.el8 baseos 70 k userspace-rcu x86_64 0.10.1-4.el8 baseos 101 k Transaction Summary ========================================================================================================= Install 22 Packages Total download size: 8.2 M Installed size: 24 M Downloading Packages: (1/22): glusterfs-cli-8.4-1.el8.x86_64.rpm 2.0 MB/s | 214 kB 00:00 (2/22): glusterfs-fuse-8.4-1.el8.x86_64.rpm 2.4 MB/s | 171 kB 00:00 (3/22): glusterfs-client-xlators-8.4-1.el8.x86_64.rpm 3.5 MB/s | 899 kB 00:00 (4/22): glusterfs-8.4-1.el8.x86_64.rpm 2.6 MB/s | 689 kB 00:00 (5/22): libgfapi0-8.4-1.el8.x86_64.rpm 3.9 MB/s | 125 kB 00:00 (6/22): libgfchangelog0-8.4-1.el8.x86_64.rpm 2.6 MB/s | 67 kB 00:00 (7/22): libgfrpc0-8.4-1.el8.x86_64.rpm 3.5 MB/s | 89 kB 00:00 (8/22): libgfxdr0-8.4-1.el8.x86_64.rpm 2.5 MB/s | 61 kB 00:00 (9/22): libglusterd0-8.4-1.el8.x86_64.rpm 2.7 MB/s | 45 kB 00:00 (10/22): python3-pyxattr-0.5.3-18.el8.x86_64.rpm 2.1 MB/s | 35 kB 00:00 (11/22): libglusterfs0-8.4-1.el8.x86_64.rpm 3.7 MB/s | 350 kB 00:00 (12/22): glusterfs-server-8.4-1.el8.x86_64.rpm 4.7 MB/s | 1.4 MB 00:00 (13/22): attr-2.4.48-3.el8.x86_64.rpm 473 kB/s | 68 kB 00:00 (14/22): device-mapper-event-1.02.175-5.el8.x86_64.rpm 1.9 MB/s | 269 kB 00:00 (15/22): libaio-0.3.112-1.el8.x86_64.rpm 971 kB/s | 33 kB 00:00 (16/22): device-mapper-persistent-data-0.8.5-4.el8.x86_64.rpm 4.3 MB/s | 468 kB 00:00 (17/22): device-mapper-event-libs-1.02.175-5.el8.x86_64.rpm 2.0 MB/s | 269 kB 00:00 (18/22): psmisc-23.1-5.el8.x86_64.rpm 1.3 MB/s | 151 kB 00:00 (19/22): rpcbind-1.2.5-8.el8.x86_64.rpm 1.0 MB/s | 70 kB 00:00 (20/22): userspace-rcu-0.10.1-4.el8.x86_64.rpm 1.6 MB/s | 101 kB 00:00 (21/22): lvm2-libs-2.03.11-5.el8.x86_64.rpm 3.5 MB/s | 1.1 MB 00:00 (22/22): lvm2-2.03.11-5.el8.x86_64.rpm 4.3 MB/s | 1.6 MB 00:00 --------------------------------------------------------------------------------------------------------- Total 5.0 MB/s | 8.2 MB 00:01 warning: /var/cache/dnf/centos-gluster8-ae72c2c38de8ee20/packages/glusterfs-8.4-1.el8.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID e451e5b5: NOKEY CentOS-8 - Gluster 8 1.0 MB/s | 1.0 kB 00:00 Importing GPG key 0xE451E5B5: Userid : "CentOS Storage SIG (http://wiki.centos.org/SpecialInterestGroup/Storage) <security@centos.org>" Fingerprint: 7412 9C0B 173B 071A 3775 951A D4A2 E50B E451 E5B5 From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage Key imported successfully Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : libgfxdr0-8.4-1.el8.x86_64 1/22 Running scriptlet: libgfxdr0-8.4-1.el8.x86_64 1/22 Installing : libglusterfs0-8.4-1.el8.x86_64 2/22 Running scriptlet: libglusterfs0-8.4-1.el8.x86_64 2/22 Installing : libgfrpc0-8.4-1.el8.x86_64 3/22 Running scriptlet: libgfrpc0-8.4-1.el8.x86_64 3/22 Installing : libaio-0.3.112-1.el8.x86_64 4/22 Installing : glusterfs-client-xlators-8.4-1.el8.x86_64 5/22 Installing : device-mapper-event-libs-8:1.02.175-5.el8.x86_64 6/22 Running scriptlet: glusterfs-8.4-1.el8.x86_64 7/22 Installing : glusterfs-8.4-1.el8.x86_64 7/22 Running scriptlet: glusterfs-8.4-1.el8.x86_64 7/22 Installing : libglusterd0-8.4-1.el8.x86_64 8/22 Running scriptlet: libglusterd0-8.4-1.el8.x86_64 8/22 Installing : glusterfs-cli-8.4-1.el8.x86_64 9/22 Installing : device-mapper-event-8:1.02.175-5.el8.x86_64 10/22 Running scriptlet: device-mapper-event-8:1.02.175-5.el8.x86_64 10/22 Installing : lvm2-libs-8:2.03.11-5.el8.x86_64 11/22 Installing : libgfapi0-8.4-1.el8.x86_64 12/22 Running scriptlet: libgfapi0-8.4-1.el8.x86_64 12/22 Installing : device-mapper-persistent-data-0.8.5-4.el8.x86_64 13/22 Installing : lvm2-8:2.03.11-5.el8.x86_64 14/22 Running scriptlet: lvm2-8:2.03.11-5.el8.x86_64 14/22 Installing : libgfchangelog0-8.4-1.el8.x86_64 15/22 Running scriptlet: libgfchangelog0-8.4-1.el8.x86_64 15/22 Installing : userspace-rcu-0.10.1-4.el8.x86_64 16/22 Running scriptlet: userspace-rcu-0.10.1-4.el8.x86_64 16/22 Running scriptlet: rpcbind-1.2.5-8.el8.x86_64 17/22 Installing : rpcbind-1.2.5-8.el8.x86_64 17/22 Running scriptlet: rpcbind-1.2.5-8.el8.x86_64 17/22 Installing : psmisc-23.1-5.el8.x86_64 18/22 Installing : attr-2.4.48-3.el8.x86_64 19/22 Installing : glusterfs-fuse-8.4-1.el8.x86_64 20/22 Installing : python3-pyxattr-0.5.3-18.el8.x86_64 21/22 Installing : glusterfs-server-8.4-1.el8.x86_64 22/22 Running scriptlet: glusterfs-server-8.4-1.el8.x86_64 22/22 Verifying : glusterfs-8.4-1.el8.x86_64 1/22 Verifying : glusterfs-cli-8.4-1.el8.x86_64 2/22 Verifying : glusterfs-client-xlators-8.4-1.el8.x86_64 3/22 Verifying : glusterfs-fuse-8.4-1.el8.x86_64 4/22 Verifying : glusterfs-server-8.4-1.el8.x86_64 5/22 Verifying : libgfapi0-8.4-1.el8.x86_64 6/22 Verifying : libgfchangelog0-8.4-1.el8.x86_64 7/22 Verifying : libgfrpc0-8.4-1.el8.x86_64 8/22 Verifying : libgfxdr0-8.4-1.el8.x86_64 9/22 Verifying : libglusterd0-8.4-1.el8.x86_64 10/22 Verifying : libglusterfs0-8.4-1.el8.x86_64 11/22 Verifying : python3-pyxattr-0.5.3-18.el8.x86_64 12/22 Verifying : attr-2.4.48-3.el8.x86_64 13/22 Verifying : device-mapper-event-8:1.02.175-5.el8.x86_64 14/22 Verifying : device-mapper-event-libs-8:1.02.175-5.el8.x86_64 15/22 Verifying : device-mapper-persistent-data-0.8.5-4.el8.x86_64 16/22 Verifying : libaio-0.3.112-1.el8.x86_64 17/22 Verifying : lvm2-8:2.03.11-5.el8.x86_64 18/22 Verifying : lvm2-libs-8:2.03.11-5.el8.x86_64 19/22 Verifying : psmisc-23.1-5.el8.x86_64 20/22 Verifying : rpcbind-1.2.5-8.el8.x86_64 21/22 Verifying : userspace-rcu-0.10.1-4.el8.x86_64 22/22 Installed: attr-2.4.48-3.el8.x86_64 device-mapper-event-8:1.02.175-5.el8.x86_64 device-mapper-event-libs-8:1.02.175-5.el8.x86_64 device-mapper-persistent-data-0.8.5-4.el8.x86_64 glusterfs-8.4-1.el8.x86_64 glusterfs-cli-8.4-1.el8.x86_64 glusterfs-client-xlators-8.4-1.el8.x86_64 glusterfs-fuse-8.4-1.el8.x86_64 glusterfs-server-8.4-1.el8.x86_64 libaio-0.3.112-1.el8.x86_64 libgfapi0-8.4-1.el8.x86_64 libgfchangelog0-8.4-1.el8.x86_64 libgfrpc0-8.4-1.el8.x86_64 libgfxdr0-8.4-1.el8.x86_64 libglusterd0-8.4-1.el8.x86_64 libglusterfs0-8.4-1.el8.x86_64 lvm2-8:2.03.11-5.el8.x86_64 lvm2-libs-8:2.03.11-5.el8.x86_64 psmisc-23.1-5.el8.x86_64 python3-pyxattr-0.5.3-18.el8.x86_64 rpcbind-1.2.5-8.el8.x86_64 userspace-rcu-0.10.1-4.el8.x86_64 Complete! [root@node1 ~]# dnf install -y centos-release-nfs-ganesha30 Last metadata expiration check: 0:00:22 ago on Sun Apr 25 09:48:14 2021. Dependencies resolved. ========================================================================================================= Package Architecture Version Repository Size ========================================================================================================= Installing: centos-release-nfs-ganesha30 noarch 1.0-2.el8 extras 8.6 k Transaction Summary ========================================================================================================= Install 1 Package Total download size: 8.6 k Installed size: 704 Downloading Packages: centos-release-nfs-ganesha30-1.0-2.el8.noarch.rpm 113 kB/s | 8.6 kB 00:00 --------------------------------------------------------------------------------------------------------- Total 22 kB/s | 8.6 kB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : centos-release-nfs-ganesha30-1.0-2.el8.noarch 1/1 Verifying : centos-release-nfs-ganesha30-1.0-2.el8.noarch 1/1 Installed: centos-release-nfs-ganesha30-1.0-2.el8.noarch Complete! [root@node1 ~]# dnf install -y nfs-ganesha nfs-ganesha-gluster CentOS-8 - NFS Ganesha 3 48 kB/s | 21 kB 00:00 Dependencies resolved. ========================================================================================================= Package Arch Version Repository Size ========================================================================================================= Installing: nfs-ganesha x86_64 3.5-1.el8 centos-nfs-ganesha3 708 k nfs-ganesha-gluster x86_64 3.5-1.el8 centos-nfs-ganesha3 66 k Installing dependencies: avahi-libs x86_64 0.7-20.el8 baseos 62 k checkpolicy x86_64 2.9-1.el8 baseos 348 k cups-libs x86_64 1:2.2.6-38.el8 baseos 433 k gssproxy x86_64 0.8.0-19.el8 baseos 119 k keyutils x86_64 1.5.10-6.el8 baseos 63 k libicu x86_64 60.3-2.el8_1 baseos 8.8 M libntirpc x86_64 3.4-1.el8 centos-nfs-ganesha3 136 k libverto-libevent x86_64 0.3.0-5.el8 baseos 16 k libwbclient x86_64 4.13.3-3.el8 baseos 119 k nfs-ganesha-selinux noarch 3.5-1.el8 centos-nfs-ganesha3 38 k nfs-utils x86_64 1:2.3.3-41.el8 baseos 497 k policycoreutils-python-utils noarch 2.9-14.el8 baseos 252 k python3-audit x86_64 3.0-0.17.20191104git1c2f876.el8 baseos 86 k python3-libsemanage x86_64 2.9-6.el8 baseos 127 k python3-policycoreutils noarch 2.9-14.el8 baseos 2.2 M python3-pyyaml x86_64 3.12-12.el8 baseos 193 k python3-setools x86_64 4.3.0-2.el8 baseos 626 k quota x86_64 1:4.04-12.el8 baseos 213 k quota-nls noarch 1:4.04-12.el8 baseos 95 k samba-client-libs x86_64 4.13.3-3.el8 baseos 5.4 M samba-common noarch 4.13.3-3.el8 baseos 218 k samba-common-libs x86_64 4.13.3-3.el8 baseos 171 k Transaction Summary ========================================================================================================= Install 24 Packages Total download size: 21 M Installed size: 71 M Downloading Packages: (1/24): nfs-ganesha-gluster-3.5-1.el8.x86_64.rpm 1.0 MB/s | 66 kB 00:00 (2/24): nfs-ganesha-selinux-3.5-1.el8.noarch.rpm 1.9 MB/s | 38 kB 00:00 (3/24): libntirpc-3.4-1.el8.x86_64.rpm 1.4 MB/s | 136 kB 00:00 (4/24): nfs-ganesha-3.5-1.el8.x86_64.rpm 4.8 MB/s | 708 kB 00:00 (5/24): avahi-libs-0.7-20.el8.x86_64.rpm 462 kB/s | 62 kB 00:00 (6/24): checkpolicy-2.9-1.el8.x86_64.rpm 2.5 MB/s | 348 kB 00:00 (7/24): keyutils-1.5.10-6.el8.x86_64.rpm 2.0 MB/s | 63 kB 00:00 (8/24): gssproxy-0.8.0-19.el8.x86_64.rpm 2.4 MB/s | 119 kB 00:00 (9/24): cups-libs-2.2.6-38.el8.x86_64.rpm 2.7 MB/s | 433 kB 00:00 (10/24): libverto-libevent-0.3.0-5.el8.x86_64.rpm 368 kB/s | 16 kB 00:00 (11/24): libwbclient-4.13.3-3.el8.x86_64.rpm 2.1 MB/s | 119 kB 00:00 (12/24): policycoreutils-python-utils-2.9-14.el8.noarch.rpm 2.2 MB/s | 252 kB 00:00 (13/24): nfs-utils-2.3.3-41.el8.x86_64.rpm 2.8 MB/s | 497 kB 00:00 (14/24): python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm 1.3 MB/s | 86 kB 00:00 (15/24): python3-libsemanage-2.9-6.el8.x86_64.rpm 1.9 MB/s | 127 kB 00:00 (16/24): python3-pyyaml-3.12-12.el8.x86_64.rpm 2.0 MB/s | 193 kB 00:00 (17/24): python3-setools-4.3.0-2.el8.x86_64.rpm 2.5 MB/s | 626 kB 00:00 (18/24): quota-4.04-12.el8.x86_64.rpm 1.8 MB/s | 213 kB 00:00 (19/24): quota-nls-4.04-12.el8.noarch.rpm 1.5 MB/s | 95 kB 00:00 (20/24): python3-policycoreutils-2.9-14.el8.noarch.rpm 2.5 MB/s | 2.2 MB 00:00 (21/24): samba-common-4.13.3-3.el8.noarch.rpm 1.9 MB/s | 218 kB 00:00 (22/24): samba-common-libs-4.13.3-3.el8.x86_64.rpm 1.9 MB/s | 171 kB 00:00 (23/24): libicu-60.3-2.el8_1.x86_64.rpm 5.0 MB/s | 8.8 MB 00:01 (24/24): samba-client-libs-4.13.3-3.el8.x86_64.rpm 3.9 MB/s | 5.4 MB 00:01 --------------------------------------------------------------------------------------------------------- Total 7.9 MB/s | 21 MB 00:02 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Running scriptlet: samba-common-4.13.3-3.el8.noarch 1/24 Installing : samba-common-4.13.3-3.el8.noarch 1/24 Running scriptlet: samba-common-4.13.3-3.el8.noarch 1/24 Installing : avahi-libs-0.7-20.el8.x86_64 2/24 Installing : libntirpc-3.4-1.el8.x86_64 3/24 Installing : cups-libs-1:2.2.6-38.el8.x86_64 4/24 Installing : quota-nls-1:4.04-12.el8.noarch 5/24 Installing : quota-1:4.04-12.el8.x86_64 6/24 Installing : python3-setools-4.3.0-2.el8.x86_64 7/24 Installing : python3-pyyaml-3.12-12.el8.x86_64 8/24 Installing : python3-libsemanage-2.9-6.el8.x86_64 9/24 Installing : python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64 10/24 Installing : libverto-libevent-0.3.0-5.el8.x86_64 11/24 Installing : gssproxy-0.8.0-19.el8.x86_64 12/24 Running scriptlet: gssproxy-0.8.0-19.el8.x86_64 12/24 Installing : libicu-60.3-2.el8_1.x86_64 13/24 Running scriptlet: libicu-60.3-2.el8_1.x86_64 13/24 Installing : libwbclient-4.13.3-3.el8.x86_64 14/24 Installing : samba-common-libs-4.13.3-3.el8.x86_64 15/24 Installing : samba-client-libs-4.13.3-3.el8.x86_64 16/24 Installing : keyutils-1.5.10-6.el8.x86_64 17/24 Running scriptlet: nfs-utils-1:2.3.3-41.el8.x86_64 18/24 Installing : nfs-utils-1:2.3.3-41.el8.x86_64 18/24 Running scriptlet: nfs-utils-1:2.3.3-41.el8.x86_64 18/24 Installing : checkpolicy-2.9-1.el8.x86_64 19/24 Installing : python3-policycoreutils-2.9-14.el8.noarch 20/24 Installing : policycoreutils-python-utils-2.9-14.el8.noarch 21/24 Running scriptlet: nfs-ganesha-selinux-3.5-1.el8.noarch 22/24 Installing : nfs-ganesha-selinux-3.5-1.el8.noarch 22/24 Running scriptlet: nfs-ganesha-selinux-3.5-1.el8.noarch 22/24 Running scriptlet: nfs-ganesha-3.5-1.el8.x86_64 23/24 Installing : nfs-ganesha-3.5-1.el8.x86_64 23/24 Running scriptlet: nfs-ganesha-3.5-1.el8.x86_64 23/24 Installing : nfs-ganesha-gluster-3.5-1.el8.x86_64 24/24 Running scriptlet: libwbclient-4.13.3-3.el8.x86_64 24/24 Running scriptlet: nfs-ganesha-3.5-1.el8.x86_64 24/24 Running scriptlet: nfs-ganesha-gluster-3.5-1.el8.x86_64 24/24 Verifying : libntirpc-3.4-1.el8.x86_64 1/24 Verifying : nfs-ganesha-3.5-1.el8.x86_64 2/24 Verifying : nfs-ganesha-gluster-3.5-1.el8.x86_64 3/24 Verifying : nfs-ganesha-selinux-3.5-1.el8.noarch 4/24 Verifying : avahi-libs-0.7-20.el8.x86_64 5/24 Verifying : checkpolicy-2.9-1.el8.x86_64 6/24 Verifying : cups-libs-1:2.2.6-38.el8.x86_64 7/24 Verifying : gssproxy-0.8.0-19.el8.x86_64 8/24 Verifying : keyutils-1.5.10-6.el8.x86_64 9/24 Verifying : libicu-60.3-2.el8_1.x86_64 10/24 Verifying : libverto-libevent-0.3.0-5.el8.x86_64 11/24 Verifying : libwbclient-4.13.3-3.el8.x86_64 12/24 Verifying : nfs-utils-1:2.3.3-41.el8.x86_64 13/24 Verifying : policycoreutils-python-utils-2.9-14.el8.noarch 14/24 Verifying : python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64 15/24 Verifying : python3-libsemanage-2.9-6.el8.x86_64 16/24 Verifying : python3-policycoreutils-2.9-14.el8.noarch 17/24 Verifying : python3-pyyaml-3.12-12.el8.x86_64 18/24 Verifying : python3-setools-4.3.0-2.el8.x86_64 19/24 Verifying : quota-1:4.04-12.el8.x86_64 20/24 Verifying : quota-nls-1:4.04-12.el8.noarch 21/24 Verifying : samba-client-libs-4.13.3-3.el8.x86_64 22/24 Verifying : samba-common-4.13.3-3.el8.noarch 23/24 Verifying : samba-common-libs-4.13.3-3.el8.x86_64 24/24 Installed: avahi-libs-0.7-20.el8.x86_64 checkpolicy-2.9-1.el8.x86_64 cups-libs-1:2.2.6-38.el8.x86_64 gssproxy-0.8.0-19.el8.x86_64 keyutils-1.5.10-6.el8.x86_64 libicu-60.3-2.el8_1.x86_64 libntirpc-3.4-1.el8.x86_64 libverto-libevent-0.3.0-5.el8.x86_64 libwbclient-4.13.3-3.el8.x86_64 nfs-ganesha-3.5-1.el8.x86_64 nfs-ganesha-gluster-3.5-1.el8.x86_64 nfs-ganesha-selinux-3.5-1.el8.noarch nfs-utils-1:2.3.3-41.el8.x86_64 policycoreutils-python-utils-2.9-14.el8.noarch python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64 python3-libsemanage-2.9-6.el8.x86_64 python3-policycoreutils-2.9-14.el8.noarch python3-pyyaml-3.12-12.el8.x86_64 python3-setools-4.3.0-2.el8.x86_64 quota-1:4.04-12.el8.x86_64 quota-nls-1:4.04-12.el8.noarch samba-client-libs-4.13.3-3.el8.x86_64 samba-common-4.13.3-3.el8.noarch samba-common-libs-4.13.3-3.el8.x86_64 Complete! [root@node1 ~]# systemctl start glusterd [root@node1 ~]# systemctl status glusterd ● glusterd.service - GlusterFS, a clustered file-system server Loaded: loaded (/usr/lib/systemd/system/glusterd.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-04-25 09:49:42 EDT; 3s ago Docs: man:glusterd(8) Process: 12089 ExecStart=/usr/sbin/glusterd -p /var/run/glusterd.pid --log-level $LOG_LEVEL $GLUSTERD_> Main PID: 12090 (glusterd) Tasks: 9 (limit: 23669) Memory: 3.6M CGroup: /system.slice/glusterd.service └─12090 /usr/sbin/glusterd -p /var/run/glusterd.pid --log-level INFO Apr 25 09:49:41 node1 systemd[1]: Starting GlusterFS, a clustered file-system server... Apr 25 09:49:42 node1 systemd[1]: Started GlusterFS, a clustered file-system server. [root@node1 ~]# firewall-cmd --permanent --new-zone=glusternodes success [root@node1 ~]# firewall-cmd --permanent --zone=glusternodes --add-source=192.168.0.200 success [root@node1 ~]# firewall-cmd --permanent --zone=glusternodes --add-source=192.168.0.201 success [root@node1 ~]# firewall-cmd --permanent --zone=glusternodes --add-source=192.168.0.202 success [root@node1 ~]# firewall-cmd --reload success [root@node1 ~]# gluster peer probe glnode2 peer probe: success [root@node1 ~]# gluster peer probe glnode3 peer probe: success [root@node1 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 17M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda2 31G 1.6G 28G 6% / /dev/sda5 63G 53M 60G 1% /mnt/storage /dev/sda1 976M 151M 759M 17% /boot tmpfs 374M 0 374M 0% /run/user/0 [root@node1 ~]# mkdir -p /mnt/storage/gluster/brick [root@node1 ~]# gluster volume create VOL1 replica 3 transport tcp glnode1:/mnt/storage/gluster/brick glnode2:/mnt/storage/gluster/brick glnode3:/mnt/storage/gluster/brick volume create: VOL1: success: please start the volume to access data [root@node1 ~]# gluster volume start VOL1 volume start: VOL1: success [root@node1 ~]# gluster volume info VOL1 Volume Name: VOL1 Type: Replicate Volume ID: 0c622766-d86f-460d-b07b-53ccbe5e1fe3 Status: Started Snapshot Count: 0 Number of Bricks: 1 x 3 = 3 Transport-type: tcp Bricks: Brick1: glnode1:/mnt/storage/gluster/brick Brick2: glnode2:/mnt/storage/gluster/brick Brick3: glnode3:/mnt/storage/gluster/brick Options Reconfigured: storage.fips-mode-rchecksum: on transport.address-family: inet nfs.disable: on performance.client-io-threads: off [root@node1 ~]# tail -n 3 /etc/hosts 127.0.0.1 glnode1 192.168.0.201 glnode2 192.168.0.202 glnode3 [root@node1 ~]# tail -n 24 /etc/ganesha/ganesha.conf EXPORT { Export_Id = 1; Path = "/VOL1"; FSAL { name = GLUSTER; hostname = "glnode1"; volume = "VOL1"; } Access_type = RW; Squash = No_root_squash; Disable_ACL = TRUE; Pseudo = "/VOL1"; Protocols = "3","4"; Transports = "UDP","TCP"; SecType = "sys"; CLIENT { Clients = 127.0.0.1; } } [root@node1 ~]# systemctl start nfs-ganesha [root@node1 ~]# systemctl status nfs-ganesha ● nfs-ganesha.service - NFS-Ganesha file server Loaded: loaded (/usr/lib/systemd/system/nfs-ganesha.service; disabled; vendor preset: disabled) Active: active (running) since Sun 2021-04-25 09:57:20 EDT; 2min 48s ago Docs: http://github.com/nfs-ganesha/nfs-ganesha/wiki Process: 12261 ExecStart=/bin/bash -c ${NUMACTL} ${NUMAOPTS} /usr/bin/ganesha.nfsd ${OPTIONS} ${EPOCH}> Main PID: 12262 (ganesha.nfsd) Tasks: 30 (limit: 23669) Memory: 41.3M CGroup: /system.slice/nfs-ganesha.service └─12262 /usr/bin/ganesha.nfsd -L /var/log/ganesha/ganesha.log -f /etc/ganesha/ganesha.conf -N> Apr 25 09:57:20 node1 systemd[1]: Starting NFS-Ganesha file server... Apr 25 09:57:20 node1 systemd[1]: Started NFS-Ganesha file server. Apr 25 09:57:20 node1 ganesha.nfsd[12262]: libnfsidmap: Unable to determine the NFSv4 domain; Using 'loc> Apr 25 09:57:20 node1 ganesha.nfsd[12262]: libnfsidmap: using (default) domain: localdomain Apr 25 09:57:20 node1 ganesha.nfsd[12262]: libnfsidmap: Realms list: 'LOCALDOMAIN' Apr 25 09:57:20 node1 ganesha.nfsd[12262]: libnfsidmap: loaded plugin /usr/lib64/libnfsidmap/nsswitch.so> [root@node1 ~]# mkdir /mnt/VOL1 [root@node1 ~]# mount -t nfs glnode1:/VOL1 /mnt/VOL1/ [root@node1 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 17M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda2 31G 1.6G 28G 6% / /dev/sda5 63G 54M 60G 1% /mnt/storage /dev/sda1 976M 151M 759M 17% /boot tmpfs 374M 0 374M 0% /run/user/0 glnode1:/VOL1 63G 695M 60G 2% /mnt/VOL1