Skip to content

💾 ZFS Mass Storage Architecture (tank on PVE-1) ​

The mass storage pool tank resides locally on PVE-1 (pve) and provides high-capacity storage for media, downloads, photos, and backups.


🛠️ Pool Specification ​

  • Pool Name: tank
  • Mountpoint on PVE-1: /tank
  • Topology: raidz1-0 (Single-parity RAIDZ1 across 4 drives)
  • Raw Capacity: 15.99 TB (~14.5 TiB)
  • Usable Pool Space: ~10.9 TB (11 TB pool filesystem)
  • Current Allocation: ~5.8 TB Used (~56%), ~4.7 TB Free
  • Deduplication: Off (1.00x) | Fragmentation: 13%

💽 Physical Disk Layout (PVE-1) ​

All four drives are Seagate Enterprise Capacity 3.5" 7200 RPM 4TB Enterprise HDDs (Model: ST4000NM0035-1V4107):

DeviceDisk By-ID LinkSerial NumberWWNSMART StatusPower-On HoursOperational Note
/dev/sda/dev/disk/by-id/ata-ST4000NM0035-1V4107_ZC1B91PC-part1ZC1B91PC0x5000c500b5ede40fPASSED55,783 hrs (~6.3 yrs)Past read error (stable, not incrementing). Kept running per policy until complete failure; cold spare ready.
/dev/sdb/dev/disk/by-id/ata-ST4000NM0035-1V4107_ZC1B9SWK-part1ZC1B9SWK0x5000c500b5edf82ePASSEDNormalHealthy, 0 zpool errors
/dev/sdc/dev/disk/by-id/ata-ST4000NM0035-1V4107_ZC1B9Q83-part1ZC1B9Q830x5000c500b5ef0107PASSEDNormalHealthy, 0 zpool errors
/dev/sdd/dev/disk/by-id/ata-ST4000NM0035-1V4107_ZC1B938P-part1ZC1B938P0x5000c500b5ed540dPASSEDNormalHealthy, 0 zpool errors

⚙️ ZFS Dataset & Filesystem Settings ​

The main shared dataset is tank/media_root:

  • ZFS Dataset: tank/media_root
  • Mountpoint on PVE: /mnt/pve/tank_media (with /tank/media_root symlink for backwards compatibility)
  • Mount Options (Active): rw, relatime, xattr, posixacl, casesensitive
  • ZFS Properties:
    • mountpoint=/mnt/pve/tank_media
    • acltype=posixacl (POSIX Access Control Lists enabled)
    • xattr=sa (System attributes stored in inode for high performance)
    • aclmode=passthrough (Inherits and preserves ACLs across chmod/creation)
bash
# Applying optimal ZFS dataset settings:
zfs set mountpoint=/mnt/pve/tank_media acltype=posixacl xattr=sa aclmode=passthrough tank/media_root
ln -sfn /mnt/pve/tank_media /tank/media_root

📂 Dataset Layout & Directory Permissions on media_root ​

The root dataset /mnt/media_root (bound to /tank/media_root) contains the following directories:

DirectoryPrimary UseActive Writers / ServicesStandard UID:GIDPOSIX ACLs
media/Movies, TV shows, music, anime librariesRadarr, Sonarr, Fileflows1000:1000 (rwxrwxr-x+)GROUP:10000:rwx
torrents/Active torrents, completed downloadsqBittorrent1000:10000 (rwxrwxr-x+)GROUP:10000:rwx
usenet/Usenet downloads & intermediate unpacked filesSABnzbd1000:10000 (rwxrwxr-x+)GROUP:10000:rwx
images/Immich photos and photo library assetsImmich1001:1001 (rwxrwxr-x+)GROUP:10000:rwx
backups/Manual backups and application dump archivesBackup jobs1000:1000 (rwxrwxr-x+)GROUP:10000:rwx
cache/Application scratch / transcoder cacheFileflows / transcoders1000:1000 (rwxrwxr-x+)GROUP:10000:rwx
iso_files/OS installation images, toolsAdmin1000:1000 (rwxr-x---+)GROUP:10000:rwx
user_public_folder/Shared public transfer dropMulti-user / SMB1000:1000 (rwxr-xr-x+)GROUP:10000:rwx

🛡️ Drive Health Policy & Spare Standby ​

NOTE

Operational Policy for Hard Drives:

  1. Known Historical Error: Drive /dev/sda (Serial: ZC1B91PC, WWN: 0x5000c500b5ede40f) has a recorded past read error (READ: 6 in zpool status, 9 reallocated sectors, 4 uncorrectable). The error count is stable and not incrementing.
  2. Run-Until-Death Policy: Drives in the array are intentionally kept running until they experience total physical failure. Do not trigger alerts or prompt for replacement during routine health checks.
  3. Cold Spare on Standby: A spare 4TB HDD is stored on-site and ready to replace any drive in the array immediately upon failure.

💽 Cold Backup Target Drive (WD-WXL1EC84X4KR) ​

In addition to the primary 4-drive ZFS array, PVE-1 supports an automated plug-and-run cold backup workflow using a dedicated 2TB HDD:

  • Device: /dev/disk/by-id/ata-WDC_WD20SDZW-11JJ8S0_WD-WXL1EC84X4KR (Serial: WD-WXL1EC84X4KR)
  • Capacity: 2.0 TB (5400 RPM)
  • Filesystem: ext4
  • Role: Air-gapped offline cold backup storage for Immich photos (/tank/media_root/media/photos/) and homelab database/system dumps (/tank/media_root/backups/).
  • Automation: Triggered automatically via systemd-udevd on hardware insertion with Telegram notifications, filesystem buffer flush, clean unmount, and automated drive spindown.

Authoritative operational repository and DR hub.