Разрешение сообщения samba testparm: rlimit_max: rlimit_max (8192) ниже минимального предела Windows (16384)

Разрешение сообщения samba testparm: rlimit_max: rlimit_max (8192) ниже минимального предела Windows (16384)

testparm в samba может выдать следующее сообщение:

rlimit_max: rlimit_max (8192) below minimum Windows limit (16384) 

Похоже, эту проблему можно решить, увеличив максимальное количество открытых файлов с помощью этой команды Linux ulimit -n 16384.

Безопасно ли это изменение для типичного Samba-бокса? Где следует хранить эту настройку, чтобы она была доступна службе Samba при загрузке?

решение1

Во-первых, это просто предупреждение. В MS Windows количество обработчиков файлов на клиенте и сервере должно быть одинаковым, иначе вы увидите сообщение "слишком много открытых файлов" при, например, копировании файлов по сети. Более поздние версии Samba заботятся об этом самостоятельно.

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

 cat /proc/sys/fs/file-max

Велика вероятность, что ваши глобальные лимиты значительно превышают ваши локальные лимиты. Я думаю, что типичный лимит GNU/Linux находится в диапазоне 100k, я не смотрел очень давно. Вы можете временно изменить это значение, выполнив

sysctl -w fs.file-max=n

или навсегда, отредактировав /etc/sysctl.confи запустив sysctl -p.

Чтобы проверить локальные ограничения, переключитесь на соответствующего пользователя, например, samba, и запустите

ulimit -Hn
ulimit -Sn

Это покажет вам жесткие и мягкие ограничения для локального сеанса. Жесткий предел обеспечивается системой, а мягкий предел — локальной сессией. При необходимости вы можете увеличить локальный мягкий предел до глобального жесткого предела.

Вы можете временно изменить лимиты, запустив

ulimit -Hn n
ulimit -Sn m

или вы можете установить ограничения для пользователей через /etc/security/limits.confи вы даже можете указать, для каких пользователей какие ограничения применяются, например

samba soft nofile 16384
samba hard nofile 32768

Как всегда, man-страницы обоих файлов и команд предлагают гораздо больше информации. Надеюсь, это поможет.

решение2

Лимит берется из /etc/security/limits.conf.

вы показываете свой фактический лимит с помощью ulimit -n

Вы можете изменить его, отредактировав (или добавив) строку

*               -       nofile          16385

и перезагрузите параметры env (или выйдите из оболочки и войдите в нее снова).

решение3

Это просто, но я думаю, что многие люди тратят время на этот вопрос (как и я, ха-ха).

Нам нужно настроить предел параметраНЕТ ФАЙЛАв "/etc/security/limits.conf" или в другом альтернативном файле, например "/etc/security/limits.d/limit-file.conf", например:

*    -    nofile  16384

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

Если вы не хотите перезапускать сеанс, примените эту команду и решите эту проблему:

ulimit -n 16384

Надеюсь это поможет!

решение4

Опечатка в /etc/samba/smb.confфайле может привести к такой ошибке. Я следовал этомусвязьи пересмотрел свой, только чтобы обнаружить, что проблема была в опечатке: «yess» вместо «yess».

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