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:
- Installiertes Kontingent mit
apt install quota -y
prjquota
In für das Root- / einfügen/etc/fstab
und neu starten, Dateisystem wurde als schreibgeschützt gebootet, kein Projektkontingent (vonHiernur mit prjquota statt den Benutzer- und Gruppenquoten)- 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.ko
und/lib/modules/4.15.0-96-generic/kernel/fs/quota/quota_v1.ko
wurden gefunden (vonDasLernprogramm) GRUB_CMDLINE_LINUX_DEFAULT="rootflags=prjquota"
In eingegeben/etc/default/grub
, ausgeführtupdate-grub
und neugestartet, die Maschine fährt nicht mehr hoch.rootflags=quota
Beim Ausführen und Neustarten wurde angezeigtGRUB_CMDLINE_LINUX="... rootflags=quota"
, dass es auf Root aktiviert wurde, aber es funktioniert nicht mit oder oder als Rootflag gesetzt ist.update-grub
quota
usrquota
prjquota
pquota
project
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/sdaX
unbedingt 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:
- So verkleinern Sie das Root-Dateisystem, ohne eine Live-CD zu booten
- http://www.ivarch.com/blogs/oss/2007/01/resize-a-live-root-fs-a-howto.shtml
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
prjquota
in den Optionen von root/etc/fstab
Genießen!