Etiqueta: Virtualización

Configurar interfaz puente KVM

[tusysadmin@lab ~]$ ifconfig virbr0
virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.124.1  netmask 255.255.255.0  broadcast 192.168.124.255
        ether 52:54:00:f8:5e:07  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[tusysadmin@lab ~]$ sudo nmcli con show id virbr0
connection.id:                          virbr0
connection.uuid:                        c18c5902-35cf-4da8-8360-864b6b09e922
connection.stable-id:                   --
connection.type:                        bridge
connection.interface-name:              virbr0
----
IP4.ADDRESS[1]:                         192.168.124.1/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:                           dst = 192.168.124.0/24, nh = 0.0.0.0, mt = 0
[tusysadmin@lab ~]$ sudo dnf install bridge-utils
Última comprobación de caducidad de metadatos hecha hace 1:15:12, el jue 08 feb 2024 20:18:00.
Dependencias resueltas.
================================================================================================================================================
 Paquete                              Arquitectura                   Versión                               Repositorio                     Tam.
================================================================================================================================================
Instalando:
 bridge-utils                         x86_64                         1.7.1-6.fc38                          fedora                          34 k

Resumen de la transacción
================================================================================================================================================
Instalar  1 Paquete
[tusysadmin@lab ~]$ sudo nmcli con show
NAME      UUID                                  TYPE      DEVICE
cableada  8531cd56-9e22-3a04-9f99-44ca92be00c4  ethernet  eno1
lo        0486ec18-04a3-4141-ae25-01de6f20809b  loopback  lo
SSID      51229f3b-5809-439e-a328-5b641b1a80ee  wifi      wlp0s20f0u2i2

[tusysadmin@lab ~]$ sudo nmcli con add ifname br0 type bridge con-name br0
Conexión «br0» (4f60f6ee-6003-4fa6-88e1-856af2446c8e) añadida con éxito.

[tusysadmin@lab ~]$ nmcli con show
NAME      UUID                                  TYPE      DEVICE
br0       4f60f6ee-6003-4fa6-88e1-856af2446c8e  bridge    br0
cableada  8531cd56-9e22-3a04-9f99-44ca92be00c4  ethernet  eno1
lo        0486ec18-04a3-4141-ae25-01de6f20809b  loopback  lo
SSID      51229f3b-5809-439e-a328-5b641b1a80ee  wifi      wlp0s20f0u2i2
[tusysadmin@lab ~]$

[tusysadmin@lab ~]$ sudo nmcli con add type bridge-slave ifname eno1 master br0
Conexión «bridge-slave-eno1» (7e3eb64d-faf0-4e9f-8620-4f24f286b102) añadida con éxito.

[tusysadmin@lab ~]$ nmcli con show
NAME               UUID                                  TYPE      DEVICE
br0                4f60f6ee-6003-4fa6-88e1-856af2446c8e  bridge    br0
cableada           8531cd56-9e22-3a04-9f99-44ca92be00c4  ethernet  eno1
lo                 0486ec18-04a3-4141-ae25-01de6f20809b  loopback  lo
SSID               51229f3b-5809-439e-a328-5b641b1a80ee  wifi      wlp0s20f0u2i2
bridge-slave-eno1  7e3eb64d-faf0-4e9f-8620-4f24f286b102  ethernet  --

[tusysadmin@lab ~]$ sudo nmcli con down cableada
La conexión «cableada» se desactivó correctamente (ruta activa D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/3)

[tusysadmin@lab ~]$ sudo nmcli con up br0
La conexión se ha activado correctamente (master waiting for slaves) (ruta activa D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/7)

[tusysadmin@lab ~]$ sudo nmcli con show
NAME               UUID                                  TYPE      DEVICE
br0                39c7beb8-6b2f-4094-b732-4484cbadef11  bridge    br0
lo                 f0bf6f96-1ffa-4770-a620-0fa0a6e78575  loopback  lo
SSID               51229f3b-5809-439e-a328-5b641b1a80ee  wifi      wlp0s20f0u2i2
bridge-slave-eno1  5ec11066-d8fb-42c9-a949-88c2b0c10820  ethernet  eno1
cableada           534d9e32-6edf-4e00-9e53-962abd1bec30  ethernet  --


