Skip to main content

ZFS Storage Architecture

ZFS Storage Architecture

Terra utilizes ZFS for primary data storage, leveraging its advanced features for data integrity, snapshots, and caching.

🏊 Pools

🚀 main (SSD Pool)

  • Hardware: Raid-Z2 (6x 2TB SSD)
  • Total Capacity: ~12TB Raw
  • Use Case: High-performance data, VM disks, Docker root, and active AppData.
  • L2ARC: 48GB limit (leveraging NVMe partitions).

🐘 bulk (HDD Pool)

  • Hardware: Raid-Z1 (4x 12TB HDD)
  • Total Capacity: ~48TB Raw
  • Use Case: Large media storage, backups, and long-term archival.
  • Special VDEV: Mirrored NVMe partitions used for metadata offloading to speed up file listing on HDDs.

📂 Key Datasets & Mounts

  • /srv: Docker-compose configuration files (Stored on main).
  • /main/appdata: Primary persistent storage for containers (Stored on main).
  • /bulk/pics: Family photo/video archive (Stored on bulk).

🛡️ DataHealth Protection& Maintenance

🔍 Automated Monitoring (smartd)

Drive health is monitored via smartmontools with automated short and long self-tests configured to email results. Test schedules are staggered to prevent resource contention.

  • Sanoid:NVMe (2x 500GB): AutomatesShort hourly/daily/monthlytests snapshots.on days 1 & 2; Long tests quarterly at 00:00/01:00.
  • Scrubbing:HDD (4x 12TB): MonthlyShort tests on days 3-6; Long tests at 04:00/06:00/08:00/10:00.
SSD (6x 2TB): Short tests on days 1-6; Long tests quarterly across varied hours.

🧹 ZFS scrubsScrubbing

scheduled

A viascrub cronis performed automatically on the 3rd Sunday of every month to ensure data integrity and prevent bitrot.

Scrub Schedule (Cron): 24 0 15-21 * * root if [ $(date +\%w) -eq 0 ] && [ -x /usr/lib/zfs-linux/scrub ]; then /usr/lib/zfs-linux/scrub; fi