Quando se trata de meu laboratório doméstico, acredito firmemente na execução de minhas plataformas de virtualização, roteadores, servidores de armazenamento e outros sistemas críticos em diferentes máquinas separadamente. Portanto, em vez de combinar meu servidor NAS e convidados virtuais voltados para a produtividade no mesmo convidado Proxmox, há muito tempo confio em uma plataforma bare-metal para minhas cargas de trabalho TrueNAS. Afinal, dados os experimentos estranhos nos quais estou envolvido, eu diria que tenho justificativa para manter meus nós PVE longe do meu servidor de backup central.
Dito isso, recentemente trabalhei em um projeto onde implantei TrueNAS em uma VM Proxmox e funcionou surpreendentemente bem. Claro, se eu travasse meu nó Proxmox, minha VM TrueNAS também travaria. Mas, contanto que eu não exagere em meus experimentos, tenho que admitir que o método sugerido pela iXsystems para uma instância TrueNAS virtualizada é confiável o suficiente para uma estação de trabalho TrueNAS híbrida alimentada por Proxmox.
Implantar uma máquina virtual TrueNAS como uma distribuição Linux regular é uma receita para o desastre
Mesmo que funcione inicialmente, esta configuração do NAS seria bastante arriscada
Digamos que eu queira criar qualquer máquina virtual com sabor Linux que não seja uma plataforma de armazenamento com ZFS como TrueNAS. O procedimento é bastante simples: dou um nome à nova máquina virtual e atribuo a ela os recursos corretos de CPU, memória e armazenamento usando o assistente de criação de máquina virtual Proxmox. Se eu quisesse atribuir mais discos de armazenamento a ele, simplesmente os atribuiria à VM como discos virtuais na guia Hardware e os chamaria diariamente. Ou se eu quiser mais espaço, vou para o shell do Proxmox e executo alguns comandos para alocar todo o disco para a VM.
Embora este procedimento funcione mesmo para VMs de desenvolvedor, está longe de ser ideal para uma VM TrueNAS. Veja bem, o TrueNAS usa o ZFS extremamente poderoso como sistema de arquivos subjacente, que requer controle direto sobre discos físicos. Atribuí-los a VMs TrueNAS adicionaria camadas adicionais de virtualização ao mix, potencialmente quebrando o cache de gravação. E se a ordem das gravações for confundida durante uma falha, a integridade dos dados dos meus pools de armazenamento será definitivamente comprometida.
Caramba, essas camadas de virtualização ainda estão lá, mesmo se eu transferir unidades brutas para minha VM TrueNAS usando comandos shell, e meu sistema de backup virtualizado não seria capaz de rastrear estatísticas SMART, verificar informações da unidade ou liberar adequadamente o cache da unidade. Claro, tudo pode funcionar bem no início, mas sem acesso de nível de hardware aos discos, você pode acabar corrompendo os pools de armazenamento de máquinas virtuais TrueNAS. Felizmente, ainda existe uma maneira de criar e executar uma instância TrueNAS virtualizada no Proxmox…
O passe PCI(e) é o hack que torna este projeto possível
É muito fácil quando você sabe o que está fazendo
Como apenas expor as unidades ao TrueNAS envolve camadas adicionais de hipervisor, a maneira mais segura de obter um servidor NAS com tecnologia Proxmox é entregar todo o controlador SATA a uma máquina virtual. Dessa forma, minha VM TrueNAS (e por extensão ZFS) teria acesso total aos meus discos rígidos e eu não teria que lidar com as peculiaridades dos pools de armazenamento de discos rígidos virtuais. A ressalva, claro, é que pode parecer um pouco complicado para iniciantes. Mas se você estiver familiarizado com a migração Proxmox PCI, não deverá demorar muito para transferir o controlador SATA.
Para referência, executei este experimento em um TerraMaster F4-425 Pro, que já possui uma boa CPU e RAM suficiente para uma configuração TrueNAS híbrida baseada em Proxmox. Fiz guias específicos sobre o passe PCI, mas aqui está uma versão resumida para quem quiser acompanhar. Primeiro, eu edito GRUB_CMDLINE_LINUX_DEFAULT=”quieto” linha no arquivo de configuração /etc/default/grub adicionando intel_iommu = ativado imediatamente depois quieto bandeira e correu atualização-grub para garantir os regulamentos da IOMMU. Desde /etc/módulos também precisava de alguns parâmetros extras, adicionei o seguinte código a ele:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
Editando com ele /etc/modprobe.d/vfio.conf Tudo o que restou foi um arquivo para incluir os IDs dos dispositivos dos meus controladores SATA. Então, executei o comando lspci -nn para verificar os IDs dos dispositivos e os inseri /etc/modprobe.d/vfio.conf na seção opções vfio-pci ids = Dispositivo_1, Dispositivo_2 formatar. Agora que a passagem PCI dos meus controladores SATA foi concluída, fui rapidamente para a guia Hardware da VM TrueNAS e os adicionei como dispositivos PCI.
Uma VM TrueNAS também requer muita RAM
Eu culpo os pools ZFS com muita memória
Minha VM TrueNAS ainda precisava de alguns ajustes de memória para deixá-la pronta para a batalha. O ZFS é famoso por suas tendências de consumo de memória, então aloquei 8 GB dos 16 GB de RAM do meu NAS para a VM. Tenho mais alguns convidados virtuais em execução neste sistema, portanto, talvez seja necessário aumentar a quantidade de RAM no futuro para evitar o provisionamento excessivo de recursos de memória.
Dito isso, tenho essa configuração NAS virtualizada em execução há mais de um mês e ela não me decepcionou. Ainda terei que desistir de coisas sofisticadas, pois não quero fazer o downgrade da configuração do TrueNAS com o host Proxmox. Mas devo dizer que executar uma configuração híbrida Proxmox + TrueNAS na mesma máquina é bastante impressionante, mesmo que a comunidade geral de laboratórios domésticos esteja um pouco preocupada com isso.








