Резервное копирование важных данных — это хорошо.
А что, если работу нужно продолжать немедленно, и каждая минута на счету? Мы в Acronis решили проверить, насколько можно максимально быстро решить проблему запуска системы.
И это первый пост из серии Active Restore, в которой я расскажу, как мы начинали проект совместно с Университетом Иннополис, какое решение нашли и над чем работаем сегодня.
Подробности под катом.
Привет! Меня зовут Даулет Тумбаев, и сегодня я хотел бы поделиться с вами своим опытом разработки системы, ускоряющей аварийное восстановление.
Рассказывать обо всем пути развития проекта начнем немного издалека.
В настоящее время я работаю в Acronis, но также являюсь выпускником Университета Иннополис, где я закончил магистерскую программу по управлению разработкой программного обеспечения (известную как MSIT-SE).
Иннополис — молодой университет, а учебная программа еще моложе.
Но оно построено на учебной программе Университета Карнеги-Меллон, в работу которого входит такая тема, как промышленные проекты.
Цель индустриального проекта – погрузить студента в реальное развитие и закрепить полученные знания на практике.
Для этого вуз сотрудничает с такими компаниями, как Яндекс, Acronis, МТС и десятками других (всего по состоянию на 2018 год у вуза было 144 партнера).
В ходе сотрудничества компании предлагают вузу свои направления работы, а студенты выбирают один из проектов, который ближе их интересам и уровню подготовки.
Буквально два года назад я еще был «по ту сторону баррикад» и работал студентом над другим проектом Acronis. Но на этот раз я стал техническим консультантом для студентов на стороне компании и предложил Иннополису проект Active Restore. Сама идея Active Restore была сформулирована командой Kernel компании Acronis, но разработка решения началась совместно с Университетом Иннополис.
Активное восстановление – зачем оно нужно?
Традиционно аварийное восстановление работает по стандартной схеме.После проблем с компьютером вы заходите в веб-интерфейс какой-нибудь системы резервного копирования, например, Acronis True Image, и нажимаете большую кнопку «восстановить».
Далее нужно подождать N минут и только после этого можно продолжать работу.
Проблема в том, что это число N, также известное как RTO (recovery time Objective), допустимое время восстановления, может быть весьма впечатляющим и зависит от скорости соединения (если восстановление происходит из облака), размера жесткого диска вашей машины.
и ряд других факторов.
Можно ли его уменьшить? Да, можете, ведь для возобновления работы не всегда нужен полный диск компьютера.
Одни и те же фото и видео никак не влияют на функциональность устройства и могут быть подтянуты позже в фоновом режиме.
Требуется водитель.
Операционная система ожидает запуска с полностью готовым диском.
Поэтому Windows выполняет ряд проверок для проверки целостности диска.
Система не позволит нормально запуститься, если некоторые файлы, которые ОС ожидает найти, отсутствуют или повреждены.
Для решения этой проблемы было решено разместить на диске созданные нами так называемые файлы-перенаправители, которые заменяют отсутствующие или поврежденные файлы, но по сути являются муляжами.
Создание таких редиректоров не занимает много времени, поскольку они фактически не несут никакого контента.
Дальнейшее восстановление происходит следующим образом.
Фоновым процессом, параллельно с работой операционной системы, «пустышки» заполняются данными.
Процесс фонового восстановления учитывает нагрузку на диск и не превышает заданный лимит. Однако пользователю или самой операционной системе может неожиданно потребоваться файл, которого еще не существует. Здесь в игру вступает второй режим восстановления.
Приоритет запрошенного файла повышается до максимального, и процесс восстановления срочно загружает файл на диск.
Операционная система получает необходимый файл, хоть и с небольшой задержкой.
Вот как выглядит идеальная картинка.
Однако в реальном мире существует огромное количество подводных камней и потенциальных тупиков.
Вместе с магистрантами Иннополиса мы решили изучить этот сценарий восстановления, оценить выгоды МРК и понять, возможен ли такой подход? Ведь подобных решений на рынке тогда просто не было.
И если я решил отдать сервисную составляющую ребятам из Иннополиса, то внутри Acronis началась работа над мини-фильтр по драйверу файловой системы .
Это было сделано командой Windows Kernel. План был такой:
- Запустите драйвер на ранней стадии запуска ОС,
- Во время работы, когда пользовательское пространство будет полностью готово, скачайте сервис
- Сервис обрабатывает запросы водителей и координирует их дальнейшую работу.
Тонкости драйверной техники
Если о сервисе мои коллеги расскажут в другом посте, то в этом тексте мы раскроем тонкости разработки драйверов.Уже разработанный драйвер мини-фильтра имеет два режима работы — когда система запустилась в обычном режиме, и когда система только что испытала сбой и находится в процессе восстановления.
Перед загрузкой пользовательских библиотек и приложений, а значит и нашего сервиса, драйвер ведет себя так же.
Он не знает, в каком состоянии сейчас находится система.
В результате каждое создание, чтение и запись протоколируется, а также записываются все метаданные.
И когда сервис подключен к сети, драйвер предоставляет эту информацию сервису.
В случае нормального запуска сервис посылает драйверу сигнал «Расслабиться», чтобы тот «расслабился» и прекратил скрупулезно протоколировать все данные.
В этом случае драйвер переходит на протоколирование только изменений на диске и сообщает о них сервису, который с помощью других инструментов Acronis поддерживает резервную копию диска в максимально актуальном состоянии на указанном пользователем носителе.
Это может быть облачное, удаленное, постепенное или ночное резервное копирование.
Если режим восстановления включен, служба сообщает драйверу, что ему необходимо работать в режиме «Восстановление».
Система только что восстановилась после сбоя, и как только она сделает запрос на открытие файла на диске, мини-фильтр должен перехватить эту операцию, сам сделать этот запрос, проверить, существует ли такой файл на диске и есть ли его можно открыть.
Если файл отсутствует, мини-фильтр передает эту информацию в сервис, что повышает приоритет восстановления файла (все это время восстановление происходит в фоновом режиме).
Оказывается, этот файл просто перескакивает в начало очереди.
После этого сам сервис (или другие средства Acronis) восстанавливает этот файл и сообщает драйверу, что все ок, теперь операционная система может получить к нему доступ и драйвер «выпускает» исходный запрос, из системы на диск.
Если восстановление невозможно, сервис сообщает драйверу, что файла нет в резервной копии.
Наш драйвер мини-фильтра просто передает системный запрос дальше, а исходный запросчик (сама ОС или приложение) получает ошибку «файл не найден».
Однако это вполне нормально, если файла действительно не было на диске, а в резервной копии.
Конечно, операционная система будет работать гораздо медленнее, поскольку чтение любого файла или библиотеки происходит в несколько этапов, возможно, с доступом к удаленным ресурсам.
Но пользователь может вернуться к работе как можно скорее, пока восстановление еще продолжается.
Нужно ниже, еще ниже.
Прототип доказал свою работоспособность.
Но мы также обнаружили необходимость двигаться дальше, поскольку в некоторых случаях все еще существуют тупиковые ситуации.
Например, операционная система может запрашивать различные библиотеки в несколько потоков, что приводит к тому, что наш сервис зацикливается на самом себе.
Проблема, над которой я сейчас работаю, — это увеличение скорости Active Restore и повышение уровня безопасности системы.
Допустим, системе нужен не весь файл, а только его часть.
Для этой цели был разработан еще один драйвер – драйвер дискового фильтра.
Он больше работает не на уровне файлов, а на уровне блоков.
Принцип работы аналогичен: в обычном режиме работы драйвер просто логирует измененные блоки на диске, а в режиме восстановления пытается прочитать блок самостоятельно, а в случае неудачи запрашивает у сервиса повышение приоритета.
Однако все остальные части системы остаются прежними.
Например, служба уровня ОС даже не подозревает, что ее просят связаться с другим драйвером, ведь основная задача — предоставить ОС именно те данные, которые необходимы для работы.
Эта область требует существенных доработок хотя бы потому, что сервис пока не умеет мыслить на уровне блоков.
Следующим шагом я решил запустить драйвер глубже и раньше, опустившись на уровень драйверов UEFI и Native Windows-приложений вместо службы.
Для этой цели был разработан загрузочный драйвер UEFI (или драйвер DXE), который запускается и умирает еще до запуска ОС.
Но «историю» драйверов UEFI, подробности сборки и установки, а также специфику приложений Windows Native мы рассмотрим в следующем посте.
Так что подписывайтесь на наш блог, а я тем временем подготовлю рассказ о следующем этапе работы.
Буду рад вашим комментариям и советам.
В опросе могут участвовать только зарегистрированные пользователи.
Войти , Пожалуйста.
Была ли у вас когда-нибудь ситуация, когда восстановление занимало мучительно долгое время: 64,58% Да 31 22,92% Нет 11 12,5% Не думал об этом 6 Проголосовали 48 пользователей.
4 пользователя воздержались.
Теги: #Разработка Windows #Резервное копирование #студенты #Разработка UEFI #Acronis #Active Restore
-
Каталоги Блогов, Стоят Ли Они Того
19 Oct, 24 -
Карманный Офис Vnc Pro
19 Oct, 24 -
13 Идей Церковных Видео Для Youtube
19 Oct, 24 -
Прощание С Ильей Сегаловичем
19 Oct, 24 -
10 Заблуждений О Хостинге
19 Oct, 24 -
Запуск Старых Добрых Игр На Nokia 5800
19 Oct, 24 -
Стандарт Openajax Появится До Конца Года
19 Oct, 24