Я управляю примерно девяноста серверами Dell, распределенными по всему миру, которые в настоящее время находятся в процессе обновления с Ubuntu 16.04LTS xenial до Ubuntu 20.04LTS focus.
Блок питания каждого сервера защищен ИБП APC SmartUPS, подключенным через USB, и контролируется гайкой для корректного отключения в случае сбоя питания.
Это работает довольно хорошо на серверах, на которых все еще работает xenial.
На тех, кто работает с фокусом, часто возникает проблема с USB-подключением к ИБП, которое не появляется после перезагрузки. Конкретно:
При запуске системы ядро не обнаруживает ИБП и вместо этого пишет в /var/log/syslog:
ядро: [2.239216] usb usb1-port4: не удалось выделить usb_device
упсмон
периодически жалуется в syslog:
upsmon[1105]: Ошибка опроса ИБП [ups@localhost] — драйвер не подключен
SmartUPS не отображается в выходных данных lsusb
:
a-schmidt@где-то:~$ lsusb
Шина 002 Устройство 001: ID 1d6b:0003 Корневой концентратор Linux Foundation 3.0
Шина 001 Устройство 004: ID 1604:10c0 Tascam
Шина 001 Устройство 003: ID 1604:10c0 Tascam
Шина 001 Устройство 002: ID 1604:10c0 Tascam
Шина 001 Устройство 001: ID 1d6b:0002 Корневой концентратор Linux Foundation 2.0
Бег запуск sudo upsdrvctl
вручную сообщает, что не может найти устройство:
a-schmidt@somewhere:~$ запуск sudo upsdrvctl
Сетевые инструменты ИБП - контроллер драйвера ИБП 2.7.4
Network UPS Tools — универсальный драйвер HID 0.41 (2.7.4)
Драйвер связи USB 0.33
Подходящие ИБП HID не найдены
Драйвер не запустился (состояние выхода = 1)
Выполнение сброса шины USB с помощью последовательности команд:
эхо '0000:00:14.0' | sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind
эхо '0000:00:14.0' | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind
помогает каждый раз. ИБП обнаружен, о чем свидетельствует сообщение /var/log/syslog:
ядро: [20025.662161] usb 1-4: новое полноскоростное USB-устройство номер 2 с использованием xhci_hcd
ядро: [20025.838902] usb 1-4: найдено новое USB-устройство, idVendor = 051d, idProduct = 0003, bcdDevice = 0,01
ядро: [20025.838907] usb 1-4: Новые строки USB-устройства: Mfr=1, Product=2, SerialNumber=3
ядро: [20025.838910] usb 1-4: Продукт: Smart-UPS_1500 FW:UPS 04.1 / ID=1018
ядро: [20025.838913] usb 1-4: Производитель: American Power Conversion
Он появляется в lsusb
, и запуск upsdrvctl
успешно подключается:
a-schmidt@где-то:~$ lsusb
Шина 002 Устройство 001: ID 1d6b:0003 Корневой концентратор Linux Foundation 3.0
Шина 001 Устройство 002: ID 051d:0002 Источник бесперебойного питания American Power Conversion
Шина 001 Устройство 005: ID 1604:10c0 Tascam
Шина 001 Устройство 004: ID 1604:10c0 Tascam
Шина 001 Устройство 003: ID 1604:10c0 Tascam
Шина 001 Устройство 001: ID 1d6b:0002 Корневой концентратор Linux Foundation 2.0
a-schmidt@somewhere:~$ запуск sudo upsdrvctl
Сетевые инструменты ИБП - контроллер драйвера ИБП 2.7.4
Network UPS Tools — универсальный драйвер HID 0.41 (2.7.4)
Драйвер связи USB 0.33
Использование поддрайвера: APC HID 0.96
упсмон
перестает жаловаться и все снова в порядке.
В чем может быть причина такого поведения и как это исправить?