Настройка SMB-ресурсов на MacOS с помощью /etc/nsmb.conf – проблемы с ограничением записи

Вопрос или проблема

Экспериментирую с использованием старого оборудования для обслуживания RAID на 8 дисков через сеть 10gbe, используя MacPro 2019 года в качестве сервера. В данный момент это устройство работает на Monterey.

Начальные тесты показывают хорошие результаты для клиента MacStudio с использованием адаптера Thunderbolt 10gbe. Я вижу скорость чтения/записи около 800/900 Мбит/с.

Однако при непрерывной нагрузке, копируя 1 ТБ (и проверяя) по сети, я начинаю замечать проблемы с пропускной способностью; передача достигает вышеуказанных скоростей, затем снижается до 12/24 Мбит/с. Похоже, что это касается только записи, скорости проверки остаются высокими.

Я тестировал с iPerf3 в течение длительного времени, и сеть, кажется, в порядке.

Я также пытался настроить SMB, используя /etc/nsmb.conf на сервере и клиенте. Однако, похоже, что macOS не применяет эти настройки к общему ресурсу. Даже простая настройка не применяется, например, отключение подписи. Я хотел протестировать отключение любого из этих накладных расходов, чтобы проверить, повлияет ли это на проблему с ограничением.

На клиенте Ventura и сервере Monterey:

[default]
signing_required=no

При проверке общего ресурса с помощью smbutil statshares -a подпись все еще включена, даже после перезагрузки обеих систем.

Может ли кто-то пролить свет на это? Есть ли вторая настройка, которая имеет приоритет над /etc/nsmb.conf?

Я проверил домашнюю папку на наличие чего-либо, связанного с smb, и там ничего нет. Пользователь, подключающийся к общему ресурсу SMB, является отдельной (непривилегированной) учетной записью на сервере.

statshares:

Archive
                              SERVER_NAME                   X.X.X.X
                              USER_ID                       501
                              SMB_NEGOTIATE                 SMBV_NEG_SMB1_ENABLED
                              SMB_NEGOTIATE                 SMBV_NEG_SMB2_ENABLED
                              SMB_NEGOTIATE                 SMBV_NEG_SMB3_ENABLED
                              SMB_VERSION                   SMB_3.0.2
                              SMB_ENCRYPT_ALGORITHMS        AES_128_CCM_ENABLED
                              SMB_ENCRYPT_ALGORITHMS        AES_128_GCM_ENABLED
                              SMB_ENCRYPT_ALGORITHMS        AES_256_CCM_ENABLED
                              SMB_ENCRYPT_ALGORITHMS        AES_256_GCM_ENABLED
                              SMB_CURR_ENCRYPT_ALGORITHM    OFF
                              SMB_SHARE_TYPE                DISK
                              SIGNING_SUPPORTED             TRUE
                              SIGNING_REQUIRED              TRUE
                              EXTENDED_SECURITY_SUPPORTED   TRUE
                              UNIX_SUPPORT                  TRUE
                              LARGE_FILE_SUPPORTED          TRUE
                              OS_X_SERVER                   TRUE
                              FILE_IDS_SUPPORTED            TRUE
                              FILE_LEASING_SUPPORTED        TRUE
                              MULTI_CREDIT_SUPPORTED        TRUE
                              DIR_LEASING_SUPPORTED         TRUE
                              ENCRYPTION_SUPPORTED          TRUE
                              SIGNING_ON                    TRUE

Кроме того, я захватил сетевой трафик и проверил на наличие повторных передач с помощью Wireshark. Я не эксперт в этой области, но за 30 минут было всего 3 повторных передачи.

  1. Решите проблему с конфигурацией /etc/nsmb.conf
    Файл /etc/nsmb.conf используется для настройки поведения SMB, но macOS не всегда применяет эти настройки как ожидается. Это особенно актуально, когда службы SMB на уровне системы переопределяют настройки, указанные пользователем. Вот как убедиться, что /etc/nsmb.conf применяется:

Убедитесь, что установлены правильные разрешения
Проверьте, что файл /etc/nsmb.conf имеет правильное владение и разрешения:

