FreeBSD 10: ZFS in der Jail für Remote Backups

Möchte man eine Jail für ZFS send/receive Transaktionen verwenden, ohne dabei die Security Policy lockern zu müssen, um den zPool vom Host in der Jail sichtbar erscheinen zu lassen, kann man explizit eine zvol Partition dafür freischalten.

Ab FreeBSD 10 gelten nicht mehr die globalen SYSCTLs, mit enforce_statfs=1 allow.mount=1 allow.mount.zfs=1 bekommt die gewünschte Jail die benötigten Rechte, der zvol Pool wird nach dem booten der laufenden Jail ID zugewiesen:

FreeBSD Beastie ZFS/zPool in der Jail

Punkt 1: Jail Permission

$
vi /usr/local/etc/ezjail/zfspool1.domain.tld

export jail_zfspool1_domain_tld_parameters="allow.raw_sockets=1 allow.sysvipc=1 enforce_statfs=1 allow.mount=1 allow.mount.zfs=1"
$

Punkt 2: Jail ZFS Pool erstellen

$
zfs create -o checksum=sha256 -o compression=lz4 -o mountpoint=/backup zroot/root/backup
zfs create -V 500g zroot/root/backup/zfspool1

zpool create zrpool /dev/zvol/zroot/root/backup/zfspool1
zfs set jailed=on zrpool
$

Punkt 3: ZFS Jail ID Script

$
cat > /admin/set_zrpool_perm.sh << EOF
#!/bin/sh
### ### ### PLITC // ### ### ###

### // zfs set jailed=on zrpool

jls | grep zfspool1.domain.tld | awk '{print $1}' | xargs -I {} zfs jail {} zrpool

### ### ### // PLITC ### ### ###
# EOF
EOF

chmod 0555 /admin/set_zrpool_perm.sh
$

Punkt 4: ezjail starten & zpool zuweisen

$
ezjail-admin onestart zfspool1.domain.tld; /admin/set_zrpool_perm.sh; zpool status
$

PS: ggf. kann auch das set_zrpool_perm.sh in einem poststart der ezjail config stehen

That’s FreeBSD

Schreibe einen Kommentar