Come configurare il passaggio PCI in XCP-ng per l’accesso diretto all’hardware?

Il pass-through PCI consente di assegnare hardware reale, come GPU o schede di rete (NIC), alle macchine virtuali in XCP-ng per ottenere prestazioni massime. Questa guida illustra i passaggi di configurazione, i controlli necessari, le soluzioni ai problemi comuni e le migliori pratiche per sfruttare al meglio le proprie macchine virtuali.

download-icon
Download gratuito
per VM, sistema operativo, database, file, NAS, ecc.
sofia

Updated by Sofia on 2026/03/18

Indice dei contenuti
  • Cos’è il PCI Passthrough di XCP-ng?

  • Perché utilizzare il passaggio diretto PCI di XCP-ng?

  • Prerequisiti per il passaggio diretto PCI in XCP-ng

  • Gruppi IOMMU e isolamento dei dispositivi nel pass-through PCI di XCP-ng

  • Come abilitare il passaggio diretto PCI in XCP-ng?

  • Convalida dell’esito positivo del passaggio diretto

  • Risoluzione dei problemi comuni con il pass-through

  • Protezione delle tue macchine virtuali XCP-ng con Vinchin

  • Domande frequenti su PCI Passthrough in XCP-ng

  • Conclusione

Il pass-through PCI è una delle funzionalità più potenti di XCP-ng. Consente a una macchina virtuale di utilizzare un dispositivo PCI fisico—come una GPU o una scheda di rete—quasi come se fosse eseguita su hardware dedicato. Questa funzionalità è essenziale per carichi di lavoro ad alte prestazioni, come l’addestramento di modelli di intelligenza artificiale o le reti ad alta velocità.

Cos’è il PCI Passthrough di XCP-ng?

Il PCI Passthrough consente a una macchina virtuale di controllare in via esclusiva un dispositivo PCI fisico. Invece di condividere il dispositivo tra più macchine virtuali o di consentirne l’uso esclusivo all’host, lo si assegna a un singolo sistema guest. Ciò risulta essenziale quando il carico di lavoro richiede l’accesso diretto all’hardware, ad esempio:

  • Accelerazione GPU per l'apprendimento automatico

  • Controller di archiviazione ad alta velocità

  • Interfacce di rete specializzate

In XCP-ng, il pass-through PCI si basa sulle funzionalità di virtualizzazione dell’ipervisore Xen. Questo processo prevede di nascondere il dispositivo da dom0 (il dominio di gestione privilegiato), in modo che soltanto la macchina virtuale di destinazione lo rilevi. Il sistema operativo guest carica quindi i propri driver e utilizza il dispositivo senza interferenze da parte di altre macchine virtuali o di dom0.

Perché utilizzare il passaggio diretto PCI di XCP-ng?

Se hai bisogno di prestazioni massime o devi eseguire all’interno della tua macchina virtuale driver specifici del produttore, il passaggio diretto risulta spesso indispensabile. Tuttavia, ciò comporta alcuni compromessi: una volta effettuato il passaggio diretto, tale dispositivo non è più disponibile per dom0 o per altre macchine virtuali; alcune funzionalità avanzate della virtualizzazione, come la migrazione in tempo reale, potrebbero non funzionare; inoltre, la risoluzione dei problemi diventa più complessa.

Potresti chiederti: esiste un’alternativa se desidero che diverse macchine virtuali condividano una singola scheda ad alte prestazioni? Tecnologie come SR-IOV consentono la condivisione creando funzioni virtuali sui dispositivi supportati, ma il pass-through vero e proprio assegna a una singola macchina virtuale il controllo completo sull’hardware reale.

Prerequisiti per il passaggio diretto PCI in XCP-ng

Prima di configurare il passaggio diretto PCI in XCP-ng, verificare attentamente sia l’ambiente hardware che quello software.

Prima di tutto: la CPU e la scheda madre del server devono supportare l’Unità di gestione della memoria per input/output (IOMMU). Nei sistemi Intel questa funzionalità è denominata VT-d; sulle piattaforme AMD è chiamata AMD-Vi o semplicemente IOMMU. La maggior parte dei server aziendali ha questa funzione abilitata per impostazione predefinita, ma non date nulla per scontato! Accedete alle impostazioni del BIOS o dell’UEFI durante l’avvio e cercate opzioni denominate Intel VT-d, AMD-Vi o IOMMU. Impostatele tutte su Abilitato, se non lo sono già.

1. Avvia XCP-ng.

2. Aprire una sessione terminale tramite SSH o dalla console locale.

3. Esegui:

   xl info | grep -i iommu

Se l’output mostra “IOMMU abilitato”, sei pronto per i passaggi successivi; in caso contrario, torna alle impostazioni del BIOS.

Successivamente: identificare quale/i dispositivo/i PCI fisico/i si desidera passare attraverso utilizzando lspci:

lspci

Questo comando elenca tutti i dispositivi PCI rilevati insieme al loro indirizzo Bus:Device.Function (BDF), ad esempio 04:01.0 per una scheda di rete o 03:00.0 per una GPU.

