Homelab V5 - Dual Rack
Homelab V5 - Dual Rack: Building Enterprise-Grade Infrastructure at Home
Introduction
Building a homelab is more than just a hobby—it’s a journey into understanding enterprise-grade infrastructure, networking, and systems administration. The Homelab V5 - Dual Rack setup represents the pinnacle of home infrastructure, combining massive storage capacity, high-performance computing, and enterprise-grade power management into a cohesive, scalable environment. This comprehensive guide explores the architecture, implementation, and optimization of a dual-rack homelab system that rivals many small business data centers.
The dual-rack configuration addresses the fundamental challenge of scaling homelab infrastructure: as your needs grow from basic services to complex, multi-tenant environments, single-rack setups quickly become limiting. By implementing a dual-rack design, you gain separation of concerns, improved cooling efficiency, better cable management, and the ability to create distinct zones for different workloads. Whether you’re running virtual machines, containerized applications, media servers, or development environments, this architecture provides the foundation for virtually unlimited expansion.
In this guide, we’ll dissect the specific Homelab V5 setup mentioned in the Reddit post, exploring each component’s role, the rationale behind the configuration choices, and how to implement similar systems. We’ll cover everything from power distribution and backup strategies to storage optimization and network architecture. By the end, you’ll have a complete understanding of how to build, configure, and maintain a dual-rack homelab that can handle demanding workloads while providing reliability, scalability, and performance.
Understanding the Dual Rack Architecture
The dual-rack configuration described in the Reddit post represents a sophisticated approach to homelab design, separating storage and compute functions across two physical racks while maintaining unified management through Unraid and ZFS. This architecture embodies several key principles of enterprise infrastructure design: redundancy, scalability, and workload isolation.
Rack 1 - Storage and Backup Focus
Rack 1 appears to be optimized for storage and backup operations, housing the massive 220TB JBOD backup array and the central Unraid/ZFS storage head. The 15U Pyle PDU (Power Distribution Unit) with 220V power distribution and 2250VA/1350W UPS provides enterprise-grade power management, ensuring clean, stable power delivery to all critical components. The 24x10TB JBOD array in the 12U-14U range represents a dedicated backup tier, providing 220TB of usable storage for ISOs and other backup data. This separation of backup storage from primary storage is a best practice that protects against data loss and provides disaster recovery capabilities.
The heart of Rack 1 is the Unraid ATLAS system in the 10U-11U range, featuring a Supermicro X11SPi-TF motherboard, Xeon Gold 6148 processor with 20 cores and 40 threads, 160GB RAM, and dual 10GbE connectivity. This powerhouse serves as the storage head, managing both the main 400TB usable storage pool and the backup storage through ZFS. The configuration includes 4x2TB NVME cache drives for high-speed read/write operations, significantly improving performance for frequently accessed data. The ZFS RAIDZ2 configuration with 12x10TB drives provides both performance and redundancy, ensuring data integrity even with multiple drive failures.
Rack 2 - Compute and Services
While the Reddit post cuts off before detailing Rack 2, a typical dual-rack homelab would dedicate the second rack to compute-intensive workloads, virtualization hosts, networking equipment, and active services. This separation allows for optimized cooling strategies, easier maintenance, and the ability to power down entire racks for different workloads without affecting storage operations.
Prerequisites and Planning
Before embarking on a dual-rack homelab build, careful planning and assessment of requirements is essential. This isn’t a project for beginners—it requires significant investment in both hardware and knowledge.
Hardware Requirements
For a setup of this scale, you’ll need:
- Physical Infrastructure: Two 42U server racks minimum, proper cooling systems (either rack-mounted AC units or dedicated room cooling), cable management systems, and grounding equipment
- Power Infrastructure: At least 20-30A 220V circuits, multiple UPS units with sufficient capacity (calculated based on total power draw), and proper circuit breakers
- Network Infrastructure: 10GbE switches (at least two for redundancy), multiple NICs for each server, and potentially fiber optic connections for long-distance runs
- Storage: JBOD enclosures, SAS/SATA controllers, sufficient drive bays, and backup storage solutions
- Compute: Enterprise-grade servers with multiple CPU sockets, high RAM capacity, and multiple PCIe slots for expansion
Software and Operating Systems
The software stack for this architecture includes:
- Unraid: For storage pooling, VM management, and container orchestration
- ZFS: For data integrity, snapshots, and advanced storage features
- VMware ESXi or Proxmox: For virtualization (if not using Unraid’s built-in capabilities)
- Docker/Kubernetes: For containerized applications
- Monitoring Software: Prometheus, Grafana, or commercial solutions like Datadog
- Backup Software: Veeam, UrBackup, or similar solutions
Network Architecture
A robust network design is crucial:
- VLAN Segmentation: Separate VLANs for management, storage, VMs, and containers
- Redundant Paths: Multiple network connections with failover capabilities
- Static IPs: Reserved IP ranges for critical infrastructure
- VPN Access: Secure remote access for management
- Firewall Rules: Comprehensive security policies
Installation and Initial Setup
Setting up a dual-rack homelab requires methodical planning and execution. Here’s a comprehensive approach to getting your infrastructure online.
Power and Physical Installation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Verify power requirements before installation
# Calculate total power draw:
# - List all devices with their power consumption
# - Sum the wattage
# - Add 20% overhead for safety
# - Ensure UPS capacity exceeds total by at least 30%
# Example calculation script
#!/bin/bash
devices=(
"Pyle PDU: 500W"
"Unraid Server: 800W"
"JBOD Array: 600W"
"Switches: 400W"
"Cooling: 1000W"
)
total_power=0
for device in "${devices[@]}"; do
power=$(echo $device | cut -d':' -f2 | xargs)
total_power=$((total_power + power))
done
overhead=$((total_power * 120 / 100))
echo "Total power requirement: ${total_power}W"
echo "With 20% overhead: ${overhead}W"
Rack 1 - Storage Setup
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Unraid Installation Steps
# 1. Download Unraid USB Creator from unraid.net
# 2. Create bootable USB
# 3. Boot from USB and install to cache drive
# Initial Unraid Configuration
# Access web UI at http://unraid.local
# Set up storage devices
# Configure ZFS pools
# Set up shares and permissions
# ZFS Pool Creation Example
zpool create -f storage raidz2 \
/dev/sdb /dev/sdc /dev/sdd /dev/sde \
/dev/sdf /dev/sdg /dev/sdh /dev/sdi \
/dev/sdj /dev/sdk /dev/sdl /dev/sdm
# Create datasets with compression
zfs create -o compression=lz4 storage/vm_images
zfs create -o compression=lz4 storage/containers
zfs create -o compression=lz4 storage/backups
Network Configuration
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Network Switch Configuration
# Example for Ubiquiti UniFi Switch
# VLAN Configuration
configure
vlan 10
name "Management"
exit
vlan 20
name "Storage"
exit
vlan 30
name "VM Network"
exit
vlan 40
name "Container Network"
exit
# Port Configuration
interface 1
description "Unraid Server"
switchport mode trunk
switchport trunk allowed vlan add 10,20,30,40
exit
interface 2-24
description "General Access"
switchport mode access
switchport access vlan 10
exit
Configuration and Optimization
With the basic infrastructure in place, optimization becomes crucial for performance, reliability, and manageability.
Storage Optimization
1
2
3
4
5
6
7
8
9
10
11
12
# ZFS Advanced Configuration
# Adjust ARC (Adaptive Replacement Cache) size
echo 16384 > /sys/module/zfs/parameters/zfs_arc_max
# Enable prefetch for sequential workloads
echo 3 > /sys/module/zfs/parameters/zfs_prefetch_disable
# Configure sync writes for databases
zfs set sync=always storage/databases
# Enable deduplication for virtual machine images
zfs set dedup=on storage/vm_images
Network Optimization
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 10GbE Network Tuning
# Increase TCP window size
echo "net.core.rmem_max = 16777216" >> /etc/sysctl.conf
echo "net.core.wmem_max = 16777216" >> /etc/sysctl.conf
echo "net.ipv4.tcp_rmem = 4096 87380 16777216" >> /etc/sysctl.conf
echo "net.ipv4.tcp_wmem = 4096 65536 16777216" >> /etc/sysctl.conf
# Enable jumbo frames for better performance
# Requires network switch configuration as well
ip link set eth0 mtu 9000
# Configure bonding for redundancy
cat > /etc/modprobe.d/bonding.conf << EOF
alias bond0 bonding
options bond0 miimon=100 mode=4
EOF
Security Hardening
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Firewall Configuration
# Using UFW (Uncomplicated Firewall)
# Allow only necessary services
ufw --force reset
ufw default deny incoming
ufw default allow outgoing
# Open specific ports
ufw allow from 192.168.1.0/24 to any port 22 # SSH
ufw allow from 192.168.1.0/24 to any port 80 # HTTP
ufw allow from 192.168.1.0/24 to any port 443 # HTTPS
ufw allow from 192.168.1.0/24 to any port 8080 # Unraid Web UI
# Enable firewall
ufw --force enable
# Fail2ban Configuration
cat > /etc/fail2ban/jail.local << EOF
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
EOF
Day-to-Day Operations and Maintenance
Operating a dual-rack homelab requires regular maintenance and monitoring to ensure optimal performance and reliability.
Monitoring and Alerting
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Prometheus Configuration
cat > /etc/prometheus/prometheus.yml << EOF
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'unraid'
static_configs:
- targets: ['unraid:9090']
- job_name: 'system'
static_configs:
- targets: ['node_exporter:9100']
- job_name: 'zfs'
static_configs:
- targets: ['zfs_exporter:9114']
EOF
# Grafana Dashboard Setup
# Import pre-built dashboards for:
# - System resources (CPU, memory, disk)
# - Network traffic
# - ZFS pool health
# - UPS status
# - Temperature monitoring
Backup and Disaster Recovery
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Automated Backup Script
#!/bin/bash
# Daily backup of critical data
DATE=$(date +%Y%m%d)
BACKUP_DIR="/mnt/backups/$DATE"
# Create backup directory
mkdir -p $BACKUP_DIR
# Backup Unraid configuration
cp -r /boot/config/plugins $BACKUP_DIR/unraid_config
# Backup critical datasets
zfs snapshot storage@daily_$DATE
zfs send storage@daily_$DATE | zfs recv backup_pool/storage_daily_$DATE
# Backup VMs
for vm in $(virsh list --all --name); do
virsh dumpxml $vm > $BACKUP_DIR/$vm.xml
done
# Send backups to offsite location
rsync -avz --delete $BACKUP_DIR/ user@offsite:/backups/
Performance Tuning and Capacity Planning
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Capacity Planning Script
#!/bin/bash
# Monitor disk usage trends
while true; do
DATE=$(date)
TOTAL=$(zfs list -o used -p storage | awk 'NR==2{print $1}')
AVAIL=$(zfs list -o avail -p storage | awk 'NR==2{print $1}')
USAGE=$(echo "scale=2; $TOTAL/($TOTAL+$AVAIL)*100" | bc)
echo "$DATE - Usage: $USAGE% - Total: $TOTAL bytes - Avail: $AVAIL bytes" >> /var/log/capacity.log
# Alert if usage exceeds 80%
if (( $(echo "$USAGE > 80" | bc -l) )); then
echo "Warning: Storage usage exceeded 80%!" | mail -s "Capacity Alert" admin@example.com
fi
sleep 3600 # Check every hour
done
Troubleshooting Common Issues
Even with careful planning, issues will arise. Here are solutions to common problems in dual-rack homelab environments.
Storage Performance Issues
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Diagnose ZFS performance problems
# Check pool status
zpool status -v storage
# Check for errors
zpool status -e storage
# Check I/O statistics
iostat -xn 5
# Check ARC hit ratio
cat /proc/spl/kstat/zfs/arcstats | grep -E '(hits|misses|size)'
# Clear ZIL if needed
zpool clear storage
Network Connectivity Problems
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Network diagnostic script
#!/bin/bash
# Test network connectivity
ping -c 4 unraid.local
ping -c 4 8.8.8.8
# Check bond status
cat /proc/net/bonding/bond0
# Check interface statistics
ifconfig -a
# Test 10GbE throughput
iperf3 -c storage_server -t 30 -P 4
UPS and Power Issues
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# UPS Monitoring Script
#!/bin/bash
# Check UPS status
upsc ups@localhost
# Monitor battery level
BATTERY_LEVEL=$(upsc ups@localhost battery.charge)
if (( $BATTERY_LEVEL < 20 )); then
echo "Battery level critical: $BATTERY_LEVEL%"
# Initiate shutdown if on battery power
upscli -u admin -p password localhost set shutdown.return
fi
# Test UPS shutdown
upsdrvctl -u admin -p password shutdown
Conclusion
Building a Homelab V5 - Dual Rack system represents a significant investment in both hardware and expertise, but the rewards are substantial. This architecture provides enterprise-grade infrastructure capabilities in a home environment, enabling you to learn advanced concepts like storage virtualization, network segmentation, and high-availability design. The dual-rack approach offers scalability, reliability, and performance that can handle everything from personal projects to small business workloads.
The key to success with this type of setup is understanding that it’s not just about the hardware—it’s about the architecture, the configuration, and the ongoing maintenance. By following the guidelines in this comprehensive guide, you’ll be well-equipped to build, configure, and maintain a dual-rack homelab that serves your needs for years to come. Remember to start with a solid foundation, plan for expansion, and always prioritize redundancy and backup strategies.
As you continue your homelab journey, consider exploring advanced topics like software-defined networking, container orchestration with Kubernetes, and automation with tools like Ansible and Terraform. The skills you develop in your homelab will translate directly to professional environments, making this investment valuable both personally and professionally.
For further learning, consult the official documentation for Unraid, ZFS, and your specific hardware components. Join homelab communities on Reddit, Discord, and other platforms to share knowledge and get support from fellow enthusiasts. Your dual-rack homelab is more than just a project—it’s a gateway to understanding modern infrastructure at scale.