Eseguire Proxmox con NVME RAID
15.01.2020
Support Wissensdatenbank
Eseguire Proxmox con NVME RAID Purtroppo non è possibile eseguire Proxmox con VROC fino ad oggi 15.1.2020. Il supporto di Proxmox e Intel è insufficiente, mancano driver e supporto utilizzabili. Non vogliamo deliberatamente utilizzare un software RAID. Tuttavia, non vogliamo fare a meno di un RAID NVME veloce. Si noti che non garantiamo questo manuale e che questa configurazione non è ufficialmente supportata da Proxmox. Usatelo a vostro rischio e pericolo! Per utilizzare NVME RAID è necessario quanto segue:
- Server veloce con PCI-E x16 GEN3
- Controllore RAID Highpoint SSD7101A-1 con dischi NVME
- Disco rigido normale o unità SSD
- I due file di installazione di Highpoint
- Lo script proxmox_kernel_rebuild.sh
- Ora iniziate ad installare Proxmox sui vostri hard disk. Dopo aver installato e configurato Proxmox è ora necessario compilare i driver NVME per Proxmox.
- Usare lo script sottostante, salvarlo come proxmox_kernel_rebuild.sh ed eseguirlo. Attenzione questo processo può richiedere diverse ore!
- Ora installate il file /pve-kernel/pve-headers-5.3.13-1*.deb appena creato e il file /pve-kernel/pve-kernel-5.3.13-1*.deb Attenzione questo processo può richiedere diverse ore!
- Se non è stato possibile installare il kernel anche dopo 4h di attesa, installare GRUB e abortire dopo 4h con “CTRL + C” e ricominciare dal punto 3. apt-get install grub
- Riavviare il server
- Ora bloccare ulteriori aggiornamenti del kernel (IMPORTANTE): apt-mark hold pve-headers-5.3.13-1 apt-mark hold pve-kernel-5.3.13-1
- Ora installate i due driver Linux da Highpoint: ./rsnvme_linux_src_v1.2.18_19_12_11 ./RAID_Manage_Linux_v2.3.14_17_07_26
INFO: Se si vuole aggiornare il proprio kernel, basta ricominciare dal punto 2 e lasciare che il nuovo kernel si compili.
Script: proxmox_kernel_rebuild.sh
#!/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