Допустим, я хочу иметь сервер с как можно большим количеством учетных записей пользователей. Сколько макс?
Мне нужны миллионы учетных записей пользователей. Это безумие? Я бы разместил десятки зеркал для балансировки нагрузки, и пользовательские данные будут храниться в общем хранилище с высокой доступностью, в то время как все остальные данные считаются непостоянными.
Теоретически у вас может быть столько пользователей, сколько поддерживает пространство идентификаторов пользователей. Чтобы определить это в конкретной системе, ознакомьтесь с определением uid_t
тип. Обычно это определяется как unsigned int
или int
Это означает, что на 32-битных платформах вы можете создать почти 4,3 миллиарда пользователей. На 64-битных платформах у вас может быть более 16e18 различных идентификаторов пользователей.
Однако другие ресурсы могут быть исчерпаны до того, как вы достигнете этого лимита, например дисковое пространство. Если вы создаете домашний каталог для каждого пользователя, то даже имея всего 1 МБ пространства для каждого пользователя, вам потребуется более 4 ПБ хранилища. Кроме того, большое количество пользователей, оставляющих процессы, работающие в фоновом режиме, планируют задания cron, открывают сеансы ftp и / или ssh, могут создать серьезную нагрузку на систему.
До тех пор, пока не будет исчерпано пространство UID. Современные системы используют 32-битные целые числа без знака, при этом 65535 и 4294967295 являются магическими значениями для «любого» / «неизвестного» и т. Д., Поэтому есть место для 4294967294 одновременно работающих разных пользователей. Старые системы могут по-прежнему отображать 16-разрядные целые числа без знака.
Другие ответы буквально ответили на вопрос OP относительно конкретных ограничений. Учитывая природу научной фантастики как долгосрочного ориентира, я думаю, что важно указать на очень важную оговорку в отношении подхода, который вы рассматриваете.
Вы хотеть использовать службу каталогов для управления учетными записями пользователей в этом масштабе. Проблема в том, что службы каталогов [например, OpenLDAP, Active Directory и др.] Были разработаны для.
Использование «стандартных» [1] пользовательских инструментов Unix для управления более чем горсткой локальных учетных записей пользователей - это проторенный путь, чреватый болью, не будет очень легко масштабироваться и, учитывая описание вашей проблемы, по всей вероятности, приведет к значительному изменение архитектуры выбранного решения, когда оно фактически не масштабируется по горизонтали с несколькими серверами.
[1] Обычно они работают очень похоже, но точные заклинания различаются от платформы к платформе, иногда различаются даже в аналогичных старых дистрибутивах Linux и, конечно же, регулярно меняются с выпусками версий ОС. Пусть покупатель будет бдителен.
Как указано выше, теоретически вы ограничены размером UID unsigned int, но, скорее всего, в настоящее время будут ограничены ресурсами до достижения указанного предела.