Diferencia entre el comando virsh y llamar a libvirt api

Respuesta: virsh es un paquete de libvirt API

¿Qué es libvirt?

libvirt es una colección de software utilizado para administrar máquinas virtuales o funciones de virtualización , que incluye principalmente:

   1. API de libvirt

   2. El proceso libvirtd

   3. Las tres partes del conjunto de herramientas virsh. El propósito original era proporcionar una interfaz de gestión unificada para diferentes hipervisores.

Los detalles son los siguientes:

1. API de Libvirt

Para versiones específicas de API, consulte: http://libvirt.org/hvsupport.html . La api de libvirt proporciona principalmente interfaces unificadas para diferentes soluciones de tecnología de virtualización . Sus ideas de diseño son:
(1) aislamiento de los cambios de aislamiento de API de HV El impacto de la interfaz de virtualización de hardware subyacente en la capa superior
(2) portátil a través de HV: admite una variedad de sistemas operativos , como Linux, Windows, Solaris, etc.
(3) desarrollo rápido de aplicaciones: proporciona API empaquetada para acelerar el proceso de desarrollo de software
(4) TLS, SASL, SSH, PolicyKit-proporciona varios protocolos de cifrado para garantizar el acceso seguro de las aplicaciones de capa superior a los recursos de capa inferior.
Al encapsular la biblioteca C más primitiva, se realizan interfaces de múltiples lenguajes de programación: Perl, Python, OCaml, Java, Ruby, C # , Php y encapsulan los protocolos comúnmente utilizados en la programación de la capa de aplicación para formar diferentes bibliotecas de protocolos, que son fáciles de invocar en la programación de la capa de aplicación. Actualmente, admiten principalmente:

1. Asignación a CIM / DMTF: El
  modelo de información pública libvirt-cim CIM es un modelo conceptual para describir información de gestión que no tiene nada que ver con la implementación específica.
2. Asignación a AMQP / QMF: libvirt-qmf
  AMQP es un protocolo estándar en la capa de aplicación que proporciona servicios de mensajería unificada. Es un protocolo binario que proporciona una interacción asincrónica, segura y eficiente entre aplicaciones cliente y middleware de mensajes .
  Los clientes y el middleware de mensajes basados ​​en este protocolo pueden entregar mensajes sin estar restringidos por diferentes productos como el cliente / middleware y diferentes lenguajes de desarrollo.
3. Mapeo a SNMP: libvirt-snmp
  Esta biblioteca hace que libvirt tenga función SNMP, los desarrolladores pueden monitorear y configurar la información de diferentes
dominios en cada nodo a través de SNMP 4. Mapeo a GObject: libvirt-glib

2. El proceso del demonio (libvirtd)

El proceso en segundo plano implementa principalmente las siguientes funciones:

(1) Agente remoto
  Todos los comandos enviados por el cliente remoto son monitoreados y ejecutados por el proceso
(2) Inicialización del entorno local
  , inicio y detención del servicio libvirt, respuesta de conexión del usuario, etc.
(3) Registre varios controladores (qemu, xen, almacenamiento de acuerdo con el entorno …) Implementación
  Se implementan diferentes tecnologías de virtualización en forma de controlador, ya que e799bee5baa6e59b9ee7ad9431333337376364 proporcionado por libvirt es una interfaz unificada, cada controlador debe implementar estas interfaces, es decir, registrar el controlador en libvirt

3. conjunto de herramientas virsh  

  Es la encapsulación de libvirt API y la interfaz externa proporcionada por Command Line Interface.

4. Cree una ruta de ejecución de código de instancia de máquina virtual a través del comando o interfaz virsh:

( 1) comando virsh o interfaz API c para crear una capa de interfaz de máquina virtual
     virsh create vm.xml o virDomainPtr virDomainCreateXML (virConnectPtr conn, const char * xmlDesc, unsigned int flags)
(2) llame a la interfaz unificada proporcionada por libvirt-abstract driver capa
  conn-> conductor-> domainCreateXML (conn, xmlDesc, banderas); // domainCreateXML aquí es que la interfaz unificada abstracta, no hay necesidad de preocuparse por el conductor subyacente es KVM o Xen
(3) llama a la respectiva virtualización subyacente Capa de controlador específica de interfaz técnica
  domainCreateXML = qemuDomainCreateXML; // Si driver = qemu, entonces el qemu llamado aquí está registrado en la función qemuDomainCreateXML en la capa de controlador abstracto
(4) Ensamble el comando de shell y ejecute
  qemu como ejemplo, qemuDomainCreateXML Primero, ensamblará un comando para crear una máquina virtual, como qemu -hda disk.img, y luego creará un nuevo hilo para ejecutarlo
  nuevamente. Libvirt utiliza 4 pasos para ingresar el comando en la parte inferior del shell para completar la operación Se proporciona encapsulación abstracta para proporcionar a los desarrolladores de aplicaciones un sistema unificado y fácil de usar. La boca.

5. Capa de controlador abstracto

    Actualmente, libvirt tiene los siguientes tipos de controladores abstractos: cada tipo de controlador representa un paquete abstracto de un módulo funcional:

(1) Controlador virtualizado (virDriverPtr)
(2) Controlador de red virtual (virNetworkDriverPtr)
(3) Controlador de tarjeta de red física (virInterfaceDriverPtr)
(4) Controlador de almacenamiento (virStorageDriverPtr)
(5) Controlador de monitor (virDeviceMonitorPtr)
(6) Controlador de seguridad (virSecretDriverPtr) )
(7) Controlador de filtro (virNWFilterDriverPtr)
(8) Controlador de estado (virStateDriverPtr)

Supongo que te gusta

Origin www.cnblogs.com/dingyunfeng/p/12735554.html
Recomendado
Clasificación