Резервное копирование виртуальных машин при помощи Diskshadow


С появлением Hyper-V RC1 начинаешь задуматься о том, что и выход финальной версии не за горами — и подходит время для реального использования Hyper-V. Перед тем, как переводить любое решение из тестовой среды в промышленную, я всегда задаю себе вопрос: как следует настроить резервное копирование среды, чтобы всегда была возможность восстановления по состоянию на указанную дату? Когда речь идет о решении для консолидации серверов, каковым является Microsoft Hyper-V, этот вопрос актуален втройне. В настоящее время в недрах Microsoft идет работа над System Center Data Protection Manager 2007 Service Pack 1 (SCDPM2007 SP1), который будет официально поддерживать резервное копирование виртуальных машин Hyper-V. А пока что в ряде проектов по внедрению Hyper-V я должен предлагать заказчикам другие пути решения этой задачи.


Я думаю, все вы уже наслышаны о службе Volume Shadow Copy и том, какие преимущества она дает при резервном копировании ОС, SQL Server, Exchange Server и других данных. Hyper-V также использует эту службу и имеет свой VSS Writer. В Windows Server 2008 впервые вошла утилита diskshadow.exe, позволяющая работать с shadow copies. Сам термин Shadow Copy (или «Теневая копия») в случае виртуальных машин очень созвучно слову Snapshot (или «Снимок»). Утилита diskshadow.exe напоминает утилиту vshadow.exe из Volume Shadow Copy/VSS SDK, только интерфейс изменился и стал напоминать утилиту Diskpart. Вы можете пользоваться новым интерактивным интерфейсом или задать сценарий, перечисляющий шаги для выполнения. Для этого служит команда diskshadow -s script.txt.


Сейчас мы рассмотрим простейший пример, который иллюстрирует создание резервных копий всех виртуальных машин на сервере при помощи Diskshadow. Для этого нам потребуется знать GUID нашего Hyper-V VSS Writer. В принципе, он одинаков на всех машинах, однако процедуру его уточнения я приведу. Список всех VSS writers вы можете получить при помощи команды list writers в интерфейсе diskshadow. В ответ вы получите длинное перечисление, в котором потребуется найти именно Hyper-V VSS Writer. Например, так:



* WRITER "Microsoft Hyper-V VSS Writer"
- Writer ID = {66841cd4-6ded-4f4b-8f17-fd23f8ddc3de}
- Writer instance ID = {4240d886-48a9-49da-bf90-d2aca21209e1}


Зная GUID, можно написать сценарий, который будет делать с помощью данного VSS Writer снимок того тома, на котором находится ваша виртуальная машина. Привожу пример такого сценария для демонстарции.



# DiskShadow script file to backup a single VM from a Hyper-V host
set context persistent
# make sure the path already exists
set metadata c:\example.cab
set verbose on
begin backup
add volume d: alias SystemAndDataVolumeShadow
# verify the "Microsoft Hyper-V VSS Writer" writer will be included in the snapshot
writer verify {66841cd4-6ded-4f4b-8f17-fd23f8ddc3de}
create
end backup


В процессе выполнения вы увидите, что в процессе теневого копирования участвует Hyper-V VSS Writer. Помимо него, могут быть задействованы и другие VSS Writers — если на указанном диске есть данные, которые используются другими приложениями, совместимыми с VSS. После того, как процесс завершится, вы сможете подключить теневую копию как диск или каталог при помощи команды expose в Diskshadow и скопировать необходимые данные на отдельный носитель для хранения резеврной копии. Вы можете посмотреть, какие из файлов на сделаной вами копии всего тома используются виртуальной машиной. Для этого внутри созданного архива .cab найдите файл метаданных с именем manifest.xml, а в нем — имя файла XML, созданного Hyper-V VSS Writer. В этом файле XML содержится вся информация о том, что именно из скопированного касается виртуальных машин Hyper-V.


Я прекрасно понимаю, что затронутая сегодня тема довольно сложная. Если она вызовет интерес, я могу написать пару статей с примерами готовых сценариев резервного копирования, которые я использую у заказчиков на проектах в рамках программы RDP. Очевидно также, что более правильным и простым способом является использование SCDPM 2007 SP1, если вам не смущает использование предварительной версии Service Pack 1.

Comments (7)

  1. Anonymous says:

    Я недавно описывал способ резервного копирования виртуальных машин при помощи утилиты Diskshadow и Hyper-V VSS Writer. Такой подход, на мой взгляд, является оптимальным для использования до выхода System Center Data Protection Manager 2007 Service Pack

  2. Alex A says:

    Теперь ничего не мешает? 🙂

    На днях опубликую статью про резервное копирование при помощи Windows Server Backup (она уже написана, жду пока пара человек протестирует мой сценарий работы).

    Как выйлет SCDPM 2007 SP1 я его опишу.

  3. Anonymous says:

    Я недавно описывал способ резервного копирования виртуальных машин при помощи утилиты Diskshadow и Hyper-V VSS Writer. Такой подход, на мой взгляд, является оптимальным для использования до выхода System Center Data Protection Manager 2007 Service Pack

  4. Anonymous says:

    С появлением Hyper-V RC1 начинаешь задуматься о том, что и выход финальной версии не за горами — и подходит время для реального использования Hyper-V. Перед тем, как переводить любое решение из тестовой среды в промышленную, я всегда задаю себе вопрос:

  5. osten says:

    Спасибо, это как раз тот аспект безопасности, без которого я не рисковал переводить боевые сервера под Hyper-V.

  6. Dmitri says:

    "Если она вызовет интерес, я могу написать пару статей с примерами готовых сценариев резервного копирования, которые я использую у заказчиков на проектах в рамках программы RDP."

    Добрый день.

    Тема очень интересна, такие задачи сейчас у многих появятся, напишите поподробнее пожалуйста.

    Заранее благодарны

  7. Александр says:

    Alex, тема интересна.

    Примеры сценариев я бы посмотрел.

    Сейчас в условиях кризиса не все могут вложить средства в ПО для виртуализации и схемы лицензирования 2008 серверов, а рост приложений диктует в этом потребность, поэтому компании используют именоо Hyper-V Server 2008 R2. Но к сожалению в этом гипревизоре нужно харашенько продумывать резервное копирование и востановление, в частности если сервер физически вышел из строя.

    Алекс, прошу Вас опубликовать сценарии, будет полезно всем. Я например уже вторую неделю эксперементирую с резервированием и востановлением, а также с востановлением и на Virtual Server, уже прочел наверное все что есть по этой теме. Интересуют именно суенари бекапов. Если не сможете опубликовать, то может вышлите на почту – zelkoalex@gmail.com

    Заранее вам благодарен!

Skip to main content