# Configurar Quotas XFS en Ubuntu 22.04 + Cpanel

## Problema común

En Ubuntu 22.04 con sistemas de archivos XFS, las quotas pueden no funcionar correctamente debido a que el módulo `quota_v2` no se carga automáticamente al arranque, incluso con la configuración correcta en `/etc/fstab`.

## Síntomas

- Quotas configuradas en `/etc/fstab` pero no funcionan
- `lsmod | grep quota` no muestra ningún resultado
- Errores en cPanel relacionados con quotas de usuarios

## Diagnóstico

### Verificar configuración actual
```bash
# Ver mount actual
mount | grep ' on / '

# Verificar fstab
grep usrquota /etc/fstab

# Comprobar módulos quota cargados
lsmod | grep quota

# Estado XFS quotas
xfs_quota -x -c 'state' /
```

### Verificar disponibilidad del módulo
```bash
# Buscar módulos quota disponibles
find /lib/modules/$(uname -r) -name "*quota*"

# Información del módulo
modinfo quota_v2

# Dependencias
modprobe --show-depends quota_v2
```

## Solución

### 1. Verificar que fstab esté correcto

El archivo `/etc/fstab` debe tener las opciones `usrquota,grpquota`:

```bash
# Ejemplo para XFS en LVM
/dev/mapper/ubuntu--vg-ubuntu--lv / xfs rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,usrquota,grpquota 0 1
```

### 2. Configurar carga automática del módulo

```bash
# Crear archivo de configuración para módulos
echo 'quota_tree' | sudo tee /etc/modules-load.d/quota.conf
echo 'quota_v2' | sudo tee -a /etc/modules-load.d/quota.conf

# Verificar contenido
cat /etc/modules-load.d/quota.conf
```

**Contenido esperado:**
```
quota_tree
quota_v2
```

### 3. Método alternativo - /etc/modules

Si el método anterior no funciona:

```bash
# Añadir módulos a /etc/modules
echo 'quota_tree' >> /etc/modules
echo 'quota_v2' >> /etc/modules

# Verificar
cat /etc/modules
```

### 4. Actualizar initramfs

```bash
# Actualizar initramfs para incluir cambios
update-initramfs -u
```

### 5. Configurar GRUB (opcional)

Para algunos casos específicos, añadir parámetros al kernel:

```bash
# Editar configuración GRUB
nano /etc/default/grub

# Modificar línea (añadir rootflags):
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash rootflags=usrquota,grpquota"

# Actualizar GRUB
update-grub
```

### 6. Reiniciar sistema

```bash
reboot
```

## Verificación post-configuración

### Script de verificación completa

```bash
#!/bin/bash
echo "=== VERIFICACIÓN QUOTAS XFS UBUNTU 22.04 ==="

echo "1. Módulo quota_v2 cargado:"
lsmod | grep quota && echo "✅ Módulo cargado" || echo "❌ Módulo NO cargado"

echo -e "\n2. Estado XFS quotas:"
xfs_quota -x -c 'state' / 2>/dev/null && echo "✅ XFS quotas activas" || echo "❌ XFS quotas inactivas"

echo -e "\n3. Mount con quotas:"
mount | grep ' on / ' | grep -q "usrquota\|grpquota" && echo "✅ Mount con quotas" || echo "❌ Mount sin quotas"

echo -e "\n4. Configuración modules-load.d:"
cat /etc/modules-load.d/quota.conf 2>/dev/null || echo "❌ Archivo no existe"

echo -e "\n5. Test quota usuario:"
quota -u root 2>/dev/null && echo "✅ Quotas funcionando" || echo "❌ Quotas no funcionan"

echo -e "\n6. Información detallada XFS:"
xfs_quota -x -c 'state' / 2>/dev/null
```

### Comandos de verificación individuales

```bash
# Verificar módulo cargado
lsmod | grep quota

# Estado detallado XFS quotas
xfs_quota -x -c 'state' /

# Verificar quotas de usuario (ejemplo)
quota -u username

# Activar quotas si están deshabilitadas
quotaon -av

# Reporte de uso de quotas
xfs_quota -x -c 'report -u' / | head -20
```

## Comandos útiles para gestión

### Comandos XFS quota básicos

```bash
# Ver estado general
xfs_quota -x -c 'state' /

# Reporte de usuarios
xfs_quota -x -c 'report -u' /

# Reporte de grupos
xfs_quota -x -c 'report -g' /

# Establecer quota para usuario
xfs_quota -x -c 'limit bsoft=1G bhard=2G username' /

# Ver quota específica de usuario
xfs_quota -x -c 'quota -u username' /
```

### Troubleshooting

```bash
# Si las quotas no funcionan después de la configuración
quotacheck -cug /
quotaon -av

# Remount con quotas (sin reinicio)
mount -o remount,usrquota,grpquota /

# Verificar que el filesystem soporta quotas
tune2fs -l /dev/device | grep -i quota  # Para ext4
xfs_info / | grep -i quota              # Para XFS
```

## Notas importantes

- **XFS vs EXT4**: Este procedimiento es específico para XFS. EXT4 tiene un comportamiento diferente.
- **cPanel**: Después de configurar quotas, es recomendable reiniciar cPanel: `systemctl restart cpanel`
- **LVM**: Si usas LVM, asegúrate de que las opciones están en el volumen lógico correcto.
- **Backup**: Siempre realiza backup antes de modificar `/etc/fstab` o configuraciones de arranque.
- **Grub**: Presta muchisima atención a grub y las acciones sobre el. Se puede dejar el sistema roto.

## Referencias

- [Documentación oficial cPanel - Quotas](https://docs.cpanel.net/knowledge-base/general-systems-administration/how-to-fix-quotas/)
- [Ubuntu Documentation - Quotas](https://help.ubuntu.com/community/DiskQuota)

## Histórico de cambios

- **Inicial**: Configuración básica para Ubuntu 22.04 + XFS
- **Verificado**: Funcionando en Ubuntu 22.04 LTS con XFS sobre LVM

##### Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. 
También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad.
El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de [Castris](https://castris.com)

Si necesitas soporte profesional puedes contratar con Castris [soporte profesional](https://intranet.castris.com/store/soporte-profesional).