Nota:

Creación de máquinas virtuales con KVM en Oracle Linux

Introducción

La máquina virtual basada en núcleo (KVM) es un hipervisor de código abierto type-1 (bare-metal). Esta funcionalidad permite que un sistema host, como Oracle Linux 8, aloje varias máquinas virtuales (VM) o invitados cuando se ejecuta en hardware admitido.

En este tutorial se desplegará Oracle Linux Kernel Virtualization Manager (KVM) para crear una máquina virtual.

Objetivos

Requisitos

Cualquier sistema Oracle Linux 8 o posterior con las siguientes configuraciones:

Validar entorno admite virtualización

Nota: Al utilizar el entorno de prácticas gratuitas, consulte Aspectos básicos de las prácticas de Oracle Linux para obtener información sobre la conexión y otras instrucciones de uso.

  1. Si aún no está conectado, abra un terminal y conéctese mediante ssh a su instancia.

    ssh oracle@<ip_address_of_instance>
    
  2. Ejecute el siguiente comando para determinar el tipo de CPU.

    grep -e 'vendor_id' /proc/cpuinfo
    

    Resultado de ejemplo:

    [oracle@ol-node01 ~]$ grep -e 'vendor_id' /proc/cpuinfo
    vendor_id	: GenuineIntel 
    vendor_id	: GenuineIntel
    vendor_id	: GenuineIntel
    vendor_id	: GenuineIntel
    vendor_id	: GenuineIntel
    vendor_id	: GenuineIntel
    

    Este sistema está basado en Intel, que se muestra en la salida de GenuineIntel.

  3. Para sistemas Intel, escriba el siguiente comando.

    grep -e 'vmx' /proc/cpuinfo
    

    La existencia del indicador vmx en la salida del comando indica que este sistema admite la virtualización.

  4. Compruebe los módulos KVM cargados.

    lsmod | grep kvm
    

    Resultado de ejemplo:

    [oracle@ol-node01 ~]$ lsmod |grep kvm
    kvm_intel             262144  0 
    kvm                   696320  1 kvm_intel
    irqbypass              16384  1 kvm
    

    La salida muestra el módulo de núcleo de KVM y el módulo de procesador kvm_intel en función del hardware de este sistema. Estos módulos se deben cargar por defecto en sistemas Linux modernos.

Instalar e iniciar KVM

  1. Instale los paquetes de software asociados con el módulo de virtualización de Oracle Linux.

    sudo dnf module install virt -y
    

    Este comando instala la recopilación de paquetes de virtualización, que incluyen libvirt, qemu-kvm y otras dependencias.

  2. Instale virt-install y virt-viewer.

    sudo dnf install virt-install virt-viewer -y
    

    De esta forma, se completa la instalación del conjunto de paquetes necesario.

  3. Valide que la máquina host esté lista y configurada para ejecutar máquinas virtuales libvirt.

    virt-host-validate
    

    Resultado de ejemplo:

    [oracle@ol-node01 ~]$ virt-host-validate
    QEMU: Checking for hardware virtualization                                 : PASS
    QEMU: Checking if device /dev/kvm exists                                   : PASS
    QEMU: Checking if device /dev/kvm is accessible                            : PASS
    QEMU: Checking if device /dev/vhost-net exists                             : PASS
    QEMU: Checking if device /dev/net/tun exists                               : PASS
    QEMU: Checking for cgroup 'cpu' controller support                         : PASS
    QEMU: Checking for cgroup 'cpuacct' controller support                     : PASS
    QEMU: Checking for cgroup 'cpuset' controller support                      : PASS
    QEMU: Checking for cgroup 'memory' controller support                      : PASS
    QEMU: Checking for cgroup 'devices' controller support                     : PASS
    QEMU: Checking for cgroup 'blkio' controller support                       : PASS
    QEMU: Checking for device assignment IOMMU support                         : WARN (No ACPI DMAR table found, IOMMU either disabled in BIOS or not supported by this hardware platform)
    QEMU: Checking for secure guest support                                    : WARN (Unknown if this platform has Secure Guest support)
    

    Si todos comprueban PASS, el sistema está preparado para las máquinas virtuales creadas. Si alguna comprobación falla, siga la instrucción para corregir el problema. Si alguna comprobación devuelve el valor de WARN, considere seguir las instrucciones para mejorar las capacidades de virtualización.

  4. Inicie el daemon libvirtd y actívelo para que se inicie automáticamente en cada inicio. A continuación, compruebe su estado para confirmar que está activo y en ejecución.

    sudo systemctl enable --now libvirtd.service
    sudo systemctl status libvirtd.service
    

    Resultado de ejemplo:

    [oracle@ol-node01 ~]$ sudo systemctl enable --now libvirtd.service
    [oracle@ol-node01 ~]$ sudo systemctl status libvirtd.service
    * libvirtd.service - Virtualization daemon
       Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor pr>
       Active: active (running) since Mon 2022-06-13 21:28:19 GMT; 8s ago
         Docs: man:libvirtd(8)
               https://libvirt.org
    ...
    

    La salida indica que el servicio está activado y en ejecución.

