102.6 - Linux como sistema guest de virtualizacion: Comandos clave

Deteccion de virtualizacion

ComandoDescripcionEjemplo de salida
systemd-detect-virtDetectar tipo de virtualizacionkvm, vmware, oracle, xen, none
cat /sys/class/dmi/id/product_nameNombre del producto (hardware/VM)VirtualBox, VMware Virtual Platform
dmidecode -s system-product-nameInfo del fabricante del sistemaKVM, VirtualBox
hostnamectlInfo del sistema (incluye virtualizacion)Muestra “Virtualization: kvm”
lscpuInfo de CPU (muestra hipervisor)“Hypervisor vendor: KVM”
dmesg | grep -i virtualMensajes del kernel sobre virtualizacionMensajes de drivers virtuales

Hipervisores y tecnologias de virtualizacion

Hipervisores Tipo 1 (Bare Metal)

TecnologiaDescripcionDistribucion principal
KVMIntegrado en el kernel LinuxTodas las distros Linux
XenHipervisor de codigo abiertoCitrix, Amazon EC2
VMware ESXiSolucion empresarialVMware vSphere
Hyper-VSolucion de MicrosoftWindows Server

Hipervisores Tipo 2 (Hosted)

TecnologiaDescripcionPlataforma
VirtualBoxCodigo abierto (Oracle)Windows, Linux, macOS
VMware WorkstationComercialWindows, Linux
VMware PlayerGratuito (uso personal)Windows, Linux
QEMUEmulador/virtualizadorLinux
ParallelsComercialmacOS

Contenedores

TecnologiaTipoDescripcion
DockerContenedor de aplicacionEmpaqueta app + dependencias
LXCContenedor de sistemaSimilar a VM ligera
containerdRuntime de contenedoresBackend de Docker
PodmanContenedor de aplicacionAlternativa a Docker sin demonio

Guest Additions / Guest Tools

VirtualBox Guest Additions

# Montar el CD de Guest Additions
mount /dev/cdrom /mnt
cd /mnt
./VBoxLinuxAdditions.run
 
# Verificar que estan activas
lsmod | grep vbox

VMware Tools (open-vm-tools)

# Instalar (Debian/Ubuntu)
apt install open-vm-tools
apt install open-vm-tools-desktop    # Si hay entorno grafico
 
# Instalar (Red Hat/CentOS)
yum install open-vm-tools
 
# Verificar estado
systemctl status vmtoolsd

QEMU Guest Agent

# Instalar (Debian/Ubuntu)
apt install qemu-guest-agent
 
# Instalar (Red Hat/CentOS)
yum install qemu-guest-agent
 
# Activar y arrancar
systemctl enable --now qemu-guest-agent
 
# Verificar estado
systemctl status qemu-guest-agent

Modelos de servicio en la nube

ModeloSignificadoResponsabilidad del usuarioEjemplos
IaaSInfrastructure as a ServiceSO, apps, datosAWS EC2, Azure VMs, GCE
PaaSPlatform as a ServiceApp y datosHeroku, Google App Engine
SaaSSoftware as a ServiceSolo usar la appGmail, Office 365, Slack

Clonacion de VMs - Problemas y soluciones

Elemento duplicadoArchivo/UbicacionComando para regenerar
Machine ID/etc/machine-idrm /etc/machine-id && systemd-machine-id-setup
Claves SSH host/etc/ssh/ssh_host_*rm /etc/ssh/ssh_host_* && ssh-keygen -A
Hostname/etc/hostnamehostnamectl set-hostname nuevo-nombre
UUID de FSParticionestune2fs -U random /dev/sdX
MAC addressInterfaz de redEl hipervisor genera nueva MAC al clonar

Herramienta de limpieza para plantillas

# virt-sysprep (en libguestfs-tools)
virt-sysprep -d nombre-vm

D-Bus - Comunicacion entre procesos

ComandoDescripcion
dbus-monitor --systemMonitorizar mensajes del bus del sistema
dbus-monitor --sessionMonitorizar mensajes del bus de sesion
busctl listListar servicios D-Bus disponibles
busctl statusEstado del bus
dbus-send --system --dest=...Enviar mensaje D-Bus

Tipos de bus D-Bus

BusUsoEjemplo
SystemComunicacion entre servicios del sistemaGuest agent, systemd
SessionComunicacion entre apps del usuarioEntorno de escritorio

cloud-init

ComandoDescripcion
cloud-init statusVer estado de cloud-init
cloud-init cleanLimpiar datos de cloud-init (se re-ejecutara)
cloud-init queryConsultar metadatos de la instancia
cat /var/log/cloud-init.logVer logs de cloud-init

Ejemplo de cloud-config

#cloud-config
hostname: mi-servidor
users:
  - name: admin
    sudo: ALL=(ALL) NOPASSWD:ALL
    ssh_authorized_keys:
      - ssh-rsa AAAA...
packages:
  - nginx
  - git

Comparativa rapida: VM vs Contenedor

AspectoMaquina VirtualContenedor
KernelPropioCompartido con host
TamanoGBMB
ArranqueMinutosSegundos
AislamientoFuerteMedio
DensidadDecenasCientos/miles
HerramientaVirtualBox, KVM, VMwareDocker, LXC, Podman