Posts tagged: zfs

All posts with the tag "zfs"

15 posts latest post 2026-10-06
Publishing rhythm
Oct 2026 | 1 posts

The Faulted Disk: harbor Replacement Writeup

The sequel to panicking-led-to-losing-my-desktop — this time the monitoring actually caught the disk dying, and nothing was lost. What happened # is my replica pool — a 10.9T mirror (2x 12TB) that receives syncoid snapshots from. One side of the mirror, a Seagate Exos (serial,), went FAULTED with 14 read + 22 checksum errors. The IronWolf mirror side carried the pool —. ZFS redundancy did exactly its job. The difference from last time # Last failure: no monitoring, found out by accident months later, desktop died. This failure: SigNoz + node-exporter’s ZFS collector → → alert rule → Gotify → my phone. The gotify notification fired before I knew anything was wrong. Diagnosis # Before or replace — check SMART. already scrapes all disks into SigNoz, so I didn’t even need sudo: raw = 3024 and counting value/worst still 100 but raw errors climbing SMART overall: still PASS (SMART’s overall bit is conservative until threshold) 3k+ remapped sectors is a platter going bad — not a cable blip. V…

sudo apt-get install -y samba \ then set sharesmb=on \ chown the user \ smbpasswd -a \ then mount with user/password from other machine

Htop #

I recently have been having significant home server issues, and that’s not the point of this - today I learned what D state is when looking at htop.

htop-d

Apparently this means “uninterruptable sleep” and it’s a dev’s nightmare…

Context #

The issue I was having was that some zfs rollback commands were hung - for hours… I wasn’t sure what was going on, rollbacks should be instant but I figured it was just an artifact of these issues.

Turns out I still don’t know what locked the disks up but I learned why <C>-c did nothing… the more you know

lsof | grep /tank/nas shows me what is using my nas at any time!

➜ pihole sudo zfs load-key -L file:///path/to/.zfs.tank.key tank/encrypted/vms/arch-sandbox ➜ pihole sudo zfs change-key -o keylocation=file:///path/to/.zfs.tank.key -o keyformat=raw tank/encrypted/vms/arch-sandbox Need to load-key for each individual dataset, then change key location to be a file instead of the prompt

Systemd timer for syncoid

I have a bash script called which boils down to a barebones - I want to run this script hourly but as my user (notice the no-privilege-elevation flag) First - create a systemd unit file at Then we save the unit file, enable the service, and then start it Note this will run that script… so be ready for syncoid to do its thing Now for the timer… We create Hit it with a and you’re in business!

zfs list has a flag -r, but if you use zfs driver for docker then you’ll get flooded with every docker volume in the world. zfs list -r -d N will limit the dept of the print out, so zfs list -r -d 2 gives me tank, tank/encrypted, tank/encrypted/docker -> but then I don’t see all the continer volumes

Assuming you have a pool called tank…

And assuming you have an encrypted dataset (See Jim Saltar’s short intro)

  1. Create a group for permissions - in my case I have one called home
  2. Then if there’s anything in /tank/encrypted his it with chgrp -R home /tank/encrypted to give the home group ownership
  3. Next we need to make sure that the members of home can do the writing… so chmod 775 -R /tank/encrypted will do the trick
  4. Finally we want to make sure that all data created inside our dataset has the same set of permissions with chmod g+s /tank/encrypted and chmod g+w /tank/encrypted