Com vários serviços, plataformas e sistemas operacionais em execução, você não pode culpar as Máquinas Virtuais (VMs) pela consideração imediata. Eles são fáceis de configurar e esquecer, mas existem alguns problemas associados ao uso de várias máquinas virtuais em uma configuração de laboratório doméstico. Com a crescente disponibilidade de containers Linux (LXC), principalmente através do Proxmox e release TrueNAS 26é quase a melhor maneira de executar serviços auto-hospedados. Os contêineres Linux não serão a melhor escolha para tudo, mas mudei a maior parte do meu servidor doméstico para LXC e não olhei para trás.
Quer seja Immich, Jellyfin ou algum outro serviço, há uma boa chance de que esteja rodando em um contêiner Linux, não em uma máquina virtual.
Por que usar LXC em vez de uma máquina virtual?
E quais são as diferenças?
Um contêiner é usado para descrever um espaço de usuário Linux isolado que é executado dentro do kernel host. O Docker é um ótimo exemplo disso, executando serviços a partir de imagens projetadas para reconstrução, substituição e descarte. Os LXCs são um pouco diferentes porque não rodam em software como o Docker, mas no próprio sistema. É o mais limpo possível, executando cada serviço em sua própria instância, compartilhando o mesmo host. Por esse motivo, os LXCs são geralmente considerados melhores do que as máquinas virtuais para um laboratório doméstico.
UM Um contêiner Linux é executado com desempenho quase nativo, enquanto a máquina virtual precisará criar e executar uma instância com uso intensivo de recursos. Na verdade, uma máquina virtual virtualiza todo o sistema. O sistema convidado inicializará seu kernel sobre o hardware virtualizado atribuído à instância. Configurar seu assistente doméstico para atuar como uma máquina virtual é semelhante a configurar um sistema físico para fazer o mesmo. O LXC usa o kernel subjacente para fornecer uma visão privada do sistema enquanto opera quase nativamente.
Como não emulamos o chipset, o núcleo convidado e tudo o mais necessário para fazer a instância funcionar como um todo, podemos reduzir a sobrecarga, resultando em melhor desempenho e mais recursos para executar outros serviços. As máquinas virtuais KVM são muito boas atualmente, mas ainda exigem uma quantidade significativa de recursos do sistema. Os contêineres Linux em um host Linux quase sempre fornecem o melhor desempenho para máquinas virtuais, mas, novamente, não se trata de números, mas de quantos podem ser executados no sistema.
Tentei executar máquinas virtuais Android no Proxmox
Com o sistema operacional certo, o Proxmox é surpreendentemente bom na virtualização do Android
Quando finalmente fez sentido para mim
Eu precisava de mais no mesmo host
Realmente me ocorreu quando percebi que algumas de minhas VMs ainda ocupariam uma grande parte do sistema host, seja RAM ou ciclos de CPU. As máquinas virtuais possuem sistemas init, serviços em segundo plano, kernels e muito mais, todos em execução e competindo por recursos. Um LXC pode ficar quase ocioso, sem receber quase nada do host. Como não estou carregando um sistema operacional totalmente novo na plataforma virtualizada, não parece mais um desperdício criar e executar várias instâncias de serviço.
Uma única máquina virtual poderia (e é) particionada com sucesso em vários LXCs sem perder o desempenho geral. Depois, há a velocidade com que esses sistemas realmente ligam depois de serem desligados. A inicialização de uma VM, mesmo que leve, pode levar vários segundos. Às vezes falo quase meio minuto e dependendo do hardware subjacente. O LXC geralmente inicia em segundos. O contêiner Docker LXC será ainda mais rápido, geralmente iniciando quase imediatamente.
Reiniciar uma máquina virtual pode ser como reiniciar todo o sistema, hardware e tudo mais. É verdade, mas o LXC pode ser reiniciado como se você estivesse reabrindo o aplicativo em seu desktop ou telefone. Parece instantâneo porque é mais como uma reinicialização do que uma reinicialização. Finalmente, com o LXC, os backups são muito mais fáceis porque você pode tirar instantâneos do contêiner e nada mais. A máquina virtual precisa ter toda a imagem do disco virtual para salvá-la e depois restaurá-la, por isso leva mais tempo para experimentar.
Quase todos os serviços que eu hospedo são executados em um contêiner Linux, e a matemática não suporta mais uma máquina virtual.
As máquinas virtuais são ótimas, mas LXC é tudo o que a maioria das pessoas precisa.
LXC substituiu amplamente as máquinas virtuais em meu laboratório doméstico
Mas ainda confio nos dois para fazer as coisas funcionarem
Depois de usá-lo por dois anos, finalmente comecei a limpar o ambiente e a migrar o máximo possível de instâncias virtuais para contêineres. O LXC pode ser configurado de forma semelhante a um sistema independente, mas sem o custo adicional de executar um segundo núcleo e outros bits para manter as máquinas virtuais em execução. É simplesmente um jardim murado no mesmo sistema que o computador host, o que o torna emocionante do ponto de vista tecnológico e impressionante porque é mais leve.
Como eu tinha mais recursos para trabalhar, meu laboratório doméstico poderia se expandir sem gastar dinheiro na compra de mais equipamentos usados, como nós adicionais no cluster Proxmox. Anteriormente, forneci ao LXC o que achei que eles precisariam. As máquinas virtuais teriam um número arbitrário inserido no campo correspondente, às vezes oferecendo múltiplos do que realmente usam. Foi revigorante mudar para uma abordagem que não exigia recursos excessivos para garantir que tudo funcionasse bem o suficiente.
Mas isso não significa que eu não use máquinas virtuais ou as considere úteis, porque isso não poderia estar mais longe da verdade. Máquinas virtuais é ótimo para garantir que nada possa escapar neste caso. Os contêineres são razoavelmente seguros, mas é raro que isso aconteça. Com máquinas virtuais, isso é significativamente mais difícil. Alguns serviços também fazem mais sentido em máquinas virtuais, como um sistema operacional completo como Windows, macOS ou alguma distribuição Linux aleatória.
Máquinas virtuais ainda são úteis para o laboratório doméstico
Algumas das coisas que executo também exigirão níveis de privilégio mais altos do que os oferecidos pelo LXC. O estoque NFS da LXC é praticamente uma velha história no momento. É muito mais fácil em uma máquina virtual, mas também o é o rendimento da GPU, bem como o rendimento geral do hardware. Isso é possível com LXC, mas pode ser muito mais fácil com uma máquina virtual. Fiz GPUs para Jellyfin, OpenWeb UI e outros serviços e descobri que as máquinas virtuais são muito mais simples, o que pode ser útil para iniciantes.
Eu, como muitos outros, acho extremamente útil usar ambos. Mas definitivamente experimente os contêineres, se ainda não o fez. Eles oferecem uma nova maneira de expandir seu laboratório doméstico.






