114 lines
2.4 KiB
Bash
114 lines
2.4 KiB
Bash
![]() |
#!/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
|
||
|
|