Assicurati di eseguire almeno XCP-ng 8.2; le versioni più recenti offrono strumenti di gestione migliori e miglioramenti della stabilità relativi alle funzionalità di pass-through (documentazione di XCP-ng).

Gruppi IOMMU e isolamento dei dispositivi nel pass-through PCI di XCP-ng

A livello hardware, i dispositivi sono raggruppati in gruppi IOMMU e non tutti i dispositivi possono essere passati singolarmente. Per visualizzare come i dispositivi sono raggruppati sul tuo sistema, esegui il seguente comando:

Per vedere come i dispositivi sono raggruppati sul tuo sistema:

find /sys/kernel/iommu_groups/ -type l

Se più dispositivi appartengono allo stesso gruppo e uno di essi è fondamentale per il funzionamento dell’host, non è possibile assegnare solo un dispositivo senza compromettere la stabilità del sistema. Le schede madri di tipo consumer possono raggruppare più dispositivi insieme, pertanto è sempre necessario verificare tale configurazione prima di procedere con i deployment in produzione.

Come abilitare il passaggio diretto PCI in XCP-ng?

Analizziamo passo dopo passo l’abilitazione del passaggio diretto PCI utilizzando i metodi ufficiali documentati dai manutentori del progetto XCP-ng:

1. Trova l’ID PCI del tuo dispositivo

Inizia identificando quale dispositivo fisico verrà assegnato:

1. Connetti tramite SSH/console locale.

2. Eseguire lspci—annotare l’indirizzo completo, compreso il prefisso del dominio (0000:), ad esempio 0000:04:01.0.

3. Per il mapping specifico delle interfacce di rete:

   find /sys/class/net -exec readlink {} +

4. Su XCP-ng 8.3 e versioni successive, elenca tutti i dispositivi assegnabili con i relativi UUID utilizzando il comando:

   xe pci-list

2. Nascondere il dispositivo da dom0

Questo passaggio fondamentale impedisce a dom0 di caricare i driver per il dispositivo scelto, evitando potenziali conflitti in un momento successivo, quando lo si assegnerà ad altro:

Per XCP-ng 8.2

Impostare il parametro del kernel affinché Xen sappia quali dispositivi devono essere riservati:

/opt/xensource/libexec/xen-cmdline --set-dom0 "xen-pciback.hide=(0000:04:01.0)"

Per più dispositivi, aggiungere gli indirizzi tra parentesi:

/opt/xensource/libexec/xen-cmdline --set-dom0 "xen-pciback.hide=(0000:04:01.0)(0000:00:19.0)"

Per XCP-ng 8.3 e versioni successive

Utilizzare il nuovo approccio basato sull’API invece dei parametri del kernel:

xe pci-disable-dom0-access uuid=<pci uuid>

Recuperare gli UUID tramite il comando precedente xe pci-list.

3. Riavvia l’host

Dopo aver nascosto i dispositivi mirati, riavvia l’host in modo che le modifiche abbiano pieno effetto:

riavvio

4. Verificare i dispositivi assegnabili

Dopo il riavvio, verificare che le schede o i controller desiderati siano ora visualizzati come assegnabili, ovvero non più assegnati a dom0:

Su versioni precedenti,

xl pci-assignable-list

Nei sistemi più recenti,

xl list-pci-assignable-devices

L’indirizzo BDF di destinazione deve comparire qui; in caso contrario, verificare nuovamente i passaggi precedenti, con particolare attenzione ai parametri del kernel rispetto all’uso dell’API, a seconda della versione!

5. Assegnare il dispositivo PCI a una macchina virtuale

Ora collega l’hardware selezionato direttamente all’ospite scelto—but remember!

La macchina virtuale deve essere spenta prima di effettuare le assegnazioni!

Assegnare uno o più dispositivi utilizzando la notazione degli slot (numero di slot virtuale/BDF) come segue:

Esempio con un singolo dispositivo,

xe vm-param-set other-config:pci=0/0000:04:01.0 uuid=<vm uuid>

Esempio con più dispositivi,

xe vm-param-set other-config:pci=0/0000:04:01.0,1/0000:00:19.0 uuid=<vm uuid>

Sostituire <vm uuid> in modo appropriato (xe vm-list consente di recuperare gli UUID).

6. Avvia la tua macchina virtuale

Al termine della configurazione, riavvia nuovamente la macchina virtuale di destinazione.

xe vm-start uuid=<vm uuid>

All'interno del sistema operativo guest, installare i driver del produttore appropriati secondo necessità: la scheda passata in modalità pass-through dovrebbe ora apparire esattamente come l’hardware nativo!

Convalida dell’esito positivo del passaggio diretto

Dopo aver avviato la macchina virtuale con l’hardware assegnato, convalidare sempre l’esito positivo prima di procedere:

Per i sistemi guest Linux, eseguire:

lspci -v | grep -i "driver del kernel"

Cercare i nomi dei driver previsti caricati per le relative voci BDF, non gli stub generici pciback!

