Как мне настроить квоту проекта для моей корневой папки Live, которая является ext4, в Ubuntu 18.04?
Документация, специфичная для квоты проекта в файловой системе ext4, по сути отсутствует, и я попробовал следующее:
- Установленная квота с
apt install quota -y
- Поместил
prjquota
в/etc/fstab
корень / и перезагрузился, файловая система загрузилась как только для чтения, без квоты проекта (изздесьтолько с prjquota вместо пользовательских и групповых квот) - Также
find /lib/modules/`uname -r` -type f -name '*quota_v*.ko*'
был запущен и оба модуля ядра/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
были найдены (изэтотруководство) - Вставил , запустил
GRUB_CMDLINE_LINUX_DEFAULT="rootflags=prjquota"
и перезагрузил, машина больше не включается./etc/default/grub
update-grub
- Запуск и
rootflags=quota
перезапуск показалиGRUB_CMDLINE_LINUX="... rootflags=quota"
, что он включен для root, но он не работает с или или установлен как rootflagupdate-grub
quota
usrquota
prjquota
pquota
project
Мне это нужно для бэкэнда хранилища DIRLXDчтобы иметь возможность ограничить размер хранилища контейнера. Что еще я могу попробовать?
решение1
Мне сказали, что запуск tune2fs -O project -Q prjquota /dev/sdaX
абсолютно необходим для включения Project Quota на устройстве. Поэтому я искал решение, которое не требует выключения или использования live-cd, так как это требует слишком много времени и не всегда хорошо работает, судя по моему опыту с моим провайдером VPS. И я также надеялся, что смогу превратить шаги в сценарий, что пока не сработало.
Благодаря другому вопросу я смог собрать решение, которое сработало для меня на Ubuntu 18.04. Для этого вам понадобится около 4 ГБ оперативной памяти (и, конечно, ядро после версии 4.4).
Источники:
- Как уменьшить размер корневой файловой системы без загрузки LiveCD
- http://www.ivarch.com/blogs/oss/2007/01/resize-a-live-root-fs-a-howto.shtml
1. Создайте файловую систему 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. Переключите корень на новую файловую систему 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. Перезапустите SSH на порту, отличном от 22, и переподключитесь к другому сеансу.
nano /etc/ssh/sshd_config
Измените порт на 2211
Перезапустите SSH с помощью
/usr/sbin/sshd -D &
Подключитесь снова с 2211
4. Завершите процессы с помощью /oldroot или /dev/sdaX
fuser -km /oldroot
fuser -km /dev/sdaX
5. Размонтируйте /dev/sdaX и примените функцию квоты проекта.
umount -l /dev/sdaX
tune2fs -O project -Q prjquota /dev/sdaX
6. Установите квоту проекта
mount /dev/sda2 -o prjquota /oldroot
7. Возвращаем вещи на место
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. Включить квоту после перезагрузки
apt install quota -y
quotaon -Pv -F vfsv1 /
9. Проверьте, включена ли квота на root.
repquota -Ps /
10. Сделайте это настойчивым
- Вставьте
prjquota
в опции root в/etc/fstab
Наслаждаться!