как ограничить размер каталога без квоты (vserver)?

как ограничить размер каталога без квоты (vserver)?

Надеюсь, вопрос не слишком общий.

Поскольку у меня vserver (Ubuntu 12.04), я не могу ограничить размер каталогов с помощью квот. Интересно, есть ли другие возможности добиться этого.

Единственный метод, который я мог себе представить, это комбинация inotify + config-file, где указан максимальный размер + команда, которая, ну, делает файл пустым или удаляет его или что-то в этом роде. Речь идет не об ограничении пользовательских каталогов, а об автоматически записываемых файлах, таких как logfiles.
Я знаю, что это не лучший способ, но единственный, который, я думаю, сработает. У вас есть лучшие?

решение1

Это не очень хорошо масштабируется для большого количества квот, но одним из простых решений было бы просто создать еще одну файловую систему с фиксированным размером, который вам нужен.

Если у вас нет свободного блочного хранилища, то вы можете использовать петлевое устройство, указывающее на разреженный файл. Разреженный файл не будет потреблять хранилище, пока он не будет использоваться, но если вы создадите файловую систему поверх этого разреженного файла, то будет казаться, что у него есть фиксированный максимальный объем доступного хранилища. Однако увеличение/уменьшение будет несколько затруднено. Самым безопасным методом будет создание нового разреженного файла + файловой системы большего/меньшего размера, а затем перенос содержимого старого файла.

решение2

Если проблема конкретно в файлах журнала, используйте демон syslog, который поддерживает указание максимального размера файла. Я думаю, что rsyslogd делает это. Если это невозможно, есть ряд программ logrotate, которые могут ротировать журналы, когда они достигают максимального размера файла, и хранить только заданное количество журналов, так что общий размер остается в пределах ограничений.

Связанный контент