Proxmox 8 on a Mac Pro 3.1 — Installation, ZFS raidz1 and the Harpertown fix

Field notes on installing Proxmox 8.4 on a Mac Pro 3.1 (dual Xeon Harpertown, 2008), a ZFS raidz1 pool, and the fix for the MSR IA32_DEBUGCTL bug.

Proxmox 8 on a Mac Pro 3.1 — Installation, ZFS raidz1 and the Harpertown fix Proxmox 8 on a Mac Pro 3.1 — Installation, ZFS raidz1 and the Harpertown fix
Table of Contents

The Mac Pro 3.1 (2008) is an underrated homelab platform: quiet, expandable, and available for under €200 second-hand. This guide covers a complete Proxmox 8.4 installation with ZFS raidz1 and the fixes specific to Harpertown CPUs.

Hardware

Component Details
Model Mac Pro 3.1 (Early 2008)
CPU 2× Intel Xeon E5462 (Harpertown, 4c/4t × 2 = 8 threads)
RAM 32 GB DDR2 ECC 800 MHz
Boot storage 120 GB SSD (SATA through an adapter)
Data storage 4× 2 TB HDD (ZFS raidz1)

Installing Proxmox

Write the ISO to a USB stick:

dd if=proxmox-ve_8.4.iso of=/dev/sdX bs=4M status=progress

When the Mac Pro starts, hold Option to pick the USB stick. The Mac Pro 3.1 boots in legacy BIOS mode — if the stick doesn’t show up, try another USB port (the rear ports work better).

EFI boot

The Mac Pro 3.1 can be picky with some USB sticks. If it gets stuck, burn a DVD or use rEFInd as an intermediate boot loader.

Bug — MSR IA32_DEBUGCTL (Harpertown)

After installation, VMs crash with this error in the KVM logs:

kvm: vcpu0, guest rip=0xffffffff8104b90c, error 1,
     info 0: MSR_IA32_DEBUGCTL error

This is a known bug with Harpertown Xeons (Penryn architecture) — these CPUs don’t fully support the IA32_DEBUGCTL register KVM expects.

Fix

# Option 1: set the module parameter
echo "options kvm-intel ignore_msrs=Y" > /etc/modprobe.d/kvm-intel.conf

# Reload without rebooting
modprobe -r kvm_intel
modprobe kvm_intel ignore_msrs=Y

# Check
cat /sys/module/kvm_intel/parameters/ignore_msrs
# → Y

# Make it permanent
update-initramfs -u -k all
root@macpro:~# cat /sys/module/kvm_intel/parameters/ignore_msrs
Y
ignore_msrs is active: KVM no longer crashes on Harpertown

After a reboot, VMs start and run stably.

Setting up the ZFS raidz1 pool

Raidz1 with four 2 TB disks = 6 TB usable (one parity disk).

# Identify the disks by stable ID (avoid /dev/sdX, which can change)
ls -la /dev/disk/by-id/ | grep -v part | grep ata

# Create the pool
zpool create -o ashift=12 \
  -O compression=lz4 \
  -O atime=off \
  -O xattr=sa \
  -O dnodesize=auto \
  datastore raidz1 \
  /dev/disk/by-id/ata-DISK1 \
  /dev/disk/by-id/ata-DISK2 \
  /dev/disk/by-id/ata-DISK3 \
  /dev/disk/by-id/ata-DISK4

# Check
zpool status
zfs list
# Cap the ARC at 8 GB (so it doesn't eat the RAM the VMs need)
echo "options zfs zfs_arc_max=8589934592" > /etc/modprobe.d/zfs.conf

# Weekly scrub (already set up by Proxmox)
systemctl status zfs-scrub.timer

Adding the datastore to Proxmox

pvesm add zfspool datastore \
  --pool datastore \
  --sparse 1 \
  --content images,rootdir

Or in the web interface: Datacenter → Storage → Add → ZFS.

SSD as an L2ARC cache (optional)

# Add an SSD as a read cache
zpool add datastore cache /dev/disk/by-id/ata-SSD

# Check
zpool status
# → cache: SSD listed

Bridged network configuration

# /etc/network/interfaces
auto lo
iface lo inet loopback

auto enp0s3
iface enp0s3 inet manual

auto vmbr0
iface vmbr0 inet static
    address 192.168.1.10/24
    gateway 192.168.1.1
    bridge-ports enp0s3
    bridge-stp off
    bridge-fd 0

Observed performance

After several months with 8-10 VMs running at the same time:

Metric Value
Average CPU 15-40%
RAM used 22-28 GB / 32
ZFS I/O (seq read) ~150 MB/s
ZFS I/O (seq write) ~80 MB/s
CPU temperature 45-55°C

The Mac Pro’s (axial, very quiet) cooling handles the heat perfectly, even under load.

Conclusion

The Mac Pro 3.1 is a solid homelab base despite being 16 years old. The only real hurdle is the ignore_msrs bug — once fixed, everything runs perfectly on Proxmox 8.4.

RAM

The Mac Pro 3.1 takes up to 32 GB of DDR2 ECC in 8 slots. Paired modules matter for performance. Buy kits tested for the Mac Pro.

Comments