Quotas — ограничение дискового пространства

Quotas используются для ограничения дискового пространства, занимаемого определённым пользователем или группой. Пакет: sys-fs/quota.

Пример: создадим ограничения для пользователя testuser на файловой системе reiserfs в разделе, смонтированном в /home, с лимитом 5 МБ.

1. Шаги настройки

  1. Включить поддержку квот в ядре: File Systems → Quota support и прочие параметры.
  2. В файле /etc/fstab добавить к опциям монтирования usrquota,grpquota.
  3. Перемонтировать /home с новыми опциями (или выполнить reboot).
  4. Выполнить edquota -u testuser и установить значение hard в байтах — 5120.
  5. Перезапустить службу квот: /etc/init.d/quota restart.

С ядром 2.6.36-gentoo-r4 квоты не работают на reiserfs, но работают на ext4. С ядром 2.6.39-gentoo-r3 — работают и на reiserfs.

💡 Также стоит обратить внимание на файл /etc/security/limits.conf — он имеет простой синтаксис, но может ограничивать только размер создаваемого файла, а не общий объём занятого пространства.

2. Альтернатива без Quota

Можно реализовать ограничение без использования квот: создать файл нужного размера и подмонтировать его как файловую систему в домашний каталог пользователя.

dd if=/dev/zero of=/userdisk.fs bs=1024 count=100000
mkfs.ext3 /userdisk.fs
mount -t ext3 -o loop /userdisk.fs /home/testuser

3. Проверка производительности

Чтобы оценить влияние такого подхода на производительность файловой системы, можно использовать команду:

time dd if=/dev/zero of=/home/testuser/testfile bs=1M count=1000

Результаты

Для созданной ext3:

astra ~ # time dd if=/dev/zero of=/home/testuser/testfile bs=1M count=800
800+0 записей считано
800+0 записей написано
скопировано 838860800 байт (839 MB), 25.1175 c, 33.4 MB/c

real    0m25.119s
user    0m0.002s
sys     0m1.648s

Для созданной reiserfs:

800+0 записей считано
800+0 записей написано
скопировано 838860800 байт (839 MB), 41.1458 c, 20.4 MB/c

real    0m41.450s
user    0m0.003s
sys     0m2.387s

Для текущей reiserfs:

800+0 записей считано
800+0 записей написано
скопировано 838860800 байт (839 MB), 10.0764 c, 83.3 MB/c

real    0m10.078s
user    0m0.000s
sys     0m2.477s

мда...