🧠Come installare Proxmox VE su server Hetzner
L’installazione di solito si fa installando prima una Debian sulla quale la distro è basata (in questo caso la relase denominata “Buster” per la versione 6) e poi aggiungendo gli indici del repository e installando da lì alcuni servizi chiave Proxmox.
Ultimamente però è stata aggiunta la possibilità di installare la distro su ZFS, il che apre la strada ad un sacco di niceties specialmente per quanto riguarda gli snapshot e i backup. (Resta da capire se alcuni dei servizi che Proxmox VE offre come ad esempio il cluster Ceph funzionino su ZFS, ma questo per ora è un altro discorso).
Comunque, ad installazione completata quello che si vuole ottere è una situazione come la seguente:
root@little:~# mount
[...]
rpool/ROOT/pve-1 on / type zfs (rw,relatime,xattr,noacl)
[...]
root@little:~# zpool list rpool
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
rpool 476G 1.22G 475G - - 0% 0% 1.00x ONLINE -
root@little:~# zpool status rpool
pool: rpool
state: ONLINE
scan: scrub repaired 0B in 0 days 00:00:01 with 0 errors on Sun Aug 9 00:24:02 2020
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
nvme0n1p3 ONLINE 0 0 0
nvme1n1p3 ONLINE 0 0 0
Di per sè forse basterebbe creare il pool prima dell’installazione (con il senno di poi) per poi procedere con la solita intallazione di Debian buster , però:
non ho mai installato prima con questa accoppiata di s.o. e filesystem quindi non so se il filesystem (con il RAID1) scelto dall’installatore configuri l’installazione in un modo più particolare che non la semplice creazione del fs;
La rescue Hetzner non ha supporto per ZFS così com’è, perciò risulta incerta anche l’opzione della solita installazione.
Quindi l’idea è quella di installare la distro usando l’installatore. Bella idea, purtroppo però i server Hetzner, almeno quelli che ho usato fin’ora non hanno un KVM sempre collegato, ma solo a richiesta e quindi la cosa può sembrare complicata.
Mi sono ricordato però che è possibile attivare una particolare distro rescue chiamata vKVM Rescue che viene solitamente usata per poter vedere il boot del s.o. collegandosi con il browser in HTTPS alla porta 47773.
Per eseguire invece l’installazione di una distro, occorre fare delle modiche al volo alla riga di comando del QEMU che viene eseguito, quindi mi sono collegato via SSH sulla porta 47772 per avere una shell del rescue system e ho modificato lo script del servizio come segue:
root@vKVM-rescue ~ # cat << FINE | patch /opt/vkvm/startqemu
--- /opt/vkvm/startqemu.original 2020-08-07 21:30:55.136461035 +0200
+++ /opt/vkvm/startqemu 2020-08-07 21:32:22.572524758 +0200
@@ -1,2 +1,2 @@
#!/bin/sh
-qemu-system-x86_64 -cpu host -monitor tcp:127.0.0.1:4444,nowait,server -usbdevice tablet -k de -boot nc -netdev socket,fd=200,id=vnet0 -vnc 127.0.0.1:1,websocket=5701 -device ahci,id=ahci0 -drive if=none,id=disk0,file=/dev/nvme0n1 -device ide-hd,bus=ahci0.0,drive=disk0 -drive if=none,id=disk1,file=/dev/nvme1n1 -device ide-hd,bus=ahci0.1,drive=disk1 -smp 8,sockets=1,cores=4,threads=2 -machine type=pc,accel=kvm -m 32053 -device e1000,netdev=vnet0,mac=90:1b:0e:95:a1:36
+qemu-system-x86_64 -cpu host -cdrom /path/to/downloaded/proxmox.iso -monitor tcp:127.0.0.1:4444,nowait,server -usbdevice tablet -k it -boot d -netdev socket,fd=200,id=vnet0 -vnc 127.0.0.1:1,websocket=5701 -device ahci,id=ahci0 -drive if=none,id=disk0,file=/dev/nvme0n1 -device ide-hd,bus=ahci0.0,drive=disk0 -drive if=none,id=disk1,file=/dev/nvme1n1 -device ide-hd,bus=ahci0.1,drive=disk1 -smp 8,sockets=1,cores=4,threads=2 -machine type=pc,accel=kvm -m 32053 -device e1000,netdev=vnet0,mac=90:1b:0e:95:a1:36
FINE
patching file /opt/vkvm/startqemu
root@vKVM-rescue ~ # systemctl restart vkvm-startup
Ricarica la pagina web e l’installazione via cd dovrebbe partire. Una volta completata ricorda di riavviare, cambiando il dispositivo di boot indietro sull’originale nc
per partire dai dischi. La rete potrebbe ancora non funzionare però c’è da dire al kernel di nominare l’unica ethernet con lo stesso nome:
root@little:/etc/default# cat << FINE | patch /etc/default/grub
--- grub.original 2020-08-07 22:02:44.525885443 +0200
+++ grub 2020-08-07 23:22:26.300000000 +0200
@@ -7,7 +7,7 @@
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Proxmox Virtual Environment"
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
-GRUB_CMDLINE_LINUX="root=ZFS=rpool/ROOT/pve-1 boot=zfs"
+GRUB_CMDLINE_LINUX="root=ZFS=rpool/ROOT/pve-1 boot=zfs net.ifnames=0 biosdevname=0"
# Disable os-prober, it might add menu entries for each guest
GRUB_DISABLE_OS_PROBER=true
FINE
root@little:~# update-grub
…e poi c’è rinominare la ethernet ensX
in eth0
in /etc/network/interfaces
. Ora esegui halt
dentro la VM e dalla console ssh del vKVM esegui reboot
, dopo qualche minuto dovresti poterti collegare sulla porta 22.
Enjoy!