Proxmox mit NVME RAID
Support Wissensdatenbank
Proxmox mit NVME RAID betreiben Leider ist es bis heute 15.1.2020 nicht möglich, Proxmox mit VROC laufen zu lassen. Die Unterstützung durch Proxmox und Intel sind mangelhaft, es fehlt an brauchbaren Treibern und Support. Auf ein Software RAID möchten wir bewusst verzichten. Dennoch möchten wir nicht auf ein schnelles NVME RAID verzichten. Beachte dass wir keine Garantie für diese Anleitung geben und diese Konfiguration von Proxmox nicht offiziell unterstützt wird. Die Nutzung erfolgt auf eigene Gefahr! Um dennoch NVME RAID zu betreiben benötigst du folgendes:
- Schneller Server mit PCI-E x16 GEN3
- Highpoint SSD7101A-1 RAID Kontroller mit NVME Disks
- Normale Festplatten oder SSD Laufwerke
- Die beiden Installationsdateien von Highpoint
- Das Script proxmox_kernel_rebuild.sh
- Beginne nun mit der Installation von Proxmox auf deinen Festplatten. Nach dem du Proxmox installiert und konfiguriert hast muss du nun die NVME Treiber für Proxmox kompilieren.
- Verwende dazu das unten stehende Script, speichere es als proxmox_kernel_rebuild.sh ab und führe es aus. Achtung dieser Vorgang kann einige Stunden dauern!
- Installiere nun die soeben erstellten /pve-kernel/pve-headers-5.3.13-1*.deb und die /pve-kernel/pve-kernel-5.3.13-1*.deb. Achtung dieser Vorgang kann einige Stunden dauern!
- Falls auch nach 4h Wartezeit der Kernel nicht installiert werden konnte, so installiere GRUB und breche nach 4h mit “CTRL + C” ab und starte Punkt 3 erneut. apt-get install grub
- Starte den Server neu
- Blockiere nun weitere Kernelupdates (WICHTIG): apt-mark hold pve-headers-5.3.13-1 apt-mark hold pve-kernel-5.3.13-1
- Installiere nun die beiden Linux Treiber von Highpoint: ./rsnvme_linux_src_v1.2.18_19_12_11 ./RAID_Manage_Linux_v2.3.14_17_07_26
INFO: Solltes du mal ein Kernel update durchführen wollen, dann musst du einfach wieder bei Punkt 2 beginnen und den neuen Kernel kompilieren lassen.
Script: proxmox_kernel_rebuild.sh für Proxmox 6.0
#!/bin/bash # chmod +x proxmox_kernel_rebuild.sh # ./proxmox_kernel_rebuild.sh if ! pveversion; then echo "Not a proxmox machine." return fi id=`id -u` if test $id -ne 0; then echo "Please run the script with root privilege" return fi # NOTE 30GB or more free space is needed avail=`df . --output=avail | grep -v Avail` let avail=$avail/1024/1024 if test $avail -lt 30; then echo "In order to build new kernel package, 30GB or more freespace is needed." df . echo "Quiting now." exit 1 fi # Install toolchain apt-get --assume-yes install patch diffutils git make flex bison dpkg-dev debhelper dh-python sphinx-common dwarves apt-get --assume-yes install asciidoc-base libssl-dev libdw-dev libelf-dev libiberty-dev libnuma-dev libslang2-dev apt-get --assume-yes install lz4 xmlto zlib1g-dev lintian dwarves python3-all # clone pve-kernel git echo "Clone pve-kernel from upstream git repository, it may take hours." rm -rf pve-kernel git clone --single-branch --branch pve-kernel-5.4 git://git.proxmox.com/git/pve-kernel.git pve-kernel cd pve-kernel/ || exit 1 # patch kernel to do not builtin nvme driver diff="ZGlmZiAtLWdpdCBhL2RlYmlhbi9ydWxlcyBiL2RlYmlhbi9ydWxlcwppbmRleCBkMzQ0ZDRjLi5k Yzc5N2JiIDEwMDc1NQotLS0gYS9kZWJpYW4vcnVsZXMKKysrIGIvZGViaWFuL3J1bGVzCkBAIC0z Nyw3ICszNyw2IEBAIFBWRV9DT05GSUdfT1BUUz0gXAogLWUgQ09ORklHX0JMS19ERVZfU0QgXAog LWUgQ09ORklHX0JMS19ERVZfU1IgXAogLWUgQ09ORklHX0JMS19ERVZfRE0gXAotLWUgQ09ORklH X0JMS19ERVZfTlZNRSBcCiAtZSBDT05GSUdfTkxTX0lTTzg4NTlfMSBcCiAtZCBDT05GSUdfSU5Q VVRfRVZCVUcgXAogLWQgQ09ORklHX0NQVV9GUkVRX0RFRkFVTFRfR09WX09OREVNQU5EIFwK" echo "$diff" | base64 -d | patch -p1 || exit 1 echo "Download kernel sources and build pve-kernel, it may take hours, please be patient." make || exit 1 pvek=`ls pve-kernel*.deb` if [ "$pvek" == "" ]; then echo "Something is wrong, failed to generate pve-kernel package." exit 1 else echo "Now everything is ready, you can install the built $pvek package" fi
Script: proxmox_kernel_rebuild.sh für Proxmox 7.0
#!/bin/bash # chmod +x proxmox_kernel_rebuild.sh # ./proxmox_kernel_rebuild.sh if ! pveversion; then echo "Not a proxmox machine." return fi id=`id -u` if test $id -ne 0; then echo "Please run the script with root privilege" return fi # NOTE 30GB or more free space is needed avail=`df . --output=avail | grep -v Avail` let avail=$avail/1024/1024 if test $avail -lt 30; then echo "In order to build new kernel package, 30GB or more freespace is needed." df . echo "Quiting now." exit 1 fi # Install toolchain apt-get --assume-yes install patch diffutils git make flex bison dpkg-dev debhelper dh-python sphinx-common apt-get --assume-yes install asciidoc-base libssl-dev libdw-dev libelf-dev libiberty-dev libnuma-dev libslang2-dev apt-get --assume-yes install lz4 xmlto zlib1g-dev lintian apt-get --assume-yes install dwarves # clone pve-kernel git echo "Clone pve-kernel from upstream git repository, it may take hours." rm -rf pve-kernel git clone git://git.proxmox.com/git/pve-kernel.git pve-kernel cd pve-kernel/ || exit 1 # patch kernel to do not builtin nvme driver diff="ZGlmZiAtLWdpdCBhL2RlYmlhbi9ydWxlcyBiL2RlYmlhbi9ydWxlcwppbmRleCBkMzQ0ZDRjLi5k Yzc5N2JiIDEwMDc1NQotLS0gYS9kZWJpYW4vcnVsZXMKKysrIGIvZGViaWFuL3J1bGVzCkBAIC0z Nyw3ICszNyw2IEBAIFBWRV9DT05GSUdfT1BUUz0gXAogLWUgQ09ORklHX0JMS19ERVZfU0QgXAog LWUgQ09ORklHX0JMS19ERVZfU1IgXAogLWUgQ09ORklHX0JMS19ERVZfRE0gXAotLWUgQ09ORklH X0JMS19ERVZfTlZNRSBcCiAtZSBDT05GSUdfTkxTX0lTTzg4NTlfMSBcCiAtZCBDT05GSUdfSU5Q VVRfRVZCVUcgXAogLWQgQ09ORklHX0NQVV9GUkVRX0RFRkFVTFRfR09WX09OREVNQU5EIFwK" echo "$diff" | base64 -d | patch -p1 || exit 1 echo "Download kernel sources and build pve-kernel, it may take hours, please be patient." make SKIPABI=1 || exit 1 pvek=`ls pve-kernel*.deb` if [ "$pvek" == "" ]; then echo "Something is wrong, failed to generate pve-kernel package." exit 1 else echo "Now everything is ready, you can install the built $pvek package" fi
Das Skript ist derzeit so konfiguriert, dass der neuste Kernel der Version 5.4 installiert wird. Um eine andere Kernelversion zu Installieren, passe den Branch Tag auf Zeile 35 an.