Custom zfs over iscsi storage plugin for pve

Alexander Schmid 6fb2b2ada4 Version 0.0.5 in releases vor 7 Jahren
PVE 45535b2308 Initial commit vor 8 Jahren
debian 6fb2b2ada4 Version 0.0.5 in releases vor 7 Jahren
releases 6fb2b2ada4 Version 0.0.5 in releases vor 7 Jahren
.gitignore d170a25abb Version 0.0.4 in releases vor 7 Jahren
Makefile 5534b7ac12 Version 0.0.4 in releases vor 7 Jahren
QemuServer.patch 5534b7ac12 Version 0.0.4 in releases vor 7 Jahren
README.md 18d6cdfca4 V 0.0.2 pve-5.1-30 qemu-server 5.0-17, libpve-storage-perl 5.0-17 vor 8 Jahren

README.md

SCST Target Support for zfs over iSCSI on Proxmox

Allows the use of an SCST Target with the zfs over iSCSI Storage of Proxmox.

This plugin applies a Patch to QemuServer.pm that uses zfs send/rcv in favour of qemu when creating clones.

The Patch also allows to create a clone from older snapshots than 'current' by materializing a snapshot before cloninng.

The Patch will be reverted when the Plugin is uninstalled.

Due to this Patch the dependencies are set very tight on a specific Version of libpve-storage-perl and qemu-server.

Use this Plugin at your own risk!
We don't take any responsibility for you loosing or corrupting data. Make sure you have tested and validated in a non critical environment before putting this into production.

Requirements

Proxmox > 5.0
SCST based Storage with ZFS Filesystem, and a separate iSCSI Target for the Cluster.

ESOS works fine but requires a bit of extra setup, see the notes.
Also make sure you have built ESOS with ZFS support from Sources.

The Storage can also be provided by a Proxmox Host running SCST.

Setup

Setup SSH-Keys and publish to the SCST Target

See: https://pve.proxmox.com/wiki/Storage:_ZFS_over_iSCSI#Platform_notes

Persist the SSH-Key on ESOS:

See: https://github.com/parodyne/esos/issues/201

mount /mnt/conf/
cp -r /root/.ssh /mnt/conf/etc/
vi /mnt/conf/etc/rc.local
=> add line: 
cp -r /etc/.ssh /root/
umount /mnt/conf/

Create LUN0 (dummy) on the Target

/etc/scst.conf should look like this:

HANDLER vdisk_nullio {
    DEVICE dummy {
        dummy 1
    }
}
[...]
TARGET_DRIVER iscsi {
    enabled 1
    TARGET <target name, i.e. iqn.2017-05.esos:81bfb> {
        enabled 1
        LUN 0 dummy
    }
}

When running ESOS:
Create an initiator group and add each Proxmox Host to it via TUI.
Get the intiator name from /etc/iscsi/initiatorname.iscsi

/etc/scst.conf should look like this:

HANDLER vdisk_nullio {
    DEVICE dummy {
        dummy 1
    }
}
[...]
TARGET_DRIVER iscsi {
    enabled 1
    TARGET <target name, i.e. iqn.2017-05.esos:81bfb> {
        enabled 1
        GROUP <intiator group name, i.e. pvedevcluster> {
            LUN 0 dummy {
                    read_only 1
            }
            
            INITIATOR <iscsi initiator name of Proxmox host, i.e. iqn.1993-08.org.debian:01:cd8e73367472>
            [... one line for each Proxmox Host]
        }
    }
}


Configure the Storage in /etc/pve/storage.cfg

scstzfs: esoszfs
        blocksize 128k
        iscsiprovider iet
        pool <zfs pool name, i.e. tank/devfs>
        portal <storage ip>
        shared 1
        target <traget name, i.e. iqn.2017-05.esos:81bfb>
        content images

ESOS: add this

        esos 1
        ini_group <initiator group>

Build and install from Source

git clone https://git.modula-shop-systems/modula/pve-iscsi-zfs-scst.git  
cd pve-iscsi-zfs-scst  
make deb  
dpkg -i pve-iscsi-zfs-scst_0.0.2_all.deb