Herramientas de usuario

Herramientas del sitio


informatica:sistemas_operativos:linux:proxmox_ve

¡Esta es una revisión vieja del documento!


Proxmox VE

Entorno de virtualización de servidores de código abierto. Está en distribuciones GNU/Linux basadas en Debian con una versión modificada del Kernel RHEL y permite el despliegue y la gestión de máquinas virtuales y contenedores.

Las notas se centran en la versión 7

Preparar medio de instalación

Tras descargar la ISO, esa imagen puede ser grabada en un CD/DVD o pendrive USB.

En caso de optar por instalarlo en un pendrive USB, se puede utilizar Rufus en Windows o el comando dd en Linux.

En caso de usar Rufus, cuando nos advierta de que ha detectado la ISO de Proxmox como una Hybrid ISO, debemos elegir el modo DD.

Poner captuar de esta advertencia

En caso de estar en Linux y optar por el comando dd, con permisos de administrador tecleamos:

dd bs=1M conv=fdatasync if=/ruta/imagen/proxmox.iso of=/dev/ABC

Donde /dev/ABC es el dispositivo que identifica el pendrive USB (/dev/sdc, /dev/sdd…)

Con el medio de instalación preparado, lo metemos en el servidor donde vayamos a instalar Proxmox y nos aseguramos de arrancar desde este medio (ya sea mediante un selector de arranque o modificando el orden de arranque en la BIOS/UEFI)

Instalación

Tras instalarse, Proxmox ocupa

El instalador crea un grupo de volúmenes (VG) llamado pve y los volúmenes lógicos (LV) root, data y swap. Podemos personalizar el tamaño de estos volúmenes:

  • hdsize: tamaño (en GB) a usar del disco. Si no se selecciona todo, el resto quedará sin particionar (por si lo queremos usar en un futuro para otras particiones).
  • swapsize: tamaño máximo (en GB) de la memoria de intercambio.
  • maxroot: tamaño máximo (en GB) de la partición root (donde se instalará el sistema). Máximo hdsize/4.
  • minfree: tamaño mínimo libre (en GB) para root.
  • maxvz: tamaño máximo (en GB) para la partición de datos.

Proxmox hace la siguiente cuenta: maxvz = hdsize - maxroot - swapsize - minfree

Si lo dejamos todo por defecto (sin asignar espacio concreto), tomando de ejemplo un disco de 500 GB:

# vgdisplay
  --- Volume group ---
  VG Name               pve
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <465.26 GiB
  PE Size               4.00 MiB
  Total PE              119106
  Alloc PE / Size       115011 / 449.26 GiB
  Free  PE / Size       4095 / <16.00 GiB
  VG UUID               RGCV1F-8q0g-N8eV-2F7O-mimm-XfBp-IHdjp0

root@klein:~# lvdisplay
  --- Logical volume ---
  LV Path                /dev/pve/swap
  LV Name                swap
  VG Name                pve
  LV UUID                UQnlWe-m6rR-m6xX-jTfV-Cewe-A2By-XIfNw9
  LV Write Access        read/write
  LV Creation host, time proxmox, 2022-02-11 11:15:24 +0100
  LV Status              available
  # open                 2
  LV Size                8.00 GiB
  Current LE             2048
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/pve/root
  LV Name                root
  VG Name                pve
  LV UUID                KaqGI5-Z2ZN-wkce-Yn3y-RVuB-jzzD-QAO8ey
  LV Write Access        read/write
  LV Creation host, time proxmox, 2022-02-11 11:15:24 +0100
  LV Status              available
  # open                 1
  LV Size                96.00 GiB
  Current LE             24576
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

  --- Logical volume ---
  LV Name                data
  VG Name                pve
  LV UUID                gGiM97-L2Wx-UbwL-PNYd-bAK7-w5Uw-7EEqHA
  LV Write Access        read/write
  LV Creation host, time proxmox, 2022-02-11 11:15:32 +0100
  LV Pool metadata       data_tmeta
  LV Pool data           data_tdata
  LV Status              available
  # open                 0
  LV Size                <338.36 GiB
  Allocated pool data    0.00%
  Allocated metadata     0.50%
  Current LE             86619
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:4

