FreeBSD virtual environment management and repository

2020-10 upd: we reached the first fundraising goal and rented a server in Hetzner for development! Thank you for donating !

Attention! I apologize for the automatic translation of this text. You can improve it by sending me a more correct version of the text or fix html pages via GITHUB repository.

CBSD jail on GlusterFS HOWTO

This howto demonstrates CBSD jail setup on cluster filesystem GluserFS

Please note that replication causes additional overhead for system resources. You will need about +1Gb RAM for glusterfs processes. Also, it is desirable to have fast hard drives (SSD and 1Gbit/s give you aprox. 250 Gbit/s on gluster(?)) In addition, avoid such installations for containers with a high write load


Prepare:

1) Install sysutils/cbsd

2) Init CBSD workdir: env workdir=/usr/jails /usr/local/cbsd/sudoexec/initenv

Glusterfs setup:

1) kldload fuse

2) sysrc -qf /boot/loader.conf fuse_load="YES"

3) zfs create -o mountpoint=/glusterfs zroot/glusterfs

4) pkg install -y net/glusterfs

5) sysrc glusterd_enable="YES"

6) service glusterd start

7) vi /etc/hosts: - add IP/name for each node, e.g:

192.168.0.30 glu1
192.168.0.31 glu2
	

8) mkdir /glusterfs/brick1 /glusterfs/brick2 /glusterfs/brick3

glu1% gluster peer probe glu2

glu2% gluster peer status

glu1% (optional): gluster peer probe glu1

glu1% gluster pool list

glu1% gluster volume create jails-data replica 2 glu1:/glusterfs/brick1 glu2:/glusterfs/brick1

glu1% gluster volume create jails-system replica 2 glu1:/glusterfs/brick2 glu2:/glusterfs/brick2

glu1% gluster volume create jails-fstab replica 2 glu1:/glusterfs/brick3 glu2:/glusterfs/brick3

glu1% gluster volume start jails-data

glu1% gluster volume start jails-system

glu1% gluster volume start jails-fstab

glu1% gluster volume bitrot jails-data enable

glu1% gluster volume heal jails-data enable

glu1% gluster volume bitrot jails-system enable

glu1% gluster volume heal jails-system enable

glu1% gluster volume bitrot jails-fstab enable

glu1% gluster volume heal jails-fstab enable

Check state:

gluster volume info jails-data

gluster volume info jails-fstab

gluster volume info jails-system

Automount for flusterfs volumes:

Create script in /usr/local/etc/rc.d/gluster_mount:

#!/bin/sh
# PROVIDE: gluster_mount
# REQUIRE: LOGIN glusterd
# KEYWORD: shutdown

. /etc/rc.subr

name="gluster_mount" 
rcvar="glusterd_enable" 
start_cmd="gluster_mount" 
stop_cmd="gluster_umount" 

gluster_mount()
{
        [ ! -d ${cbsd_workdir}/jails-data/.trashcan ] && /usr/local/sbin/mount_glusterfs localhost:/jails-data ${cbsd_workdir}/jails-data
        [ ! -d ${cbsd_workdir}/jails-system/.trashcan ] && /usr/local/sbin/mount_glusterfs localhost:/jails-system ${cbsd_workdir}/jails-system
        [ ! -d ${cbsd_workdir}/jails-fstab/.trashcan ] && /usr/local/sbin/mount_glusterfs localhost:/jails-system ${cbsd_workdir}/jails-fstab
}

gluster_umount()
{
        [ -d ${cbsd_workdir}/jails-data/.trashcan ] && /sbin/umount ${cbsd_workdir}/jails-data
        [ -d ${cbsd_workdir}/jails-system/.trashcan ] && /sbin/umount ${cbsd_workdir}/jails-system
        [ -d ${cbsd_workdir}/jails-fstab/.trashcan ] && /sbin/umount ${cbsd_workdir}/jails-fstab
}

load_rc_config $name
run_rc_command "$1" 

chmod +x /usr/local/etc/rc.d/gluster_mount

service gluster_mount start

Re-run CBSD initenv to invert zfsfeat (automatically):

cbsd initenv

Profit:

Create jail and start it as usual