Монтаж нескольких десятков тысяч FS

Монтаж нескольких десятков тысяч FS

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

  1. Каковы последствия монтажа нескольких десятков тысяч ФС?
  2. Есть ли ограничение на общее количество монтируемых FS?

решение1

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

В любом случае, отвечая на ваш второй вопрос: ответ напредыдущий вопрос о сбое серверасудя по всему, ограничение составляет около 1 миллиона точек монтирования (2^20) на тип файловой системы для последних ядер, и вы можете смонтировать максимум 256 различных типов файловых систем.

Для старых ядер (до 2.6) ограничение составляет 256 точек монтирования на файловую систему.


РедактироватьВ ответ на комментарии предлагаю следующее альтернативное решение:

Используйте XFS, который позволяет вам использоватьпроектная квота, форма квоты каталога.

Создайте отдельную файловую систему XFS, которая будет хранить все данные пользователей веб-сервиса. Смонтируйте ее, например, в /mnt/myWebService. Затем для каждого пользователя веб-сервиса создайте каталог проекта (например, /mnt/myWebService/username1и т. д.) и установите соответствующую квоту.

Инструкции по настройке каталогов проектов и квот можно найти, например, здесь:эта запись в блогеилиСтраница управления квотами RHEL XFS

решение2

Обратите внимание, что вам не нужно создавать пользователей (например, добавлять их в /etc/passwd или любую другую базу данных пользователей), вы можете установить владельца файла на любой uid без него. Просто убедитесь, что эти uid не пересекаются с локальными (или удаленными) пользователями, которые могут запускать процессы на этом сервере.

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

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

решение3

Для этого нет необходимости создавать миллиард файловых систем.

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

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

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