Configuración de la consola web de Cockpit para gestionar KVM en Oracle Linux

  1. Instale la extensión cockpit-machines para gestionar máquinas virtuales basadas en Libvirt.

    sudo dnf install cockpit cockpit-machines –y
    
  2. Inicie el socket de la cabina y actívelo para que se inicie automáticamente al iniciar el sistema.

    sudo systemctl enable --now cockpit.socket
    sudo systemctl status cockpit.socket
    

    Resultado de ejemplo:

    [oracle@ol-node01 ~]$ sudo systemctl enable --now cockpit.socket
    Created symlink /etc/systemd/system/sockets.target.wants/cockpit.socket -> /usr/lib/systemd/system/cockpit.socket.
    [oracle@ol-node01 ~]$ sudo systemctl status cockpit.socket
    * cockpit.socket - Cockpit Web Service Socket
       Loaded: loaded (/usr/lib/systemd/system/cockpit.socket; enabled; vendor pres>
       Active: active (listening) since Mon 2022-06-13 21:39:24 GMT; 10s ago
         Docs: man:cockpit-ws(8)
       Listen: [::]:9090 (Stream)
    ...
    

    La salida indica que el servicio está activado y recibe.

  3. Para acceder a este sitio de forma remota, active el puerto de firewall para el servicio de cabina y vuelva a cargar la configuración de firewall para aplicar los nuevos cambios.

    sudo firewall-cmd --add-service=cockpit --permanent
    sudo firewall-cmd --reload
    

    Nota: Ejecute este siguiente comando desde un 2o terminal en el escritorio lunabox.

  4. Abra un 2o terminal en el escritorio lunabox e introduzca el siguiente comando para crear un puerto local hacia adelante para Cockpit mediante ssh.

    ssh -L 9090:localhost:9090 oracle@<instance_ip_address>
    
  5. Abra un explorador web en el escritorio y vaya a https://localhost:9090.

    La consola web de Cockpit utiliza un certificado autofirmado para activar HTTPS.

    accept_cert

    Haga clic en Avanzado y acepte la conexión cuando obtenga una advertencia del explorador.

  6. Conéctese como usuario oracle con la contraseña oracle.

    conexión

    Aparece el panel de control de Cockpit.

  7. Haga clic en el botón "Limited Access" para obtener privilegios administrativos.

    Leche

  8. Cierre la ventana de acceso administrativo.

    claccess

Crear Máquina Virtual a partir de una ISO

  1. Haga clic en la opción "Máquinas virtuales" en el panel de navegación de la izquierda.

  2. Haga clic en el botón "Create VM".

    Máquina virtual

  3. Proporcione la siguiente información:

    Name: OL-demo
    Connection: System
    Installation type: URL (ISO image or distro install tree)
    Installation source: https://yum.oracle.com/ISOS/OracleLinux/OL8/u6/x86_64/OracleLinux-R8-U6-x86_64-dvd.iso
    Operating system: Oracle Linux 8.6
    Storage: Create new volume
    Size: 20 GiB
    Memory: 16 GiB
    Immediately start VM: check
    

    Máquina virtual

  4. Haga clic en "Crear" para comenzar.

  5. En la lista de máquinas virtuales, haga clic en el enlace OL-demo.

    vmlist

  6. Desplácese hacia abajo para ver la consola de VNC.

    Si es lo suficientemente rápido, verá un menú con las opciones para instalar Oracle Linux o probar este medio e instalar. La opción Test se seleccionará por defecto después de unos segundos. El instalador validará el contenido del medio y, a continuación, iniciará el instalador.

    bootm

  7. Una vez que se inicia el instalador, aparece la pantalla de bienvenida a Oracle Linux. Para comenzar la instalación, seleccione el idioma del proceso de instalación.

    lang

    Esta práctica no continúa con el proceso de instalación.

    Nota: Puede ver un vídeo gratuito que muestre el proceso de instalación de Oracle Linux en este enlace de vídeo: Instalación de Oracle Linux 8

  8. Cierre el explorador web haciendo clic en la "X" en la esquina superior derecha de la ventana.

Crear máquina virtual con imágenes de Oracle Cloud

Nota: Asegúrese de introducir los siguientes comandos desde la ventana de terminal de la instancia en la nube (ol-node01).

  1. Cambie a la ubicación de almacenamiento de imágenes de KVM.

    cd /var/lib/libvirt/images
    
  2. Descargue la plantilla de máquina virtual de Oracle Linux.

    sudo curl -O https://yum.oracle.com/templates/OracleLinux/OL8/u6/x86_64/OL8U6_x86_64-kvm-b126.qcow
    
  3. Crear archivo de metadatos.

    cat << 'EOF' | sudo tee ~/meta-data > /dev/null
    instance-id: iid-local01
    local-hostname: vm-01
    EOF
    
  4. Cree un archivo de datos de usuario.

    cat << 'EOF' | sudo tee ~/user-data > /dev/null
    #cloud-config
    
    system_info:
      default_user:
        name: opc
    
    ssh_authorized_keys:
      - <paste_public_key_here>
    EOF
    
  5. Generar un par de claves SSH

    ssh-keygen -t rsa -b 4096
    

    Pulse Enter para aceptar cada uno de los valores por defecto. El par de claves se escribe en el directorio .ssh en el directorio raíz de los usuarios.

  6. Copie la clave pública en el archivo de datos de usuario.

    SSHKEY=$(cat ~/.ssh/id_rsa.pub)
    sed -i "s|<paste_public_key_here>|${SSHKEY}|g" ~/user-data
    
  7. Genere la imagen ISO.

    sudo genisoimage -output /var/lib/libvirt/images/vm-01.iso -volid cidata -joliet -rock ~/user-data ~/meta-data
    
  8. Cree la instancia.

    sudo cp /var/lib/libvirt/images/OL8U6_x86_64-kvm-b126.qcow /var/lib/libvirt/images/vm-01.qcow
    
    sudo virt-install --name vm-01 \
    --memory 2048 \
    --vcpus 2 \
    --disk /var/lib/libvirt/images/vm-01.qcow,device=disk,bus=virtio \
    --disk /var/lib/libvirt/images/vm-01.iso,device=cdrom \
    --os-type linux --os-variant ol8.6 \
    --virt-type kvm --graphics none \
    --network network=default,model=virtio \
    --noautoconsole \
    --import
    
  9. Muestre las máquinas virtuales.

    sudo virsh list
    
  10. Recupere la dirección IP de la máquina virtual vm-01.

    sudo virsh net-dhcp-leases --network default
    

    Nota: En función de la rapidez con la que se inicie la máquina virtual, es posible que deba volver a ejecutar el comando para mostrar la dirección IP.

  11. También puede filtrar según la dirección MAC.

    sudo virsh domiflist vm-01
    
  12. Copie la dirección MAC de la salida anterior y proporcione el siguiente comando.

    sudo virsh net-dhcp-leases --network default --mac <MAC_address>
    
  13. Verifique que la máquina virtual funciona conectándose con ssh.

    ssh opc@<vm-01-ip_address>
    

    Resultado de ejemplo:

    [oracle@ol-node01 images]$ ssh opc@192.168.122.46
    The authenticity of host '192.168.122.46 (192.168.122.46)' can't be established.
    ECDSA key fingerprint is SHA256:xcuVfQdoFDCC72i7plD0OfqDTSBG6QWhOm5ti4HIKEs.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '192.168.122.46' (ECDSA) to the list of known hosts.
      
    [opc@vm-01 ~]$ uname -a
    Linux vm-01 5.4.17-2136.307.3.1.el8uek.x86_64 #2 SMP Mon May 9 17:29:47 PDT 2022 x86_64 x86_64 x86_64 GNU/Linux
    

[Opcional] Ver VM desde el panel de control de Cockpit

Nota: Ejecute este siguiente comando desde un terminal en el escritorio lunabox.

  1. Introduzca el siguiente comando desde la ventana de terminal de lunabox Desktop para crear un puerto local hacia adelante para Cockpit mediante ssh.

    ssh -L 9090:localhost:9090 oracle@<instance_ip_address>
    
  2. Abra un explorador web en el escritorio y vaya a https://localhost:9090.

  3. Conéctese como usuario oracle con la contraseña oracle.

    conexión

    Aparece el panel de control de Cockpit.

  4. Si es necesario, haga clic en el botón "Limited Access" para obtener privilegios administrativos.

  5. Haga clic en la opción "Máquinas virtuales" en el panel de navegación de la izquierda.

  6. En la lista de máquinas virtuales, haga clic en el enlace vm-01.

  7. Explore como desee la sección Overview (Descripción general), la sección Disks (Discos), las interfaces de red, etc.

    Nota: La consola no está activa en Cockpit porque la máquina virtual vm-01 se ha creado con la opción --graphical none con virt-install.

Esto concluye este laboratorio.

Para obtener más información:

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.

Para obtener documentación sobre el producto, visite Oracle Help Center.