Моя цель - автоматизировать процедуру резервного копирования на небольшом OpenSolaris NAS (под управлением OmniOS + napp-it на HP Microserver N54L) в сочетании с дисками SATA.
Я установил один из тех лотков для жестких дисков 5,25 "-> 3,5", которые содержат простую объединительную панель SATA или SAS / SATA с одним портом, кнопкой питания и несколькими светодиодами (питание и активность жесткого диска). Для резервного копирования нескольких жестких дисков (по одному каждую неделю по очереди, хранящихся вне офиса) я написал сценарий, который использует zfs send/recv
для сброса всего основного пула, включая все снимки (обновление только новых блоков). Этот сценарий отлично работает, когда я запускаю его вручную.
Я хотел бы еще больше автоматизировать этот процесс, потому что к NAS не подключена прямая VGA или последовательная консоль, и вставлять диск, возвращаться к настольной системе, входить в веб-интерфейс или SSH и запускать сценарий вручную утомительно. . Запустить по времени через задание cron нельзя, потому что дни резервного копирования могут незначительно отличаться (забыли диск, праздники и т. Д.). Таким образом, резервное копирование должно начаться сразу после установки диска.
В скрипте я использую cfgadm
подключить + настроить, а затем отключить + отключить диски. Если я только вставляю диск, и он раскручивается, я не могу узнать, что диск там. Возможные решения, которые я уже рассмотрел:
cfgadm -f -c connect
и проверка результатов на наличие ошибок. Не очень изящно./var/adm/messages
каждые x минут и поиск пути к устройству или AHCI. Невозможно, потому что сообщения записываются, только если устройство подключено вручную. iostat -En
. Отображает диски, но мне нужно найти точные серийные номера, потому что он не отображает информацию о портах. Также нужно делать каждые x минут.cfgadm
с синтаксисом SELECT для фильтрации статуса розетки. Не работает, потому что прошивка ничего не срабатывает (может быть, объединительная плата для этого слишком дешевая).Думаю, мне понадобятся две вещи:
Это возможно? Если нет, что бы вы предложили в качестве альтернативы?
Для тех, у кого в будущем возникнут похожие проблемы:
syseventadm
как подробно описано в мой собственный ответ для запуска сценария резервного копирования, когда диск переходит в оперативный режим.WARNING: ahci0: ahci_port_reset port 5 the device hardware has been initialized and the power-up diagnostics failed
сообщения в системных журналах).Встроенный Sata / AHCI поддерживает горячее подключение, но по умолчанию он отключен в OmniOS: Чтобы включить, добавьте следующую строку в / etc / system
установить sata: sata_auto_online = 1
Я добавлю этот ответ, чтобы задокументировать то, что я узнал о событиях мониторинга (также может быть полезно в других случаях):
Пытаясь задать вопрос по unix / linux.SE, заметил полезная ветка об использовании udev
в Linux для отслеживания событий ядра. В качестве эквивалентных инструментов для Solaris я наткнулся на предложение использовать syseventadm
который отслеживает системные события и запускает определенные действия / сценарии.
Сначала я не нашел ничего, кроме копий страницы руководства и некоторых дискуссий о проблеме с гипервизором Xen, но поддерживаемые события перечислены в /usr/include/sys/sysevent/eventdefs.h
(или онлайн по адресу /usr/src/uts/common/sys/sysevent/eventdefs.h
в различных репозиториях) и другие файлы в этом каталоге.
Используя первый пример из man-страницы и syseventadm add -c EC_zfs -s ESC_ZFS_scrub_start /path/to/script.sh \$pool_name
Я успешно протестировал примерное событие, которое запускается каждый раз при запуске скраба и возвращает имя пула в качестве первого аргумента.
После некоторых проб и ошибок я нашел правильный способ отслеживать новые добавленные диски:
syseventadm add -c EC_dev_add -s disk /path/to/script.sh \$version \$dev_name \$phys_path \$driver_name \$instance
syseventadm restart
Все после disk
не является обязательным и напрямую передается скрипту в качестве аргументов $1
к $5
.
Теперь, как только добавленный диск будет подключен к сети, сценарий будет запущен, и сценарий сможет проверить правильность идентификатора устройства (необязательно), а затем импортировать пул по имени.
Интересный вопрос ... что-то вроде научного эксперимента, так как я бы, вероятно, просто использовал USB или отправил удаленно или поставил это по расписанию ...
Но в вашем случае я бы вообще не пытался «искать» диск из cfgadm
или способом анализа журнала. Это не масштабируется.
Я бы просто назвал съемный диск уникальным именем пула ZFS и логикой сценария вокруг периодического zpool import
. В ZFS под Linux процесс импорта пула - это системная служба / демон. Но периодически запускать его бесплатно. Он обнаружит диск и связанный с ним пул.
Я надеюсь ты экспорт пул, когда вы закончите с резервной копией. Это касается ситуаций, когда диск остается на сервере в течение нескольких циклов резервного копирования. Как оставить резервную ленту в приводе.