Поскольку существует проблема выхода дисков сервера из строя, нужно реализовать модуль, позволяющий просматривать параметры Smart для дисков.
Написал модуль, реализующий интерфейс просмотра параметров smart. Требуется некоторая доработка.
Пришлось переписать большую часть кода. Раньше для получения списка дисков использовалась команда smartctl --scan, однако выяснилось, что она не определяет USB-диски. Теперь модуль реализован с помощью udev. Модуль умеет ловить подключение дисков на лету, выставлять их на шину и удалять отключенные. Можно просмотреть SMART-атрибуты диска и его здоровье (smartctl -H <device>). Так же имеется сигнал, оповещающий об изменениях в списке дисков. Выборка осуществляется по фильтру имен устройств Сейчас поддерживается "sd[a-z]+" и "hd[a-z]+". Требуется доработка для того, чтобы при постановке объектов на учет проверять действительную работоспособность SMART на них, потому что сейчас, например, при подключении флешки, любой из методов проверки на нее возвращает ошибку. Такого быть не должно. Udev не знает специальных флагов SMART, поэтому придется проверять это отдельно.
Создание внутренних объектов класса перенесено из initService() в конструктор. Первый запуск теперь не вызывает сигналов о добавлении диска.
ДОбавил простую проверку на поддкржку смарта: smartctl /path/to/device.