#!/usr/bin/env bash set -euo pipefail HOSTNAME='lxd2204.home.arpa' NVME_ZFS_ASHIFT=12 NVME_ZFS_POOL_NAME='nvme' NVME_ZFS_TARGET='/dev/vdb' HDD_ZFS_ASHIFT=12 HDD_ZFS_POOL_NAME='hdd' HDD_ZFS_TARGET='/dev/vdc' BACKUP_ZFS_ASHIFT=12 BACKUP_ZFS_POOL_NAME='backup' BACKUP_ZFS_TARGET='/dev/vdd' hostnamectl hostname $HOSTNAME if ! dpkg -l zfsutils-linux 2>/dev/null 1>&2 ; then apt update && apt install -y zfsutils-linux fi if ! zpool list $NVME_ZFS_POOL_NAME 2>/dev/null 1>&2; then zpool create \ -m none \ -o ashift=$NVME_ZFS_ASHIFT \ -o autotrim=on \ -o feature@lz4_compress=enabled \ -O compression=on \ -O dedup=on \ $NVME_ZFS_POOL_NAME \ $NVME_ZFS_TARGET fi if ! zpool list $HDD_ZFS_POOL_NAME 2>/dev/null 1>&2; then zpool create \ -m none \ -o ashift=$HDD_ZFS_ASHIFT \ -o autotrim=on \ -o feature@lz4_compress=enabled \ -O compression=on \ $HDD_ZFS_POOL_NAME \ $HDD_ZFS_TARGET fi if ! zpool list $BACKUP_ZFS_POOL_NAME 2>/dev/null 1>&2; then zpool create \ -m none \ -o ashift=$BACKUP_ZFS_ASHIFT \ -o autotrim=on \ -o feature@lz4_compress=enabled \ -O compression=on \ $BACKUP_ZFS_POOL_NAME \ $BACKUP_ZFS_TARGET fi cat << EOF > /tmp/lxd.yml config: {} networks: - config: ipv4.address: auto ipv6.address: auto description: "" name: lxdbr0 type: "" project: default storage_pools: - config: source: nvme description: "" name: nvme driver: zfs - config: source: hdd description: "" name: hdd driver: zfs profiles: - config: {} description: "" devices: eth0: name: eth0 network: lxdbr0 type: nic root: path: / pool: nvme type: disk data_hdd: path: /var/data_hdd pool: hdd type: disk source: hdd name: default cluster: null EOF if ! lxc storage list $NVME_ZFS_POOL_NAME | grep 2>/dev/null 1>&2; then lxd init --preseed < /tmp/lxd.yml fi # To use with lxd export, this is where lxd copy temporary file #if ! lxc storage volume list $NVME_ZFS_POOL_NAME | grep backups >/dev/null; then # lxc storage volume create default backups # lxc config set storage.backups_volume default/backups #fi # Where to store images if ! lxc storage volume list $NVME_ZFS_POOL_NAME | grep images >/dev/null; then lxc storage volume create $NVME_ZFS_POOL_NAME images lxc config set storage.images_volume $NVME_ZFS_POOL_NAME/images fi