La virtualización es algo que me entusiasma. Tal es así que he decidido virtualizar mi nas con Proxmox 5. Una de las primeras cosas, es saber cómo compartir discos físicos con contenedores lxc y máquinas kvm al mismo tiempo.
El objetivo, es conseguir tener instalado Proxmox en un pendrive o disco ssd por usb3. De forma que todos los discos que le quieras conectar al NAS por el medio que sean estén listos en exclusiva para acceso de datos por las máquinas.
Además, la idea es que todas las máquinas tengan acceso a estos discos, y no a la imagen que se crea y donde se almacenan los datos de la máquina. Así puedes, por ejemplo, compartir datos entre varias máquinas y contenedores con cualquier sistema operativo como si estuvieran conectados directamente en ellos.
Cómo montar discos físicos en kvm y lxc con proxmox
Si ya has llegado hasta aquí, voy a dar por supuesto que sabes cómo instalar proxmox 5, tienes un contenedor lxc o kvm funcionando con un Linux o Windows (o varios claro), y que también sabes cómo montar particiones y discos en fstab para hacerlas permanentes.
A partir de aquí todo será más sencillo, y ten en cuenta que puedes ir añadiendo discos según te haga falta, simplemente tendrás que agregar los puntos de montaje necesarios a la configuración de cada máquina.
Para este tuto, voy a dar por supuesto que tienes el disco duro montado en /mnt/disco, aunque puedes usar cualquier otro punto de montaje, o carpeta del disco duro principal y hacer que se vea en la máquina (si por ejemplo solo tienes un disco, puedes crear una carpeta y montarla en las virtuales).
Cómo compartir carpetas y discos entre kvm y lxc con proxmox
Vas a necesitar echar mano de un terminal o consola. Desde Linux basta con que ejecutes el terminal, en Windows puedes usar putty porque vas a conectar por ssh a tu servidor proxmox. Si no sabes su ip, ejecuta ipconfig en la consola del proxmox y te aparecerá.
Una vez con la ip en mente, abre la terminal y conecta por ssh a la ip de proxmox por ejemplo: 192.168.0.50. El usuario y la contraseña son los mismos que para proxmox web.
Ahora, debes tener en cuenta dos rutas, que es donde se van a guardar todos los archivos de configuración de las máquinas que tienes creadas en proxmox 5 (en versiones anteriores no se hace así):
- LXC o VZ: /etc/pve/lxc/
- KVM: /etc/pve/qemu-server/
Dentro de estas carpetas encontrarás archivos con los nombres o ids que le hayas dado a las máquinas. Lo normal son las ids. Supondremos que tu máquina lxc es la 101 y la kvm 102.
Como son un poco distintos lo separaré en dos secciones, por comodidad.
Cómo montar unidades físicas en contenedores LXC
Si quieres que tu contenedor lxc tenga acceso físico a un disco o carpeta del host en proxmox 5, lo primero será abrir el archivo de configuración:
nano /etc/pve/lxc/101.conf
Verás un montón de líneas donde están todos los parámetros del contenedor. Ahora, puedes añadir las líneas en cualquier parte, pero es preferible antes de la que empieza por rootfs, pon una nueva línea:
mp0: /mnt/disco,mp=/carpeta/contenedor
Como puedes ver la línea empieza con mp0 o por sus siglas en inglés, punto de montaje 0. Si quieres agregar más carpetas o discos, bastará con que los montes en el host y añadas más líneas aumentando el número:
mp1: /montaje/host,mp=/otro/punto/de/montaje
Guarda la configuración (ctrl+x, y), pero aún no hemos terminado. Falta crear la carpeta en el contenedor, para que se pueda montar el sistema de archivos.
Entra por ssh a tu contenedor, o desde la línea de comandos de proxmox con :
pct enter 101
Ahí crea la carpeta que hayas puesto como mp=
mkdir -p /carpeta/contenedor
Yo para no liarme mucho intento seguir un patrón similar en el host y las máquinas virtuales, pero puedes poner los nombres que quieras.
Por último, entra en la interfaz web, y reinicia la máquina, o puedes ejecutar el comando:
lxc-stop --name 101 && lxc-start --name 101
En cuanto termine de ejecutarse, verás que con df -h te aparece montada la unidad en el punto de montaje que le has indicado y puedes acceder a todos los archivos.
Cómo montar unidades físicas en contenedores KVM
OJO: este método no funciona en todas las instalaciones. Lo he comprobado con varias y solo ha funcionado en una, mientras que el anterior sí que ha funcionado en todas. Si conoces el motivo puedes dejar un comentario.
Ahora le toca el turno a montar como disco físico en kvm una carpeta del host (o disco duro montado).
La configuración de las máquinas virtuales en este caso está en la otra carpeta, así que vamos a editarla:
nano /etc/pve/qemu-server/102.conf
Verás que es un poco diferente a la de antes. Vamos a montar la carpeta del host como unidad ide. Añade esta línea justo debajo del último ideX: que tengas, o entre cores: y memory: (en mi caso ide2:):
ide3: /mnt/disco
Si quieres conectar más “discos duros” a la máquina virtual, basta con ir aumentando el número, ide4, ide5, etc. También puedes ponerlos como sataX.
En este caso no tienes que hacer nada en la máquina virtual, pues aparecerán como unidades de disco duro local y no hay que especificar un punto de montaje.
Basta con que reinicies la máquina desde la interfaz web, o como te he comentado antes con los comandos lxc.
Problemas resueltos
Seguidos los pasos y reiniciadas las máquinas, deberían tener acceso directo a las unidades como si estuvieran conectadas físicamente a ellas, por lo que podrás compartir datos entre máquinas de forma bastante simple, o incluso conectar tus discos duros a un cluster proxmox que tengas para hacer backups por ejemplo.
Una cosa que te puede parecer una tontería, es que no seas capaz de guardar la configuración. O que una vez cambiada, si reinicias la máquina desde proxmox web pierdas los cambios hechos y por supuesto no funcione la unidad de montaje.
Esto tiene fácil solución, simplemente estás editando en el sitio equivocado:
- No se guarda en: /var/lib/lxc/200/config
- Guardar en: /etc/pve/lxc/200.conf
Si no lo encuentras puedes hacer una búsqueda con locate 200.conf (recuerda ejecutar primero updatedb, y si no lo tienes apt install mlocate).
Si estás teniendo algún problema para conseguir los montajes en el contenedor lxc, déjame un comentario y te echo un cable.
¿Qué sistema has virtualizado? ¿Y qué uso le quieres dar? Comenta y comparte