У меня есть следующие сценарии:
Один раздел смонтирован как / с большим объемом дискового пространства.
Существует несколько каталогов (/ pg / tbs1, / pg / tbs2, / pg / tbs3 и т. Д.), И я хотел бы ограничить общий размер этих каталогов.
Один из вариантов - создать несколько больших файлов, а затем выполнить их mkfs и смонтировать через loopback, а затем установить квоту, но это делает расширение немного проблематичным.
Есть ли другой способ заставить квоту работать на каталог?
Если вы вынуждены использовать ext3, то использование LVM, вероятно, будет вашим лучшим решением. Создайте новую файловую систему для каждого проекта. Это будет выглядеть примерно так:
# Create a 10g filesystem for "project1" in volume group "vg0"
lvcreate -L 10g -n project1 vg0
# Create an ext3 filesystem.
mke2fs -j /dev/vg0/project1
# Mount it (obviously you would want this in /etc/fstab)
mount /dev/vg0/project1 /projects/project1
Расширять файловые системы проекта очень просто:
# Add 2GB to the volume.
lvextend -L +2g /dev/vg0/project1
# Grow the filesystem.
resize2fs /dev/vg0/project1
Если вы не полагаетесь на разрешения группы, вы можете использовать разные группы UNIX для каждого «каталога квот», а затем установить бит sgid для каждого каталога (таким образом, созданные файлы и каталоги будут принадлежать к группе каталога вместо основной группы. пользователя-создателя) и использовать групповые квоты.
Да. Посмотрите на файловую систему XFS и квоту проекта. Другая файловая система не поддерживает эту функцию.
Я действительно хотел сделать это какое-то время, потому что я не хотел делать системных пользователей для всех моих пользователей виртуальной почты. Файловые системы ZFS с квотами были бы замечательными, а zfs-fuse прогрессирует каждый день, но я хотел очень легкое решение. Наконец, я решил написать файловую систему FUSE, которую я мог бы смонтировать как слой поверх другой файловой системы (на самом деле будет работать любой базовый каталог). В нем есть служебная программа для управления квотами, которую можно легко создать в сценариях, а поскольку значения квот просто хранятся в виде xattrs в каталогах или файлах, одна точка монтирования может обеспечивать поддержку произвольного количества квот.
Некоторое время я тестировал его на почтовом сервере и недавно решил, что он достиг подросткового возраста и готов к выпуску в продажу. Если вам интересно, вы можете проверить это на сайте http://code.google.com/p/fusequota/. Буду очень признателен за любые отзывы.
Новая файловая система для каждой общей папки - ИМХО излишество. Просто создайте новую группу для каждой общей папки, установите группу владельцев общей папки для этой группы, установите липкий бит для группы (чтобы каждый новый файл и каталог имел эту группу в качестве владельца), а для разрешений на файлы и папки используйте списки acl. Затем установите квоты для этих групп.
Я не знаю ни одного метода для установки котировок для каждого каталога.
Но по вашей идее создания файловых систем ограниченного размера. Это может быть место, где lvm было бы хорошим решением.
Вы можете сделать резервную копию / переустановить и использовать lvm, выделяя только минимальный объем пространства, необходимый для ваших логических томов. Очень легко расширить lvm логические тома.