¿Cómo puedo configurar la cuota de proyecto para mi carpeta raíz activa ext4 en Ubuntu 18.04?
La documentación específica de la cuota del proyecto en el sistema de archivos ext4 es básicamente inexistente y probé esto:
- Cuota instalada con
apt install quota -y
- Puesto
prjquota
en/etc/fstab
la raíz / y reiniciado, el sistema de archivos se inició como de solo lectura, sin cuota de proyecto (desdeaquísólo con prjquota en lugar de las cuotas de usuario y grupo) - También
find /lib/modules/`uname -r` -type f -name '*quota_v*.ko*'
se ejecutó y se encontraron ambos módulos del kernel/lib/modules/4.15.0-96-generic/kernel/fs/quota/quota_v2.ko
(/lib/modules/4.15.0-96-generic/kernel/fs/quota/quota_v1.ko
deestetutorial) - Ingresado , ejecutado
GRUB_CMDLINE_LINUX_DEFAULT="rootflags=prjquota"
y reiniciado, la máquina ya no aparece./etc/default/grub
update-grub
- La puesta
rootflags=quota
enGRUB_CMDLINE_LINUX="... rootflags=quota"
ejecuciónupdate-grub
y el reinicio se mostraronquota
yusrquota
se habilitaron en la raíz, pero no funcionaprjquota
ni se configura como rootflagpquota
.project
Necesito esto para el backend de almacenamiento DIR deLXDpara poder limitar el tamaño de almacenamiento del contenedor. ¿Qué más puedo probar?
Respuesta1
Me dijeron que ejecutar tune2fs -O project -Q prjquota /dev/sdaX
es absolutamente esencial para habilitar Project Quota en un dispositivo. Así que busqué una solución que no requiriera apagar o usar un live-cd ya que esto requiere demasiado tiempo y no siempre funciona bien en mi experiencia con mi proveedor de VPS. Y también esperaba poder convertir los pasos en un guión, lo cual no funcionó hasta ahora.
Gracias a otra pregunta pude armar una solución que me funcionó en Ubuntu 18.04. Necesitas ca. 4 GB de RAM para hacer esto (y por supuesto un kernel posterior a la versión 4.4).
Fuentes:
- Cómo reducir el sistema de archivos raíz sin iniciar un livecd
- http://www.ivarch.com/blogs/oss/2007/01/resize-a-live-root-fs-a-howto.shtml
1. Crea un sistema de archivos RAMdisk
mkdir /tmp/tmproot
mount none /tmp/tmproot -t tmpfs -o rw
mkdir /tmp/tmproot/{proc,oldroot,sys}
cp -a /dev /tmp/tmproot/dev
cp -ax /{bin,etc,opt,run,usr,home,mnt,sbin,lib,lib64,var,root,srv} /tmp/tmproot/
2. Cambie la raíz al nuevo sistema de archivos RAMdisk
cd /tmp/tmproot
unshare -m
pivot_root /tmp/tmproot/ /tmp/tmproot/oldroot
mount none /proc -t proc
mount none /sys -t sysfs
mount none /dev/pts -t devpts
3. Reinicie SSH en otro puerto que no sea el 22 y vuelva a conectarse con otra sesión.
nano /etc/ssh/sshd_config
Cambiar el puerto a 2211
Reinicie SSH con
/usr/sbin/sshd -D &
Conéctate nuevamente desde 2211
4. Elimine procesos usando /oldroot o /dev/sdaX
fuser -km /oldroot
fuser -km /dev/sdaX
5. Desmonte /dev/sdaX y aplique la función de cuota del proyecto
umount -l /dev/sdaX
tune2fs -O project -Q prjquota /dev/sdaX
6. Montar con cuota de proyecto
mount /dev/sda2 -o prjquota /oldroot
7. Devolver las cosas
pivot_root /oldroot /oldroot/tmp/tmproot
umount /tmp/tmproot/proc
mount none /proc -t proc
cp -ax /tmp/tmproot/dev/* /dev/
mount /dev/sda1 /boot ### This might be different for you
reboot -f
8. Active la cuota después de reiniciar
apt install quota -y
quotaon -Pv -F vfsv1 /
9. Verifique si la cuota está activada en la raíz
repquota -Ps /
10. Hazlo persistente
- Poner
prjquota
en las opciones de root en/etc/fstab
¡Disfrutar!