- Вопрос или проблема
- Ответ или решение
- Настройка SMB Share на MacOS с /etc/nsmb.conf: Проблемы с ограничением пропускной способности
- 1. Проблемы с конфигурацией /etc/nsmb.conf
- Убедитесь в правильных разрешениях
- Очистка кэша SMB
- Перезапуск службы SMB
- Проверка применения конфигурации
- 2. Убедитесь в отключении подписывания SMB
- Изменение глобальных настроек SMB
- Проверка настроек подписывания
- 3. Анализ и оптимизация производительности записи
- Тестирование с использованием другого сервера SMB
- Оптимизация конфигурации RAID
- Настройка буферизации I/O в macOS
- Каптация подробных логов
- 4. Использование iPerf для длительных тестов сети
- 5. Дополнительные шаги для отладки
- Включение подробного логирования SMB
- Проверка логов I/O диска
- Проверка производительности диска
- 6. Рассмотрите альтернативные протоколы
Вопрос или проблема
Экспериментирую с использованием старого оборудования для обслуживания 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 повторных передачи.
- Решите проблему с конфигурацией /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.
- Убедитесь, что подпись 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.
- Анализируйте и улучшайте производительность записи
Проблема с ограничением записи может быть вызвана реализацией 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 для анализа поведения на уровне пакетов во время непрерывной записи. Обратите внимание на всплески задержки или повторные передачи, которые могут указать на проблему.
- Используйте iPerf для расширенного сетевого тестирования
Если вы подозреваете узкое место в сети:
Запустите непрерывный тест iPerf как для загрузки, так и для скачивания:
bash
Копировать код
iperf3 -c -t 600
Мониторьте стабильность пропускной способности.
Если iPerf показывает стабильную производительность, проблема, вероятно, связана со стеком SMB или подсистемой дисков.
- Дополнительные шаги для отладки
Включите подробные журналы 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.