[tusysadmin@lab ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether 10:62:e5:19:83:60 brd ff:ff:ff:ff:ff:ff
    altname enp0s31f6
3: wlp0s20f0u2i2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether e0:e1:a9:3a:60:e4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.20/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp0s20f0u2i2
       valid_lft 85579sec preferred_lft 85579sec
    inet6 fe80::b145:75ae:fc15:38f4/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 10:62:e5:19:83:60 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.21/24 brd 192.168.1.255 scope global dynamic noprefixroute br0
       valid_lft 85580sec preferred_lft 85580sec
    inet6 fe80::38a6:e06:84ee:34a7/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

[tusysadmin@lab ~]$ sudo brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.1062e5198360	no		eno1
[tusysadmin@lab ~]$

Virtualizar en Mac

Si por alguna razón cuentas con un equipo de la marca de la manzana y buscas una alternativa para virtualizar, te recomiendo Lima ya que a diferencia de otros proyectos funciona en las arquitectura x86_64 y ARM 64.

Lima utiliza QEMU para virtualizar, la gestión se realiza a través de la linea de comandos por lo que si estás buscando una alternativa gráfica o una maquina virtual con interfaz te recomiendo UTM que funciona igualmente con QEMU.

Instalación

Para la instalación de Lima utilizaremos el gestor de paquetes de Mac llamado Homebrew, sino cuentas con él puedes instalarlo de manera fácil de la siguiente forma:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Una vez instalado el gestor de paquetes podremos instalar Lima.

$ brew install lima

Lima utiliza archivos yaml para la creación de maquinas virtuales, existe una lista de templates que pueden usarse para desplegar nuestras maquinas, estos archivos los podemos localizar en el directorio, /opt/homebrew/share/lima/templates.

Administración

Crearemos una maquina virtual con ubuntu como imagen linux y asignaremos 2 gigas de memoria y 2 cpus.

personal-mac:templates tusysadmin$ pwd
/opt/homebrew/share/lima/templates

personal-mac:templates tusysadmin$ limactl create --name linux-server --set='.cpus = 2 | .memory = "2GiB"' ubuntu-lts.yaml
? Creating an instance "linux-server" Proceed with the current configuration
INFO[0001] Attempting to download the image              arch=aarch64 digest="sha256:5167c1b13cb33274955e36332ecb7b14f02b71fd19a37a9c1a3a0f8a805ab8e5" location="https://cloud-images.ubuntu.com/releases/22.04/release-20231010/ubuntu-22.04-server-cloudimg-arm64.img"
INFO[0001] Using cache "/Users/tusysadmin/Library/Caches/lima/download/by-url-sha256/f55d2d250bd1df34e6c082a8cbfea153f1ef6a5ec8a7300dd0ab8cbc13ec946b/data"
INFO[0002] Attempting to download the nerdctl archive    arch=aarch64 digest="sha256:ea30ab544c057e3a0457194ecd273ffbce58067de534bdfaffe4edf3a4da6357" location="https://github.com/containerd/nerdctl/releases/download/v1.6.2/nerdctl-full-1.6.2-linux-arm64.tar.gz"
INFO[0002] Using cache "/Users/tusysadmin/Library/Caches/lima/download/by-url-sha256/21921213c0426e38e2f26d2844446767e2a19c0b6655c774f9e4adbb5c368d8f/data"
INFO[0002] Run `limactl start linux-server` to start the instance.

Iniciemos la maquina.

personal-mac:templates tusysadmin$ limactl start linux-server
INFO[0000] Using the existing instance "linux-server"
INFO[0000] QEMU binary "/opt/homebrew/bin/qemu-system-aarch64" seems properly signed with the "com.apple.security.hypervisor" entitlement
INFO[0001] [hostagent] hostagent socket created at /Users/tusysadmin/.lima/linux-server/ha.sock
INFO[0001] [hostagent] Starting QEMU (hint: to watch the boot progress, see "/Users/tusysadmin/.lima/linux-server/serial*.log")
INFO[0001] SSH Local Port: 50965
INFO[0001] [hostagent] Waiting for the essential requirement 1 of 5: "ssh"
INFO[0018] [hostagent] Waiting for the essential requirement 1 of 5: "ssh"
INFO[0028] [hostagent] Waiting for the essential requirement 1 of 5: "ssh"
INFO[0029] [hostagent] The essential requirement 1 of 5 is satisfied
INFO[0029] [hostagent] Waiting for the essential requirement 2 of 5: "user session is ready for ssh"
INFO[0029] [hostagent] The essential requirement 2 of 5 is satisfied
INFO[0029] [hostagent] Waiting for the essential requirement 3 of 5: "sshfs binary to be installed"
INFO[0038] [hostagent] The essential requirement 3 of 5 is satisfied
INFO[0038] [hostagent] Waiting for the essential requirement 4 of 5: "/etc/fuse.conf (/etc/fuse3.conf) to contain \"user_allow_other\""
INFO[0041] [hostagent] The essential requirement 4 of 5 is satisfied
INFO[0041] [hostagent] Waiting for the essential requirement 5 of 5: "the guest agent to be running"
INFO[0041] [hostagent] The essential requirement 5 of 5 is satisfied
INFO[0041] [hostagent] Mounting "/Users/tusysadmin" on "/Users/tusysadmin"
INFO[0041] [hostagent] Mounting "/tmp/lima" on "/tmp/lima"
INFO[0041] [hostagent] Waiting for the optional requirement 1 of 2: "systemd must be available"
INFO[0041] [hostagent] Forwarding "/run/lima-guestagent.sock" (guest) to "/Users/tusysadmin/.lima/linux-server/ga.sock" (host)
INFO[0041] [hostagent] The optional requirement 1 of 2 is satisfied
INFO[0041] [hostagent] Waiting for the optional requirement 2 of 2: "containerd binaries to be installed"
INFO[0041] [hostagent] Not forwarding TCP 127.0.0.53:53
INFO[0041] [hostagent] Not forwarding TCP 0.0.0.0:22
INFO[0041] [hostagent] Not forwarding TCP [::]:22
INFO[0047] [hostagent] The optional requirement 2 of 2 is satisfied
INFO[0047] [hostagent] Waiting for the final requirement 1 of 1: "boot scripts must have finished"
INFO[0057] [hostagent] The final requirement 1 of 1 is satisfied
INFO[0057] READY. Run `limactl shell linux-server` to open the shell.

Para entrar a la maquina.

personal-mac:~ tusysadmin$ limactl shell linux-server

tusysadmin@lima-linux-server:/Users/tusysadmin$ sudo su -

root@lima-linux-server:~# apt-get update
Hit:1 http://ports.ubuntu.com/ubuntu-ports jammy InRelease
Get:2 http://ports.ubuntu.com/ubuntu-ports jammy-updates InRelease [119 kB]
Hit:3 http://ports.ubuntu.com/ubuntu-ports jammy-backports InRelease
Get:4 http://ports.ubuntu.com/ubuntu-ports jammy-security InRelease [110 kB]
Get:5 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main arm64 Packages [1021 kB]
Get:6 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main Translation-en [248 kB]
Get:7 http://ports.ubuntu.com/ubuntu-ports jammy-updates/universe arm64 Packages [917 kB]
Fetched 2415 kB in 4s (567 kB/s)
Reading package lists... Done
root@lima-linux-server:~# htop

root@lima-linux-server:~# cat /etc/issue
Ubuntu 22.04.3 LTS \n \l

Al salir de la maquina virtual podemos listar el resto de equipos y el estado en el que se encuentran.

personal-mac:~ tusysadmin$ limactl list
NAME            STATUS     SSH                VMTYPE    ARCH       CPUS    MEMORY    DISK      DIR
docker          Stopped    127.0.0.1:0        qemu      aarch64    4       4GiB      100GiB    ~/.lima/docker
linux-server    Running    127.0.0.1:49404    qemu      aarch64    2       2GiB      100GiB    ~/.lima/linux-server
personal-mac:~ tusysadmin$

Para explorar más opciones de administración podemos usar el comando limactl -h.

Montar Pool LVM para KVM

Por default KVM guarda las imágenes de los discos virtuales en /var, si dicho directorio pertenece a la partición raíz esto puede ocasionar que el disco del equipo anfitrión se llene. Para evitar este problema, las imágenes de discos virtuales pueden montarse en un Volumen Group.

Llegados a este punto he montado un disco duro de 1TB, el disco está en /dev/sda, con los siguientes comandos crearemos la tabla de partición y la etiqueta lvm.

sudo parted /dev/sda mklabel msdos
sudo parted /dev/sda mkpart primary 0% 100%
sudo parted /dev/sda set 1 lvm on

Creamos el Volumen Group.

sudo pvcreate /dev/sda1
sudo vgcreate vglab /dev/sda1
[tusysadmin@localhost ~]$ sudo vgs
  VG     #PV #LV #SN Attr   VSize    VFree   
  fedora   1   1   0 wz--n- <110.20g       0 
  vglab    1   1   0 wz--n- <931.51g <831.51g

Abrimos virt-manager y en el menú Editar seleccionamos Detalles de la conexión, en la pestaña de Almacenamiento agregamos un nuevo pool.

Podemos listar los pools disponibles en el equipo anfitrión para corroborar que ha sido exitosamente añadido.

[tusysadmin@localhost ~]$ sudo virsh pool-list
 Nombre      Estado   Inicio automático
-----------------------------------------
 default     activo   si
 s.o         activo   si
 volumenes   activo   si

Ahora, en vez de almacenar los discos virtuales en /var podrán ser guardados en un LVM, solo debemos asegurarnos de seleccionar la opción correcta al momento de crear la maquina virtual.

Administrar para crear el LVM

Image 1 De 5

Validamos la creación del LVM.

[tusysadmin@localhost ~]$ sudo lvdisplay vglab/Maquina1
  --- Logical volume ---
  LV Path                /dev/vglab/Maquina1
  LV Name                Maquina1
  VG Name                vglab
  LV UUID                vnOjXX-981U-tbej-jPQl-C6mG-ft0p-E34Ki9
  LV Write Access        read/write
  LV Creation host, time localhost, 2021-10-03 22:48:27 -0500
  LV Status              available
  # open                 1
  LV Size                30.00 GiB
  Current LE             7680
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

Instalar KVM en Fedora 34-38

KVM es un hipervisor de código abierto y libre que puede ser utilizado en la mayoría de las distribuciones Linux. Permite la emulación de interfaces de red, procesador, disco, PCI y unidades USB gracias al uso de QEMU. Aunque también puede usar XEN en caso de que se use en paravirtualización.

linux_kvm - Davoud Teimouri - Virtualization and Data Center

Primeramente validamos si nuestro equipo acepta virtualización. En algunos casos está deshabilitado en el BIOS y simplemente hay que configurarlo.

$ cat /proc/cpuinfo | egrep "vmx|svm"

Si la respuesta es positiva, continuamos con la instalación de paquetes.

sudo dnf -y install libvirt virt-install qemu-kvm virt-manager

Iniciamos y habilitamos el servicio libvirtd

sudo systemctl start libvirtd
sudo systemctl enable libvirtd

Para que nuestro usuario tenga acceso al administrador gráfico debe pertenecer al grupo libvirt.

sudo usermod -aG libvirt tusysadmin

Listo, con esto ya es posible comenzar con la instalación y administración de maquinas virtuales con nuestro usuario.

Virtual Machine Manager

Image 1 De 3

© 2025

Tema por Anders NorenArriba ↑