Per i sistemi guest Windows, aprire il Gestore periferiche: la scheda o il controller assegnato dovrebbero comparire nella categoria corretta, senza icone di errore o triangoli gialli che indicano driver mancanti o conflitti.

Se qualcosa sembra non andare, fermati qui: consulta la sezione di risoluzione dei problemi riportata di seguito prima di procedere ulteriormente!

Risoluzione dei problemi comuni con il pass-through

Anche gli amministratori esperti talvolta incontrano difficoltà nella configurazione del pass-through PCI di XCP-ng! Di seguito sono elencati i sintomi più comuni e le soluzioni generalmente efficaci:

Il dispositivo non viene visualizzato all’interno dell’ospite:

La macchina virtuale non si avvia o si arresta in modo anomalo:

Le prestazioni sembrano scarse:

Assicurarsi che le interruzioni segnalate tramite messaggio (MSI/MSI-X) siano abilitate nelle impostazioni del sistema operativo guest o del driver del dispositivo, laddove supportato (documentazione NVIDIA). Verificare inoltre che siano installati gli ultimi driver forniti dal produttore, anziché quelli generici inclusi nelle immagini del sistema operativo!

L’host diventa instabile dopo l’attivazione:

Verificare se il tentativo di pass-through ha coinvolto schede multifunzione ancora parzialmente utilizzate dal sistema operativo di base a causa di un raggruppamento o isolamento inadeguato, come descritto nella sezione precedente (“Comprensione dei gruppi IOMMU”). Non tentare mai di effettuare il pass-through di una sola parte di tali bundle, a meno che non si sia assolutamente certi degli effetti collaterali sul sistema downstream!

Ancora bloccato? Consulta i forum della comunità XCP-ng, dove molti casi simili sono stati discussi – e risolti – in dettaglio negli anni passati!

Protezione delle tue macchine virtuali XCP-ng con Vinchin

Dopo aver configurato funzionalità avanzate come il pass-through PCI in XCP-ng, proteggere le proprie macchine virtuali diventa ancora più cruciale, soprattutto quando sono coinvolti dispositivi collegati direttamente e la complessità dei backup aumenta.

Vinchin Backup & Recovery si distingue come soluzione aziendale per il backup delle macchine virtuali, compatibile con oltre 15 principali piattaforme di virtualizzazione, tra cui un supporto di prim’ordine per XCP-ng, oltre a VMware, Hyper-V, Proxmox, oVirt, OLVM, RHV, XenServer, OpenStack, ZStack e altre.

Vinchin offre un’ampia gamma di funzionalità, tra cui backup efficienti di tipo forever-incremental che ottimizzano l’utilizzo dello spazio di archiviazione, tecnologie integrate di eliminazione della ridondanza e compressione che riducono in modo significativo le dimensioni dei backup, capacità seamless di migrazione V2V tra ambienti supportati, opzioni flessibili di ripristino a livello di file e protezione pianificata basata su policy, garantendo una copertura completa per infrastrutture IT esigenti.

1. Selezionare semplicemente la macchina virtuale XCP-ng sull’host

2. Quindi seleziona la destinazione del backup

3.Seleziona le strategie

4. Infine invia il lavoro

Vincchin è utilizzato in tutto il mondo da migliaia di organizzazioni, che gli attribuiscono costantemente valutazioni molto elevate; offre la possibilità di provare in prima persona le sue funzionalità in modo privo di rischi grazie a una versione di prova gratuita completa, valida fino a 60 giorni.

Pronto a proteggere i tuoi carichi di lavoro critici? Clicca subito qui sotto per scaricare l’installer di Vinchin e distribuirlo facilmente in pochi minuti!

Domande frequenti su PCI Passthrough in XCP-ng

D1: Le schede madri per utenti finali supportano in modo affidabile il PCI passthrough in XCP-ng?

A1: Sì, ma verificare sempre innanzitutto la presenza e il funzionamento delle opzioni VT-d/IOMMU nel BIOS, poiché molte schede di fascia entry-level non dispongono dell’isolamento o del raggruppamento adeguati necessari per garantire stabilità e prestazioni a lungo termine, come richiesto nelle implementazioni enterprise;

Q2: La mia scheda assegnata scompare dall’host dopo aver abilitato il pass-through: è normale?

A2: Assolutamente sì! Una volta nascosto dal piano di gestione di dom0, le risorse non saranno disponibili localmente fino a quando non verranno esplicitamente scollegate o riattivate nuovamente, seguendo le procedure illustrate sopra;

Conclusione

Il passaggio diretto PCI in XCP-ng consente alle macchine virtuali di accedere direttamente all’hardware fisico, garantendo prestazioni eccezionali laddove contano di più. Tuttavia, richiede una pianificazione accurata delle strategie di sicurezza, backup e migrazione lungo l’intero ciclo di vita e l’architettura di distribuzione. Vinchin semplifica la protezione anche delle configurazioni più complesse grazie a un insieme robusto di funzionalità progettato appositamente per gli ambienti moderni di datacenter ibridi.

Condividi su:

Categories: VM Tips