Seguimos descubriendo los distintos comandos y utilidades que integra el sistema de virtualización Virtuozzo para la gestión de las máquinas virtuales. En este caso vamos a ver el comando vzctl, alrededor del cual giran todas las tareas de gestión y control de contenedores.
Son muchísimos los parámetros y posibilidades que nos ofrece el comando, os recomiendo revisar bien la página man del mismo para conocerlos a fondo, ya que sería muy extenso citarlos aquí.
# man vzctl
Bien, vamos a ver los usos más comunes que le podemos dar a este comando. Lo primero que debemos aprender es a modificar el estado de un contenedor:
vzctl destroy | mount | umount | start | stop | status | enter | quotaon | quotaoff | quotainit <ctid|name>
Como véis en la línea anterior, podemos destruir (apagado forzado), arrancar, parar, ver el estado, activar/desactivar/iniciar cuotas, etc de cualquiera de los contenedores. Ejemplos:
Parar contenedor con ID 101:
# vzctl stop 101
Arrancar contenedor con ID 101:
# vzctl start 101
Para saber el nombre del contenedor, o su ID, podéis ejecutar el comando vzlist, que listará todos los contenedores que hay en el nodo físico.
Seguimos con otra opción interesante del comando, se trata de la creación de nuevos contenedores, no voy a entrar en todos los parámetros disponibles, podéis verlo en la página man. Básicamente podemos crear un nuevo contenedor con una única línea de comando, especificarle la plantilla a utilizar, configuraciones de red, límites de recursos, etc:
# vzctl create <ctid|name> {--pkgset <set> [--pkgver <ver>] | --ostemplate <name>} [--config <name>] [--private <path>] [--root <path>] [--ipadd <addr>] | [--hostname <name>] [--skip_app_templates]
Para suspender y reactivar contenedores, utilizaremos suspend y resume:
# vzctl suspend <ctid|name>
# vzctl resume <ctid|name>
Para ejecutar comandos en la máquina virtual desde el nodo hardware, usaremos exec, seguido del ID de contenedor, el comando, y los argumentos:
# vzctl exec <ctid|name> <command> [arg ...]
Por último, vzctl set nos permite modificar cualquier parámetro de configuración de los contenedores en tiempo real, a continuación podéis ver todas las opciones:
# vzctl set <ctid|name> [--save] [--ipadd <addr>] [--ipdel <addr>|all] [--hostname <name>] ] [--nameserver <addr>] [--searchdomain <name>] [--onboot yes|no] [--userpasswd <user>:<passwd>] [--cpuunits <N>] [--cpulimit <N>] [--cpus <N>] [--diskspace <soft>[:<hard>]] [--diskinodes <soft>[:<hard>]] [--quotatime <N>] [--quotaugidlimit <N>] [--rate <dev>:<class>:<Kbits>] [--ratebound yes|no] [--noatime yes|no] [--capability <name>:on|off ...] [--devnodes device:r|w|rw|none] [--applyconfig <name>] [--setmode restart|ignore] [--description <desc>] [--netif_add <ifname[,mac,host_ifname,host_mac]]>] [--netif_del <ifname>] [--bindmount_add <dst[,nosuid,noexec,nodev]>] [--bindmount_del <dst|all>] [--name <name>] [--offline_management yes|no] [--offline_service <name>] [--netdev_add <name> [--netdev_del <name>] [--iptables <name>] [--disabled <yes|no>] [--slmmemorylimit B[:B]] [--slmmode ubc|slm|all] [--ioprio <N>] [--features name:on|off [UBC parameters] UBC parameters (N - items, P - pages, B - bytes): Two numbers divided by colon denote barrier:limit. In case the limit is not given it is set to the same value as the barrier. --numproc N[:N] --numtcpsock N[:N] --numothersock N[:N] --vmguarpages P[:P] --kmemsize B[:B] --tcpsndbuf B[:B] --tcprcvbuf B[:B] --othersockbuf B[:B] --dgramrcvbuf B[:B] --oomguarpages P[:P] --lockedpages P[:P] --privvmpages P[:P] --shmpages P[:P] --numfile N[:N] --numflock N[:N] --numpty N[:N] --numsiginfo N[:N] --dcachesize N[:N] --numiptent N[:N] --physpages P[:P] --avnumproc N[:N] --swappages P[:P] vzctl set <ctid|name> [--save] [--ipadd <addr>] [--ipdel <addr>|all] [--hostname <name>] ] [--nameserver <addr>] [--searchdomain <name>] [--onboot yes|no] [--userpasswd <user>:<passwd>] [--cpuunits <N>] [--cpulimit <N>] [--cpus <N>] [--diskspace <soft>[:<hard>]] [--diskinodes <soft>[:<hard>]] [--quotatime <N>] [--quotaugidlimit <N>] [--rate <dev>:<class>:<Kbits>] [--ratebound yes|no] [--noatime yes|no] [--capability <name>:on|off ...] [--devnodes device:r|w|rw|none] [--applyconfig <name>] [--setmode restart|ignore] [--description <desc>] [--netif_add <ifname[,mac,host_ifname,host_mac]]>] [--netif_del <ifname>] [--bindmount_add <dst[,nosuid,noexec,nodev]>] [--bindmount_del <dst|all>] [--name <name>] [--offline_management yes|no] [--offline_service <name>] [--netdev_add <name> [--netdev_del <name>] [--iptables <name>] [--disabled <yes|no>] [--slmmemorylimit B[:B]] [--slmmode ubc|slm|all] [--ioprio <N>] [--features name:on|off [UBC parameters]UBC parameters (N - items, P - pages, B - bytes):Two numbers divided by colon denote barrier:limit.In case the limit is not given it is set to the same value as the barrier. --numproc N[:N] --numtcpsock N[:N] --numothersock N[:N] --vmguarpages P[:P] --kmemsize B[:B] --tcpsndbuf B[:B] --tcprcvbuf B[:B] --othersockbuf B[:B] --dgramrcvbuf B[:B] --oomguarpages P[:P] --lockedpages P[:P] --privvmpages P[:P] --shmpages P[:P] --numfile N[:N] --numflock N[:N] --numpty N[:N] --numsiginfo N[:N] --dcachesize N[:N] --numiptent N[:N] --physpages P[:P] --avnumproc N[:N] --swappages P[:P]
Por supuesto hay más opciones y posibilidades, como os comentaba antes, tenéis todo disponible en la página man de vzctl.