Soluzione della community

Proxmox + TrueNAS su ZimaCube: guida al passthrough SATA

Users successfully virtualized TrueNAS under Proxmox by passing through the onboard ASMedia SATA controller, while one setup hit conflicts when adding a second SAS HBA.

L’esecuzione di Proxmox su ZimaCube con TrueNAS SCALE in una VM può funzionare bene quando TrueNAS riceve un intero controller SATA/HBA fisico tramite passthrough PCIe. La chiave è mantenere i dischi ZFS sotto il controllo diretto di TrueNAS anziché presentarli come normali dischi virtuali e verificare i gruppi IOMMU prima di affidare loro i tuoi dati.

La fonte della community riporta un risultato verificato utile: il passthrough del controller SATA ASMedia 1166 integrato a una VM TrueNAS appena creata ha esposto correttamente le unità interne. Riporta anche un caso particolare importante: l’aggiunta del passthrough di un secondo HBA SAS3008 ha causato il fallimento del passthrough SATA interno per un utente. Questo conflitto dipende dalla configurazione specifica, quindi consideralo un indizio per la risoluzione dei problemi e non una limitazione universale.

Architettura consigliata

Hardware ZimaCube
   ↓
Nodo Proxmox VE
   ↓
Passthrough PCIe: controller SATA/HBA completo
   ↓
VM TrueNAS SCALE
   ↓
Pool ZFS creati direttamente dai dischi fisici

Il nodo non deve formattare o montare i dischi assegnati a TrueNAS.

Perché è meglio usare il passthrough dell’intero controller

Il passthrough di un controller completo consente a TrueNAS di vedere direttamente i dischi collegati, inclusi l’identità dei dispositivi e le informazioni SMART quando il controller le supporta. Inoltre impedisce a Proxmox di acquisire indipendentemente gli stessi dischi.

Non creare ZFS in TrueNAS sopra una pila di dischi virtuali Proxmox non correlati se il tuo obiettivo è ottenere un comportamento di archiviazione simile a quello di un appliance.

Passaggio 1: abilita l’IOMMU nel firmware e in Proxmox

I sistemi Intel richiedono l’abilitazione di VT-d/IOMMU; i sistemi AMD richiedono la funzione IOMMU corrispondente. Anche Proxmox deve avere l’IOMMU abilitato a livello di kernel.

La documentazione sui prerequisiti del passthrough di Proxmox specifica che il supporto al passthrough deve essere abilitato sia nel firmware sia nel kernel del nodo.

Passaggio 2: identifica il controller SATA e il relativo gruppo IOMMU

Usa lspci sul nodo Proxmox e identifica il controller che gestisce i sei alloggiamenti interni. La discussione di riferimento ha identificato un controller SATA ASMedia 1166 nella configurazione ZimaCube in questione.

Prima del passthrough, verifica che il controller si trovi in un gruppo IOMMU che possa essere assegnato in sicurezza senza sottrarre al nodo Proxmox dispositivi essenziali non correlati.

Passaggio 3: crea la VM TrueNAS prima di collegare lo storage

Crea la VM TrueNAS con CPU virtuale, memoria, un piccolo disco di avvio separato e una scheda di rete. Installa TrueNAS, aggiornalo e verifica che la VM si avvii normalmente prima di assegnarle il controller di archiviazione fisico.

In questo modo è molto più facile determinare se un errore successivo dipende dal passthrough PCIe anziché dall’installazione stessa del guest.

Passaggio 4: passa direttamente l'intero controller SATA

Aggiungi il controller come dispositivo PCI alla VM TrueNAS. Dopo l'avvio, controlla lspci e l'interfaccia di archiviazione di TrueNAS per i dischi fisici.

Nel caso descritto nella fonte, la ricreazione della VM TrueNAS e la successiva aggiunta del controller ASMedia hanno fatto comparire correttamente tutte le unità interne.

Cosa fare se il controller compare ma i dischi no?

Verifica se il driver guest è stato caricato, se il controller è stato reimpostato correttamente e se un altro dispositivo passato direttamente sta causando interferenze. L'utente del caso originale ha rilevato che il passthrough di un ulteriore HBA SAS3008 alla stessa VM interrompeva il comportamento del controller SATA interno; rimuovendo quell'HBA, i dischi interni sono ricomparsi.

Questo non dimostra che quei due controller non possano mai coesistere. Dimostra che è necessario testare un controller alla volta.

Non creare il pool finché il passthrough non è stabile

Prima di creare ZFS:

  • riavvia Proxmox diverse volte;
  • riavvia la VM TrueNAS diverse volte;
  • conferma che tutti i dischi ricompaiano in modo coerente;
  • controlla la visibilità SMART;
  • verifica che nessun disco sia ancora montato dall'host.

Una topologia di storage che funziona una volta ma scompare dopo un riavvio a caldo non è pronta per i dati di produzione.

Pianifica separatamente i backup di Proxmox e TrueNAS

I backup di Proxmox proteggono la configurazione della VM e il disco di avvio di TrueNAS. Non sostituiscono gli snapshot ZFS, la replica o un backup esterno del pool di dati.

La guida alla virtualizzazione fornisce un contesto più ampio su Proxmox.

Quando TrueNAS bare metal è più semplice

Se l'unico compito della macchina è lo storage, TrueNAS bare metal elimina un livello di virtualizzazione e la complessità del passthrough. Proxmox con TrueNAS virtualizzato ha più senso quando sullo stesso server servono anche altre VM, carichi di lavoro GPU, ambienti di laboratorio o funzionalità di gestione di Proxmox.

Domande frequenti

Devo passare direttamente i singoli dischi o l'intero controller SATA?

Per TrueNAS/ZFS, il design più pulito consiste nel passare l'intero controller di archiviazione fisico, perché TrueNAS assume direttamente la gestione dei dischi collegati.

Proxmox può ancora utilizzare i dischi collegati a un controller passato direttamente?

No. Una volta assegnato l'intero controller a TrueNAS, Proxmox non dovrebbe gestire i dischi collegati a quel controller.

Perché l'aggiunta di un secondo HBA ha fatto scomparire i dischi interni?

Un utente della community ha osservato un'interazione con il passthrough di un SAS3008. Testa i controller singolarmente e verifica il comportamento di IOMMU/reset invece di presumere un difetto hardware universale.

Ho ancora bisogno di backup se uso ZFS?

Sì. ZFS protegge l'integrità e fornisce snapshot, ma non è un backup su un dispositivo esterno.