Привет, Хабр!  Сегодня поговорим об одном из наших инструментов, входящих в систему резервного копирования Кибер Бэкап (и в наш продукт для индивидуальных пользователей Кибер Бэкап Персональный). Его задача - обеспечить возможность восстановления образов машин на «неродное» железо. Инструмент, называемый Universal Restore, появился в нашем арсенале довольно давно, еще до того, как линейка ОС Windows научилась сама искать новые драйвера при переносе на новое железо, и был весьма востребован. Он позволял модернизировать или чинить рабочую машину без привязки к конкретным моделям железных составляющих, а также переносить виртуальные машины на физические шасси или наоборот. То есть, адаптировать образ машины под различные аппаратные и программные варианты окружения. Основная идея работы инструмента Universal Restore заключает в том, что в формируемый образ восстанавливаемой машины включается пакет драйверов универсальной адаптации, изменяя Windows Hardware Abstraction Layer (HAL.dll). Пакет универсальной адаптации — это, по сути, набор наиболее распространённых и универсальных драйверов для чипсета, графической подсистемы, контроллеров жёстких дисков и RAID-массивов, а также сетевых адаптеров, аудио-систем и других подсистем компьютера. При восстановлении машины из архива резервных копий с применением инструмента Universal Restore, агент анализирует предложенную аппаратную платформу и пытается найти подходящие драйверы, запустив процедуру автоматического поиска в заданном пользователем хранилище, либо предложив пользователю выбрать драйвер вручную. Если найти совместимый драйвер не получилось, процесс Universal Restore выведет ошибку с возможностью пропуска (для ОС Windows) или сделает запись в журнале (для ОС Linux). Подошедшие драйверы интегрируются в операционную систему, и при следующей её загрузке инициируется стандартная для ОС процедура установки драйверов для нового оборудования. К сожалению, технология Universal Restore не поддерживает работу с plug and play-драйверами. Universal Restore может применяться к операционным системам Linux с версией ядра 2.6.8 или более поздней. При работе с ОС семейства Linux, обновляется временная файловая система, известная как начальный электронный диск (initrd). Это обеспечивает загрузку операционной системы на новом оборудовании. Universal Restore добавляет к начальному электронному диску модули для нового оборудования (включая драйверы устройств). Обычно, все необходимые модули обнаруживаются в папке /lib/modules. Universal Restore может изменить конфигурацию загрузчика GRUB. Возможно, для этого потребуется обеспечить возможность загрузки системы, если структура томов новой машины отличается от исходной машины. Universal Restore никогда не изменяет ядро Linux. Исходя из сказанного выше, инструмент Universal Restore отлично подходит для следующих задач: восстановление машины на изменившейся по той или иной причине аппаратной части - например, в сценарии выхода из строя сервера и необходимости его оперативной замены на новый, но с другой конфигурацией; переноса образа машины с хостов виртуализации на физическую платформу с отличающейся конфигурацией или обратно; обеспечения независимого от унификации аппаратного шасси процесса клонирования машин. И, если новые ОС семейства «Windows» в последнее время научились справляться с проблемами изменившегося «железа» самостоятельно, то для ОС семейства Linux, стремительно завоёвывающего нишу корпоративных ОС, технология остаётся весьма актуальной, равно как и для развития виртуализации. Однако, в любом случае, следует помнить, что этот инструмент хорош, но не всемогущ, и даже такой магии есть предел. Если новая платформа радикально отличается от старой, велика вероятность, что даже с интеграцией корректных драйверов восстановленная ОС не загрузится корректно. Не стоит всё-таки требовать от хорошего инструмента невозможного результата. Подробнее об инструменте можно посмотреть в документации.   Инженер сопровождения ПО