From 4694d75a6282f8dfa6c640a6f66347ce1ff787ba Mon Sep 17 00:00:00 2001 From: Richie Cahill Date: Sat, 29 Mar 2025 16:08:09 -0400 Subject: [PATCH] added scratch pool --- systems/jeeves/default.nix | 5 ----- systems/jeeves/docker/qbitvpn.nix | 1 + systems/jeeves/hardware.nix | 24 ++++++++++++++++++------ systems/jeeves/scripts/zfs.sh | 7 ++++++- systems/jeeves/services/transmission.nix | 2 +- systems/jeeves/vars.nix | 7 +++++-- 6 files changed, 31 insertions(+), 15 deletions(-) diff --git a/systems/jeeves/default.nix b/systems/jeeves/default.nix index 32bd3fe..1a4d63a 100644 --- a/systems/jeeves/default.nix +++ b/systems/jeeves/default.nix @@ -16,11 +16,6 @@ ./syncthing.nix ]; - boot.zfs.extraPools = [ - "media" - "storage" - ]; - powerManagement = { # cpuFreqGovernor = "ondemand"; # scsiLinkPolicy = "min_power"; diff --git a/systems/jeeves/docker/qbitvpn.nix b/systems/jeeves/docker/qbitvpn.nix index 29b79fe..1e6b555 100644 --- a/systems/jeeves/docker/qbitvpn.nix +++ b/systems/jeeves/docker/qbitvpn.nix @@ -23,6 +23,7 @@ in volumes = [ "${vars.media_docker_configs}/qbitvpn:/config" "${vars.storage_qbitvpn}:/data" + "${vars.scratch_qbitvpn}:/data/incomplete" "/etc/localtime:/etc/localtime:ro" ]; environment = { diff --git a/systems/jeeves/hardware.nix b/systems/jeeves/hardware.nix index 79c6072..73f8be5 100644 --- a/systems/jeeves/hardware.nix +++ b/systems/jeeves/hardware.nix @@ -90,6 +90,17 @@ keyFile = "/dev/disk/by-id/usb-XIAO_USB_Drive_24587CE29074-0:0"; fallbackToPassword = true; }; + # Scratch pool + "luks-scratch-pool-ata-CT480BX500SSD1_2314E6C3C01C-part1" = { + device = "/dev/disk/by-id/ata-CT480BX500SSD1_2314E6C3C01E-part1"; + bypassWorkqueues = true; + allowDiscards = true; + }; + "luks-scratch-pool-ata-CT480BX500SSD1_2314E6C3C01E-part1" = { + device = "/dev/disk/by-id/ata-CT480BX500SSD1_2314E6C3C01E-part1"; + bypassWorkqueues = true; + allowDiscards = true; + }; # Storage pool "luks-storage_pool-nvme-Samsung_SSD_970_EVO_Plus_2TB_S6S2NS0T834822N-part1" = { device = "/dev/disk/by-id/nvme-Samsung_SSD_970_EVO_Plus_2TB_S6S2NS0T834822N-part1"; @@ -171,14 +182,15 @@ keyFile = "/dev/disk/by-id/usb-XIAO_USB_Drive_24587CE29074-0:0"; fallbackToPassword = true; }; - # Torrenting pool - # "luks-torrenting_pool-wwn-0x500a0751e6c3c01e-part1" = { - # device = "/dev/disk/by-id/wwn-0x500a0751e6c3c01e-part1"; - # bypassWorkqueues = true; - # allowDiscards = true; - # }; }; }; + + zfs.extraPools = [ + "media" + "scratch" + "storage" + ]; + kernelModules = [ "kvm-amd" ]; extraModulePackages = [ ]; }; diff --git a/systems/jeeves/scripts/zfs.sh b/systems/jeeves/scripts/zfs.sh index b1f4353..0082116 100644 --- a/systems/jeeves/scripts/zfs.sh +++ b/systems/jeeves/scripts/zfs.sh @@ -11,6 +11,8 @@ sudo zpool create -o ashift=12 -O acltype=posixacl -O atime=off -O dnodesize=aut sudo zpool add storage -o ashift=12 special mirror sudo zpool add storage -o ashift=12 logs mirror +# scratch +sudo zpool create -o ashift=12 -O acltype=posixacl -O atime=off -O dnodesize=auto -O xattr=sa -O compression=zstd -m /zfs/scratch scratch # media datasets sudo zfs create -o compression=zstd-9 media/docker @@ -23,6 +25,10 @@ sudo zfs create -o compression=zstd-19 media/home_assistant sudo zfs create -o exec=off media/share sudo zfs create -o recordsize=16k -o primarycache=metadata -o mountpoint=/zfs/media/database/postgres media/postgres +# scratch datasets +sudo zfs create -o recordsize=16k -o sync=disabled scratch/qbitvpn +sudo zfs create -o recordsize=16k -o sync=disabled scratch/transmission + # storage datasets sudo zfs create -o recordsize=1M -o compression=zstd-19 storage/archive sudo zfs create -o compression=zstd-19 storage/main @@ -32,4 +38,3 @@ sudo zfs create -o compression=zstd-19 -o copies=3 storage/secrets sudo zfs create -o compression=zstd-19 storage/syncthing sudo zfs create -o recordsize=1M -o compression=zstd-9 -o exec=off -o sync=disabled storage/qbitvpn sudo zfs create -o recordsize=1M -o compression=zstd-9 -o exec=off -o sync=disabled storage/transmission - diff --git a/systems/jeeves/services/transmission.nix b/systems/jeeves/services/transmission.nix index 23bc605..bedae52 100644 --- a/systems/jeeves/services/transmission.nix +++ b/systems/jeeves/services/transmission.nix @@ -16,7 +16,7 @@ in cache-size-mb = 0; download-dir = "${vars.storage_transmission}/complete"; download-queue-enabled = false; - incomplete-dir = "${vars.storage_transmission}/incomplete"; + incomplete-dir = "${vars.scratch_transmission}/incomplete"; incomplete-dir-enabled = true; message-level = 3; peer-port = 51413; diff --git a/systems/jeeves/vars.nix b/systems/jeeves/vars.nix index 0c7642d..5e74002 100644 --- a/systems/jeeves/vars.nix +++ b/systems/jeeves/vars.nix @@ -1,9 +1,10 @@ let zfs_media = "/zfs/media"; zfs_storage = "/zfs/storage"; + zfs_scratch = "/zfs/scratch"; in { - inherit zfs_media zfs_storage; + inherit zfs_media zfs_storage zfs_scratch; # media media_database = "${zfs_media}/database"; media_docker = "${zfs_media}/docker"; @@ -23,5 +24,7 @@ in storage_library = "${zfs_storage}/library"; storage_qbitvpn = "${zfs_storage}/qbitvpn"; storage_transmission = "${zfs_storage}/transmission"; - + # scratch + scratch_qbitvpn = "${zfs_scratch}/qbitvpn"; + scratch_transmission = "${zfs_scratch}/transmission"; }