claude-home/networking/pihole-disk-optimization.md
Cal Corum 4b7eca8a46
All checks were successful
Reindex Knowledge Base / reindex (push) Successful in 3s
docs: add YAML frontmatter to all 151 markdown files
Adds title, description, type, domain, and tags frontmatter to every
doc for improved KB semantic search. The description field is prepended
to every search chunk, and domain/type/tags enable filtered queries.

Type values: context, guide, runbook, reference, troubleshooting
Domain values match directory structure (networking, docker, etc.)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 09:00:44 -05:00

3.4 KiB

title description type domain tags
Pi-hole Disk Optimization Resolved critical disk space issue on primary Pi-hole by reducing query log retention to 7 days, pruning Docker resources, and removing old gravity backups. runbook networking
pihole
disk-space
docker
optimization
maintenance

Pi-hole Disk Optimization - 2026-02-06

Problem

Primary Pi-hole (npm-pihole at 10.10.0.16) had critical disk space issues:

  • Root filesystem: 91% full (27GB used of 31GB)
  • Pi-hole data: 3.6GB total
    • pihole-FTL.db: 2.8GB (query log database)
    • gravity.db: 460MB (blocklist database)
    • gravity.db.v5.backup: 114MB (old v5 backup)
  • Query retention: 91 days (default)
  • Total queries stored: 26.4 million

Actions Taken

1. Removed Old Backup Database

rm /home/cal/container-data/pihole/etc-pihole/gravity.db.v5.backup

Space freed: 114MB

2. Cleaned Up Docker Resources

docker system prune -af --volumes

Space freed: 4.3GB

  • Removed unused images (old Pi-hole versions, Jellyfin, Foundry, etc.)
  • Removed stopped containers
  • Removed unused networks

3. Reduced Query Log Retention

echo "database.maxDBdays=7.0" >> /etc/pihole/pihole-FTL.conf
docker compose restart

Configuration: Changed from 91 days to 7 days Future savings: Database will automatically maintain ~7 days of logs instead of 91

Results

Metric Before After Improvement
Disk Usage 91% (27GB/31GB) 73% (22GB/31GB) -18%
Free Space 2.8GB 8.2GB +5.4GB
Total Freed - 4.3GB -

Ongoing Maintenance

Automatic Cleanup

Pi-hole will now automatically:

  • Delete queries older than 7 days
  • Maintain FTL database size around ~300-500MB (instead of 2.8GB)
  • Keep the most recent week of query logs for troubleshooting

Manual Cleanup (if needed)

# Flush Pi-hole logs
docker exec pihole pihole -f

# Check disk usage
df -h /
du -sh /home/cal/container-data/pihole/etc-pihole/*

# Clean unused Docker resources
docker system prune -af --volumes

# Check query count
docker exec pihole pihole-FTL sqlite3 /etc/pihole/pihole-FTL.db 'SELECT COUNT(*) FROM queries;'

Monitoring Recommendations

Set up disk space alerts when usage exceeds 85%:

# Add to cron (daily check)
0 8 * * * df -h / | awk '$5+0 > 85 {print "Warning: Disk usage at " $5 " on npm-pihole"}' | mail -s "Disk Alert" admin@example.com

Check Pi-hole database size monthly:

du -h /home/cal/container-data/pihole/etc-pihole/pihole-FTL.db

Configuration File

/etc/pihole/pihole-FTL.conf:

database.maxDBdays=7.0  # Keep queries for 7 days only

Prevention Tips

  1. Regular Docker cleanup: Run docker system prune monthly
  2. Monitor disk usage: Check df -h weekly
  3. Review query retention: 7 days is sufficient for most troubleshooting
  4. Consider disabling query logging if not needed:
    pihole logging off
    
  5. Archive old logs before major upgrades (like v5→v6)

Space Budget Estimates

With 7-day retention:

  • Pi-hole FTL database: ~300-500MB (vs 2.8GB before)
  • Gravity database: ~460MB (36 blocklists)
  • Docker images: ~2-3GB (active containers only)
  • System overhead: ~20GB
  • Recommended free space: 5GB+ for headroom

Current allocation is healthy at 73% with 8.2GB free.