VPS com OpenVZ: quando o contêiner serve e onde ele deixa na mão
O OpenVZ é uma virtualização por contêineres para Linux, desenvolvida por muito tempo pela empresa Virtuozzo. Todos os clientes de um servidor físico rodam sobre um único kernel do host, e o isolamento de memória, processos e rede é feito pelo próprio kernel. Graças a isso, cabem muitos contêineres numa só máquina, e os planos com OpenVZ continuam entre os mais baratos da tabela. O preço baixo é pago com limitações, e é importante entendê-las antes da compra, não depois.
OpenVZ 6 e OpenVZ 7: a versão do kernel decide tudo
Dentro do contêiner, o comando uname -r mostra o kernel do host, e é ele que determina o que vai rodar para você.
- OpenVZ 6 funciona sobre o kernel 2.6.32 do ramo RHEL 6 — uma linha como
2.6.32-042stab…. Esse kernel parou de evoluir há muito tempo, e as distribuições modernas não inicializam nele: as versões recentes do systemd e da glibc exigem kernels mais novos. Nesses planos normalmente só há templates de sistemas antigos, sem atualizações de segurança. - OpenVZ 7 é baseado no kernel 3.10 do RHEL 7 (na saída aparecerá
vz7). Aqui rodam sistemas mais novos, mas o kernel ainda é mais antigo do que muitos programas esperam, e só o provedor pode trocá-lo.
Outra consequência do kernel compartilhado: o horário do servidor é sincronizado pelo host, então dá para mudar o fuso horário do sistema, mas não ajustar o relógio do sistema. Para a maioria das tarefas isso não atrapalha, mas programas que controlam o horário por conta própria não vão funcionar no contêiner. Se a descrição do plano não indica a versão, pergunte ao suporte ou verifique uname -r logo no primeiro dia, enquanto vale o reembolso.
O que não dá para fazer num contêiner
- Carregar um módulo de kernel. O
modprobenão funciona: só estão disponíveis os módulos que o provedor ativou do lado dele. Por isso, o WireGuard para uma rede privada entre servidores só é possível aqui na variante em userspace e apenas com o dispositivo TUN liberado; para essa tarefa, é mais prática a seleção VPS para WireGuard. - Instalar outro sistema operacional. Windows, FreeBSD e ISO próprio estão fora de questão: o contêiner é sempre Linux sobre um kernel alheio.
- Rodar máquinas virtuais. Não há nem pode haver virtualização aninhada num contêiner.
- Configurar swap e parte do sysctl. Não há partição de troca própria, e muitos parâmetros de rede do kernel, inclusive a escolha do algoritmo TCP, são definidos pelo host.
- Usar o Docker com confiança. No OpenVZ 6 o Docker moderno não inicia; no OpenVZ 7 o suporte depende das configurações do provedor e muitas vezes é limitado na rede e nos drivers de armazenamento.
Memória e sobrealocação: leia o user_beancounters
Historicamente, o OpenVZ era famoso pela memória «burst»: o plano indicava um volume garantido e outro maior, disponível «enquanto houver memória livre». Na prática, essa folga sumia nos horários de pico. No OpenVZ 7 o esquema é mais simples — um limite de memória mais um swap virtual (vswap), que o free mostra como paginação comum. Mas não é o disco do seu servidor: quando ele é usado, o host deixa o contêiner artificialmente mais lento.
A melhor ferramenta de verificação é o arquivo /proc/user_beancounters. Nele, para cada recurso, aparecem o consumo atual, o limite e a coluna failcnt: quantas vezes o contêiner esbarrou na restrição. Um failcnt de memória crescente explica quedas repentinas do MySQL ou do PHP melhor que qualquer log da aplicação. Processador e disco no OpenVZ são divididos com os vizinhos de forma especialmente apertada, por isso a estabilidade nos planos baratos varia bastante ao longo do dia.
Como verificar se o plano é mesmo OpenVZ
O comando systemd-detect-virt mostrará openvz. Sinais indiretos são a presença de /proc/vz e /proc/user_beancounters, além da interface de rede venet0 no lugar do eth0 habitual. Às vezes acontece o contrário: o provedor escreve «VPS» sem indicar a plataforma, e por dentro há um contêiner. Se você precisa de kernel próprio, procure logo a marcação KVM — ali Docker, módulos de kernel e qualquer sistema operacional estão disponíveis sem ressalvas.
Quando o OpenVZ ainda é uma escolha sensata
O contêiner serve bem para tarefas que não precisam de nada do kernel: um site estático atrás do nginx, um pequeno bot em Python, um script agendado, um ambiente de testes por uma semana, um ponto de monitoramento de reserva. Se o orçamento é mínimo e o programa é comum, o OpenVZ 7 dá conta, e esse servidor custa menos que o equivalente com KVM; outras opções de preço baixo estão reunidas na seção de VPS baratos.
Não vale escolher OpenVZ para um banco de dados de produção, um stack Docker, uma rede privada corporativa ou um projeto que vai crescer. A migração depois sai mais cara que a economia. Se você quer um contêiner, mas com kernel moderno, veja VPS com LXC: as limitações são parecidas, e o kernel do host costuma ser bem mais novo.