1+ #! /bin/bash
2+
3+ set -e
4+
5+ POOL_NAME=" dblab_pool"
6+ POOL_MNT=" /var/lib/dblab/dblab_pool"
7+ DISK_FILE=" /zfs-disk"
8+ DATASETS=(dataset_1 dataset_2 dataset_3)
9+
10+ echo " 🔍 Checking if zfsutils-linux is installed..."
11+ if ! command -v zfs > /dev/null 2>&1 ; then
12+ echo " 📦 Installing zfsutils-linux..."
13+ sudo apt update
14+ sudo apt install -y zfsutils-linux
15+ else
16+ echo " ✅ ZFS already installed"
17+ fi
18+
19+ if [ ! -f " $DISK_FILE " ]; then
20+ echo " 🧱 Creating virtual ZFS disk at $DISK_FILE ..."
21+ sudo truncate -s 5G " $DISK_FILE "
22+ else
23+ echo " ✅ ZFS disk file already exists"
24+ fi
25+
26+ echo " 🔗 Setting up loop device..."
27+ sudo losetup -fP " $DISK_FILE "
28+ LOOP=$( sudo losetup -j " $DISK_FILE " | cut -d: -f1)
29+
30+ echo " 📂 Checking if pool '$POOL_NAME ' exists..."
31+ if ! zpool list | grep -q " $POOL_NAME " ; then
32+ echo " 🚀 Creating ZFS pool $POOL_NAME ..."
33+ sudo zpool create -f \
34+ -O compression=on \
35+ -O atime=off \
36+ -O recordsize=128k \
37+ -O logbias=throughput \
38+ -m " $POOL_MNT " \
39+ " $POOL_NAME " \
40+ " $LOOP "
41+ else
42+ echo " ✅ ZFS pool '$POOL_NAME ' already exists"
43+ fi
44+
45+ echo " 📦 Creating base datasets..."
46+ for DATASET in " ${DATASETS[@]} " ; do
47+ if ! zfs list | grep -q " ${POOL_NAME} /${DATASET} " ; then
48+ echo " 📁 Creating dataset ${POOL_NAME} /${DATASET} "
49+ sudo zfs create -o mountpoint=" ${POOL_MNT} /${DATASET} " " ${POOL_NAME} /${DATASET} "
50+ else
51+ echo " ⚠️ Dataset '${DATASET} ' already exists"
52+ fi
53+ done
54+
55+ echo " ✅ ZFS setup complete."
0 commit comments