Debian 11 Bullseye
Sponsored Link

GlusterFS 9 : GlusterFS + SMB
2021/08/25
 
Configure GlusterFS volume to enable SMB protocol.
[1] Configure GlusterFS to enable SMB setting on a Node in GlusterFS Cluster.
root@node01:~#
apt -y install samba-vfs-modules samba ctdb
# stop the target Gluster volume and change settings

root@node01:~#
gluster volume stop vol_distributed

Stopping volume will make its data inaccessible. Do you want to continue? (y/n)
y

volume stop: vol_distributed: success
root@node01:~#
gluster volume set vol_distributed user.smb enable

volume set: success
root@node01:~#
gluster volume set vol_distributed performance.write-behind off

volume set: success
root@node01:~#
gluster volume set vol_distributed group samba

volume set: success
root@node01:~#
vi /var/lib/glusterd/hooks/1/start/post/S29CTDBsetup.sh
# line 25 : change to the target Gluster volume name

META="
vol_distributed
"
root@node01:~#
vi /var/lib/glusterd/hooks/1/stop/pre/S29CTDB-teardown.sh
# line 13 : change to the target Gluster volume name

META="
vol_distributed
"
# start Gluster volume

root@node01:~#
gluster volume start vol_distributed

volume start: vol_distributed: success
# with the settings above, follwing mounting is done automatically

root@node01:~#
df -h /gluster/lock

Filesystem                             Size  Used Avail Use% Mounted on
node01.srv.world:/vol_distributed.tcp   56G  3.0G   51G   6% /gluster/lock

root@node01:~#
tail -1 /etc/fstab

node01.srv.world:/vol_distributed /gluster/lock glusterfs _netdev,transport=tcp,xlator-option=*client*.ping-timeout=10 0 0

root@node01:~#
vi /etc/ctdb/nodes
# create new

# write all Nodes that configure target Gluster volume

10.0.0.51
10.0.0.52
root@node01:~#
vi /etc/ctdb/public_addresses
# create new

# set virtual IP address for SMB access

# [enp1s0] means network interface name ⇒ replace to your environment

10.0.0.59/24 enp1s0
root@node01:~#
systemctl start ctdb
# confirm status

root@node01:~#
ctdb status

Number of nodes:2
pnn:0 10.0.0.51        OK (THIS NODE)
pnn:1 10.0.0.52        DISCONNECTED|UNHEALTHY|INACTIVE
Generation:1234023799
Size:1
hash:0 lmaster:0
Recovery mode:NORMAL (0)
Recovery master:0

root@node01:~#
ctdb ip

Public IPs on node 0
10.0.0.59 0
[2] Configure Samba.
For example, Create a shared Folder that users in [smbgroup] group can only access to shared folder [smbshare] and also they are required user authetication.
# mount Gluster volume with GlusterFS Native and create a shared folder for SMB access

root@node01:~#
mount -t glusterfs node01.srv.world:/vol_distributed /mnt

root@node01:~#
mkdir /mnt/smbshare

root@node01:~#
groupadd smbgroup

root@node01:~#
chgrp smbgroup /mnt/smbshare

root@node01:~#
chmod 770 /mnt/smbshare

root@node01:~#
umount /mnt

root@node01:~#
vi /etc/samba/smb.conf
[global]
        .....
        .....
        # add follows under the [global] section
        clustering = yes
        kernel share modes = no
        kernel oplocks = no
        map archive = no
        map hidden = no
        map read only = no
        map system = no
        store dos attributes = yes

# follwoing 9 lines are configured automatically
[gluster-vol_distributed]
comment = For samba share of volume vol_distributed
vfs objects = glusterfs
glusterfs:volume = vol_distributed
glusterfs:logfile = /var/log/samba/glusterfs-vol_distributed.%M.log
glusterfs:loglevel = 7
path = /
read only = no
kernel share modes = no
# add follows
writable = yes
valid users = @smbgroup
force create mode = 777
force directory mode = 777
inherit permissions = yes

root@node01:~#
systemctl restart smbd
# add Samba user

root@node01:~#
useradd debian

root@node01:~#
smbpasswd -a debian

New SMB password:    
# set any SMB password

Retype new SMB password:
Added user cent.
root@node01:~#
usermod -G smbgroup debian

[3] Verify it can access to the target share with SMB from any Linux client computer.
The examples below are on Linux clients but it's possible to access from Windows clients with common way.
root@client:~#
apt -y install smbclient cifs-utils
# verify with [smbclient]

root@client:~#
smbclient //node01.srv.world/gluster-vol_distributed -U debian

Enter WORKGROUP\debian's password:
Try "help" to get a list of possible commands.

# verify witable to move to shared folder
smb: \> cd smbshare

smb: \smbshare\> mkdir testdir
smb: \smbshare\> ls

  .                                   D        0  Wed Aug 25 13:15:18 2021
  ..                                  D        0  Wed Aug 25 13:06:43 2021
  testdir                             D        0  Wed Aug 25 13:15:18 2021

                58607392 blocks of size 1024. 53048388 blocks available

smb: \smbshare\> exit

# verify with [mount]

# for [10.0.0.59], it is virtual IP address set in [1] section

root@client:~#
mount -t cifs -o vers=3.0,username=debian //10.0.0.59/gluster-vol_distributed /mnt

Password for debian@//10.0.0.59/gluster-vol_distributed:
root@client:~#
df -hT

Filesystem                          Type      Size  Used Avail Use% Mounted on
udev                                devtmpfs  2.0G     0  2.0G   0% /dev
tmpfs                               tmpfs     394M  936K  393M   1% /run
/dev/mapper/debian--vg-root         ext4       28G  1.2G   26G   5% /
tmpfs                               tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs                               tmpfs     5.0M     0  5.0M   0% /run/lock
/dev/vda1                           ext2      470M   48M  398M  11% /boot
tmpfs                               tmpfs     394M     0  394M   0% /run/user/0
//10.0.0.59/gluster-vol_distributed cifs       56G  5.4G   51G  10% /mnt

root@client:~#
touch /mnt/smbshare/testfile.txt

root@client:~#
ll /mnt/smbshare

total 4
drwxr-xr-x 2 root root 0 Aug 25 13:15 testdir
-rwxr-xr-x 1 root root 0 Aug 25 13:16 testfile.txt
Matched Content