Compañeros linuxeros, me enteré hoy de una mala noticia: mi sistema de virtualización ligera fetiche, vservers, no vendrá con la próxima versión de Debian, wheezy. Mismo castigo para openvz. La razón es que Debian ya no quiere distribuir paquetes de kernel con patches (para utilizar vserver, era necesario instalar un kernel "patcheado"). La solución de remplazo parece ser LXC, disponible de manera nativa en el kernel. Alguien ya uso LXC ? Les parece una buena alternativa a vserver ? Algún consejo ?
Respuesta
Ya pensaste en usar KVM, tambien es parte del Kernel ... Nunca use LXC, así que no podría darte consejo al respecto, pero KVM si.
Otra respuesta
KVM y LXC son dos formas muy distintas de atacar la
virtualización. KVM implica crear una computadora virtual completa, en la que se carga un sistema operativo, que puede ser Linux o (básicamente) cualquier otro. LXC opta más bien por los "compartimentos" — Restringe la visión que da del sistema el kernel a los diferentes procesos, de modo que dentro de la misma computadora pueden estar corriendo varios servidores lógicamente separados. Estos, sin embargo, están corriendo con el mismo kernel de Linux — Lo único "raro" es que este kernel lanza instancias adicionales de init (que normalmente es exclusivamente el proceso #1) # lxc-list RUNNING backups (auto) refrab FROZEN STOPPED frab icecast wheezy # lxc-info -n backups state: RUNNING pid: 9359 # ps axf|grep 9359 9359 ? Ss 0:02 \_ init [3] Como resultado de esto, una máquina virtualizada sobre LXC prácticamente no gasta recursos cuando no está realizando trabajo. Es mucho más rápido crear máquinas virtuales nuevas o clonar una existente. Puedes congelar una si quieres revisar algún detalle (o migrarla a otro host) mucho más fácilmente (porque no hay que convencer a un kernel de que no ha pasado el tiempo ni cosas por el estilo). Desde el host, puedes ver muy claramente la situación de cada una de tus VMs usando comandos de Unix, porque el núcleo entiende perfectamente lo que ocurre "ahí adentro": # lxc-netstat -n backups Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 172.16.10.1:22022 lafa.iiec.unam.mx:51443 ESTABLISHED Active UNIX domain sockets (w/o servers) Proto RefCnt Flags Type State I-Node Path unix 5 [ ] DGRAM 3490067 /dev/log unix 2 [ ] DGRAM 3814761 unix 2 [ ] DGRAM 3504199 unix 2 [ ] DGRAM 3490086 # lxc-ps -n backups CONTAINER PID TTY TIME CMD backups 9359 ? 00:00:02 init backups 9622 ? 00:00:00 dhclient backups 9674 ? 00:00:04 syslogd backups 9694 ? 00:00:00 klogd backups 9730 ? 00:00:00 cron backups 9746 ? 00:00:00 sshd backups 10013 ? 00:00:20 munin-node backups 10033 pts/6 00:00:00 getty backups 10034 pts/2 00:00:00 getty backups 10035 pts/3 00:00:00 getty backups 10036 pts/4 00:00:00 getty backups 10037 pts/5 00:00:00 getty backups 21933 ? 00:12:04 sshd No es que haya un claro ganador entre LXC y KVM: Resuelven necesidades muy distintas. Pero te conviene conocer a ambos.
Comentario sobre la respuesta
Parece que conoces bien LXC, lo recomendarías (para el uso que
describiste) ? Sabes si hay algunos problemas de manejo de la memoria ? Nosotros tenemos un servidor de 48GB de RAM, sables si hubiera algún problema de compartir toda esta RAM ? Que recomiendas: tener muchos servidores virtuales (tipo 15), o pocos (tipo 3), o no tiene importancia ?
Respuesta al comentario
Lo conozco, pero disto de ser experto. Y además, mi entorno es de
bastante poca complejidad. En este momento, lo veo como un reemplazo natural y muy sencillo para vserver y openvz (también fui migrando por estos buscando mantenerme en algo que fuera parte propiamente tanto de Debian como de Linux). Entiendo que había aún trabajo pendiente para que el kernel asignara límites reales de memoria a los huéspedes, pero no estoy seguro del avance de este punto. En mi caso, las dos máquinas en que estoy usando LXC me reportan: # lxc-checkconfig Kernel config /proc/config.gz not found, looking in other places... Found kernel config file /boot/config-3.2.0-0.bpo.3-amd64 --- Namespaces --- Namespaces: enabled Utsname namespace: enabled Ipc namespace: enabled Pid namespace: enabled User namespace: enabled Network namespace: enabled Multiple /dev/pts instances: enabled --- Control groups --- Cgroup: enabled Cgroup clone_children flag: enabled Cgroup device: enabled Cgroup sched: enabled Cgroup cpu account: enabled Cgroup memory controller: enabled Cgroup cpuset: enabled --- Misc --- Veth pair device: enabled Macvlan: enabled Vlan: enabled File capabilities: enabled Note : Before booting a new kernel, you can check its configuration usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig ¿Muchos o pocos? Supongo que depende completamente de tus necesidades. Yo estoy operando con 5 y 2 huéspedes en estas maquinitas, y todo de maravilla. Y la más grande de mis computadoras tiene 8GB de memoria.