, , , ,

Proxmox VE og PBS på brukt maskinvare: hva som faktisk knakk

To åpne, brukte stasjonære PC-er på en verkstedbenk med harddisker, SSD-er og et knappcellebatteri ved siden av.

Broadcom kuttet VMware-porteføljen fra over 160 enkeltprodukter til noen få abonnementspakker. Frittstående vSAN og NSX finnes ikke lenger. De som fornyet i 2024 møter nå andre runde, og en stor bølge kontrakter løper ut tidlig i 2027. Prisene som rapporteres ligger på to til ti ganger gammelt nivå.

For et verksted med tre til fem virtuelle maskiner er regnestykket kort. Dette innlegget er ikke en sammenligning av hypervisorer. Det er notatene fra et oppsett som ble bygget på maskinvare som allerede sto i bygget, og på de to feilene som kostet mest tid.

Maskinvaren: den raskeste maskinen ble ikke vert

Tre avskrevne kontormaskiner var utgangspunktet. Valget falt på den eldste prosessoren, en i7-7700 med fire kjerner, av to grunner.

  • Den nyere maskinen har hardt tak på 32 GB RAM og mangler VT-d. BIOS er OEM-låst, så det finnes ingen vei rundt.
  • Arbeidslasten er filområde mot maskinstyringer pluss en databaseserver. Det er I/O-arbeid, ikke regnearbeid.

En tredje grunn dukket opp underveis: SQL Server Standard lisensieres per virtuelle kjerne. En liten vert er en billigere vert, og det er en kostnad som løper hvert år.

Diskene ble satt opp som to speil. To SSD-er for system og VM-disker, to 4 TB NAS-disker for data. Backupserveren fikk en gammel systemdisk og en 10 TB overvåkningsdisk som datastore.

Hvorfor ikke bare bruke NAS-en som allerede sto der

Bedriften hadde en to-brønners NAS fra før. Den modellen kan bare ext4, ikke btrfs. Uten sjekksummer på filsystemnivå oppdager du ikke stille bitråte. Du oppdager at en fil er ødelagt den dagen du trenger den, og da er backupen antagelig ødelagt like lenge. ZFS på verten gir nettopp det den boksen ikke kan levere.

Backupjobben

Alle virtuelle maskiner og containere, hver natt, zstd-komprimering, med denne oppbevaringen:

keep-daily    7
keep-weekly   4
keep-monthly  6

Jobben ble verifisert mot faktiske kjøringer, ikke mot konfigurasjonsfilen. Åtte fullførte backups i datastoren, siste natt uten feil, 0,72 prosent av 9,7 TB i bruk. Deduplisering på blokknivå gjør at åtte fulle sikkerhetskopier av de samme gjestene tar plass som omtrent én.

Backupserveren har en egen bruker med kun rettigheten DatastoreBackup. Verten kan skrive nye backups, men ikke slette gamle. Blir verten kompromittert, står historikken igjen.

En backupjobb som ikke er lest tilbake er en hypotese, ikke en backup.

Diagram: Proxmox VE-vert med to ZFS-speil sender nattlig backup til en Proxmox Backup Server med 9,7 TB datastore, som igjen kopieres til en rotasjonsdisk ut av bygget. Egen boks viser påkrevde BIOS-innstillinger.
Vert, backupserver og rotasjonsdisk. BIOS-boksen nederst til venstre er den delen folk glemmer.

Felle 1: UEFI booter ikke fra ISO uten tastetrykk

En virtuell maskin sto i status running i to og en halv time uten å installere noe som helst.

diskwrite: 0
diskread:  3799040
mem:       113602560

Null byte skrevet. 3,8 MB lest. OVMF viser «Press any key to boot from CD or DVD» i omtrent fem sekunder, og faller til UEFI Shell hvis ingen trykker. Det kommer ingen feilmelding noe sted. Statuskommandoen sier fortsatt running, og det ser ut som en helt normal installasjon.

Fiksen er å mate tastetrykk rett etter start:

qm stop 201; sleep 3; qm start 201
for i in $(seq 1 30); do qm sendkey 201 ret 2>/dev/null; sleep 1; done

Diagnosen er alltid den samme: mål diskwrite to ganger med 25 sekunders mellomrom. Står tallet stille, kjører ingen installasjon, uansett hva statusen påstår. Det gjelder hver gang en gjest skal boote fra ISO, altså også ved reinstallasjon og recovery.

Felle 2: QEMU reserverer maxmem, ikke ballongverdien

kvm: cannot set up guest memory 'pc.ram': Cannot allocate memory

En gjest med balloon: 8192 og memory: 16384 starter ikke på en vert med 15,8 GB fri RAM. Ballongen gir minne tilbake til verten etter at gjesten har startet. Den reduserer ikke det QEMU må allokere opp front.

Regelen er at memory må være mindre enn fri RAM på verten. Ikke balloon. På en database som ikke skal konkurrere med noe annet er svaret uansett å slå ballongen helt av.

Feilen ingen leter etter: CMOS-batteriet

Verten nektet å starte noen gjest. /dev/kvm fantes ikke. Virtualisering var slått av i BIOS, og ingen hadde slått den av.

Hovedkortet er fra 2017. CR2032-batteriet var svakt nok til at BIOS mistet innstillingene ved et strømbrudd, og standardverdien for Intel VT-x på det kortet er «disabled». Symptomet var at ingenting virket etter strømstans, og at feilen var umulig å rette uten skjerm og tastatur på stedet. Årsaken kostet tjue kroner.

På en gjenbruksvert er batteriet det første du bytter, ikke det siste du sjekker.

Strømbruddstesten

Gjestene ble stengt pent, og strømmen rykket i omtrent tjue sekunder. Tre BIOS-verdier avgjør om verten kommer opp av seg selv:

Restore AC Power Loss           = Power On
Intel Virtualization Technology = Enabled
VT-d                            = Enabled

Resultatet: verten startet selv, BIOS beholdt alle tre, begge ZFS-poolene kom opp som ONLINE uten feil, og gjestene autostartet i riktig rekkefølge. Backupserveren startet også selv og svarte på port 8007 etter omtrent førti sekunder, med datastoren intakt.

En detalj verdt å ta med: etter RAM-utvidelsen tok første oppstart omtrent elleve minutter med helt svart skjerm. Det er minnetrening, ikke en død maskin. Ikke begynn å feilsøke for tidlig, og ikke rykk strømmen midt i den.

Rekkefølgen jeg ville brukt neste gang

  1. Bytt CMOS-batteriet før du installerer noe.
  2. Sett BIOS-verdiene, og skriv dem ned et sted som overlever deg.
  3. Bygg speil, ikke enkeltdisker. Gjenbrukte disker har driftstimer du ikke kjenner.
  4. Sett opp backupjobben før den første gjesten er ferdig konfigurert.
  5. Rykk strømmen med vilje, mens du fortsatt står ved siden av maskinen.

Punkt fem er det eneste som skiller et oppsett som virker fra et oppsett du tror virker. Det tar fem minutter, og det er den eneste testen i lista som faktisk kan stryke.


Trenger du hjelp med dette?

Ta kontakt for en uforpliktende prat om hvordan jeg kan hjelpe deg.



Navn