Virtualizzazione Windows con Bhyve

3DDario

Cadet
Joined
Oct 16, 2016
Messages
4
Ho assemblato un paio di settimane un NAS pensando di poterlo utilizzare come anche come "host" per un paio di macchine virtuali. Il mio setup attuale è questo:
CPU: Intel E3 1241v3 (supporta VT-x)
Motherboard: Supermicro X10SLH-F (ovviamente anche questa supporta il VT-x)
RAM: 4x Kingston KVR16E11/8 (8GB ECC 1600MHz)
Storage: Non penso sia importante in questo caso, comunque 4x WD Red 4TB ed un SSD Samsung 850 EVO 500GB
Utilizzo l'ultima versione di FreeNAS stabile.

Prima di acquistare il tutto mi ero informato ed avevo visto che con Bhyve (l'hypervisor di FreeBSD, incluso in FreeNAS dalla versione 9.10) è possibile virtualizzare anche macchine Windows (in particolare Windows 7). Ho anche visto che dovrebbe essere possibile il PCI-Passthrough (una scheda video, supporta lo standard MSI-x e non dovrebbe essere un problema).

Inizialmente pensavo di fare tutto in una jail. Poi però ho scoperto che per ora bhyve non può essere utilizzato in una jail (confermato dal canale IRC). Allora ho provato a fare tutto il procedimento sull'installazione "base": dalla WebGUI di FreeNAS ho aperto la Shell ed ho provato ad avviare la macchina da lì. Per installare i pacchetti necessari ho usato un piccolo 'trucco' (scaricati i pacchetti necessari in una jail con il comando pkg fetch -d -o /percorso/per/il/download nome-pacchetto e poi li ho installati con pkg add * , ovviamente nella cartella nella quale avevo scaricato i pacchetti).

Ho provato a seguire questa guida creando l'ISO di Windows ed il file img che verrà utilizzato dalla macchina virtuale ma dopo aver dato il comando per avviare "il tutto" non succede niente. Nessun errore di nessun tipo. Guardando fra i processi aperti c'è un 'bhyve' ma non sembra stia succedendo niente. Se mi provo a connettere tramite RPD la connessione fallisce (probabilmente la macchina virtuale non viene neanche avviata).

Qualche idea? Esiste una guida più "dettagliata" o aggiornata?
 

Zofoor

Patron
Joined
Aug 16, 2016
Messages
219
Per quanto riguarda bhyve io ti suggerisco di vedere sul forum inglese i topic che spiegano come installare Ubuntu con crashPlan all'interno di freenas. Non riesco a darti indicazioni più precise, sono all'estero e mi è scomodo verificare.

La guida che hai linkato fa riferimento a freebsd ma ci sono delle cose da tenere in considerazione quando si usa freenas invece si freebsd:
1. Si usa il file system zfs (che supporta nativamente gli snapshot), per cui ci sono alcune differenze
2. Freenas è derivato da freebsd, ma "blindato", quasi tutte le cartelle non hanno i permessi di scrittura e fare cose "strane" si rischia di non permettere di fare dopo un upgrade
3. Con la prossima major release ci sarà un supporto più completo alla virtualizzazione bhyve tramite interfaccia web, ma le macchine configurate in precedenza con Bhyve probabilmente non verranno importate in automatico e forse ci sarà da litigare un po' per importarle
4. Iohyve è un front end a riga di comando pensato per zfs, e semplifica molto la vita.

Se da shell usi iohyve puoi creare un nuovo dataset per bhyve (così da supportare snapshots), e ti crea in automatico una struttura di directory in cui salvare i Bios, ISO, e le macchine virtuali.
Fatto questo, sempre tramite iohyve, importi (o da locale, o da rete tramite http) le ISO, poi crei la macchina virtuale e imposti le sue opzioni (le tap che sono le schede di rete virtuali, la ram, il BIOS da usare, e gli HD virtuali).
Dopodiché sempre con iohyve fai partire la macchina virtuale.

Io ho creato così una macchina Ubuntu, e ho fatto l'accesso in modalità solo testo emulando una porta seriale. Per Windows penso che tu possa usare tinyvnc ma non lo ho mai usato.

Ho letto inoltre che passando un Bios uefi specifico fatto per Windows vista/10/ecc non hai bisogno di modificare la ISO di installazione.

Mi spiace non riuscire ora a scendere più nel dettaglio ma penso che ora hai dei punti di partenza su cui partire.

In alternativa puoi installare esxi e da li sfruttare una macchina virtuale per freenas e una per Windows. Per farlo ti serve una scheda hba per passarla in pass through a freenas così da fargli usare gli HD direttamente in modo nativo. Ti semplificherebbe alcune cose ma potrebbe renderti più complicate altre (tipo spegnere freenas virtualizzato quando si sta per scaricare la batteria dell'ups). Esxi dovrebbe anche darti performance migliori rispetto a bhyve, una Interfaccia web più comoda, ecc ecc.
 

3DDario

Cadet
Joined
Oct 16, 2016
Messages
4
Per quanto riguarda bhyve io ti suggerisco di vedere sul forum inglese i topic che spiegano come installare Ubuntu con crashPlan all'interno di freenas. Non riesco a darti indicazioni più precise, sono all'estero e mi è scomodo verificare.

La guida che hai linkato fa riferimento a freebsd ma ci sono delle cose da tenere in considerazione quando si usa freenas invece si freebsd:
1. Si usa il file system zfs (che supporta nativamente gli snapshot), per cui ci sono alcune differenze
2. Freenas è derivato da freebsd, ma "blindato", quasi tutte le cartelle non hanno i permessi di scrittura e fare cose "strane" si rischia di non permettere di fare dopo un upgrade
3. Con la prossima major release ci sarà un supporto più completo alla virtualizzazione bhyve tramite interfaccia web, ma le macchine configurate in precedenza con Bhyve probabilmente non verranno importate in automatico e forse ci sarà da litigare un po' per importarle
4. Iohyve è un front end a riga di comando pensato per zfs, e semplifica molto la vita.

Se da shell usi iohyve puoi creare un nuovo dataset per bhyve (così da supportare snapshots), e ti crea in automatico una struttura di directory in cui salvare i Bios, ISO, e le macchine virtuali.
Fatto questo, sempre tramite iohyve, importi (o da locale, o da rete tramite http) le ISO, poi crei la macchina virtuale e imposti le sue opzioni (le tap che sono le schede di rete virtuali, la ram, il BIOS da usare, e gli HD virtuali).
Dopodiché sempre con iohyve fai partire la macchina virtuale.

Io ho creato così una macchina Ubuntu, e ho fatto l'accesso in modalità solo testo emulando una porta seriale. Per Windows penso che tu possa usare tinyvnc ma non lo ho mai usato.

Ho letto inoltre che passando un Bios uefi specifico fatto per Windows vista/10/ecc non hai bisogno di modificare la ISO di installazione.

Mi spiace non riuscire ora a scendere più nel dettaglio ma penso che ora hai dei punti di partenza su cui partire.

In alternativa puoi installare esxi e da li sfruttare una macchina virtuale per freenas e una per Windows. Per farlo ti serve una scheda hba per passarla in pass through a freenas così da fargli usare gli HD direttamente in modo nativo. Ti semplificherebbe alcune cose ma potrebbe renderti più complicate altre (tipo spegnere freenas virtualizzato quando si sta per scaricare la batteria dell'ups). Esxi dovrebbe anche darti performance migliori rispetto a bhyve, una Interfaccia web più comoda, ecc ecc.

Intanto grazie per la risposta. Avevo già guardato il "progetto" Iohyve però ho visto che non supporta il GPU Passthrough se si avvia una macchina virtuale con Windows con UEFI.

Ottimo per l'interfaccia grafica per le macchine virtuali, speriamo arrivi presto (si sa già qualche ETA per la prossima versione?).
Ho provato a guardare velocemente post o guide riguardanti l'installazione di crashPlan (o in generale di una macchina Ubuntu virtualizzata) ma non ho trovato molto (domani guarderò meglio).

Purtroppo non ho modo (almeno per ora) di utilizzare una scheda HBA per passare gli hard disk ad ESXi (mi sarei risparmiato diversi problemi, ottenendo prestazioni migliori).

Voglio provare (giusto per sicurezza) a cambiare il file .iso (anche se non penso sia quello il problema visto che è quello "originale").
 

Zofoor

Patron
Joined
Aug 16, 2016
Messages
219
Sicuro riguardo a Iohyve che non supporta il GPU Passthrought? Sopratutto perchè è solo un manager per bhyve, quindi le limitazioni sono le stesse.
https://github.com/pr1ntf/iohyve/wiki/USB-3.0-PCI-Controller-Pass-through
qui c'è un esempio per un controller USB, ma dovrebbe esser applicabile anche alle GPU

Il problema è che sembra dovresti ricompilare il kernel freenas, il che crea tanti problemi che è più semplice pagare 120 euro per una HBA e metter su ESXi.
 

3DDario

Cadet
Joined
Oct 16, 2016
Messages
4
Sicuro riguardo a Iohyve che non supporta il GPU Passthrought? Sopratutto perchè è solo un manager per bhyve, quindi le limitazioni sono le stesse.
https://github.com/pr1ntf/iohyve/wiki/USB-3.0-PCI-Controller-Pass-through
qui c'è un esempio per un controller USB, ma dovrebbe esser applicabile anche alle GPU

Il problema è che sembra dovresti ricompilare il kernel freenas, il che crea tanti problemi che è più semplice pagare 120 euro per una HBA e metter su ESXi.

Non ho ancora provato però guardando la pagina della wiki dedicata alla virtualizzazione di Windows leggo
Please note that since the UEFI Firmware itself is still very new and experimental, iohyve's support of it is also experimental. Right now the limitations are you can only have one virtual HDD, one virtual NIC (using tap devices), and no pass-through. Other operating systems booted either viabhyveload or grub-bhyve can have multiple virtual HDDs, and even passthrough support.

Se riesco domani mattina provo un'altra ISO (scaricata dal sito della Microsoft, non una copiata dal disco d'installazione), magari il problema è quello (ma mi sembra strano, anche perché l'ISO sul server ha lo stesso MD5 dell'ISO che ho sempre usato con VirtualBox e VMWare quindi in teoria dovrebbe essere funzionante).

Nel caso non dovessi risolvere vado di ESXi con scheda HBA (già ricompilare il kernel di un sistema normale non è la cosa migliore da fare, figurati con un sistema "preciso"/"delicato" come FreeNAS).
 

zizzithefox

Dabbler
Joined
Dec 18, 2017
Messages
41
Non ho ancora provato però guardando la pagina della wiki dedicata alla virtualizzazione di Windows leggo

Nel caso non dovessi risolvere vado di ESXi con scheda HBA (già ricompilare il kernel di un sistema normale non è la cosa migliore da fare, figurati con un sistema "preciso"/"delicato" come FreeNAS).

Ciao, avendo costruito un NAS praticamente identico al tuo (avevo una intel s1200rpl invece della Supermicro, ma cambia poco), ti posso dire che la soluzione esxi è sicuramente una buona soluzione.

Se però il goal è avere una macchina con freenas che magari ti fa anche da workstation col passthrough della scheda grafica, l'unica soluzione che ho trovato è non fare il passthrough della scheda grafica e utilizzare windows 10 con hyper-v per le macchine virtuali. Sì, lo so, è Windows, e Windows 10 per giunta, ma data la scarsità di mezzi della build in questione è la soluzione che mi ha dato meno problemi: l'unico veramente rognoso era la lentezza della rete che però ho più o meno risolto alla fine (non ricordo come, ma ci sono le guide su internet). Disgraziatamente né la tua macchina né la mia supportano SRV-IO e quindi la virtualizzazione è relativamente monca: il passthrough non è infatti possibile con hyper-v senza SRV-IO, mentre lo è con vmware.

Comprata a fine del 2015 adesso la mia macchinina è basata su FreeNas perché con uno storage di 25TB di dati non mi fido neanche morto a fare altrimenti. Però per 5 anni ho fatto quello che vuoi fare tu senza grossi problemi. Ti racconto la mia storia anche a beneficio di altri.
Per cominciare, togliamoci subito alcuni sassolini su bhyve:
  1. bhyve va benissimo con linux e freebsd; è estremamente stabile, anche con Windows. Figurati che l'ho usato di recente perfino per tenere su sql server 2017 per linux, e funzionava bene; l'ho abbandonato solo perché mi dava rogne con l'autenticazione active directory/kerberos; ma il problema era linux/kerberos/sql server e non bhyve. Per vincere una scommessa, sono riuscito a farci girare sopra Microsoft Dynamics AX 2012 r3, cosa che non avrei mai pensato fosse possibile. Per dire.
  2. la virtualizzazione di Windows tramite bhyve è però terribile per tanti motivi. Io adesso lo uso per tener su un domain controller/DNS/dhcp server windows 2012 r2 e un server linux con nextcloud e plex; con regolare licenza, fai conto però che non sono riuscito a installare sopra il WSUS e sono certo che è colpa di bhyve perché ripristinando la stessa macchina sotto esxi andava subito. Va bene per quello che fa, ma non è sicuramente ideale: il sistema è veramente lento rispetto ai miei standard; windows 10 sul mio portatile i5-5200U è molto più veloce di windows 2012 sullo xeon i3-1230v3 che monta il NAS; entrambi hanno dischi a stato solido ma il portatile ha un a-data, il nas un samsung 960 evo. Fatti test in linux, credo che il disco sia lentissimo perché devo usare l'emulazione ahci invece dei driver virtio che fanno crashare windows; devi ricordarti di usare i driver virtio per la rete però, altrimenti windows va in crash. La rete della vm windows va la metà di quella della vm linux (testata con iperf).
  3. windows sotto bhyve significa dire addio a una gestione dei consumi in freenas/freebsd; praticamente il server non è più in grado di gestire i powerstate e viaggia alla costante velocità massima, nel mio caso 3.300 mhz; e fortuna che ho disattivato il turbo boost; la soluzione che ho dovuto implementare in freenas è inserire un tunable rc per powerd e bloccare il processore a 2300 mhz, che tutto sommato è un buon compromesso, ma aumento i consumi sensibilmente
  4. comunque installare windows in bhyve è tutt'altro che semplice; come vedi devi ricordarti parecchie cose, è una procedura lenta. Lo shutdown automatico non funziona se devi spegnere la macchina (ma questo è un problema anche in esxi). Insomma, devi sapere che di morte vai a morire.
  5. bhyve non supporta, che io sappia, il passthrough della scheda grafica visto che nella wiki è espressamente negato. Di sicuro non si può impostare in freenas senza fare trucchi ignobili che sconsiglio fortemente. Alcuni riescono a farla funzionare con sistemi unix (https://www.freebsdnews.com/2019/05/16/gpu-passthrough-on-bhyve/) ma lascerei perdere.
Per quanto riguarda altre soluzioni, io ho provato nell'ordine ESXi5.5, 6 e 6.5, XenServer 7.x, Windows Server 2016 e 2019 con hyper-v e infine windows 10 con hyper-v.
In tutti i casi ho passato senza alcun problema il sistema freenas da una soluzione all'altra semplicemente facendo il backup della configurazione di freenas, reinstallando la versione giusta sotto vm piuttosto che bare metal e ripristinando la configurazione sulla nuova soluzione. Chiaramente a patto di far vedere sempre tutti i dischi.

ESXi - tenuta oltre 3 anni
Buona soluzione, avendo una licenza regolare poi col vcenter la facilità di gestione è massima. Ci giocavo tranquillamente con una vm Windows 7 e poi Windows 10 con scheda grafica, scheda usb e scheda audio in passthrough (ma potevo usare anche l'hdmi integrato della scheda video per l'audio).
Riguardo alla vm freenas il passthrough simultaneo della scheda video e dell'hba (la solita serveraid m1015 flashata) sulla mia build causava problemi seri a livello di interrupt alle due schede; provate mille soluzione fino a che ho rinunciato quando ho riscontrato data corruption in freenas a seguito di uno scrub. Persi due file senza importanza, grazie freenas per aver salvato i miei dati ancora una volta.
Ho quindi optato per la soluzione sconsigliatissima RDM (Raw Device Mapping, virtual e non physical mi raccomando, altrimenti manco a dirlo: data corruption). Cosa posso dire:
  • avevo un bel gruppo di continuità (2400VA), quindi il rischio era ridotto
  • ha funzionato molto bene, anche in caso di ben 3 rotture di dischi, che erano un po' vecchiotti, non ho perso che alcuni log di freenas sul pool di sistema perché in un caso il sistema si è bloccato e ho dovuto fare shutdown a forza; in pratica se il disco cede di schianto no problem, è quando agonizza che crea rogne; ESXi si aspetta probabilmente di avere uno storage di un certo livello, non robetta da supermercato.
  • la mia configurazione però era di 2 pool in triplo mirroring (6 dischi da 3 tb) che è veramente, veramente robusta, ma dispendiosa. Quando ho dovuto aggiungere altri tera, ho abbandonato questo tipo di soluzione e adesso ho 2 pool di 6 dischi da 4tb in raid-z2. Non lo farei mai con freenas virtualizzato se tenessi ai dati che ci butto sopra.
  • RDM è una rottura di scatole, perché devi configurartelo a mano da riga di comando di esx.
  • RDM ti maschera i dischi, quindi quando un disco si rompe non è semplicissimo capire quale disco si è rotto se non sai smanettare con esxi a riga di comando; io chiamavo i file vmdk col numero di serie così quando non partiva la macchina sapevo qual era da cambiare; comunque è una merda, se non hai molto tempo a disposizione e non stai più che attento a quello che fai.
Un altro problema che avevo con ESXi che alla fine me l'ha fatto abbandonare è che il passthrough della scheda USB3 funzionava solo per mouse, tastiera e joypad. Per i dispositivi mass-storage (tipo chiavette e hard disk USB) a tutt'oggi non funziona. O meglio, sembra che funzioni, ma se provi a copiare qualche giga, data corruption. Questo problema è annoso e non ne sono affette tutte le macchine: per qualche motivo insondabile, ad esempio, sulla workstation HP Z800 dove adesso ho installato esxi 6.5 funziona, ma si vede che fa fatica. La velocità è sensibilmente inferiore al normale, per quanto accettabile, e a volte si incanta per qualche secondo e infatti compaiono righe di log a profusione in ESXi.

XenServer; era la 7.3 mi sembra, 3 mesi
Praticamente è linux, ma con varie limitazioni perché in fondo anche loro vogliono vendere la licenza ed è comprensibile.
  • La configurazione del passthrough la preferisco a riga di comando, è semplice e te la puoi anche salvare in uno script senza tutte le balle di ESXi; funzionava tutto, incluso l'USB e il mass storage
  • La configurazione del freenas era con dischi raw perché anche qui il passthrough dell'HBA generava data corruption. Ancora una volta mi piaceva abbastanza, era molto lineare da configurare a linea di comando; inoltre vedevo i seriali dei dischi, e potevo contare sull'affidabilità di linux.
  • Problema 1, noioso: per utilizzare il driver paravirtuale (o, se per questo, l'emulazione e1000 per andare a un gigabit) della scheda di rete nella versione free, dovevo patchare gli scipt della distro a mano altrimenti ero condannato a usare il driver a 100Mbit. Probabile violazione della licenza, e chiaramente ad ogni aggiornamento da rifare possibilmente in modo diverso. Inaccettabile.
  • Problema 2, molto grave: a seguito di uno shutdown non pulito, i dati delle macchine virtuali erano a posto, ma molto spesso mi capitava che si sputtanasse completamente la distro xenserver e avevo difficoltà a farla ripartire; perdevo pezzi della configurazione, non trovava più i dischi virtuali, ecc. Non conoscendo benissimo il sistema, facevo prima a reinstallare. Totalmente inaccettabile.
  • Problema 3, veramente fastidioso: la versione free rende veramente difficilmente effettuare il backup della macchine virtuali, e all'epoca non esisteva il coltellino svizzero che uso adesso (veeam backup free). Spostare una macchina virtuale era una sofferenza inenarrabile, la copia via rete dallo storage locale è resa artificialmente lentissima come fa vmware. Assurdo.
Altri problemi vari mi hanno fatto abbandonare subito la soluzione che offriva praticamente quello che mi offriva ESXi ma con difficoltà di gestione che, a confronto, erano mostruose. Non ho più tempo di correre dietro a queste cose e la licenza costava un botto. Abbandonato alla seconda reinstallazione forzata di XenServer. A questo punto facevo prima a installare netbsd e far girare xen free tutto da riga di comando. Ma purtroppo non avevo tempo perché ho cambiato lavoro.

Windows Server 2016 con hyper-v, 10 giorni
Come Windows 10. Ma non avevo la licenza di Windows. Non l'ho acquistata perché costava troppo, è windows, e comunque non potevo fare il passthrough di un bel niente col mio hardware. Certo, avendo SRV-IO lo consiglierei per quello che dico dopo su Windows 10, se proprio uno vuole fare certe cose.

Windows 10 Pro con hyper-v, tenuta per quasi 2 anni
I pregi di questa soluzione erano:
  • una macchina virtuale in meno: niente passthrough; la macchina host hyper-v era quella che usavo come workstation per giocare, fare i montaggi video, ecc. Ovviamente funzionava tutto, e al meglio, tutte le periferiche avevano driver ottimizzati: scheda video, scheda audio; potevo anche usare le porte usb3 della scheda madre senza necessità di utilizzare una scheda aggiuntiva che infatti ho tolto. Molto più comodo. Avevo anche un paio di giga di memoria in più da usare per freenas.
  • gestione OK, purtroppo hyper-v per windows 10 non è hyper-v per windows server: ho tentato di backuppare con veeam e non funziona perché è una versione monca; non ha le funzioni avanzate però per lo meno non è castrato come xenserver o esxi. Se devi muovere le vm, non sarà comodo come col vcenter, ma ti sposti i tuoi file e pace
  • i dischi freenas erano raw, e non ho mai avuto problemi (ma attenzione, erano sempre in mirroring); vedevo tutte le info da windows e quindi quando mi si è rotto un disco no problem; l'unica cosa: avevo disattivato la cache di windows per i dischi di freenas, senza drammatici impatti sulle performance.
Capiamoci: non sono un windows fan boy. Faccio consulenza su Microsoft Dynamics, ma per 10 anni ho usato solo linux e lo uso ancora. Hyper-v fa cagare, sul lavoro vmware forever. Ma a casa...

Ultimo appunto: unRAID.

Sospetto che la soluzione migliore per certi magheggi alla fine sia sempre linux.
Io userei ancora freenas in macchina virtuale passandogli i dischi raw ma solo perché voglio usare ZFS sotto freebsd e non mi fido tanto del porting linux.

CERTAMENTE non ha la solidità di freenas, che attualmente sono arcicontento di poter usare come va usato.
 
Last edited:

zizzithefox

Dabbler
Joined
Dec 18, 2017
Messages
41
Un ultimo appunto.
Se si vuole utilizzare freenas virtualizzato in ESXi, ricordarsi che è a proprio rischio e pericolo anche se confermo di averlo usato per anni senza particolari problemi, ma:
- memorie ECC, ovviamente
- gruppo di continuità
- mirroring e non raid-z (1 ovviamente, ma anche 2 e 3)
- i dischi in rdm virtuale da impostare come independent-persistent. Mi raccomando. Anche con hyper-v o altri hypervisor, impostarli come indipendenti dagli snapshot, o dare accesso più diretto possibile.

Saluti.
 

zizzithefox

Dabbler
Joined
Dec 18, 2017
Messages
41
Aumento di performance notevole con bhyve e macchine virtuali Windows in TrueNAS core 12.0.
Prima era usabile, adesso è decisamente più che accettabile. Chiaramente ancora ci sono lacune lato grafico, non è che ci puoi giocare eh.
 

Zofoor

Patron
Joined
Aug 16, 2016
Messages
219
Aumento di performance notevole con bhyve e macchine virtuali Windows in TrueNAS core 12.0.
Prima era usabile, adesso è decisamente più che accettabile. Chiaramente ancora ci sono lacune lato grafico, non è che ci puoi giocare eh.

Mah, io ci sto impazzendo abbastanza. Sto cercando di ottenere delle buone performance con i dischi.
Ho provato a creare un ZVOL dentro un volume fatto di un solo disco NVME ssd, configurato come Virtio (ultimi drivers stabili), ma le prestazioni erano misere se confrontato con un disco SSD qualsiasi. Ho provato quindi a fare il passthrough del disco NVME, ci sono anche riuscito, ma le prestazioni sono addirittura peggiorate. Ne ho guadagnato solo che così facendo son riuscito ad aggiornare il firmware del disco nvme direttamente dalla macchina virtuale.

Se hai suggerimenti sono tutto orecchie!!!
Al momento sto provando a trasferire l'immagine dal NVME ad un disco SSD, forse per qualche motivo a TrueNAS non piace l'NVME non saprei...
 
Last edited:

Luca Carbone

Cadet
Joined
Mar 30, 2021
Messages
1
Ciao a tutti,
Sto iniziando ad usare TrueNAS installato in ambiante virtuale e utilizzato come repository della macchine virtuali, riscontro una lentezza nell'accesso al disco delle VM pur avendo fatto il pool dei dischi con cache...
Sapere se esistono corsi o supporto in lingua Italiana? Ovviamente anche a pagamento.

Grazie a tutti
 

zizzithefox

Dabbler
Joined
Dec 18, 2017
Messages
41
Mah, io ci sto impazzendo abbastanza. Sto cercando di ottenere delle buone performance con i dischi.
Ho provato a creare un ZVOL dentro un volume fatto di un solo disco NVME ssd, configurato come Virtio (ultimi drivers stabili), ma le prestazioni erano misere se confrontato con un disco SSD qualsiasi. Ho provato quindi a fare il passthrough del disco NVME, ci sono anche riuscito, ma le prestazioni sono addirittura peggiorate. Ne ho guadagnato solo che così facendo son riuscito ad aggiornare il firmware del disco nvme direttamente dalla macchina virtuale.

Se hai suggerimenti sono tutto orecchie!!!
Al momento sto provando a trasferire l'immagine dal NVME ad un disco SSD, forse per qualche motivo a TrueNAS non piace l'NVME non saprei...
Ciao. Capisco il tuo impazzire. Quando dicevo più che accettabile nel mio post, intendevo più che accettabile (60-70MiB/s vs 20-30MiB/s delle versioni precedenti su dischi tradizionali). Non significa che si possa ritenere adeguato secondo gli standard del 2022, e certamente non si può considerare buono.
Quando ho scritto il post precedente, avevo nextcloud su una macchina linux in bhyve, ma a un certo punto mi sono seccato abbastanza da cominciare a imparare ipfw (per tradurre le regole del firewall) e spostare nextcloud in una jail freebsd; nota che il backend su mariadb era già in una jail da sempre. Solo così risponde almeno due volte più velocemente. La differenza è tutta nell'IO e non c'è niente da fare. Ho provato su file, vdev, aggiungendo L2arc su nvme, ecc. Bhyve è indietro sull'IO, puoi pompare quanto vuoi: io non ho mai visto più 60 MB/s in lettura e scrittura sequenziale, non voglio neanche ricordare cosa faceva sui workload random quando l'ho testato.

Al momento uso bhyve per un domain controller windows 2016 assai poco tartassato e per una macchina linux che mi fa da server openvpn e altre robette, tipo un repository git locale che mi serve per le mie cose. Ma sto pensando di cassare la macchina linux e passare tutto in jail.

Ormai ho rinunciato ad avere aspettative, anche se spero che prima o poi il nuovo controller nvme venga inserito in trueNAS per vedere se migliorerà ancora un po'. Non vedo comunque bhyve raggiungere le performance di hyper-v (per esempio) prima del 2030 se andiamo avanti così.

Un'altra cosa che ho cambiato è, sulla Z800, che ho abbandonato ESXi e sono passato a XCP-ng, che è basato su XenServer e funzionicchia, mentre sto usando Xen Orchestra from sources per gestirlo, che sarebbe l'equivalente del vcenter per vmware vsphere, ma me lo compilo io.

PRO:
  • completamente free
  • puoi usare un repository locale formattato ZFS, che supporta i dischi thin-provisioned, con la compressione lz4; utile a risparmiare SSD se non ti secca perdere le relative di performance (che su NVME PCI-e 4.0 dovrebbe essere praticamente irrilevante, figurati che io lo uso su una workstatio PCI-e 2.0 e non piango); inoltre puoi usare L2ARC, ecc., anche se per adesso non supporta ZFS 2.0 e quindi non hai la cache permanente; quando aggiorneranno sarà una goduria, presumo
  • xen orchestra occupa molte meno risorse del vcenter ed è molto più veloce ad avviarsi (3 volte di meno come minimo); ti forniscono un'appliance già pronta per gestirlo
  • xen orchestra è un'applicazione web e la puoi installare ovunque, e ha inclusa la console sempre web
  • xen orchestra ha le funzionalità di backup e ripristino integrate, non devi avere altri tool tipo veeam backup ecc. (anche se ci sono problemi, vedi i contro)
  • supporta il passthrough abbastanza bene, se hai l'hardware giusto, più o meno come ESXi: è sempre un'attività relativamente spericolata, se c'è di mezzo lo storage e le gpu
CONTRO:
  • se non usi l'appliance che ti danno loro, xen orchestra from sources te lo devi compilare da solo scaricandolo da git, non è difficile ma è sempre una rottura in più
  • non posso dire che abbia la stessa stabilità e compatibilità di vmware né le stesse performance, specie nello scheduling su macchine multicpu (intendo multicpu, non multicore), ma non è lontanissimo; si può ovviare parzialmente configurando l'affinity delle cpu in questi casi per evitare lo spreco di cicli quando lo scheduler si inventa di migrare i processi tra le CPU (pessima idea); se hai una CPU sola, il problema non esiste
  • un'altra cosa irritante che ho constatato è che su versioni di windows vecchie (provato Windows XP, Windows 7 e Windows 2008, di cui ho un paio di legacy vm per consultazione), la console è incompatibile con la modalità "vga" quando ad esempio programmi un checkdisk; fare il controllo disco al boot in questi sistemi è impraticabile (può metterci giorni, e tutto per via della grafica incompatibile); quindi in pratica ti conviene montare il disco virtuale su un'altra macchine più recente e fare il controllo disco da lì a velocità normale, che è una rottura; questo è probabilmente uno dei motivi per cui quegli OS non sono ufficialmente supportati a partire dalla versione 8
  • èpiù complicato da usare; ad es. se usi ZFS (che è sperimentale, ma funziona benissimo) devi modificare il setup del dom0 per dargli abbastanza memoria altrimenti avrai performance schifose; di solito occorre fare qualche test; se usi passthrough, devi configurarlo a mano (tranne il passthough della scheda grafica che puoi fare da interfaccia web a patto di averne una configurata come secondaria nel BIOS che quindi puoi dedicare alle vm); tutte cose che devi fare a riga di comando
  • non supporta i backup quiescienti (che ritengo una carenza molto grave da parte di Citrix), per cui finisci sempre per fare i backup o a macchina spenta o con un agente all'interno della vm (Windows Server Backup o Veeam Agent), specialmente se c'è di mezzo software tipo MS SQL Server.
  • la rete è un pelino più lenta sia di ESXi che di hyper-v per le macchine virtuali, ma non lasci sul campo più del 20% come con bhyve
 
Last edited:
Top