LXC vs VM: diferencias y cuándo usar cada uno en tu homelab
Puede que si has estado trasteando con cualquier hipervisor para montar tu propio homelab como Proxmox o Unraid entre otros, seguro que te has topado con esta pregunta: ¿LXC o VM?
A mí me pasó lo mismo cuando monté mi servidor. Antes de decidir dónde metía cada servicio, tuve que entender bien qué diferencia hay entre un contenedor LXC y una máquina virtual tradicional. No es tan complicado como suena, pero elegir mal puede costarte recursos y dolores de cabeza más adelante.
En este post vamos a ver qué es cada cosa, en qué se diferencian de verdad, y cómo decidir cuál usar según lo que quieras montar.
Qué es una máquina virtual (VM)
Una máquina virtual es, básicamente, un ordenador completo simulado dentro de tu servidor físico. Cuando creas una VM, el hipervisor (en mi caso, Proxmox) le asigna una porción de CPU, memoria RAM y almacenamiento, y sobre eso instalas un sistema operativo entero, con su propio kernel, su propio arranque, todo.
Es como tener un ordenador dentro de tu ordenador. La VM no sabe que está corriendo dentro de otra máquina. Para ella, ese hardware virtual es todo lo que existe.
Esto tiene una ventaja clara, el aislamiento total. Si algo se rompe dentro de una VM, o si necesitas un sistema operativo distinto al de tu servidor físico, por ejemplo, correr Windows dentro de un host Linux, la VM te lo permite sin problema. La contrapartida es que este aislamiento tiene un coste, pues cada VM carga con su propio kernel completo, lo que significa más consumo de RAM y CPU, y arranques más lentos comparado con otras alternativas.
Qué es un LXC
Un LXC (Linux Container) es un tipo de contenedor que virtualiza a nivel de sistema operativo, no de hardware. En vez de simular un ordenador completo, un LXC comparte el kernel del host (mi servidor Proxmox) y solo aísla el espacio de usuario como procesos, sistema de archivos, red, etc.
Piénsalo como un "apartamento" dentro de un edificio. Cada LXC tiene su propio espacio privado (sus propios paquetes instalados, su propia configuración, su propia IP si quieres), pero todos comparten la misma "estructura" del edificio, que en este caso sería el kernel de Linux del host.
Esto tiene una ventaja evidente, y es que al no cargar con un kernel propio, un LXC es mucho más ligero que una VM. Arranca en segundos, consume menos RAM y CPU, y puedes tener muchos más LXCs corriendo en el mismo hardware que VMs. La limitación es que, al compartir kernel con el host, un LXC solo puede correr Linux (no puedes meter Windows en un LXC), y el aislamiento es algo menor que el de una VM, aunque para la mayoría de servicios de homelab esto no supone un problema real.
¿Cuándo usar cada uno?
Con todo esto claro, la pregunta del millón: ¿cuál eliges para tu próximo servicio?
Usa LXC cuando:
El servicio es ligero y no necesita un aislamiento extremo. Pensemos en cosas como Nginx Proxy Manager, Uptime Kuma, o un contenedor dedicado para algo puntual como
cloudflared.Quieres aprovechar al máximo los recursos de tu servidor, corriendo varios servicios sin gastar de más.
El servicio corre en Linux, que, en el mundo del homelab, es la inmensa mayoría de los casos.
Te importa la velocidad. Necesitas que arranque rápido, se reinicie rápido, y no quieres esperar.
Usa VM cuando:
Necesitas correr un sistema operativo distinto a Linux, por ejemplo, si quieres montar una VM con Windows para algún servicio específico.
El servicio necesita aislamiento fuerte como por ejemplo, algo que quieres mantener completamente separado del resto de tu infraestructura por seguridad.
Vas a instalar algo que necesita acceso directo a hardware o módulos de kernel específicos que no se llevan bien con contenedores.
Prefieres tratar ese servicio como una "caja negra" completamente independiente, sin compartir nada con el resto de tu setup.
En mi caso particular, la mayoría de servicios que corro en mi homelab, desde herramientas de gestión hasta el propio túnel de Cloudflare, van en LXC y es precisamente por esa ligereza. Reservo las VMs para casos muy puntuales donde necesito ese aislamiento extra o un sistema operativo distinto.
Como ves los LXC y VM no son mejores o peores entre sí, son herramientas distintas para necesidades distintas. Entender esta diferencia te va a ahorrar bastantes quebraderos de cabeza cuando empieces a montar servicios en tu propio homelab.
La próxima vez que tengas que decidir dónde meter un nuevo servicio, ya no será una decisión al azar sabrás exactamente qué estás ganando y qué estás sacrificando con cada opción.