Вопрос или проблема
На одном из наших серверов мы иногда теряем соединение с подключенным устройством хранения, и переподключение не удается.
В журнале ядра говорится:
CIFS: Попытка монтирования //XXXX
Диалект не указан при монтировании. По умолчанию был изменен на более безопасный диалект, SMB2.1 или более поздний (например, SMB3), вместо CIFS(SMB1). Для использования менее безопасного диалекта SMB1 для доступа к старым серверам, которые не поддерживают SMB3 (или SMB2.1), укажите vers=1.0 при монтировании.
CIFS VFS: Ошибка монтирования CIFS: iocharset utf8 не найден
В /etc/fstab
iocharset=utf8 определен, поэтому понятно, что это необходимо.
Мы следовали ответу здесь https://askubuntu.com/questions/519796/unable-to-mount-cifs-with-iocharset-utf8 и установили недостающий пакет, после чего мы снова смогли подключиться. apt-install linux-modules-extra-$(uname -r)
.
Хотя вышеуказанное временно решает проблему, через несколько недель переподключение снова не удается. Возможно, сервер перезагружается впервые после обновления других пакетов, но я пока не смог должным образом сопоставить все факты. Как я могу решить проблему с кодировкой в долгосрочной перспективе, не прибегая к ручному обновлению пакета каждые несколько недель?
Ответ или решение
Ваша ситуация с недоступностью монтирования сетевого хранилища CIFS из-за отсутствующей кодовой страницы iocharset utf8 — это распространенная проблема, особенно в тех случаях, когда система регулярно обновляется или пакет монтирования CIFS конфигурируется некорректно. Для решения этого вопроса в долгосрочной перспективе необходимо разобраться в корневых причинах проблемы и принять коррективные меры для обеспечения стабильности системы.
Теория
Протокол CIFS и кодировки: Протокол CIFS (Common Internet File System) является более старым протоколом для обмена файлами в сетях, который эволюционировал в протокол SMB (Server Message Block). Одной из ключевых особенностей этого протокола является способность использовать различные кодировки для обеспечения корректной интерпретации имен файлов между различными файловыми системами. В вашем случае использование кодировки iocharset=utf8 обеспечивает корректное отображение и интерпретацию символов.
SMB диалекты: Различные версии (диалекты) SMB обеспечивают разную степень безопасности и функциональности. Начиная с SMB 2.1 и выше устраняется множество уязвимостей, присущих более ранним версиям.
Модуль ядра cifs.ko: Для работы с CIFS в Linux используется модуль ядра cifs.ko. Этот модуль может быть частью отдельного пакета (в вашем случае linux-modules-extra), что в некоторых системах по умолчанию может отсутствовать.
Пример
Вы уже сталкивались с проблемой, когда после обновлений или перезагрузки сервера монтирование не удавалось, из-за чего приходилось вручную устанавливать linux-modules-extra. Это временное решение, которое, как вы заметили, требует повторного применения после событий, включая обновления ядра или изменения в конфигурации системы.
Применение
Для обеспечения стабильного подключения к хранилищу CIFS рассмотрите следующие рекомендаций:
-
Автоматизация установки необходимых модулей:
- Убедитесь, что все обновления, включая обновления ядра, сопровождаются установкой соответствующих модулей. Используйте скрипты на базе shell или cron для автоматической проверки и установки модулей каждый раз, когда обновления норм появляют изменения в ядре:
#!/bin/bash if ! dpkg -s linux-modules-extra-$(uname -r) > /dev/null; then sudo apt-get install linux-modules-extra-$(uname -r) fi
- Убедитесь, что все обновления, включая обновления ядра, сопровождаются установкой соответствующих модулей. Используйте скрипты на базе shell или cron для автоматической проверки и установки модулей каждый раз, когда обновления норм появляют изменения в ядре:
-
Стандартизация версии SMB:
- Согласно логам, вы используете различные версии протокола SMB. Я рекомендую стандартизировать её, фиксируя конкретную версию (например, vers=3.0) в /etc/fstab для повышения стабильности и безопасности соединения.
-
Изменение подхода к обновлениям:
- Рассмотрите возможность тщательного управления обновлениями. Это может быть реализовано через FAI (full automatic installation) системы, где вы контролируете пакеты, которые устанавливаются или обновляются. Задайте расписание обновлений так, чтобы можно было отслеживать и тестировать последствия до их применения в производственной среде.
-
Мониторинг и логирование:
- Внедрите систему мониторинга и логирования всех изменений, связанных с обновлением системы и конфигурацией, чтобы четко отслеживать, после каких событий возникает проблема. Это поможет выявить закономерности и причины, а также предоставит проактивный подход к управлению.
-
Связь с командой:
- Информируйте вашу команду о найденных решениях и создавайте документацию по устранению неполадок, принятым мерам и планам действий в случае сбоя. Это не только ускорит устранение проблемы в будущем, но и повысит общий уровень осведомленности команды.
Заключая, внедрение указанных выше мер обеспечит более стабильную работу сетевого хранилища и минимизирует необходимость повторного вмешательства со стороны вашей команды. Принятие активных мер, таких как автоматизация и мониторинг, позволят быстро реагировать на изменения и предотвращать проблемы до их возникновения.