Cuota de proyecto en un sistema de archivos EXT4 raíz en vivo sin live-cd

Cuota de proyecto en un sistema de archivos EXT4 raíz en vivo sin live-cd

¿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:

  1. Cuota instalada conapt install quota -y
  2. Puesto prjquotaen /etc/fstabla 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)
  3. 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.kodeestetutorial)
  4. Ingresado , ejecutado GRUB_CMDLINE_LINUX_DEFAULT="rootflags=prjquota"y reiniciado, la máquina ya no aparece./etc/default/grubupdate-grub
  5. La puesta rootflags=quotaen GRUB_CMDLINE_LINUX="... rootflags=quota"ejecución update-gruby el reinicio se mostraron quotay usrquotase habilitaron en la raíz, pero no funciona prjquotani se configura como rootflag pquota.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/sdaXes 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:

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 prjquotaen las opciones de root en/etc/fstab

¡Disfrutar!

información relacionada