Parte 2 de las mejores prácticas de Proxmox: Almacenamiento: LVM-Thin y mucho más

Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox

¿Qué es el almacenamiento en Proxmox?

almacenamiento en Proxmox son las diferentes ubicaciones donde sus datos terminan, hay varios de ellos en una configuración normal:

  • Discos duros de VM (Imágenes): Los discos duros/SSD virtuales de sus máquinas virtuales
  • Sistemas de archivos de contenedores (Rootdir): El sistema de archivos de los contenedores LXC
  • Imágenes ISO: CD/DVD de instalación para máquinas virtuales
  • plantillas: Imágenes preconstruidas de máquinas virtuales o contenedores
  • respaldos: Datos de máquinas virtuales/contenedores seguros
  • fragmentos: Configuraciones de Cloud Init, hooks, etc.

Empecemos clásicamente con LVM-Thin: Su Cuchillo del Ejército Suizo para la Gestión del Almacenamiento

¿Qué es LVM-Thin? Piense en ello como una «asignación de memoria inteligente». En lugar de reservar inmediatamente todo el espacio de almacenamiento, solo se ocupa el espacio real utilizado.

Ejemplo práctico: Se crea una máquina virtual de 100 GB, pero inicialmente solo utiliza 10 GB. Con el almacenamiento clásico, 100 GB estarían inmediatamente ocupados, con LVM-Thin solo los 10 GB realmente utilizados.

Configuración de la piscina LVM-Thin

# Crear grupo de volúmenes (si aún no está disponible) pvcreate /dev/sdb vgcreate pve-data /dev/sdb # Crear piscina delgada lvcreate -L 100G -n data pve-data lvconvert --type thin-pool pve-data/data # Configure en Proxmox pvesm add lvmthin local-lvm --thinpool data --vgname pve-data --content images,rootdir

Configuración de almacenamiento en la práctica

Para principiantes: Proxmox configura el almacenamiento local de forma predeterminada:

  • local: Para imágenes ISO, plantillas, copias de seguridad
  • local-lvm: Para discos duros de VM

Para avanzados: Combinar diferentes tipos de almacenamiento:

# NFS para plantillas compartidas pvesm add nfs shared-templates --server 192.168.1.100 --export /exports/templates --content iso,template # ceph para almacenamiento de alta disponibilidad (cluster) pvesm añadir ceph ceph-storage --pool vm-storage --content images # ZFS for local high performance zpool create -f tank mirror /dev/sdc /dev/sdd pvesm add zfspool zfs-local --pool tank --content images,rootdir

¡Echemos un vistazo a esto en detalle, porque esta es también una de las áreas más críticas para el rendimiento y la confiabilidad!

¿Qué tipos de almacenamiento tengo actualmente en mi configuración de Proxmox?

# Ver todo el almacenamiento configurado estado del pvesm # Resultado del ejemplo: Nombre Tipo Estado Total Usado Disponible % Dir local activo 50.0GB 20.0GB 30.0GB 40.00% local-lvm lvmthin activo 500.0GB 100.0GB 400.0GB 20.00%

LVM-Thin: Entender el corazón

¿Qué hace especial a LVM-Thin?

Almacenamiento tradicional (aprovisionamiento grueso):

# VM obtiene disco de 100GB qm set 100 --scsi0 local-lvm:100 # Problema: 100GB es inmediatamente ocupado por el almacenamiento
# ¡Incluso si VM solo usa 5GB!

Mejor variante LVM-Thin (aprovisionamiento delgado):

# VM obtiene disco de 100GB qm set 100 --scsi0 local-lvm:100 # Ventaja: Solo los datos realmente utilizados pueden ocupar la memoria
# VM utiliza 5GB → solo 5GB ocupado
# VM utiliza 50GB → solo 50GB ocupado

Creación del grupo LVM-Thin: paso a paso

Etapa 1: Preparar el grupo de volumen

# Disco duro de partición (ATENCIÓN: ¡Los datos serán eliminados!) fdisk /dev/sdb # Tipo de partición: 8e (Linux LVM)

# Creación de un volumen físico pvcreate /dev/sdb1 # Crear o expandir el grupo de volúmenes vgcreate pve-data /dev/sdb1 # o añádase a la VG existente:
# vgextend pve /dev/sdb1

Etapa 2: Creación de una piscina delgada

# Crear piscina delgada (80% del tamaño disponible) VGSIZE=$(vgs --noheadings -o vg_size --units g pve-data ?? tr -d ' G') POOLSIZE=$(eco)$VGSIZE * 0.8" ?? bc ?? cortado -d. -f1) lvcreate -L ${POOLSIZE}G -n data pve-data lvconvert --type thin-pool pve-data/data # Ajuste el tamaño del grupo de metadatos (si es necesario) lvextend --poolmetadatasize +1G pve-data/datos

Etapa 3: Integrar con Proxmox

# Añadir almacenamiento en Proxmox pvesm añadir lvmthin local-lvm-thin \ --thinpool data \ --vgname pve-data \ --content images,rootdir

Optimizar la configuración LVM-Thin

Configurar la extensión automática

En este ejemplo, su asignación de memoria LVM-Thin se expandirá automáticamente en 20% Cantidad de memoria tan pronto como la memoria ocupada alcanza los 80% La marca ha llegado. Básicamente es algo bueno, pero también hay que vigilarlo y, por otro lado, tener el espacio de almacenamiento «gratuito».

# /etc/lvm/lvm.conf cat >> /etc/lvm/lvm.conf << activación 'EOF' { thin_pool_autoextend_threshold = 80 thin_pool_autoextend_percent = 20 } EOF # Significado:
# A los 80% Nivel de llenado automáticamente alrededor de 20% ampliar

