I recently bought a HP Microserver Gen8 with the intention of installing Proxmox and expanding my virtual lab environment. In my setup, Proxmox is installed and boots from the internal Micro-SD card reader, with 4 2TB spinning disks (actually 3x2TB & 1X3TB, due to a shipping error in my favour!) to hold the virtual machines. The built-in hardware RAID controller lacks decent Linux drivers so I used software RAID instead of the HP Smart Provisioning utility.
The setup wasn’t particularly difficult, but wasn’t particularly obvious either. This post is a rough guide to the process as I will almost certainly need to rebuild this thing at some point in the future! As Proxmox is Debian-based the Digital Ocean documentation was very useful.
First, disable the built-in RAID controller and have it operate as a standard SATA one instead.
- Boot into Setup (F9)
- System Options -> SATA Controller Options -> Embedded SATA Configuration -> Enable SATA AHCI Support
Reboot into Proxmox and update/upgrade the OS packages:
apt-get update && apt-get upgrade -y
Install mdadm. As Proxmox is installed on the SD card, there is no need to start the array before the OS boots, so enter “none” when prompted:
apt-get install mdadm
View the raw devices and build the RAID:
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
mdadm –create –verbose /dev/md0 –level=5 –raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
This will take a few hours; progress can be checked:
Once the array is built, create the filesystem, create a mount point, and mount the RAID:
mkfs.ext4 -F /dev/md0
mkdir -p /mnt/md0
mount /dev/md0 /mnt/md0
Confirm that the RAID is available:
df -h -x devtmpfs -x tmpfs
Save the array layout, update initramfs, and automatically mount the array at boot:
mdadm –detail –scan | tee -a /etc/mdadm/mdadm.conf
echo ‘/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0’ | tee -a /etc/fstab
The RAID is now ready for data. One tip a friend gave me (a little too late, unfortunately) was to check the logical identifiers for each disk and physically label each one so that when one fails, finding and replacing it will be easier.