Por tanto:

  • swap: 8 GB (memoria de intercambio)
  • root: 96 GB (sistema y máquinas virtuales que vayamos creando)
  • data: 338 GB (copias de seguridad de máquinas)

El almacenamiento “local” por defecto está localizado bajo /var/lib/vz/. “local-lvm” no es un directorio de almacenamiento sino un thin-lvm

Si, con el ejemplo de disco de 500 GB, establecemos un valor de 300 en minfree, nos quedaría:



Si, con el ejemplo de disco de 500 GB, establecemos un valor de 240 GB en maxvz, nos quedaría:

root@klein:~# lvdisplay
  --- Logical volume ---
  LV Path                /dev/pve/swap
  LV Name                swap
  VG Name                pve
  LV UUID                QNuDkb-gkkB-eJV9-njGH-Tx1n-cYuS-Jllvs8
  LV Write Access        read/write
  LV Creation host, time proxmox, 2022-02-11 14:53:34 +0100
  LV Status              available
  # open                 2
  LV Size                4.00 GiB
  Current LE             1024
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/pve/root
  LV Name                root
  VG Name                pve
  LV UUID                DWApZI-elu9-Nat3-RzlJ-fi1v-y1T5-95qyBs
  LV Write Access        read/write
  LV Creation host, time proxmox, 2022-02-11 14:53:34 +0100
  LV Status              available
  # open                 1
  LV Size                96.00 GiB
  Current LE             24576
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

  --- Logical volume ---
  LV Name                data
  VG Name                pve
  LV UUID                e9YBDd-gckd-01Az-C9F5-Hb9d-d1Dk-CqJWA1
  LV Write Access        read/write
  LV Creation host, time proxmox, 2022-02-11 14:53:40 +0100
  LV Pool metadata       data_tmeta
  LV Pool data           data_tdata
  LV Status              available
  # open                 0
  LV Size                <245.00 GiB
  Allocated pool data    0.00%
  Allocated metadata     0.67%
  Current LE             62719
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:4

Si, con el ejemplo de disco de 500 GB, establecemos un valor de 250 GB en maxroot, nos quedaría:

root@klein:~# lvdisplay
  --- Logical volume ---
  LV Path                /dev/pve/swap
  LV Name                swap
  VG Name                pve
  LV UUID                jrCc81-u9Zg-z57E-A8Xp-sfg6-tl24-8C1Jd2
  LV Write Access        read/write
  LV Creation host, time proxmox, 2022-02-11 15:15:44 +0100
  LV Status              available
  # open                 2
  LV Size                4.00 GiB
  Current LE             1024
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/pve/root
  LV Name                root
  VG Name                pve
  LV UUID                BVYYst-7zSz-zIVw-VJdj-tyeD-qPPN-xB1iIn
  LV Write Access        read/write
  LV Creation host, time proxmox, 2022-02-11 15:15:44 +0100
  LV Status              available
  # open                 1
  LV Size                116.25 GiB
  Current LE             29760
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

  --- Logical volume ---
  LV Name                data
  VG Name                pve
  LV UUID                q451ZL-6a3H-nyNo-Pwf4-nykg-0g0E-xoKXOJ
  LV Write Access        read/write
  LV Creation host, time proxmox, 2022-02-11 15:15:51 +0100
  LV Pool metadata       data_tmeta
  LV Pool data           data_tdata
  LV Status              available
  # open                 0
  LV Size                <322.43 GiB
  Allocated pool data    0.00%
  Allocated metadata     0.52%
  Current LE             82542
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:4

Si, con el ejemplo de disco de 500 GB, establecemos un valor de 20 GB en maxroot y 222 GB para minfree, nos quedaría:

root@klein:~# lvdisplay
  --- Logical volume ---
  LV Path                /dev/pve/swap
  LV Name                swap
  VG Name                pve
  LV UUID                z4NBtg-bzqV-t4UE-YWI1-pd75-PMuW-BV8GMW
  LV Write Access        read/write
  LV Creation host, time proxmox, 2022-02-11 16:14:35 +0100
  LV Status              available
  # open                 2
  LV Size                8.00 GiB
  Current LE             2048
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/pve/root
  LV Name                root
  VG Name                pve
  LV UUID                eSurET-QqJq-dHhe-Qmmb-Zo7j-gVev-SKUhLZ
  LV Write Access        read/write
  LV Creation host, time proxmox, 2022-02-11 16:14:35 +0100
  LV Status              available
  # open                 1
  LV Size                20.00 GiB
  Current LE             5120
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

  --- Logical volume ---
  LV Name                data
  VG Name                pve
  LV UUID                EsZC56-c8TL-Yr5o-6fp2-INl4-qIEJ-PYn8vN
  LV Write Access        read/write
  LV Creation host, time proxmox, 2022-02-11 16:14:40 +0100
  LV Pool metadata       data_tmeta
  LV Pool data           data_tdata
  LV Status              available
  # open                 0
  LV Size                210.95 GiB
  Allocated pool data    0.00%
  Allocated metadata     0.77%
  Current LE             54004
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:4

En este último escenario, nos quedarían libres:

 vgdisplay | grep Free
  Free  PE / Size       56830 / 221.99 GiB

221.00 GiB para crear un nuevo volumen y dedicarlo a backups.

En VirtualBox

Desde VirtualBox 6.3 hay que activar la aceleración de virtualización anidada: Configuración → Sistema → Procesador → Habilitar VT-x/AMD-V anidado.

Si la opción no apareciese seleccionable, se puede activar desde línea de comandos con VBoxManage modifyvm nombre-maquina-virtual --nested-hw-virt on

PCI passthrough

Por ejemplo, es posible hacer accesibles a las máquinas virtuales el hardware que esté conectado en puertos PCI, siendo el caso más interesante el de las tarjetas gráficas. De esa manera, podemos utilizar aceleración gráfica en las máquinas virtuales.

La placa base y la tarjeta gráfica deben soportar PCI passthrough, conocido también como IOMMU. Los sistemas Intel se refieren a esta característica como Intel VT-d mientras que en AMD es AMD IO-MMU (o AMD SVM).

Cuanta más memoria tenga la tarjeta gráfica, más memoria se podrá compartir con las máquinas virtuales.

Completar sección

Almacenamiento

Desde la versión 7 podemos descargar ISOs desde Internet. Si el almacenamiento permite archivos ISO, tendremos el botón Download from URL donde le indicaremos la URL de la ISO y un nombre del archivo (lo puede detectar automáticamente si pulsamos en Query URL)

Eliminar mensaje suscripción no válida

Eliminar el mensaje: You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options

Abrimos el fichero /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js y buscamos la línea:

    title: gettext('No valid subscription'),

Comentamos esta parte:

// if (res === null || res === undefined || !res || res
//    .data.status.toLowerCase() != 'active') {

Y añadimos en su lugar:

