Programas para crear máquinas virtuales y virtualizar sistemas

Escrito por el .
gnu-linux planeta-codigo
Enlace permanente Comentarios

La virtualización es la herramienta con la que probar un sistema operativo sin tener que utilizar una máquina física. Con la cantidad de núcleos de los sistemas actuales y la cantidad de memoria RAM que tienen, la virtualización es una opción disponible para los usuarios. Una alternativa a la virtualización son los contenedores pero estos son más para servicios sin interfaz gráfica. Hay aplicaciones que permiten tener una máquina virtual de Windows en un sistema operativo GNU/Linux o probar una distribución de GNU/Linux en un sistema Windows antes de migrar definitivamente a GNU/Linux.

Linux

La virtualización permite crear un sistema que está instalado como software dentro de otro sistema físico. La virtualización es muy útil para probar sistemas operativos sin necesidad de instalarlo en la máquina física ni riesgo de hacer pruebas que rompan el sistema instalado, por ejemplo para probar la distribución Ubuntu que es una de las recomendadas como primera distribución para los nuevos usuarios de GNU/Linux.

La virtualización permite sistemas aislados sin necesitar una máquina física, es posible virtualizar un sistema Windows en GNU/Linux, virtualizar un sistema GNU/Linux en un sistema Windows o otros sistema GNU/Linux en un sistema GNU/Linux. Dadas las grandes cantidades de RAM que tienen las computadoras actuales incluso las de los usuarios es posible instalar un sistema virtual dentro de un sistema físico.

La virtualización requiere de un sistema anfitrión con suficiente potencia de cómputo y memoria RAM, pero incluso los procesadores de consumo que actualmente ya tienen más de cuatro núcleos y muchos más de 16 GB de memoria RAM son suficientemente capaces de virtualizar un sistema, con más núcleos y memoria RAM los sistemas virtualizados pueden ser más numerosos.

Como el sistema virtualizado es algo lógico en el momento de su creación es posible definir sus características como núcleos de CPU que tiene, cantidad de memoria RAM y cantidad de almacenamiento. Es posible crear tantas máquinas como se deseen y tener tantas arrancadas al mismo tiempo como el sistema anfitrión tenga capacidad de ejecutar con buen rendimiento.

Un sistema virtualizado tiene una pequeña pérdida de rendimiento respecto a un sistema físico, los procesadores actuales incluyen soporte e instrucciones para que la pérdida del rendimiento sea mínima. Algunas características en la virtualización como la aceleración gráfica tiene mayores penalizaciones de rendimiento o directamente no es posible. Por ejemplo, jugar a juegos en un sistema virtualizado no ofrece buen rendimiento más teniendo en cuenta que los juegos son de los programas más exigentes en capacidad de cómputo de tarjeta gráfica y de procesador.

Para virtualizar un sistemas es necesario un programa, VirtualBox está disponible para Windows, macOS y GNU/Linux y en GNU/Linux el sistema de virtualización nativo es KVM, el sistema de virtualización nativo es de Windows es Hyper-V.

La virtualización requiere virtualizar un sistema operativo completo que impone una pequeña penalización de rendimiento y unos tiempos de arranque elevados. Para solventar estos problemas los contenedores y una herramienta como Docker permite ofrecer servicios con menor penalización de rendimiento y tiempos de arranque mínimos, los contenedores no virtualizan un sistema operativo completo pero son procesos aislado del resto del sistema.

Contenido del artículo

VirtualBox

Dado que VirtualBox está disponible para los tres sistemas operativos que usan la mayoría de usuarios y es gratuito es una opción muy utilizada como programa para virtualizar. Tiene una interfaz gráfica de usuario con la que configurar muchas de las opciones de los sistemas operativos como cantidad de RAM y capacidad de almacenamiento.

VirtualBox VirtualBox VirtualBox

VirtualBox

La interfaz gráfica permite crear máquinas virtuales manualmente. Un programa Vagrant permite automatizar la creación y aprovisionamiento de las máquinas virtuales, en base a una descripción de la máquina a crear con un archivo de configuración.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|

    config.vm.define "ubuntu" do |instance|
      instance.vm.box = "ubuntu/jammy64"
      instance.vm.network "private_network", ip: "192.168.56.10"
      instance.vm.synced_folder ".", "/home/vagrant/ConsulServiceMesh/"

      instance.vm.provider :virtualbox do |vb|
        vb.name = "Ubuntu 22.04 (Vagrant)"
        vb.memory = "4096"

        instance.vm.provision "shell", inline: $consul_role_script
      end
    end

    $consul_role_script = <<-SCRIPT
      echo "Updating..."
      sudo apt-get update
      sudo apt-get upgrade

      echo "Installing Docker..."
      curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
      echo \
          "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
          $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
      sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin && sudo systemctl enable docker.service
      sudo usermod -aG docker vagrant
    SCRIPT
  end
  
Vagrantfile

Cajas de GNOME

La aplicación integrada de Cajas de el entorno de escritorio GNOME permite crear máquinas virtuales usando la virtualización nativa de GNU/Linux. Ofrece una interfaz gráfica no tan completa en opciones como VirtualBox pero si las opciones mínimas como memoria RAM, CPU, EFI, almacenamiento y aceleración gráfica. En caso de no usar GNOME o se desean más opciones de configuración virt-manager ofrece una mucha más completa interfaz y opciones de configuración para KVM.

Cajas de GNOME Cajas de GNOME Cajas de GNOME

Cajas de GNOME

Con el comando virt-install es posible también automatizar la creación de máquinas virtuales. El siguiente comando permite configurar la ubicación del sistema de almacenamiento de la máquina virtual además de la RAM y definir el sistema como un sistema con arranque EFI.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sudo pacman -S virt-install dnsmasq dmidecode
sudo usermod -a -G libvirtd picodotdev

mkdir -p /etc/qemu
sudo cat << EOF > /etc/qemu/bridge.conf
allow virbr0
EOF

sudo systemctl start libvirtd.service

virt-install-bridge.sh
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env bash
set -eu

DISK_DIRECTORY="/run/media/picodotdev/Samsung microSD/KVM VMs"
ISO_DIRECTORY="/run/media/picodotdev/Samsung microSD/Iso"

virt-install \
    --connect=qemu:///session \
    --name archlinux-alis \
    --os-variant archlinux \
    --vcpu 2 \
    --ram 4096 \
    --boot uefi \
    --disk path="$DISK_DIRECTORY/archlinux-alis.qcow2,format=qcow2,size=40,sparse=yes" \
    --cdrom "$ISO_DIRECTORY/archlinux-2022.11.01-x86_64.iso" \
    --disk cloud-init/alis-cloud-init.iso,device=cdrom,bus=sata \
    --network bridge=virbr0 \
    --noautoconsole
virt-install.sh

Otras opciones

Las anteriores son opciones de software libre sin coste de licencia, VMware Workstation Player y Parallels son opciones comerciales para Windows y macOS.


Comparte el artículo: