# Hardware Compatibility Guide **Document Version:** 1.0 **Last Updated:** 2025-12-10 ## Table of Contents - [Tested Hardware Platforms](#tested-hardware-platforms) - [BIOS/UEFI Configuration by Vendor](#biosuefi-configuration-by-vendor) - [Known Issues and Workarounds](#known-issues-and-workarounds) - [Hardware-Specific NixOS Modules](#hardware-specific-nixos-modules) - [BMC/IPMI Command Reference](#bmcipmi-command-reference) - [Hardware Recommendations](#hardware-recommendations) ## Tested Hardware Platforms ### Dell PowerEdge Servers | Model | BIOS | UEFI | PXE Boot | Notes | Status | |--------------|------|------|----------|------------------------------------|-----------| | R640 | Yes | Yes | Yes | Requires BIOS version A19+ | Fully Tested | | R650 | Yes | Yes | Yes | Best PXE compatibility | Fully Tested | | R740 | Yes | Yes | Yes | Disable Secure Boot for PXE | Fully Tested | | R750 | Yes | Yes | Yes | Latest iDRAC firmware recommended | Tested | | R6515 | Yes | Yes | Yes | AMD EPYC, requires BIOS 2.10+ | Tested | | R6525 | Yes | Yes | Yes | Dual AMD EPYC | Tested | **Recommended Dell Configuration:** - iDRAC Enterprise license (for virtual console) - Latest BIOS and iDRAC firmware - Redundant power supplies - Dual 10GbE or 25GbE NICs ### HPE ProLiant Servers | Model | BIOS | UEFI | PXE Boot | Notes | Status | |--------------|------|------|----------|------------------------------------|-----------| | DL360 Gen10 | Yes | Yes | Yes | Requires iLO 5 firmware 2.40+ | Fully Tested | | DL380 Gen10 | Yes | Yes | Yes | Excellent PXE support | Fully Tested | | DL360 Gen10+ | Yes | Yes | Yes | Latest generation, best support | Tested | | DL385 Gen10+ | Yes | Yes | Yes | AMD EPYC, good NixOS support | Tested | **Recommended HPE Configuration:** - iLO Advanced license (for remote console) - Smart Array controller in AHCI/HBA mode (for direct disk access) - Latest System ROM and iLO firmware - HPE Ethernet 10/25Gb 2-port adapters ### Supermicro Servers | Model | BIOS | UEFI | PXE Boot | Notes | Status | |--------------|------|------|----------|------------------------------------|-----------| | SYS-2029U | Yes | Yes | Yes | Requires BMC firmware 1.73+ | Fully Tested | | SYS-1029P | Yes | Yes | Yes | Good PXE support | Tested | | SYS-6029U | Yes | Yes | Yes | 2U 4-node, tested per-node | Tested | | X11DPH-T | Yes | Yes | Yes | Motherboard, good compatibility | Tested | **Recommended Supermicro Configuration:** - Latest BMC firmware (IPMI 2.0) - Dedicated BMC port (not shared with NIC) - Intel or Mellanox NICs (better Linux support than Broadcom) ### Lenovo ThinkSystem | Model | BIOS | UEFI | PXE Boot | Notes | Status | |--------------|------|------|----------|------------------------------------|-----------| | SR630 | Yes | Yes | Yes | Requires XCC firmware 4.10+ | Tested | | SR650 | Yes | Yes | Yes | Good PXE support | Tested | | SR670 | Yes | Yes | Partial | Some NIC driver issues (see below) | Partial | **Known Issue:** Older Lenovo models (pre-2019) may have NIC driver issues with NixOS netboot kernel. Update to latest NIC firmware. ### Generic Whitebox x86 Servers | Type | BIOS | UEFI | PXE Boot | Notes | Status | |---------------|------|------|----------|-----------------------------------|-----------| | Intel-based | Yes | Maybe| Yes | Depends on motherboard firmware | Varies | | AMD-based | Yes | Maybe| Yes | UEFI support varies by board | Varies | **Recommendations:** - Use server-grade motherboards (Supermicro, ASRock Rack, Gigabyte) - Verify UEFI PXE support in motherboard specs - Test PXE boot before purchasing large quantities - Intel NICs preferred (i350, X520, X540) over Realtek ## BIOS/UEFI Configuration by Vendor ### Dell PowerEdge (iDRAC) **Access BIOS:** 1. Power on server 2. Press F2 during POST 3. Navigate with arrow keys, Enter to select **PXE Boot Configuration:** ``` System BIOS → Boot Settings: Boot Mode: UEFI (or BIOS for legacy systems) Boot Sequence Retry: Enabled UEFI Network Stack: Enabled System BIOS → Network Settings: PXE Device 1: Embedded NIC 1 Port 1 PXE Device Settings: UEFI System BIOS → Boot Sequence: Boot Mode: UEFI Boot Sequence: 1. UEFI: Network - Embedded NIC 1 Port 1 2. UEFI Hard Drive 3. ... ``` **Performance Settings:** ``` System BIOS → System Profile Settings: System Profile: Performance System BIOS → Processor Settings: Logical Processor: Enabled Virtualization Technology: Enabled Execute Disable: Enabled System BIOS → Memory Settings: Node Interleaving: Disabled (for NUMA awareness) Memory Operating Mode: Optimizer Mode ``` **Disable Secure Boot (required for PXE):** ``` System BIOS → Secure Boot: Secure Boot: Disabled ``` **iDRAC Configuration (via iDRAC web interface):** ``` iDRAC Settings → Network: Enable NIC: Enabled NIC Selection: Dedicated IPv4 Settings: Enable IPv4: Enabled DHCP or Static IP: Static IP Address: 10.0.10.50 Subnet Mask: 255.255.255.0 Gateway: 10.0.10.1 iDRAC Settings → User Authentication: Change default password: Console/Media → Virtual Console: Enabled: Yes Plug-in Type: HTML5 Services → Virtual Console: Enable Virtual Console: Enabled ``` **CLI Commands (racadm):** ```bash # Configure network boot racadm set BIOS.BiosBootSettings.BootMode Uefi racadm set BIOS.PxeDev1Settings.PxeDev1Interface.Embedded.NIC.1-1-1 racadm jobqueue create BIOS.Setup.1-1 # Set boot order (network first) racadm set BIOS.BiosBootSettings.BootSeq Nic.Embedded.1-1-1,HardDisk.List.1-1 # Enable virtualization racadm set BIOS.ProcSettings.LogicalProc Enabled racadm set BIOS.ProcSettings.ProcVirtualization Enabled ``` ### HPE ProLiant (iLO) **Access BIOS:** 1. Power on server 2. Press F9 during POST 3. Navigate with arrow keys, F10 to save **PXE Boot Configuration:** ``` System Configuration → BIOS/Platform Configuration (RBSU): Boot Options → Boot Mode: Boot Mode: UEFI Mode Boot Options → UEFI Optimized Boot: UEFI Optimized Boot: Enabled Network Options → Network Boot: Network Boot: Enabled PXE Support: UEFI Only Network Options → Pre-Boot Network Environment: Pre-Boot Network Environment: Auto Boot Options → UEFI Boot Order: 1. Embedded FlexibleLOM 1 Port 1 : HPE Ethernet... 2. Generic USB Boot 3. Embedded SATA ``` **Performance Settings:** ``` System Configuration → BIOS/Platform Configuration (RBSU): Processor Options: Intel Hyperthreading Options: Enabled Intel Virtualization Technology: Enabled Memory Options: Node Interleaving: Disabled Memory Patrol Scrubbing: Enabled Power and Performance Options: Power Regulator: Static High Performance Mode Collaborative Power Control: Disabled ``` **Disable Secure Boot:** ``` System Configuration → BIOS/Platform Configuration (RBSU): Server Security → Secure Boot Settings: Secure Boot Enforcement: Disabled ``` **iLO Configuration (via iLO web interface):** ``` Network → iLO Dedicated Network Port: Enable iLO Dedicated Network Port: Enabled Network Settings: DHCP Enable: Disabled IP Address: 10.0.10.50 Subnet Mask: 255.255.255.0 Gateway: 10.0.10.1 Administration → Access Settings: Change default password: Remote Console → Remote Console Settings: Remote Console Enabled: Yes .NET IRC or Java IRC: HTML5 ``` **CLI Commands (hponcfg):** ```bash # Enable network boot (via iLO SSH) set /system1/bootconfig1/bootsource5 bootorder=1 # Enable virtualization set /system1/cpu1 ProcessorEnableIntelVT=Yes ``` ### Supermicro (IPMI) **Access BIOS:** 1. Power on server 2. Press Delete during POST 3. Navigate with arrow keys, F10 to save **PXE Boot Configuration:** ``` BIOS Setup → Boot: Boot mode select: UEFI UEFI Network Stack: Enabled IPv4 PXE Support: Enabled IPv6 PXE Support: Disabled (unless needed) BIOS Setup → Boot Priority: Boot Option #1: UEFI Network : ... Boot Option #2: UEFI Hard Disk BIOS Setup → Advanced → Network Stack Configuration: Network Stack: Enabled Ipv4 PXE Support: Enabled ``` **Performance Settings:** ``` BIOS Setup → Advanced → CPU Configuration: Hyper-Threading: Enabled Intel Virtualization Technology: Enabled Execute Disable Bit: Enabled BIOS Setup → Advanced → Chipset Configuration → North Bridge: NUMA: Enabled BIOS Setup → Advanced → Power & Performance: Power Technology: Performance ``` **Disable Secure Boot:** ``` BIOS Setup → Boot → Secure Boot: Secure Boot: Disabled ``` **IPMI Configuration (via web interface or ipmitool):** Web Interface: ``` Configuration → Network: IP Assignment: Static IP Address: 10.0.10.50 Subnet Mask: 255.255.255.0 Gateway: 10.0.10.1 Configuration → Users: User 2 (ADMIN): Remote Control → Console Redirection: Enable Remote Console: Yes ``` **CLI Commands (ipmitool):** ```bash # Set static IP ipmitool lan set 1 ipsrc static ipmitool lan set 1 ipaddr 10.0.10.50 ipmitool lan set 1 netmask 255.255.255.0 ipmitool lan set 1 defgw ipaddr 10.0.10.1 # Change admin password ipmitool user set password 2 # Enable SOL (Serial-over-LAN) ipmitool sol set enabled true 1 ipmitool sol set volatile-bit-rate 115.2 1 ``` ### Lenovo ThinkSystem (XCC) **Access BIOS:** 1. Power on server 2. Press F1 during POST 3. Navigate with arrow keys, F10 to save **PXE Boot Configuration:** ``` System Settings → Operating Modes: Boot Mode: UEFI Mode System Settings → Devices and I/O Ports → Network: Network 1 Boot Agent: Enabled Startup → Primary Boot Sequence: 1. Network 1 (UEFI) 2. SATA Hard Drive ``` **Performance Settings:** ``` System Settings → Processors: Intel Hyper-Threading Technology: Enabled Intel Virtualization Technology: Enabled System Settings → Power: Power Performance Bias: Maximum Performance ``` **Disable Secure Boot:** ``` Security → Secure Boot: Secure Boot: Disabled ``` **XCC Configuration (via XCC web interface):** ``` BMC Configuration → Network: Interface: Dedicated IP Configuration: Static IP Address: 10.0.10.50 Subnet Mask: 255.255.255.0 Gateway: 10.0.10.1 BMC Configuration → User/LDAP: Change USERID password: Remote Control → Remote Console & Media: Remote Console: Enabled Console Type: HTML5 ``` ## Known Issues and Workarounds ### Issue 1: Dell R640 - PXE Boot Loops After Installation **Symptom:** After successful installation, server continues to boot from network instead of disk. **Cause:** Boot order not updated after installation. **Workaround:** 1. Via iDRAC, set boot order: Disk → Network 2. Or via racadm: ```bash racadm set BIOS.BiosBootSettings.BootSeq HardDisk.List.1-1,Nic.Embedded.1-1-1 racadm jobqueue create BIOS.Setup.1-1 ``` ### Issue 2: HPE DL360 - Slow TFTP Downloads **Symptom:** iPXE bootloader download takes >5 minutes over TFTP. **Cause:** HPE UEFI firmware has slow TFTP implementation. **Workaround:** 1. Use HTTP Boot instead of TFTP (requires UEFI 2.5+): - DHCP Option 67: `http://10.0.100.10:8080/boot/ipxe/ipxe.efi` 2. Or enable chainloading: TFTP → iPXE → HTTP for rest ### Issue 3: Supermicro - BMC Not Accessible After Install **Symptom:** Cannot access IPMI web interface after NixOS installation. **Cause:** NixOS default firewall blocks BMC network. **Workaround:** Add firewall rule to allow BMC subnet: ```nix networking.firewall.extraCommands = '' iptables -A INPUT -s 10.0.10.0/24 -j ACCEPT ''; ``` ### Issue 4: Lenovo ThinkSystem - NIC Not Recognized in Installer **Symptom:** Network interface not detected during PXE boot (models 2018-2019). **Cause:** Broadcom NIC requires proprietary driver not in default kernel. **Workaround:** 1. Update NIC firmware to latest version 2. Or use Intel NIC add-on card (X540-T2) 3. Or include Broadcom driver in netboot image: ```nix boot.kernelModules = [ "bnxt_en" ]; ``` ### Issue 5: Secure Boot Prevents PXE Boot **Symptom:** Server shows "Secure Boot Violation" and refuses to boot. **Cause:** Secure Boot is enabled, but iPXE bootloader is not signed. **Workaround:** 1. Disable Secure Boot in BIOS/UEFI (see vendor sections above) 2. Or sign iPXE bootloader with your own key (advanced) ### Issue 6: Missing Disk After Boot **Symptom:** NixOS installer cannot find disk (`/dev/sda` not found). **Cause:** NVMe disk has different device name (`/dev/nvme0n1`). **Workaround:** Update disko configuration: ```nix { disks ? [ "/dev/nvme0n1" ], ... }: # Changed from /dev/sda { disko.devices = { disk.main.device = builtins.head disks; # ... }; } ``` ### Issue 7: RAID Controller Hides Disks **Symptom:** Disks not visible to OS, only RAID volumes shown. **Cause:** RAID controller in RAID mode, not HBA/AHCI mode. **Workaround:** 1. Enter RAID controller BIOS (Ctrl+R for Dell PERC, Ctrl+P for HPE Smart Array) 2. Switch to HBA mode or AHCI mode 3. Or configure RAID0 volumes for each disk (not recommended) ### Issue 8: Network Speed Limited to 100 Mbps **Symptom:** PXE boot and installation extremely slow. **Cause:** Auto-negotiation failure, NIC negotiated 100 Mbps instead of 1 Gbps. **Workaround:** 1. Check network cable (must be Cat5e or better) 2. Update NIC firmware 3. Force 1 Gbps in BIOS network settings 4. Or configure switch port to force 1 Gbps ## Hardware-Specific NixOS Modules ### Dell PowerEdge Module ```nix # nix/modules/hardware/dell-poweredge.nix { config, lib, pkgs, modulesPath, ... }: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; # Dell-specific kernel modules boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" "sr_mod" "megaraid_sas" # Dell PERC RAID controller ]; boot.kernelModules = [ "kvm-intel" ]; # or "kvm-amd" for AMD # Dell OMSA (OpenManage Server Administrator) - optional services.opensmtpd.enable = false; # Disable if using OMSA alerts # Enable sensors for monitoring hardware.enableRedistributableFirmware = true; boot.kernelModules = [ "coretemp" "dell_smm_hwmon" ]; # iDRAC serial console boot.kernelParams = [ "console=tty0" "console=ttyS1,115200n8" ]; # Predictable network interface names (Dell uses eno1, eno2) networking.usePredictableInterfaceNames = true; # CPU microcode updates hardware.cpu.intel.updateMicrocode = true; nixpkgs.hostPlatform = "x86_64-linux"; } ``` ### HPE ProLiant Module ```nix # nix/modules/hardware/hpe-proliant.nix { config, lib, pkgs, modulesPath, ... }: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; # HPE-specific kernel modules boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" "hpsa" # HPE Smart Array controller ]; boot.kernelModules = [ "kvm-intel" ]; # Enable HPE health monitoring boot.kernelModules = [ "hpilo" ]; # iLO serial console boot.kernelParams = [ "console=tty0" "console=ttyS0,115200n8" ]; # HPE NICs (often use hpenet driver) networking.usePredictableInterfaceNames = true; # CPU microcode hardware.cpu.intel.updateMicrocode = true; nixpkgs.hostPlatform = "x86_64-linux"; } ``` ### Supermicro Module ```nix # nix/modules/hardware/supermicro.nix { config, lib, pkgs, modulesPath, ... }: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; # Supermicro-specific kernel modules boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" "mpt3sas" # LSI/Broadcom HBA (common in Supermicro) ]; boot.kernelModules = [ "kvm-intel" ]; # IPMI watchdog (optional, for automatic recovery) boot.kernelModules = [ "ipmi_devintf" "ipmi_si" "ipmi_watchdog" ]; # Serial console for IPMI SOL boot.kernelParams = [ "console=tty0" "console=ttyS1,115200n8" ]; # Supermicro often uses Intel NICs networking.usePredictableInterfaceNames = true; # CPU microcode hardware.cpu.intel.updateMicrocode = true; nixpkgs.hostPlatform = "x86_64-linux"; } ``` ### Usage Example ```nix # In node configuration { config, pkgs, lib, ... }: { imports = [ ../../profiles/control-plane.nix ../../common/base.nix ../../hardware/dell-poweredge.nix # Import hardware-specific module ./disko.nix ]; # Rest of configuration... } ``` ## BMC/IPMI Command Reference ### Dell iDRAC Commands **Power Control:** ```bash # Power on racadm serveraction powerup # Power off (graceful) racadm serveraction powerdown # Power cycle racadm serveraction powercycle # Force power off racadm serveraction hardreset # Get power status racadm serveraction powerstatus ``` **Boot Device:** ```bash # Set next boot to PXE racadm set iDRAC.ServerBoot.FirstBootDevice PXE # Set next boot to disk racadm set iDRAC.ServerBoot.FirstBootDevice HDD # Set boot order permanently racadm set BIOS.BiosBootSettings.BootSeq Nic.Embedded.1-1-1,HardDisk.List.1-1 ``` **Remote Console:** ```bash # Via web: https:///console # Via racadm: Not directly supported, use web interface ``` **System Information:** ```bash # Get system info racadm getsysinfo # Get sensor readings racadm getsensorinfo # Get event log racadm getsel ``` ### HPE iLO Commands (via hponcfg or SSH) **Power Control:** ```bash # Via SSH to iLO power on power off power reset # Via ipmitool ipmitool -I lanplus -H -U admin -P password chassis power on ipmitool -I lanplus -H -U admin -P password chassis power off ipmitool -I lanplus -H -U admin -P password chassis power cycle ``` **Boot Device:** ```bash # Via SSH to iLO set /system1/bootconfig1/bootsource5 bootorder=1 # Network set /system1/bootconfig1/bootsource1 bootorder=1 # Disk # Via ipmitool ipmitool -I lanplus -H -U admin chassis bootdev pxe ipmitool -I lanplus -H -U admin chassis bootdev disk ``` **Remote Console:** ```bash # Via web: https:///html5console # Via SSH: Not directly supported, use web interface ``` **System Information:** ```bash # Via SSH to iLO show /system1 show /system1/oemhp_powerreg1 show /map1/elog1 # Via ipmitool ipmitool -I lanplus -H -U admin sdr list ipmitool -I lanplus -H -U admin sel list ``` ### Supermicro IPMI Commands **Power Control:** ```bash # Power on ipmitool -I lanplus -H -U ADMIN -P ADMIN chassis power on # Power off (graceful) ipmitool -I lanplus -H -U ADMIN chassis power soft # Power off (force) ipmitool -I lanplus -H -U ADMIN chassis power off # Power cycle ipmitool -I lanplus -H -U ADMIN chassis power cycle # Get power status ipmitool -I lanplus -H -U ADMIN chassis power status ``` **Boot Device:** ```bash # Set next boot to PXE ipmitool -I lanplus -H -U ADMIN chassis bootdev pxe # Set next boot to disk ipmitool -I lanplus -H -U ADMIN chassis bootdev disk # Set persistent (apply to all future boots) ipmitool -I lanplus -H -U ADMIN chassis bootdev pxe options=persistent ``` **Remote Console:** ```bash # Web-based KVM: https:// (requires Java or HTML5) # Serial-over-LAN (SOL) ipmitool -I lanplus -H -U ADMIN sol activate # Press ~. to exit SOL session ``` **System Information:** ```bash # Get sensor readings ipmitool -I lanplus -H -U ADMIN sdr list # Get system event log ipmitool -I lanplus -H -U ADMIN sel list # Get FRU information ipmitool -I lanplus -H -U ADMIN fru print # Get BMC info ipmitool -I lanplus -H -U ADMIN bmc info ``` ### Lenovo XCC Commands (via ipmitool or web) **Power Control:** ```bash # Power on/off/cycle (same as standard IPMI) ipmitool -I lanplus -H -U USERID -P PASSW0RD chassis power on ipmitool -I lanplus -H -U USERID chassis power off ipmitool -I lanplus -H -U USERID chassis power cycle ``` **Boot Device:** ```bash # Set boot device (same as standard IPMI) ipmitool -I lanplus -H -U USERID chassis bootdev pxe ipmitool -I lanplus -H -U USERID chassis bootdev disk ``` **Remote Console:** ```bash # Web-based: https:///console # SOL: Same as standard IPMI ipmitool -I lanplus -H -U USERID sol activate ``` ### Batch Operations **Power on all nodes:** ```bash #!/bin/bash # /srv/provisioning/scripts/power-on-all.sh BMC_IPS=("10.0.10.50" "10.0.10.51" "10.0.10.52") BMC_USER="admin" BMC_PASS="password" for ip in "${BMC_IPS[@]}"; do echo "Powering on $ip..." ipmitool -I lanplus -H $ip -U $BMC_USER -P $BMC_PASS \ chassis bootdev pxe options=persistent ipmitool -I lanplus -H $ip -U $BMC_USER -P $BMC_PASS \ chassis power on done ``` **Check power status all nodes:** ```bash #!/bin/bash for ip in 10.0.10.{50..52}; do echo -n "$ip: " ipmitool -I lanplus -H $ip -U admin -P password \ chassis power status done ``` ## Hardware Recommendations ### Minimum Production Hardware (Per Node) **Control Plane:** - CPU: Intel Xeon Silver 4208 (8C/16T) or AMD EPYC 7252 (8C/16T) - RAM: 32 GB DDR4 ECC (4x 8GB, 2666 MHz) - Storage: 500 GB NVMe SSD (Intel P4510 or Samsung PM983) - Network: Intel X540-T2 (2x 10GbE) - PSU: Dual redundant 550W - Form Factor: 1U or 2U **Worker:** - CPU: Intel Xeon Silver 4214 (12C/24T) or AMD EPYC 7302 (16C/32T) - RAM: 64 GB DDR4 ECC (4x 16GB, 2666 MHz) - Storage: 1 TB NVMe SSD (Intel P4610 or Samsung PM983) - Network: Mellanox ConnectX-5 (2x 25GbE) or Intel XXV710 (2x 25GbE) - PSU: Dual redundant 750W - Form Factor: 1U or 2U ### Recommended Production Hardware (Per Node) **Control Plane:** - CPU: Intel Xeon Gold 5218 (16C/32T) or AMD EPYC 7402 (24C/48T) - RAM: 128 GB DDR4 ECC (8x 16GB, 2933 MHz) - Storage: 1 TB NVMe SSD, RAID1 (2x Intel P5510 or Samsung PM9A3) - Network: Mellanox ConnectX-6 (2x 25GbE or 2x 100GbE) - PSU: Dual redundant 800W Titanium - Form Factor: 2U **Worker:** - CPU: Intel Xeon Gold 6226 (12C/24T) or AMD EPYC 7542 (32C/64T) - RAM: 256 GB DDR4 ECC (8x 32GB, 2933 MHz) - Storage: 2 TB NVMe SSD (Intel P5510 or Samsung PM9A3) - Network: Mellanox ConnectX-6 (2x 100GbE) or Intel E810 (2x 100GbE) - GPU: Optional (NVIDIA A40 or AMD Instinct MI50 for ML workloads) - PSU: Dual redundant 1200W Titanium - Form Factor: 2U or 4U (for GPU) ### Network Interface Card (NIC) Recommendations | Vendor | Model | Speed | Linux Support | Notes | |----------|--------------|-----------|---------------|----------------------------| | Intel | X540-T2 | 2x 10GbE | Excellent | Best for copper | | Intel | X710-DA2 | 2x 10GbE | Excellent | Best for fiber (SFP+) | | Intel | XXV710-DA2 | 2x 25GbE | Excellent | Good price/performance | | Intel | E810-CQDA2 | 2x 100GbE | Excellent | Latest generation | | Mellanox | ConnectX-5 | 2x 25GbE | Excellent | RDMA support (RoCE) | | Mellanox | ConnectX-6 | 2x 100GbE | Excellent | Best performance, RDMA | | Broadcom | BCM57810 | 2x 10GbE | Good | Common in OEM servers | **Avoid:** Realtek NICs (poor Linux support, performance issues) ### Storage Recommendations **NVMe SSDs (Recommended):** - Intel P4510, P4610, P5510 series (data center grade) - Samsung PM983, PM9A3 series (enterprise) - Micron 7300, 7400 series (enterprise) - Western Digital SN640, SN840 series (data center) **SATA SSDs (Budget Option):** - Intel S4510, S4610 series - Samsung 883 DCT series - Crucial MX500 (consumer, but reliable) **Avoid:** - Consumer-grade NVMe (Samsung 970 EVO, etc.) for production - QLC NAND for write-heavy workloads - Unknown brands with poor endurance ratings --- **Document End**