if (false) {

Reiniciamos el servicio web de Proxmox:

systemctl restart pveproxy.service

Repositorios

Fichero /etc/apt/sources.list:

deb http://ftp.es.debian.org/debian bullseye main contrib
deb http://ftp.es.debian.org/debian bullseye-updates main contrib

# PVE pve-no-subscription repository provided by proxmox.com,
# NOT recommended for production use
deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription

# security updates
deb http://security.debian.org bullseye-security main contrib

Si no tenemos una suscripción, comentaremos el fichero con el repositorio empresarial:

/etc/apt/sources.list.d/pve-enterprise.list:

# deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise

Deshabilitar repositorio empresarial

Por defecto, viene activado el repositorio para para los usuarios que tengan contratada una suscripción. En caso de no tener una clave de suscripción, obtendremos un error de acceso no autorizado a ese repositorio, así que podemos deshabilitarlo abriendo el siguiente fichero: /etc/apt/sources.list.d/pve-enterprise.list y comentamos la línea con #, quedando así su contenido:

# deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise

Ya podemos actualizar sin que se mire ese repositorio.

Si queremos añadir el repositorio de la versión comunitaria:

echo "deb http://download.proxmox.com/debian buster pve-no-subscription" > /etc/apt/sources.list.d/pve-community.list

Resolución de problemas

Comandos:

pveversion -v

Muestra información sobre los paquetes de Proxmox VE

Información de configuración de una máquina virtual:

qm config <VMID>

Ejemplo:

m config 100
agent: 1
boot: order=ide0;ide2;ide1
cores: 2
ide0: vm:100/vm-100-disk-0.qcow2,cache=writeback,discard=on,size=32G
ide1: isos:iso/virtio-win.iso,media=cdrom,size=543390K
ide2: isos:iso/Win10_21H1_Spanish_x64.iso,media=cdrom
machine: pc-i440fx-6.1
memory: 4096
meta: creation-qemu=6.1.0,ctime=1636485464
name: w10pro
net0: e1000=66:39:AE:17:91:E1,bridge=vmbr0,firewall=1
numa: 0
ostype: win10
scsihw: virtio-scsi-pci
smbios1: uuid=a371025a-24d9-4f26-bddb-04783f8cd5b5
sockets: 1
vga: virtio
vmgenid: 2ce608d5-0482-4201-a68d-9f0c5edb1d52

Creación de máquinas virtuales

Windows 11

Para obtener el mejor rendimiento, se usarán los drivers VirtIO durante la instalación de Windows.

Configuración de la máquina virtual:

  • Guest OS: “Microsoft Windows 11/2022”
  • En la pestaña System, habilitar Qemu Agent
  • Disco duro virtual:
    • Bus: SCSI
    • Controladora: VirtIO SCSI
    • Caché: “Write back” (“No cache” es más seguro, pero también más lento
    • Marcar “Discard” para un uso óptimo del espacio del disco (TRIM).
  • Red: VirtIO (paravirtualized)

Para los drivers VirtIO, subimos la ISO que podemos obtener desde aquí.

En la configuración de la máquina virtual, añadimos un lector de CD (“Add → CD/DVD drive”) con el bus “IDE” y el número 0.

Comenzamos la instalación de Windows. En la opción avanzada de instalación, elegimos Cargar controladores y cargamos (buscando en la ISO de los drivers de VirtIO):

  • Disco duro: vioscsi\w11\amd64. Elegimos “Red Hat VirtIO SCSI pass-through controller”

Una vez instalado Windows, desde el propio sistema operativo virtualizado instalamos el resto de drivers VirtIO automáticamente desde el ejecutable virtio-win-gt-x64.exe de la ISO.

Windows 10

Para obtener el mejor rendimiento, se usarán los drivers VirtIO durante la instalación de Windows.

Configuración de la máquina virtual:

  • Guest OS: “Microsoft Windows 10/2016/2019”
  • En la pestaña System, habilitar Qemu Agent
  • Disco duro virtual:
    • Bus: SCSI
    • Controladora: VirtIO SCSI
    • Caché: “Write back” (“No cache” es más seguro, pero también más lento
    • Marcar “Discard” para un uso óptimo del espacio del disco (TRIM).
  • Red: VirtIO (paravirtualized)

Para los drivers VirtIO, subimos la ISO que podemos obtener desde aquí.

En la configuración de la máquina virtual, añadimos un lector de CD (“Add → CD/DVD drive”) con el bus “IDE” y el número 3.

Comenzamos la instalación de Windows. En la opción avanzada de instalación, elegimos Cargar controladores y cargamos (buscando en la ISO de los drivers de VirtIO):

  • Disco duro: vioscsi\w10\amd64. Elegimos “Red Hat VirtIO SCSI pass-through controller”
  • Red: NetKVM\w10\amd64 y elegimos Redhat VirtIO Ethernet Adapter“
  • Memory Ballooning: Balloon\w10\amd64 y elegimos “VirtIO Balloon Driver”

Windows 7

Para obtener el mejor rendimiento, se usarán los drivers VirtIO durante la instalación de Windows.

Configuración de la máquina virtual:

  • Guest OS: “7/2008r2”
  • Disco duro virtual:
    • Bus: SCSI
    • Controladora: VirtIO SCSI
    • Caché: “Write back” (“No cache” es más seguro, pero también más lento)
  • Red: VirtIO (paravirtualized)

Para los drivers VirtIO, subimos la ISO que podemos obtener desde aquí.

En la configuración de la máquina virtual, añadimos un lector de CD (“Add → CD/DVD drive”) con el bus “IDE” y el número 3.

Comenzamos la instalación de Windows. En la opción avanzada de instalación, elegimos Cargar controlador y cargamos (buscando en la ISO de los drivers de VirtIO):

  • Disco duro: viostor\w7\amd64. Elegimos “Red Hat VirtIO SCSI controller”
  • Red: NetKVM\w7\amd64 y elegimos Redhat VirtIO Ethernet Adapter”
  • Memory Ballooning: Balloon\w7\amd64 y elegimos “VirtIO Balloon Driver”

Añadir disco

Para añadir un nuevo disco a un servidor con Proxmox, una vez instalado, vamos a Datacenter → Nodo → Disks. Si aparece ahí, lo ha detectado correctamente. Ahora hay que crear una partición y formatearla:

fdisk /dev/sdb

Línea de comandos

Versión y software

pveversion

Ejemplo de salida:

pve-manager/7.1-10/6ddebafe (running kernel: 5.13.19-4-pve)

Si le añadimos la opción -v podemos ver la lista de programas relacionados con pve:

pveversion -v

Rendimiento

Para ver cómo de rápido es el sistema en el que tenemos instalado Proxmox:

pveperf

Ejemplo de salida:

PU BOGOMIPS:      40042.48
REGEX/SECOND:      2331444
HD SIZE:           19.52 GB (/dev/mapper/pve-root)
BUFFERED READS:    493.30 MB/sec
AVERAGE SEEK TIME: 0.05 ms
FSYNCS/SECOND:     504.13
DNS EXT:           59.75 ms
DNS INT:           27.63 ms (local)

Máquinas virtuales

Listar máquinas virtuales

qm list

Ejemplo de salida:

      VMID NAME                 STATUS     MEM(MB)    BOOTDISK(GB) PID
       100 debian11             stopped    2048              32.00 0
       101 win10                stopped    4096              64.00 0
       102 win11                stopped    8128              64.00 0

Configuración

Para ver la configuración de una máquina virtual:

qm config <ID_MV>

Donde ID_MV es el identificador de la máquina virtual. Por ejemplo:

qm config 100

Salida:

boot: order=scsi0;ide2;net0
cores: 1
description: * IP%3A `192.168.0.51`%0A* usuario%3A `debianita`%0A* root%3A `root`
ide2: isos:iso/debian-11.2.0-amd64-netinst.iso,media=cdrom
memory: 2048
meta: creation-qemu=6.1.0,ctime=1644606499
name: debian11
net0: virtio=A2:F0:8E:A1:B6:9F,bridge=vmbr0,firewall=1
numa: 0
ostype: l26
scsi0: local-lvm:vm-100-disk-0,size=32G
scsihw: virtio-scsi-pci
smbios1: uuid=36799c55-d997-4658-ae45-c63cc67f9a42
sockets: 1
vmgenid: 01bbacf6-bc8b-4433-9e91-d5e5e5aa64b5
informatica/sistemas_operativos/linux/proxmox_ve.1644675080.txt.gz · Última modificación: por tempwin