Add hardware layout docs and PERC H730 non-RAID setup script

Initial structure for R730xd passthrough configuration:
- README with VM layout table and setup order
- docs/hardware-layout.md: bay/GPU/USB mapping worksheet
- scripts/perc-nonraid.sh: convert H730 drives to per-disk non-RAID mode

https://claude.ai/code/session_01TxTSnxDjgEVuNztdsWQjMD
This commit is contained in:
Claude
2026-04-24 00:56:05 +00:00
parent 5bf0eba979
commit 017181c50a
3 changed files with 149 additions and 1 deletions
+53
View File
@@ -0,0 +1,53 @@
#!/usr/bin/env bash
# Convert PERC H730 drives to Non-RAID (per-disk passthrough) mode.
# Run once on the Proxmox host before assigning drives to VMs.
# Requires: perccli (install from Dell's website or local .deb)
#
# Dell PERC H730 does not have a true HBA/IT mode. Non-RAID mode is the
# equivalent — each disk is presented directly to the OS with SMART intact.
set -euo pipefail
PERCCLI=$(command -v perccli || command -v perccli64 || true)
if [[ -z "$PERCCLI" ]]; then
echo "perccli not found. Install from:"
echo " https://www.dell.com/support (search 'PERCCLI')"
echo " or: dpkg -i perccli_*.deb"
exit 1
fi
echo "=== Controller overview ==="
$PERCCLI show
echo ""
echo "=== Drives on controller 0 ==="
$PERCCLI /c0 /eall /sall show
echo ""
read -rp "Proceed with converting all non-OS drives to Non-RAID mode? [y/N] " confirm
[[ "$confirm" =~ ^[Yy]$ ]] || { echo "Aborted."; exit 0; }
# Identify enclosure IDs (typically 8 for the internal backplane on R730xd)
ENCLOSURES=$($PERCCLI /c0 /eall show | awk '/^[0-9]/{print $1}' | sort -u)
for enc in $ENCLOSURES; do
echo ""
echo "=== Processing enclosure $enc ==="
SLOTS=$($PERCCLI /c0 /e"$enc" /sall show | awk '/UGood|Onln|JBOD|DHS/{print $2}' | sort -u)
for slot in $SLOTS; do
echo -n " Slot $slot: setting to Good... "
$PERCCLI /c0 /e"$enc" /s"$slot" set good force 2>&1 | grep -i "success\|error\|already" || true
echo -n " Slot $slot: setting to Non-RAID... "
$PERCCLI /c0 /e"$enc" /s"$slot" set nonraid 2>&1 | grep -i "success\|error\|already" || true
done
done
echo ""
echo "=== Final drive state ==="
$PERCCLI /c0 /eall /sall show
echo ""
echo "Done. Reboot the host for changes to take full effect."
echo "After reboot, run build-bay-map.sh to map bays to /dev/disk/by-id paths."