bash
Копировать код
sudo chown root:wheel /etc/nsmb.conf
sudo chmod 644 /etc/nsmb.conf
Очистите кэш SMB
macOS может кэшировать настройки SMB. Очистите кэш, чтобы убедиться, что изменения применены:

bash
Копировать код
sudo killall -HUP cfprefsd
Перезапустите службы SMB
Перезапустите службы SMB после изменения /etc/nsmb.conf:

bash
Копировать код
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.smbd.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smbd.plist
Проверьте применение конфигурации
Используйте инструмент smbutil, чтобы проверить, была ли применена конфигурация:

bash
Копировать код
smbutil statshares -a
Если подпись все еще включена, это говорит о том, что глобальные или по-долевые конфигурации macOS могут переопределять /etc/nsmb.conf.

  1. Убедитесь, что подпись SMB отключена
    Подпись SMB может ввести накладные расходы, которые влияют на производительность. Если изменения в /etc/nsmb.conf не применяются, вы можете попробовать отключить подпись на более низком уровне:

Измените глобальные настройки SMB
Используйте следующую команду, чтобы отключить подпись на сервере:

bash
Копировать код
sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server SigningRequired -bool FALSE
Затем перезапустите службы SMB:

bash
Копировать код
sudo launchctl stop com.apple.smbd
sudo launchctl start com.apple.smbd
Проверьте настройки подписи
После применения изменений подтвердите статус с помощью:

bash
Копировать код
smbutil statshares -a
Ищите флаг SIGNING_REQUIRED. Он должен показывать FALSE.

  1. Анализируйте и улучшайте производительность записи
    Проблема с ограничением записи может быть вызвана реализацией SMB в macOS, задержкой RAID или другими узкими местами. Вот как провести диагностику:

Протестируйте с другим сервером SMB
Чтобы исключить ограничения сервера SMB в macOS, настройте другой сервер SMB (например, Samba на Linux или FreeNAS) и протестируйте производительность записи.

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

Отрегулируйте буферизацию I/O в macOS
Иногда macOS ограничивает I/O из-за давления на память или настроек буфера. Вы можете настроить их:

Увеличьте размер буфера в /etc/nsmb.conf:
plaintext
Копировать код
[default]
streams=yes
nbss_keepalive=10
rcv_bufsize=65536
snd_bufsize=65536
signing_required=no
Захватите подробные журналы
Используйте Wireshark или tcpdump для анализа поведения на уровне пакетов во время непрерывной записи. Обратите внимание на всплески задержки или повторные передачи, которые могут указать на проблему.

  1. Используйте iPerf для расширенного сетевого тестирования
    Если вы подозреваете узкое место в сети:

Запустите непрерывный тест iPerf как для загрузки, так и для скачивания:

bash
Копировать код
iperf3 -c -t 600
Мониторьте стабильность пропускной способности.

Если iPerf показывает стабильную производительность, проблема, вероятно, связана со стеком SMB или подсистемой дисков.

  1. Дополнительные шаги для отладки
    Включите подробные журналы SMB
    Включите детализированное ведение журнала, чтобы выявить потенциальные проблемы с SMB:

bash
Копировать код
sudo log config –mode “private_data:on”
sudo log stream –predicate ‘process == “smbd”‘ –info
Проверьте журналы дискового ввода-вывода
Используйте fs_usage для мониторинга дискового ввода-вывода во время передачи:

bash
Копировать код
sudo fs_usage -w | grep smb
Проверьте производительность диска
Проведите тестирование скорости записи локального RAID независимо от SMB с помощью инструментов, таких как dd:

bash
Копировать код
dd if=/dev/zero of=/path/to/raid/testfile bs=1m count=1024
6. Рассмотрите альтернативные протоколы
Если проблемы с SMB продолжаются, рассмотрите возможность использования NFS или AFP для вашего случая использования, так как macOS изначально поддерживает эти протоколы с потенциально лучшей производительностью.

Ответ или решение

Настройка SMB Share на MacOS с /etc/nsmb.conf: Проблемы с ограничением пропускной способности

Если вы занимаетесь настройкой сервера на базе MacPro под управлением Monterey и используете его для обслуживания 8-байтового RAID массива через 10 Гбит/с, вы, вероятно, столкнетесь с проблемами по снижению пропускной способности при длительных нагрузках. В этой статье мы рассмотрим, как эффективно настроить SMB и решить проблемы с ограничением пропускной способности, которые могут возникнуть в вашем окружении.

