Capítulo 15. Administración de huéspedes virtuales con virsh
virsh
es una herramienta de línea de comando para administrar a los huéspedes y al hipervisor.
La herramienta virsh
se crea en la API de administración libvirt
y funciona como una alternativa para el comando xm
y el Administrador de huésped gráfico (virt-manager
). virsh
puede ser utilizado en modo de sólo lectura por usuarios sin privilegios. Se puede utilizar virsh
para ejecutar scripts para las máquinas de huésped.
La siguientes tablas son una rápida referencia para todas las opciones de línea de comandos de virsh.
Comando
|
Description
|
---|
help
|
Imprime información de ayuda básica.
|
list
|
Lista todos los huéspedes.
|
dumpxml
|
Entrega el archivo de configuración XML para el huésped.
|
create
|
Crea un huésped desde un archivo de configuración XML e inicia el nuevo huésped.
|
start
|
Inicia un huésped inactivo.
|
destroy
|
Obliga a un huésped a detenerse.
|
define
|
Entrega un archivo de configuración XML para un huésped.
|
domid
|
Muestra el ID de huésped.
|
domuuid
|
Muestra el UUID de huésped.
|
dominfo
|
Muestra información de huésped.
|
domname
|
Muestra nombre de huésped.
|
domstate
|
Muestra el estado de un huésped.
|
quit
|
Sale de la terminal interactiva.
|
reboot
|
Reinicia un huésped.
|
restore
|
Restaura una sesión guardada anteriormente en un archivo.
|
resume
|
Reanuda un huésped en pausa.
|
save
|
Guarda el estado de un huésped en un archivo
|
shutdown
|
Apaga un huésped de forma apropiada.
|
suspend
|
Pone en pausa a un huésped.
|
undefine
|
Borra todos los archivos asociados con un huésped.
|
migrate
|
Migra un huésped a otros host.
|
Tabla 15.1. Comandos de administración de huésped
Los siguientes comandos de virsh
se utilizan para administrar recursos del hipervisor:
Comando
|
Description
|
---|
setmem
|
Establece la memoria asignada para un huésped.
|
setmaxmem
|
Establece el límite máximo de memoria para el hipervisor.
|
setvcpus
|
cambia el número de CPU virtuales asignadas a un huésped.
|
vcpuinfo
|
Muestra información de CPU virtual sobre un huésped.
|
vcpupin
|
Controla la afinidad de CPU virtual de un huésped.
|
domblkstat
|
Muestra las estadísticas de dispositivo de bloque para un huésped en ejecución.
|
domifstat
|
Muestra estadísticas de interfaz de red para un huésped en ejecución.
|
attach-device
|
Conecta un dispositivo a un huésped, mediante la definición de un dispositivo en un archivo XML.
|
attach-disk
|
Conecta un nuevo dispositivo de disco para un huésped.
|
attach-interface
|
Conecta una nueva interfaz de red para un huésped.
|
detach-device
|
Desconecta un dispositivo de un huésped, adquiere la misma clase de descripciones del comando attach-device .
|
detach-disk
|
Desconecta un dispositivo de disco desde un huésped.
|
detach-interface
|
Desconecta una interfaz de red de un huésped.
|
Tabla 15.2. Opciones de administración de recursos
Estas son las opciones misceláneas de virsh
:
Comando
|
Description
|
---|
version
|
Muestra la versión de virsh
|
nodeinfo
|
Entrega información acerca del hipervisor
|
Tabla 15.3. Opciones misceláneas
Conectar a la sesión del hipervisor con virsh
:
# virsh connect {hostname OR URL}
Donde <name>
es el nombre de la máquina del hiperviso. Para iniciar una conexión de sólo-lectura, añada el comando anterior a -readonly
.
Salida de un archivo de configuración XML de huésped con virsh
:
# virsh dumpxml {domain-id, domain-name or domain-uuid}
Este comando muestra el archivo de configuración XML del huésped en un formato de salida standard (
stdout
). Se pueden guardar los datos si entuba la salida del comando a un archivo. Un ejemplo de entubado de la salida a un archivo llamado
huésped.xml
:
# virsh dumpxml ID_Huésped
> huésped.xml
Este archivo
huésped.xml
puede volver a crear el huésped (
Edición de un archivo de configuración de huésped.). Puede editar este archivo de configuración XML para configurar dispositivos adicionales o para utilizar huéspedes adicionales. Consulte la
Sección 18.1, “Uso de los archivos de configuración XML con virsh” for more information on modifying files created with
virsh dumpxml
.
Un ejemplo de salida de virsh dumpxml
:
# virsh dumpxml r5b2-mySQL01
<domain type='xen' id='13'>
<name>r5b2-mySQL01</name>
<uuid>4a4c59a7ee3fc78196e4288f2862f011</uuid>
<bootloader>/usr/bin/pygrub</bootloader>
<os>
<type>linux</type>
<kernel>/var/lib/libvirt/vmlinuz.2dgnU_</kernel>
<initrd>/var/lib/libvirt/initrd.UQafMw</initrd>
<cmdline>ro root=/dev/VolGroup00/LogVol00 rhgb quiet</cmdline>
</os>
<memory>512000</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<interface type='bridge'>
<source bridge='xenbr0'/>
<mac address='00:16:3e:49:1d:11'/>
<script path='vif-bridge'/>
</interface>
<graphics type='vnc' port='5900'/>
<console tty='/dev/pts/4'/>
</devices>
</domain>
# virsh create configuration_file.xml
# virsh edit softwaretesting
Éste abre un editor de texto. El editor de texto predeterminado es el parámetro de shell $EDITOR
(configure vi
por defecto).
Suspende un huésped con virsh
:
# virsh suspend {domain-id, domain-name or domain-uuid}
Cuando un dominio está suspendido, consume memoria RAM del sistema, pero no recursos de procesador. Mientras el dominio esté suspendido, no estarán disponibles ni los discos, ni entrada y salida de red. Esta operación es inmediata y el huésped puede ser reiniciado con la opción
resume
(
Reanudar un huésped).
Restaure un huésped suspendido con virsh
mediante la opción resume
:
# virsh resume {domain-id, domain-name or domain-uuid}
Esta operación es inmediata y los parámetros de huésped son preservados para operaciones suspend
y resume
.
Guarde el estado actual de un huésped en un archivo mediante el comando virsh
:
# virsh save {domain-name, domain-id or domain-uuid} filename
Este comando detiene el huésped determinado y guarda los datos en un archivo, lo cual puede durar algún tiempo dependiendo de la cantidad de memoria que el huésped esté utilizando. Puede restablecer el estado del huésped con la opción
restore
(
Restaurar un huésped). 'Guardar' funciona en forma similar a realizar una pausa: en vez de simplemente poner en pausa a un huésped, el estado actual del huésped es guardado.
# virsh restore filename
Este comando restaura el huésped guardado, lo cual puede tomar algún tiempo. El nombre y UUID del huésped son preservados pero se les asigna un nuevo ID.
Apaga un huésped mediante el comando virsh
:
# virsh shutdown {domain-id, domain-name or domain-uuid}
Puede controlar el comportamiento del reinicio del huésped si modifica el parámetro on_shutdown
en el archivo de configuración del huésped
Reiniciar un huésped mediante el comando virsh
:
#virsh reboot {domain-id, domain-name or domain-uuid}
Puede controlar el comportamiento de un huésped si modifica el parámetro on_reboot
en el archivo de configuración del huésped.
Obliga a un huésped a detenerse con el comando virsh
:
# virsh destroy {domain-id, domain-name or domain-uuid}
Este comando apaga y detiene en forma abrupta el huésped determinado. Si utiliza
virsh destroy
, pueden llegar a corromperse los sistemas de archivo del huésped. Utilice la opción
destroy
sólo si el huésped no responde. Para huéspedes para-virtualizados, utilice en su lugar la opción
shutdown
(
Apagar un huésped).
Para obtener el ID de dominio de un huésped:
# virsh domid {domain-name or domain-uuid}
Para obtener el nombre de dominio de un huésped:
# virsh domname {domain-id or domain-uuid}
Para obtener el Identificador único universal (UUID) para un huésped:
# virsh domuuid {domain-id or domain-name}
Un ejemplo de la salida de virsh domuuid
:
# virsh domuuid r5b2-mySQL01
4a4c59a7-ee3f-c781-96e4-288f2862f011
Mediante virsh
con el ID de dominio de huésped, nombre de domino o UUID se puede ver la información sobre un huésped específico:
# virsh dominfo {domain-id, domain-name or domain-uuid}
Este es un ejemplo de salida de virsh dominfo
:
# virsh dominfo r5b2-mySQL01
id: 13
name: r5b2-mysql01
uuid: 4a4c59a7-ee3f-c781-96e4-288f2862f011
os type: linux
state: blocked
cpu(s): 1
cpu time: 11.0s
max memory: 512000 kb
used memory: 512000 kb
Para ver información sobre el huésped:
# virsh nodeinfo
Un ejemplo de salida de virsh nodeinfo
:
# virsh nodeinfo
CPU model x86_64
CPU (s) 8
CPU frequency 2895 Mhz
CPU socket(s) 2
Core(s) per socket 2
Threads per core: 2
Numa cell(s) 1
Memory size: 1046528 kb
Se muestra la información del nodo y de la máquina que soporta el proceso de virtualización.
Para ver la lista de huéspedes y su estado actual con virsh
:
# virsh list
Otras opciones incluyen:
La opción --inactive
para listar los huéspedes inactivos (es decir, los huéspedes que han sido definidos pero que no están activos) y
La opción --all
lista todos los huéspedes. Por ejemplo:
# virsh list --all
Id Name State
----------------------------------
0 Domain-0 running
1 Domain202 paused
2 Domain010 inactive
3 Domain9600 crashed
La salida desde virsh list
se categoriza como uno de los seis estados (listados abajo).
El estado running
se refiere a los huéspedes que están actualmente activos en una CPU.
Los huéspedes listados como blocked
están bloqueados y no se están ejecutando o no son ejecutables. Esto es causado por un huésped esperando en E/S (un estado de espera tradicional) o huéspedes en modo durmiente.
El estado paused
lista los dominios que están en pausa. Esto se presenta si un administrador utiliza el botón pause en virt-manager
, xm pause
o virsh suspend
. Cuando un huésped es puesto en pausa, consume memoria y otros recursos, pero no tiene derecho a programación ni recursos de CPU desde el hipervisor.
El estado shutdown
es para huéspedes en el proceso de apagado. El huésped recibe una señal de apagado y debe estar en el proceso de detener las operaciones correctamente. Esto puede que no funcione para todos los sistemas operativos, algunos sistemas operativos no responden a estas señales.
Los dominios en el estado dying
están en el proceso de muerte, el cual es el estado en el que el dominio no se ha bloqueado o apagado totalmente.
Los huéspedes de crashed
han fallado en la ejecución y ya no funcionan. Este estado sólo puede ocurrir si el huésped ha sido configurado para no reiniciarse en bloqueo.
Para ver la información de la CPU virtual desde un huésped con virsh
:
# virsh vcpuinfo {domain-id, domain-name or domain-uuid}
Un ejemplo de salida de virsh vcpuinfo
:
# virsh vcpuinfo r5b2-mySQL01
VCPU: 0
CPU: 0
State: blocked
CPU time: 0.0s
CPU Affinity: yy
Para configurar la afinidad de la CPU virtual con las CPU físicas:
# virsh vcpupin {domain-id, domain-name or domain-uuid} vcpu, cpulist
Donde vcpu
es el número de VCPU virtual y cpulist
lista el número de CPU.
Para modificar el número de CPU asignadas a un huésped con virsh
:
# virsh setvcpus {domain-name, domain-id or domain-uuid} count
El nuevo valor count
no puede exceder la cuenta de la cantidad que se especificó durante la creación del huésped.
Para modificar la asignación de memoria de huésped con virsh
:
# virsh setmem {domain-id or domain-name} count
Debe especificar la cuenta en kilobytes. La nueva cantidad no puede exceder la cantidad especificada durante la creación del huésped. Los valores por debajo de 64 MB probablemente no funcionarán con la mayor parte de sistemas operativos de huésped. La cantidad máxima de memoria no afectará el uso actual al huésped activo a menos que el nuevo valor sea menor, el cual disminuirá el uso de memoria disponible.
Utilice virsh domblkstat
para ver las estadísticas del dispositivo de bloque para un huésped en ejecución.
# virsh domblkstat GuestName block-device
Use virsh domifstat
para ver las estadísticas de interfaz de red para un huésped en ejecución.
# virsh domifstat GuestName interface-device
Un huésped puede ser migrado a otro host con virsh
. Para migrar el dominio a otro host, añada --live para migración en vivo. El comando migrate
acepta parámetros en el siguiente formato:
# virsh migrate --live GuestName DestinationURL
El parámetro --live
es opcional. Añada el parámetro --live
para migraciones en vivo.
The GuestName
parameter represents the name of the guest which you want to migrate.
The DestinationURL
parameter is the URL or hostname of the destination system. The destination system must run the same version of Fedora, be using the same hypervisor and have libvirt
running.
Once the command is entered you will be prompted for the root password of the destination system.
Esta sección cubre el manejo de redes virtuales con el comando virsh
. Para listar las redes virtuales:
# virsh net-list
Este comando genera un mensaje de salida similar al siguiente:
# virsh net-list
Name State Autostart
-----------------------------------------
default active yes
vnet1 active yes
vnet2 active yes
Para ver la información de red específica de una red virtual utilice:
# virsh net-dumpxml NetworkName
Este comando muestra la información sobre la red virtual especificada en formato XML:
# virsh net-dumpxml vnet1
<network>
<name>vnet1</name>
<uuid>98361b46-1581-acb7-1643-85a412626e70</uuid>
<forward dev='eth0'/>
<bridge name='vnet0' stp='on' forwardDelay='0' />
<ip address='192.168.100.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.100.128' end='192.168.100.254' />
</dhcp>
</ip>
</network>
Otros comandos de virsh
para administrar redes virtuales son:
virsh net-autostart nombre-de_red
— Autoinicia una red especificada como nombre_ de_ red
.
virsh net-create XMLfile
— genera e inicia una nueva red mediante un archivo XML existente.
virsh net-define XMLfile
— genera un nuevo dispositivo de red desde un archivo XML existente sin iniciarlo.
virsh net-destroy [nombre de red]
— destruye la red especificada en [nombre de red]
virsh net-name networkUUID
— convierte un UUID_de_red
determinado para un nombre de red.
virsh net-uuid nombre_de _red
— convierte un nombre_ de_ red
determinado para un UUID de red.
virsh net-start nombre_de_red_inactiva
— inicia una red inactiva.
virsh net-undefine nombre_de_una_red_inactiva
— elimina la definición de una red inactiva.