Optimizar el conjunto de metadatos

Los metadatos almacenados también quieren ser almacenados en algún lugar.

# Comprobar el tamaño del grupo de metadatos lvs -a ?? metadata grep # Aumentar si es necesario lvextend --poolmetadatasize +1G pve-data/datos # ¿Por qué importante? Almacenes de metadatos:
# ¿Qué volúmenes delgados existen?
# - ¿Qué bloques están ocupados?
# - Información de la instantánea

Vamos a entrar en más detalles sobre lo que significan los comandos:

El primer orden, # Comprobar el tamaño del grupo de metadatos lvs -a ?? metadata grep, se utiliza para comprobar el estado actual de los metadatos:

lvs-a: Enumera todos los volúmenes lógicos, incluidos los internos, como el volumen de metadatos y ?? los metadatos grep: Filtra la salida para que solo se muestren las filas que contienen la palabra «metadatos».

El segundo orden, # Aumentar si es necesario lvextend --poolmetadatasize +1G pve-data/datos, aumenta el volumen de metadatos en 1 gigabyte de memoria si se llena demasiado con lvextend: Un comando para expandir un volumen lógico, --poolmetadatasize +1G: Esta opción se dirige específicamente al volumen de metadatos del grupo delgado y lo aumenta en 1 GB. Y por supuesto el pathagabe pve-datos/datos: Este es el camino a la piscina delgada que se va a expandir. En este ejemplo, pve-datos el Grupo Volumen y datos La piscina delgada.

Por qué los metadatos son tan importantes

Los metadatos son, por así decirlo, la tabla de contenido de su piscina delgada. Almacenan toda la información importante para que Proxmox sepa dónde se encuentran los datos. Cuando el espacio de metadatos está lleno, ya no puede crear nuevas máquinas virtuales, contenedores o instantáneas, y es posible que las máquinas virtuales existentes ya no puedan escribir nuevos datos.

Comprender el exceso de aprovisionamiento

Básicamente, es posible asignar mucha más memoria a sus máquinas virtuales o LXC en el sistema de lo que realmente está disponible, siempre y cuando esto no se utilice también completamente sin problemas.

# Piscina delgada de 500 GB
# Máquinas virtuales de 10 × 100 GB = 1000 GB virtuales
# Pero solo los datos realmente utilizados ocupan espacio

# Problema con 100% Utilización de la capacidad:
# ¡Todas las máquinas virtuales tienen errores de E/S!

Seguimiento y alertas

Sin embargo, debe vigilarlo, porque tan pronto como la memoria «se desborde», sus máquinas virtuales y LXC solo le arrojarán errores de E / S.

# Guión para el monitoreo de piscinas delgadas cat > /usr/local/bin/thin-pool-monitor.sh << 'EOF' #!/bin/bash USAGE=$(lvs --noheadings -o data_percent pve-data/data ?? tr -d ' %') METADATA=$(lvs --noheadings -o metadata_percent pve-data/data ?? tr -d ' %') si [ "$USO" -gt 90 ]; Entonces logger "ADVERTENCIA: Uso de datos de grupos delgados: ${UTILIZACIÓN}%" echo "La piscina delgada está llena: ${UTILIZACIÓN}%" ?? \ mail -s "Proxmox Storage Alert" admin@company.com fi si [ "$METADATA" -gt 90 ]; Entonces logger "ADVERTENCIA: Uso de metadatos de grupos delgados: ${METADATA}%« fi EOF # Cronjob cada 5 minutos echo "*/5 * * * root /usr/local/bin/thin-pool-monitor.sh" >> /etc/crontab

En este ejemplo, un script bash se aseguraría de que la memoria no exceda de 90% El nivel aumenta, de lo contrario, el mensaje de advertencia «Thin pool está lleno con el porcentaje actual y se envía a admin@company.com por correo electrónico. Además, lo mismo se registra para el almacén de metadatos.
El cronjob en la última línea asegura que el script de monitoreo se ejecute cada 5 minutos.

Ampliación de la piscina delgada

# Añadir nuevo disco duro pvcreate /dev/sdc1 vgextend pve-data /dev/sdc1 # Ampliar la piscina delgada lvextend -L +200G pve-datos/datos

Casos de uso práctico

Creación de máquinas virtuales basadas en plantillas

# Crear plantilla qm crear 9000 --memory 2048 --scsi0 local-lvm:20 # Configurar la plantilla... qm plantilla 9000 # Crear Clones Vinculados (¡súper rápido!) qm clone 9000 101 --nombre servidor web-1 qm clone 9000 102 --nombre servidor web-2 # Linked Clone solo usa memoria adicional para cambios lvs # vm-9000-disk-0 pve-data Vwi---tz-- 20.00g datos # Plantilla
# vm-101-disk-0 pve-data Vwi-aotz-- 20.00g datos vm-9000-disk-0 # clon
# vm-102-disk-0 pve-data Vwi-aotz-- 20.00g datos vm-9000-disk-0 # clon

Gestión de instantáneas

# Instantánea antes de cambios importantes qm snapshot 100 antes de la actualización # Lista de instantáneas qm listsnapshot 100 # Volver a la instantánea qm rollback 100 antes de la actualización # Eliminar instantánea qm delsnapshot 100 antes de la actualización

Almacenamiento de NFS: Memoria compartida para el clúster Proxmox

