Projektkontingent auf einem Live-Root-EXT4-Dateisystem ohne Live-CD

Projektkontingent auf einem Live-Root-EXT4-Dateisystem ohne Live-CD

Wie richte ich unter Ubuntu 18.04 ein Projektkontingent für meinen Live-Stammordner (ext4) ein?

Es gibt praktisch keine spezielle Dokumentation zum Projektkontingent im Ext4-Dateisystem. Ich habe Folgendes versucht:

  1. Installiertes Kontingent mitapt install quota -y
  2. prjquotaIn für das Root- / einfügen /etc/fstabund neu starten, Dateisystem wurde als schreibgeschützt gebootet, kein Projektkontingent (vonHiernur mit prjquota statt den Benutzer- und Gruppenquoten)
  3. Außerdem find /lib/modules/`uname -r` -type f -name '*quota_v*.ko*'wurde ausgeführt und beide Kernelmodule /lib/modules/4.15.0-96-generic/kernel/fs/quota/quota_v2.kound /lib/modules/4.15.0-96-generic/kernel/fs/quota/quota_v1.kowurden gefunden (vonDasLernprogramm)
  4. GRUB_CMDLINE_LINUX_DEFAULT="rootflags=prjquota"In eingegeben /etc/default/grub, ausgeführt update-grubund neugestartet, die Maschine fährt nicht mehr hoch.
  5. rootflags=quotaBeim Ausführen und Neustarten wurde angezeigt GRUB_CMDLINE_LINUX="... rootflags=quota", dass es auf Root aktiviert wurde, aber es funktioniert nicht mit oder oder als Rootflag gesetzt ist.update-grubquotausrquotaprjquotapquotaproject

Ich brauche dies für das DIR-Speicher-Backend vonLXDum die Containerspeichergröße begrenzen zu können. Was kann ich sonst noch versuchen?

Antwort1

Mir wurde gesagt, dass das Ausführen tune2fs -O project -Q prjquota /dev/sdaXunbedingt erforderlich ist, um Project Quota auf einem Gerät zu aktivieren. Also suchte ich nach einer Lösung, die kein Ausschalten oder die Verwendung einer Live-CD erfordert, da dies zu viel Zeit in Anspruch nimmt und meiner Erfahrung mit meinem VPS-Anbieter nach nicht immer gut funktioniert. Und ich hoffte auch, dass ich die Schritte in ein Skript umwandeln kann, was bisher nicht geklappt hat.

Dank einer weiteren Frage konnte ich eine Lösung zusammenstellen, die bei mir unter Ubuntu 18.04 funktionierte. Dazu sind ca. 4 GB RAM erforderlich (und natürlich ein Kernel ab Version 4.4).

Quellen:

1. Erstellen Sie ein RAMdisk-Dateisystem

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. Wechseln Sie als Root zum neuen RAMdisk-Dateisystem

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. Starten Sie SSH auf einem anderen Port als 22 neu und stellen Sie die Verbindung mit einer anderen Sitzung wieder her

nano /etc/ssh/sshd_config
  • Ändern Sie den Port auf 2211

  • Starten Sie SSH neu mit/usr/sbin/sshd -D &

  • Verbinden Sie sich erneut von 2211

4. Beenden Sie Prozesse mit /oldroot oder /dev/sdaX

fuser -km /oldroot
fuser -km /dev/sdaX

5. Unmounten Sie /dev/sdaX und wenden Sie die Projektkontingentfunktion an

umount -l /dev/sdaX
tune2fs -O project -Q prjquota /dev/sdaX

6. Mit Projektkontingent mounten

mount /dev/sda2 -o prjquota /oldroot

7. Dinge zurücklegen

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. Kontingent nach Neustart einschalten

apt install quota -y
quotaon -Pv -F vfsv1 /

9. Überprüfen Sie, ob das Kontingent auf dem Root-System aktiviert ist

repquota -Ps /

10. Machen Sie es persistent

  • Setzen Sie prjquotain den Optionen von root/etc/fstab

Genießen!

verwandte Informationen