Назад | Перейти на главную страницу

Ограничение размера каталога

В Linux можно ограничить размер раздела, например, с помощью квоты. Но существует ли способ ограничить размер каталога? Например, у меня есть каталог, скажем /mnt/foo/bar, который не является разделом (например, не в df результат). Является ли это возможным? Нет mkfs возможно в этом каталоге.

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

  • Создайте файл для использования в качестве файловой системы, например.
    • fallocate -l 100M disk.img (это не всегда совместимо с базовой FS.)
    • dd if=/dev/zero of=disk.img count=512k
  • создать файловую систему на образе диска
    • mkfs disk.img
  • смонтировать образ
    • mount -o loop disk.img /path/to/mount/point (при желании вы также можете включить квоты)

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

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

Рассмотрим следующую последовательность событий:

  • Администратор настраивает систему с квотой 1 ГБ на домашний каталог
  • user1 запустить программу, которая создает файл журнала в ~user1
  • Если размер файла журнала составляет 1 МБ user2 создает жесткую ссылку в ~user2
  • user2 добавляет 900 МБ других файлов в ~user2
  • user1 добавляет 900 МБ данных в файл журнала
  • user1 удаляет файл журнала из ~user1

Нет ни одной из вышеперечисленных операций, вы могли бы ожидать сбоя из-за ограничений квоты. Но результат таков user2 в итоге намного превышает квоту.