NFS (Network File System) es una de las soluciones clásicas de almacenamiento en red y es, por ejemplo, adecuada para entornos Proxmox en los que su almacenamiento desea compartir entre varios nodos. La característica especial: NFS se basa en el backend del directorio, pero tiene la ventaja de que Proxmox puede montar los recursos compartidos de NFS automáticamente.

¿Qué hace que NFS sea especial en Proxmox?

El gran punto positivo de NFS en Proxmox: No tienes que hacerlo manualmente /etc/fstab ¡Hurgando por ahí! Proxmox se hace cargo de la gestión de montaje completa para usted. El backend puede incluso probar si el servidor NFS está en línea y mostrarle todas las exportaciones disponibles.

Esto es especialmente útil si usted:

  • Almacenamiento compartido Necesitamos migración en vivo.
  • Plantillas e ISOs Quieres gestionar de forma centralizada
  • Soluciones sencillas de copia de seguridad quiere implementar
  • Extensión de almacenamiento rentable necesitó

Configuración de NFS Storage - Paso a paso

La configuración básica

# Agregar almacenamiento NFS en Proxmox pvesm añadir nfs iso-templates \ --server 10.0.0.10 \ --export /space/iso-templates \ --content iso,vztmpl \ --options vers=3,soft

¿Qué sucede aquí en detalle?

--servidor 10.0.0.10: Este es su servidor NFS. Consejo profesional: Use direcciones IP en lugar de nombres DNS para evitar retrasos en la búsqueda de DNS. Si desea utilizar DNS, coloque el servidor en el /etc/anfitriones uno:

echo "10.0.0.10 nfs-server.local" >> /etc/hosts

--exportación /espacio/iso-plantillas: La ruta de exportación NFS en el servidor. Puedes escanearlo de antemano:

# Mostrar exportaciones NFS disponibles pvesm scan nfs 10.0.0.10 # Resultado del ejemplo:
# /espacio/iso-plantillas
# /espacio/vm-almacenamiento 
# /espacio/respaldos

--contenido iso, vztmpl: Especifica lo que se puede almacenar en este almacenamiento:

  • iso: Imágenes ISO para instalaciones de máquinas virtuales
  • vztmpl: Plantillas de contenedores LXC

--opciones vers=3,suave: Esto será interesante para la actuación:

  • vers=3: Utiliza NFSv3 (generalmente más estable que v4 para la virtualización)
  • blanda: ¡Es importante! Limita los intentos de reintento a 3, evita que las máquinas virtuales se cuelguen de los problemas de NFS

La configuración de almacenamiento en /etc/pve/storage.cfg

Después del comando, aparecerá automáticamente en el archivo lo siguiente:

nfs: iso-templates path /mnt/pve/iso-templates server 10.0.0.10 exportar /space/iso-templates options vers=3,soft content iso,vztmpl

trazado /mnt/pve/iso-templates: Este es el punto de montaje local en cada nodo Proxmox. Proxmox crea automáticamente el directorio y monta el recurso compartido NFS allí.

Configuraciones NFS avanzadas

Configuración optimizada para el rendimiento

# Para imágenes de VM (se requiere un rendimiento más alto) pvesm añadir nfs vm-storage \ --server 10.0.0.10 \ --export /space/vm-storage \ --content images,rootdir \ --options vers=3,hard,intr,rsize=32768,wsize=32768,tcp

Las opciones de montaje explican:

  • duro: Las solicitudes NFS se repiten infinitamente (para datos críticos)
  • intr: Los procesos se pueden interrumpir con Ctrl+C
  • rsize/wsize=32768: Bloques de 32KB para un mejor rendimiento
  • tcp: TCP en lugar de UDP (más confiable para máquinas virtuales)

Configurar el almacenamiento de copia de seguridad

# Almacenamiento de copia de seguridad dedicado pvesm añadir nfs backup-nfs \ --server backup.internal.lan \ --export /backup/proxmox \ --content backup \ --options vers=4,soft,bg \ --maxfiles 3

Opciones específicas de copia de seguridad:

  • vers=4: NFSv4 para una mejor seguridad y rendimiento
  • bg: Montaje en segundo plano si el servidor no está disponible
  • maxfiles 3: Máximo de 3 archivos de copia de seguridad por máquina virtual (en desuso pero funcionales)

Comprensión de las características de almacenamiento de NFS

Instantáneas y clones con qcow2

Dado que NFS en sí no admite instantáneas de hardware, Proxmox utiliza el formato qcow2 para estas características:

# Crear VM con qcow2 en NFS qm set 100 --scsi0 nfs-storage:vm-100-disk-0.qcow2 # Crear instantánea (internal qcow2 snapshot) qm snapshot 100 antes de la actualización # Crear clon (respaldado por qcow2) qm clone 100 101 --nombre clonado-vm

La diferencia con LVM-Thin:

  • LVM-Thin: Instantáneas a nivel de hardware (muy rápidas)
  • NFS + qcow2: Instantáneas a nivel de software (más flexibles, pero más lentas)

Migración y migración en vivo

Este es el Principal ventaja de NFS en clústeres:

# Migración en vivo entre nodos (¡sin transferencia de almacenamiento!) qm migrar 100 nodo2 --en línea # ¿Por qué es tan rápido? 
# - Los datos de VM están en NFS (accesibles para todos los nodos)
# - Solo se transfiere contenido RAM
# - No se requiere copia de disco

Escenarios de aplicación práctica

Escenario 1: Homelab con Synology NAS

# Habilitar Synology NFS y crear exportación
# Todo sobre DSM: Panel de control → Servicios de archivos → NFS → Habilitar

# Configurar en Proxmox pvesm añadir nfs synology-storage \ --server 192.168.1.200 \ --export /volume1/proxmox \ --content images,backup,iso \ --options vers=3,hard,intr