1. Проблемы с конфигурацией /etc/nsmb.conf

Файл /etc/nsmb.conf используется для настройки поведения SMB, однако macOS иногда не всегда применяет изменения, сделанные в этом файле, особенно если системные настройки или настройки уровня конкретного ресурса имеют приоритет.

Убедитесь в правильных разрешениях

Проверьте, что файл /etc/nsmb.conf имеет правильные права доступа и принадлежность:

sudo chown root:wheel /etc/nsmb.conf
sudo chmod 644 /etc/nsmb.conf

Очистка кэша SMB

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

sudo killall -HUP cfprefsd

Перезапуск службы SMB

После внесения изменений в /etc/nsmb.conf перезапустите службы SMB:

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.smbd.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smbd.plist

Проверка применения конфигурации

Используйте утилиту smbutil для проверки, были ли применены изменения:

smbutil statshares -a

Если SIGNING_REQUIRED по-прежнему активен, это может означать, что глобальные или конкретные для ресурса настройки переопределяют настройки из /etc/nsmb.conf.

2. Убедитесь в отключении подписывания SMB

Подписывание SMB может вносить дополнительные задержки, что негативно сказывается на производительности. Если изменения в /etc/nsmb.conf не применяются, попробуйте отключить подписывание на более низком уровне:

Изменение глобальных настроек SMB

Выполните следующую команду для отключения подписывания на сервере:

sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server SigningRequired -bool FALSE

Затем перезапустите службы SMB:

sudo launchctl stop com.apple.smbd
sudo launchctl start com.apple.smbd

Проверка настроек подписывания

После внесения изменений подтвердите статус, использовав:

smbutil statshares -a

Флаг SIGNING_REQUIRED должен показывать FALSE.

3. Анализ и оптимизация производительности записи

Проблемы с задержкой записи могут быть вызваны реализацией SMB на macOS, задержкой на RAID-диске или другими узкими местами. Вот несколько рекомендаций для диагностики и улучшения производительности записи:

Тестирование с использованием другого сервера SMB

Чтобы исключить ограничения сервера SMB на macOS, настройте другой SMB-сервер (например, Samba на Linux или FreeNAS) и протестируйте производительность записи.

Оптимизация конфигурации RAID

Убедитесь, что ваш RAID нацелен на оптимизацию последовательных записей. Если вы используете программный RAID, проверьте наличие кэширования записи и оптимизацию размера полосы.

Настройка буферизации I/O в macOS

macOS иногда ограничивает I/O из-за недостатка памяти или настроек буферизации. Можно увеличивать размер буфера в /etc/nsmb.conf:

[default]
streams=yes
nbss_keepalive=10
rcv_bufsize=65536
snd_bufsize=65536
signing_required=no

Каптация подробных логов

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

4. Использование iPerf для длительных тестов сети

Если есть подозрения на узкое место сети:

Запустите непрерывное тестирование iPerf для загрузки и выгрузки:

iperf3 -c <server_ip> -t 600

Мониторьте стабильность пропускной способности.

5. Дополнительные шаги для отладки

Включение подробного логирования SMB

Включите детализированное логирование для выявления потенциальных проблем:

sudo log config --mode "private_data:on"
sudo log stream --predicate 'process == "smbd"' --info

Проверка логов I/O диска

Используйте fs_usage для мониторинга I/O дисков во время передачи данных:

sudo fs_usage -w | grep smb

Проверка производительности диска

Проверьте локальные скорости записи RAID независимо от SMB с помощью инструментов, таких как dd:

dd if=/dev/zero of=/path/to/raid/testfile bs=1m count=1024

6. Рассмотрите альтернативные протоколы

Если проблемы с SMB остаются нерешенными, рассмотрите использование NFS или AFP для вашей рабочей нагрузки, так как macOS нативно поддерживает эти протоколы с потенциально лучшей производительностью.

Проведение этих шагов может помочь вам устранить проблемы с ограничением пропускной способности и оптимизировать работу SMB-сервера на macOS.

Оцените материал
Добавить комментарий

Капча загружается...