LVE (Lightweight Virtual Environment) es una tecnología de CloudLinux que aísla y limita los recursos que cada usuario puede consumir en un servidor compartido. Funciona sobre cgroups y evita que un sitio web acapare CPU, RAM o E/S en detrimento de los demás.

¿Qué es LVE y cómo funciona?

CloudLinux introdujo LVE para resolver el problema del vecino ruidoso en hosting compartido. Cada cuenta de hosting se ejecuta dentro de un LVE que establece límites duros de recursos. Internamente utiliza cgroups (control groups) del kernel de Linux para gestionar CPU, memoria, E/S de disco y número de procesos.

# Ver estado general de LVE
lvectl list

# Ver límites de un usuario específico
lvectl list --user usuario

# Mostrar estadísticas de uso
lvectl stats

# Información detallada de todos los LVE activos
cat /proc/lve/list

Ventajas para hosting compartido

LVE transforma el modelo de hosting compartido al garantizar que ningún usuario pueda sobrepasar sus límites. Las ventajas principales son:

• Aislamiento completo: un pico de tráfico en un sitio no afecta a los vecinos. • Límites configurables por usuario: CPU, memoria, E/S, inodos y procesos. • Sin overbooking: los límites duros se respetan siempre. • Monitorización granular: se sabe exactamente qué consume cada cuenta.

Configuración de límites por usuario

Los límites se definen en /etc/container/ve.config o mediante lvectl:

# Configurar límites para el usuario 'juan'
lvectl set juan --cpu=50 --mem=1024 --io=1024 --nproc=100

# Límites de ejemplo en ve.config
cat /etc/container/ve.config
juan CPU=50 MEM=1024 IO=1024 NPROC=100 EP=10

# Aplicar los cambios
lvectl apply juan

# Ver la configuración actual
lvectl list --user juan --limits

Monitorización de recursos

CloudLinux provee herramientas para monitorear el uso en tiempo real:

# Ver usuarios que han excedido sus límites
lvectl list --throttled

# Estadísticas históricas
lvectl stats --history

# Gráfico de uso de los últimos minutos
lvectl graph

# Alertas por correo cuando se excede un límite
lvectl set juan --alert=email --alert-limit=90

Alternativas open-source

Aunque LVE es propietario de CloudLinux, existen alternativas con funcionalidad similar basadas en cgroups v2:

# systemd-run: ejecutar proceso con límites via cgroups
systemd-run --user -p CPUQuota=50% -p MemoryMax=512M comando

# Podman con límites de recursos
podman run --cpus=0.5 --memory=512m nginx

# cgroup-tools (cgroups v1/v2)
cgcreate -g cpu,memory:/limitado
cgset -r cpu.max='50000 100000' limitado
cgclassify -g cpu,memory:/limitado PID

Para entornos de hosting que no usan CloudLinux, systemd con cgroups v2 ofrece un aislamiento razonable combinado con namespaces de Linux.

Infografía LVE (Lightweight Virtual Environment): Qué es y cómo gestiona los recursos compartidos
Infografía: LVE (Lightweight Virtual Environment): Qué es y cómo gestiona los recursos compartidos