Escenario 2: Servidor NFS dedicado (Ubuntu/Debian)

Configuración del servidor NFS:

# En el servidor NFS apt instalar nfs-kernel-servidor # Configuración de las exportaciones cat >> /etc/exports << 'EOF' /exports/proxmox-vms 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash) /exports/proxmox-backup 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash) /exports/proxmox-iso 192.168.1.0/24(ro,sync,no_subtree_check) EOF exportfs -ra systemctl enable nfs-serverer

Uso en Proxmox:

# Almacenamiento de VM pvesm añadir nfs nfs-vms \ --server 192.168.1.100 \ --export /exports/proxmox-vms \ --content images,rootdir # Almacenamiento de copia de seguridad  pvesm añadir nfs nfs-backup \ --server 192.168.1.100 \ --export /exports/proxmox-backup \ --content backup # Almacenamiento ISO (solo lectura) pvesm añadir nfs nfs-iso \ --server 192.168.1.100 \ --export /exports/proxmox-iso \ --content iso,vztmpl

Solución de problemas y supervisión

Problemas frecuentes de NFS

Problema: «Conexión denegada» o «Sin ruta de acogida»

# 1. Prueba de conectividad de red ping 10.0.0.10 # 2. Comprobar el servicio NFS  rpcinfo -p 10.0.0.10 # 3. Comprobación del cortafuegos (lado del servidor)
# NFS requiere varios puertos:
# - 111 (rpcbind)
# - 2049 (nfs) 
# - Puertos dinámicos para rpc.statd, rpc.mountd

Problema: «Manipulador de archivos Stale»

# Realización de la renovación del montaje umount /mnt/pve/nfs-storage pvesm set nfs-storage --disable 1 pvesm set nfs-storage --disable 0 # O re-añadir completamente el almacenamiento pvesm remove nfs-storage pvesm add nfs nfs-storage --server ... --exportación ...

Problema: Desempeño deficiente

# Optimizar las opciones de montaje de NFS pvesm set nfs-storage --options vers=3,hard,intr,rsize=65536,wsize=65536,tcp # Pruebe el rendimiento de la red iperf3 -c nfs-servidor # Rendimiento de las E/S de ensayo  dd if=/dev/zero of=/mnt/pve/nfs-storage/test bs=1M count=1000

Configuración de la supervisión de NFS

# Supervisar el estado de NFS cat > /usr/local/bin/nfs-health-check.sh << «EOF» #!/bin/bash para almacenamiento en $(estado pvesm ?? grep nfs ?? awk '{print $1}'); hacer si ! estado pvesm --almacenamiento $almacenamiento >/dev/null 2>&1; luego echo "NFS Storage $almacenamiento fuera de línea!" ?? \ logger -t nfs-monitor # Correo/Alerta enviar fi hecho EOF # Comprobar cada 2 minutos echo "*/2 * * * root /usr/local/bin/nfs-health-check.sh" >> /etc/crontab

Mejores prácticas para NFS en Proxmox

Diseño de red

# Uso de una red de almacenamiento dedicada
# Gestión: 192.168.1.x 
# Almacenamiento: 10.0.0.x (Gigabit o mejor) auto vmbr1 iface vmbr1 inet dirección estática 10.0.0.11/24 bridge-ports eth1 # Sin puerta de enlace: solo tráfico de almacenamiento

Opciones de montaje dependiendo de la aplicación

# Para contenido de solo lectura (ISO, plantillas) --opciones vers=3,ro,soft,intr # Para imágenes de máquinas virtuales (críticas)  --opciones vers=3,hard,intr,tcp,rsize=32768,wsize=32768 # Para copias de seguridad (puede ser interrumpido) --opciones vers=3,soft,bg,intr

Redundancia y alta disponibilidad

# Servidor NFS con conmutación por error
# Primaria: 10.0.0.10
# Secundaria: 10.0.0.11

# Script de Heartbeat para conmutación por error automática cat > /usr/local/bin/nfs-failover.sh << 'EOF' #!/bin/bash PRIMARY="10.0.0.10" SECONDARY="10.0.0.11" si ! ping -c 3 $PRIMARIA >/dev/null 2>&1; entonces # Principal fuera de línea - cambio a pvesm secundario set nfs-storage --server $Registrador secundario "NFS failover to secondary server" fi EOF

NFS es especialmente adecuado si está buscando una solución de almacenamiento compartido simple pero profesional para su clúster Proxmox. La configuración no es complicada, el rendimiento es completamente suficiente para la mayoría de los casos de uso y el mantenimiento es mínimo.

En aras de la integridad, también me gustaría centrarme en la variante de Windows de NFS. Ella escucha el nombre CIFS y se comporta ampliamente bajo Proxmox igual a: La principal diferencia entre NFS y CIFS (hoy por lo general referido como SMB Está en su Historial de desarrollo y plataforma objetivo. NFS fue diseñado para sistemas basados en Unix como Linux, mientras que CIFS / SMB fue diseñado originalmente para sistemas Windows.

NFS (sistema de archivos de red)

  • orígenes: Desarrollado por Sun Microsystems para sistemas Unix.
  • funcionamiento: Permite a los clientes acceder a archivos y directorios almacenados en un servidor remoto como si fueran locales. El acceso se realiza a través de un proceso de «montaje».
  • rendimiento: A menudo se considera más eficaz para entornos Unix / Linux porque está integrado de forma nativa allí y tiene menos gastos generales.
  • restricción: Puede ser intensivo en recursos cuando se usa en entornos no Linux, ya que a menudo se necesita software adicional.
  • Situación actual: NFSv4 es la última versión y ofrece características mejoradas de seguridad y rendimiento. Se está desarrollando activamente.

CIFS (Sistema Común de Archivos de Internet) / SMB (Bloque de Mensajes del Servidor)

Situación actual: CIFS está técnicamente desactualizado. El protocolo actual se llama SMB (Server Message Block), que está en constante desarrollo y sirve como el estándar para compartir archivos en los sistemas Windows modernos. Con Samba, también se puede utilizar en entornos Unix/Linux para establecer compatibilidad con sistemas Windows.

orígenes: CIFS es una versión especial del SMB-Protocolos de Microsoft. En el contexto moderno, los términos a menudo se usan indistintamente o CIFS denota la versión 1.0 de SMB obsoleta.

funcionamiento: Los clientes pueden acceder a los archivos, impresoras y otros recursos de un servidor a través de la red. CIFS / SMB es un protocolo de estado, lo que significa que el servidor rastrea las conexiones y el estado de los archivos abiertos.

rendimiento: Puede ser más lento que NFS (especialmente las versiones anteriores) en las conexiones WAN, pero las versiones modernas de SMB (SMB2, SMB3) tienen mejoras significativas en el rendimiento.

restricción: CIFS/SMB1 se considera inseguro y está deshabilitado o ya no se usa por defecto en los sistemas modernos.


Mientras estamos en ello, echemos un vistazo más de cerca al resto. El documentación oficial muestra cómo Proxmox utiliza los tipos de memoria ZFS, BTRFS y CEPH como Backends de memoria uso. Hay recomendaciones claras para varios casos de uso.


Proxmox y ZFS

Proxmox ve ZFS como un Solución potente y fiable para el almacenamiento de un único host o pequeñas configuraciones replicadas.

Implementación en Proxmox: ZFS se utiliza en Proxmox como un plugin de almacenamiento integrado. Puede crear un grupo ZFS en discos duros locales directamente en la interfaz web. Proxmox utiliza la capacidad de copia sobre escritura de ZFS para instantáneas muy rápidas y clones de máquinas virtuales para crear.

Integridad de los datos: Las sumas de comprobación ZFS protegen los datos de su máquina virtual de la corrupción silenciosa de datos, que es esencial para las cargas de trabajo críticas.

Instantáneas eficientes: Las instantáneas son muy rápidas y consumen poco espacio, lo que es extremadamente útil para las estrategias de copia de seguridad + pruebas / estadificación.

RAID-Z: Proxmox admite la creación de configuraciones RAID ZFS (RAID-Z1, RAID-Z2, RAID-Z3) a través de la interfaz web, lo que aumenta la seguridad de los datos.

Cuándo usar: ZFS es la opción preferida para un Servidor único, que requiere una alta fiabilidad, integridad de los datos y funciones instantáneas simples. La documentación oficial también lo recomienda para clústeres al sincronizar ZFS a través del propio motor de replicación de Proxmox.


Proxmox y BTRFS

BTRFS se describe en la documentación de Proxmox como un moderno, Alternativa flexible a ZFS También proporciona funcionalidad de copia sobre escritura. También está destinado al almacenamiento local en un host.

Implementación en Proxmox: Al igual que ZFS, BTRFS se puede configurar directamente en la interfaz web de Proxmox como un sistema de archivos y tipo de almacenamiento. Proxmox utiliza las capacidades de subvolumen e instantánea de BTRFS.

simplicidad: BTRFS a menudo se considera más fácil de manejar, especialmente cuando se administran subvolúmenes.

Funciones RAID integradas: BTRFS ofrece su propio nivel RAID (RAID 0, 1, 10). Sin embargo, la documentación menciona que RAID 5 y RAID 6 todavía se consideran experimentales. ¡Así que definitivamente hay una necesidad de precaución!

balanceo: BTRFS ofrece una función integrada denominada «Balance», que distribuye datos entre discos y optimiza los metadatos.

Cuándo usar: BTRFS es una buena opción si desea la flexibilidad y las características de un sistema de archivos moderno en un Anfitrión único Desea usarlo, pero desea evitar los requisitos de recursos de ZFS. Es una opción sólida para entornos más pequeños.


Proxmox y Ceph

Ceph está en Proxmox. Solución recomendada para el almacenamiento en clúster. Está profundamente integrado en la infraestructura de Proxmox y permite Piscina de almacenamiento altamente disponible y distribuida Crear a través de múltiples hosts.

Cuándo usar: Ceph es la solución ideal para Grupos más grandes (tres o más nodos). Le permite crear un grupo de almacenamiento central de alta disponibilidad para todas las máquinas virtuales en el clúster que no tiene un solo punto de falla. La documentación de Proxmox también destaca claramente que Ceph es la mejor opción para el almacenamiento compartido en un clúster Proxmox HA.

Implementación en Proxmox: Proxmox ofrece una Integración nativa de Ceph a través de la interfaz web, que le permite configurar y administrar un clúster Ceph en su host Proxmox. Cada host puede servir como un nodo Ceph (OSD, Monitor, Manager).

Beneficios:

Alta escalabilidad: Se pueden agregar fácilmente hosts adicionales al clúster para aumentar la capacidad y el rendimiento.

Alta disponibilidad: Ceph replica los datos a través de los nodos del clúster. Si un host falla, la memoria permanece disponible.

Almacenamiento unificado: Puede usar Ceph para implementar dispositivos de bloque (RBD) para máquinas virtuales, almacenamiento de objetos (RADOS Gateway) y sistemas de archivos (CephFS).


Los diferentes backends de almacenamiento en detalle

1. Almacenamiento de directorios (simple pero flexible)

# Directorio local como almacenamiento pvesm añadir dir backup-local \ --path /backup \ --content backup,iso,template \ --shared 0 # NFS Compartir como Almacenamiento pvesm añadir nfs almacenamiento compartido \ --server 192.168.1.100 \ --export /exports/proxmox \ --content images,template,backup \ --options vers=3

Beneficios:

  • Fácil de entender y gestionar
  • Flexible para diferentes contenidos
  • Instantáneas a través del sistema de archivos (cuando se utiliza ZFS / BTRFS)

Desventajas:

  • Instantáneas más lentas para imágenes grandes
  • Uso de almacenamiento menos eficiente

2. ZFS Storage (Características de Enterprise)

# Crear un grupo de ZFS zpool create -f tank \ raidz2 /dev/sdb /dev/sdc /dev/sdd /dev/sde \ cache /dev/nvme0n1p1 \ log /dev/nvme0n1p2 # Optimizaciones de ZFS zfs set compresión=lz4 tanque zfs set atime=off tanque zfs set xattr=sa tanque zfs set relatime=on tanque # Añadir como almacenamiento Proxmox pvesm añadir zfspool zfs-storage \ --pool tank \ --content images,rootdir \ --sparse 1

Beneficios de ZFS:

  • Instantáneas integradas y replicación
  • Compresión y deduplicación
  • Muy robusto debido a las sumas de comprobación
  • Cache y L2ARC para el rendimiento

3. Ceph Storage (para clústeres)

# Crear Ceph OSD ceph-deploy osd create --data /dev/sdb proxmox1 ceph-deploy osd create --data /dev/sdc proxmox2 ceph-deploy osd create --data /dev/sdd proxmox3 # Crear grupo para máquinas virtuales piscina ceph osd crear almacenamiento vm 128 aplicación piscina ceph osd habilitar almacenamiento vm rbd # Integrar con Proxmox pvesm añadir ceph ceph-storage \ --pool vm-storage \ --content images \ --krbd 0

ZFS y BTRFS: Enfoques de ampliación (servidor único)

ZFS (Sistema de archivos Zettabyte) es un sistema de archivos maduro y gestor de volumen que se utiliza principalmente para su Fuerte integridad de los datos es conocido. Está diseñado para su uso en un único servidor de alto rendimiento.

  • ventajas: Integridad de datos superior gracias a copy-on-write y checksums. Variantes RAID flexibles (RAID-Z). Muy fiable y estable.
  • desventajas: Puede estar hambriento de recursos (RAM). Escalas principalmente solo verticalmente. A veces complejo en el manejo.
  • alcance: Sistemas de host único, estaciones de trabajo, servidores pequeños a medianos, sistemas NAS.

BTRFS (Sistema de Archivos B-Tree) es un enfoque moderno de sistema de archivos copy-on-write para Linux que replica muchas características de ZFS, pero a menudo se considera más flexible y más fácil de administrar.

  • ventajas: Funciones integradas de gestión de volumen. Fácil manejo de subvolúmenes e instantáneas. Copias de seguridad incrementales. RAID incorporado.
  • desventajas: La implementación de RAID5/6 todavía se considera experimental y no es tan robusta como ZFS.
  • alcance: Sistemas Linux en los que desea aprovechar las instantáneas y la integridad de los datos sin la sobrecarga de recursos de ZFS. Ideal para servidores domésticos y hosts Proxmox que almacenan datos localmente.

Ceph: El enfoque de escalamiento (cluster)

Ceph no es una alternativa a ZFS o BTRFS en un solo servidor. Es un Solución de almacenamiento definida por software para clústeres grandes y distribuidos. Su objetivo principal es proporcionar un grupo de almacenamiento central en muchos servidores.

  • ventajas: Escalabilidad extremadamente alta (horizontal). Alta fiabilidad a través de la autocuración y datos distribuidos. Proporciona almacenamiento de bloques, objetos y archivos.
  • desventajas: Muy complejo en configuración y administración. Altos requisitos de infraestructura (se recomiendan al menos 3 nodos).
  • alcance: Grandes entornos de nube, clústeres de virtualización, archivos de datos muy grandes.

Resumen y recomendación

rasgoZFSBTRFSCeph
conceptoScale-Up (servidor único)Scale-Up (servidor único)Escala de salida (cluster)
públicoFiabilidad e integridad de los datosFlexibilidad, simplicidad (Linux)Escalabilidad, alta disponibilidad
escaladoVertical (más discos en un servidor)Vertical (más discos en un servidor)Horizontal (más servidores en el clúster)
Tamaño de la aplicaciónPequeño a medianoPequeño a medianoMediano a grande (de 3+ nudos)
Principal ventajaEstándar de la industria para la integridad de los datosFlexible y nativo en LinuxMáxima fiabilidad y escalabilidad de &
Desventaja principalAltos requisitos de RAMRAID5/6 aún no está completamente desarrolladoAlta complejidad y requisitos de infraestructura

En resumen, se puede decir lo siguiente:

Elegir un único host Proxmox: ZFS o BTRFS son la elección correcta. Ambos proporcionan instantáneas y una buena integridad de los datos. ZFS es el estándar de oro para la confiabilidad, pero BTRFS es a menudo más simple y definitivamente más eficiente en el uso de los recursos.

Elegir un clúster Proxmox: Ceph es la mejor opción si tiene varios hosts y desea construir un grupo de almacenamiento central de alta disponibilidad que pueda crecer con su clúster a largo plazo.


Optimización del rendimiento en detalle

Optimizaciones de SSD

Activar TRIM/Descartar

# Para máquinas virtuales individuales qm set 100 --scsi0 local-lvm:vm-100-disk-0,discard=on,ssd=1 # Global para todas las máquinas virtuales nuevas (en configuración de almacenamiento) pvesm set local-lvm --content images --discard-support 1 # Nivel del sistema TRIM (semanal) systemctl habilitar fstrim.timer

Programadores específicos para SSD

# Ideal para SSDs echo mq-deadline > /sys/block/sda/queue/scheduler # Permanente vía udev cat > /etc/udev/rules.d/60-ssd-scheduler.rules << 'EOF' ACTION=="add changechange", KERNEL=="sd[a-z] ?? nvme[0-9]n[0-9]", \ ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline" EOF

Optimización del hilo y la caché de E/S

# Hilo de E/S para una mejor paralelización qm set 100 --scsi0 local-lvm:vm-100-disk-0,iothread=1 qm set 100 --scsihw virtio-scsi-single # Modos de caché dependiendo de la aplicación
# escritura: Claro, pero más lento qm set 100 --scsi0 local-lvm:vm-100-disk-0,cache=writethrough # amortización: Riesgo de pérdida de datos más rápido pero en caso de corte de energía  qm set 100 --scsi0 local-lvm:vm-100-disk-0,cache=writeback # Ninguna: Para almacenamiento compartido (cluster) qm set 100 --scsi0 ceph-storage:vm-100-disk-0, cache=none

E/S multirrecorrido para almacenamiento empresarial

# Instalar y configurar Multipath apt install multipath-tools cat > /etc/multipath.conf << 'EOF' defaults { user_friendly_names yes find_multipaths yes } multipaths { multipath { wwid 36001405d27e5d898dd34a9f98a9a8f55 alias shared-storage-lun1 } } EOF systemctl enable multipathd systemctl start multipathd

Mejores prácticas de diseño de almacenamiento en TL:DR

Diseño recomendado para diferentes escenarios

Homelab (1 o 2 servidores)

# SSD 1: Sistema + VMs locales /dev/sda1: Bota EFI (512MB) /dev/sda2: raíz (50 GB) /dev/sda3: LVM-Thin Pool (descanso) # HDD 1: Copias de seguridad + Almacenamiento ISO /dev/sdb1: /backup (disco completo) # Configuración:
# local-lvm: imágenes,rootdir (SSD)
# configuración regional de la copia de seguridad: copia de seguridad, iso (HDD)

Pequeño entorno de producción (3+ servidores)

# Por servidor:
# NVMe 1: Sistema (Espejo RAID1) /dev/nvme0n1: Sistema de Proxmox # NVMe 2: Máquinas virtuales locales (datos calientes)  /dev/nvme1n1: Piscina LVM-Thin local # SAS/SATA: Almacenamiento compartido a través de Ceph /dev/sd[a-c]: OSD de Ceph # NAS externo: respaldos nfs://backup.internal.lan/proxmox

Empresa (muchos servidores, operación de clúster)

# Almacenamiento dedicado:
# - SAN (iSCSI/FC) para Imágenes de VM
# - NFS para plantillas/ISOs 
# - Sistema de copia de seguridad dedicado
# - Cúmulos Ceph separados

# Pro Pro Pro Proxmox nodo sistema SSD solamente /dev/sda: Sistema de Proxmox (RAID1) # Todo lo demás sobre la red

Implementar niveles de almacenamiento

# Nivel 1: NVMe para máquinas virtuales críticas pvesm añadir lvmthin nvme-tier1 \ --vgname nvme-vg \ --thinpool nvme-pool \ --content images # Nivel 2: SSD SATA para máquinas virtuales estándar  pvesm añadir lvmthin ssd-tier2 \ --vgname ssd-vg \ --thinpool ssd-pool \ --content images,rootdir # Nivel 3: HDD para Archivo/Copia de seguridad pvesm añadir dir hdd-tier3 \ --path /archive \ --content backup,template

Mejores prácticas de la documentación de Proxmox

Asignación correcta de tipos de contenido

Diferentes tipos de almacenamiento admiten diferentes tipos de contenido almacenamiento:

# Almacenamiento especializado para diversos fines pvesm add lvmthin vm-storage --vgname pve-fast --thinpool fast --content images pvesm add lvmthin ct-storage --vgname pve-bulk --thinpool bulk --content rootdir pvesm add dir iso-storage --path /var/lib/vz/template --content iso,vztmpl

Almacenamiento sin aliasing

Es problemático mostrar múltiples configuraciones de almacenamiento en el mismo almacenamiento almacenamiento:

# FALSO - Ambos se muestran en la misma piscina delgada pvesm add almacenamiento lvmthin1 --vgname pve --datos delthinpool --imágenes de contenido pvesm add almacenamiento lvmthin2 --vgname pve --datos delthinpool --content rootdir # DERECHA - Un almacenamiento para ambos tipos de contenido pvesm añadir lvmthin local-lvm --vgname pve --thinpool data --content images,rootdir

Comprender la propiedad del volumen

Cada volumen pertenece a una máquina virtual o contenedor almacenamiento:

# Comprensión del formato de ID de volumen:
# local-lvm:vm-100-disk-0
# ^ ^ ^
# | | ?? ── Número de disco 
# ──────────── VM-ID # ───────────────────────────

# Determinar la ruta del volumen ruta pvesm local-lvm:vm-100-disk-0 # /dev/pve-data/vm-100-disk-0

Ajuste de rendimiento de acuerdo con los estándares Proxmox

Optimizar el programador de E/S para LVM Thin

# Para SSDs bajo LVM-Thin echo mq-deadline > /sys/block/sda/queue/scheduler # Personalizar la profundidad de Cue echo 32 > /sys/block/sda/queue/nr_requests # Lectura anticipada para cargas de trabajo secuenciales blockdev --setra 4096 /dev/sda

Configuración de VM para un rendimiento óptimo

# La mejor configuración de rendimiento para LVM Thin qm set 100 --scsi0 local-lvm:vm-100-disk-0,iothread=1,discard=on,ssd=1 # Parámetros explicados:
# iothread=1: Hilos de E/S separados para una mejor paralelización
# descarte=en: Soporte TRIM para la optimización de SSD 
# ssd=1: Le dice a la máquina virtual que es un SSD

Mantenimiento y monitorización

Chequeo del estado de la piscina delgada

# Información detallada de la piscina dmsetup status ?? grep thin # Reparación de piscina delgada (cuando se corrompe) lvconvert --repair pve-data/data # Uso en trozos de piscina delgada thin_dump /dev/pve-data/data_tmeta ?? menos

Tareas de mantenimiento regulares

# Mantenimiento semanal cat > /etc/cron.weekly/lvm-maintenance << 'EOF' #!/bin/bash # Desfragmento de piscina delgada fstrim -av # Copia de seguridad de metadatos LVM vgcfgbackup # Limpiar los volúmenes lógicos no utilizados lvremove $(lvs --noheadings -o lv_path,lv_attr ?? \ awk '$2 ~ /^V.*a.*z/ {impresión $1}' ?? \ head -5) EOF

Esta sección del código es la base para un almacenamiento flexible y de alto rendimiento en Proxmox

Migración y Mantenimiento de Almacenamiento

Migrar máquinas virtuales entre almacenamientos

# Migración fuera de línea (VM desactivado) qm migrar 100 nodo2 --targetstorage new-storage # Migración en línea (VM continúa)  qm migrar 100 nodo2 --online --targetstorage new-storage # Cambiar solo el almacenamiento (mismo nodo) qm move-disk 100 scsi0 new-storage --delete

Mantenimiento de almacenamiento sin tiempo de inactividad

# 1. Migrar máquinas virtuales desde el almacenamiento para mm en $(lista qm ?? grep corriendo ?? awk '{print $1}'); hacer qm migrar $vm node2 --targetstorage backup-storage --en línea hecho # 2. Realizar mantenimiento de almacenamiento
# - Intercambio de discos duros
# - Reconstruir RAID 
# - etc.

# 3. Migrar VMs de vuelta para mm en $(lista qm ?? grep corriendo ?? awk '{print $1}'); hacer qm migrar $vm node1 --targetstorage main-storage --en línea hecho

Monitoreo y solución de problemas

Supervise el rendimiento del almacenamiento

# Estadísticas de E/S en directo iostato -x 1 # Monitoreo de E/S por VM iotop-ao # Medición de la latencia del almacenamiento ioping /var/lib/vz/

Resolución de problemas comunes de almacenamiento

Problema: "No queda espacio en el dispositivo"

# 1. Analizar el consumo de memoria df -h lvs --todos ustedes -sh /var/lib/vz/* # 2. Ampliación de la piscina delgada lvextend -L +100G /dev/pve/datos # 3. Bloques no utilizados fstrim-av

Problema: Desempeño deficiente de las E/S

# 1. Programador de cheques cat /sys/block/sda/queue/scheduler # 2. Optimizar la profundidad de la cola de E/S echo 32 > /sys/block/sda/queue/nr_requests # 3. Comprobar la configuración de la máquina virtual  sqm config 100 ?? grep scsi # iothread=1, cache=none/writeback dependiendo de la configuración

Problema: Almacenamiento no disponible

# 1. Comprobar el estado de almacenamiento estado del pvesm # 2. Comprobación de los puntos de montaje montaje ?? grep /var/lib/vz # 3. Prueba de almacenamiento en red ping storage-server showmount -e storage-server # 4. Volver a habilitar el almacenamiento pvesm set storage-name --disable 0

El almacenamiento es la base de su instalación de Proxmox: ¡dedique la mayor parte de su tiempo a planificar y configurar aquí! Esto definitivamente dará sus frutos más adelante en el consumo de café y o el consumo de píldoras para el dolor de cabeza. ??


Finalización y recursos avanzados

Proxmox es una herramienta poderosa, pero con gran poder viene una gran responsabilidad. (winker) Las mejores prácticas que se muestran aquí son el resultado de la experiencia en la práctica. Comience con lo básico y gradualmente trabaje hasta llegar a las funciones avanzadas.

Sus próximos pasos:

  1. Construir un entorno de prueba / estadificación: Pruebe todas las configuraciones en un entorno separado
  2. Implementar el monitoreo: Supervise su sistema desde el principio
  3. Estrategia de copia de seguridad de prueba: Realiza pruebas de restauración periódicas
  4. Únete a la Comunidad: El foro de Proxmox es muy útil

Así que recuerda: Tómese su tiempo, lo básico Entiende antes que tú Configuraciones más complejas se desvanece. El Guía de administración de Proxmox Como sitio web que he enlazado varias veces en el artículo como referencia también vale oro. Echa un vistazo en el foro alrededor, Si tiene alguna pregunta. También hay un punto de entrada para Canal de YouTube.

Las partes restantes de esta serie de artículos que también he vinculado aquí de nuevo para usted: Parte 1: red | Parte 2: almacenamiento | Parte 3: respaldo | Parte 4: seguridad | Parte 5: rendimiento