Vhd to disk windows

Disk2vhd v2.01

By Mark Russinovich

Published: January 21, 2014

Download Disk2vhd (879 KB)
Run now from Sysinternals Live.

Introduction

Disk2vhd is a utility that creates VHD (Virtual Hard Disk — Microsoft’s Virtual Machine disk format) versions of physical disks for use in Microsoft Virtual PC or Microsoft Hyper-V virtual machines (VMs). The difference between Disk2vhd and other physical-to-virtual tools is that you can run Disk2vhd on a system that’s online. Disk2vhd uses Windows’ Volume Snapshot capability, introduced in Windows XP, to create consistent point-in-time snapshots of the volumes you want to include in a conversion. You can even have Disk2vhd create the VHDs on local volumes, even ones being converted (though performance is better when the VHD is on a disk different than ones being converted).

The Disk2vhd user interface lists the volumes present on the system:

It will create one VHD for each disk on which selected volumes reside. It preserves the partitioning information of the disk, but only copies the data contents for volumes on the disk that are selected. This enables you to capture just system volumes and exclude data volumes, for example.

Virtual PC supports a maximum virtual disk size of 127GB. If you create a VHD from a larger disk it will not be accessible from a Virtual PC VM.

To use VHDs produced by Disk2vhd, create a VM with the desired characteristics and add the VHDs to the VM’s configuration as IDE disks. On first boot, a VM booting a captured copy of Windows will detect the VM’s hardware and automatically install drivers, if present in the image. If the required drivers are not present, install them via the Virtual PC or Hyper-V integration components. You can also attach to VHDs using the Windows 7 or Windows Server 2008 R2 Disk Management or Diskpart utilities.

Do not attach to VHDs on the same system on which you created them if you plan on booting from them. If you do so, Windows will assign the VHD a new disk signature to avoid a collision with the signature of the VHD’s source disk. Windows references disks in the boot configuration database (BCD) by disk signature, so when that happens Windows booted in a VM will fail to locate the boot disk.

Disk2vhd does not support the conversion of volumes with Bitlocker enabled. If you wish to create a VHD for such a volume, turn off Bitlocker and wait for the volume to be fully decrypted first.

Disk2vhd runs on Windows Vista, Windows Server 2008, and higher, including x64 systems.

Here’s a screenshot of a copy of a Windows Server 2008 R2 Hyper-V system running in a virtual machine on top of the system it was made from:


(click image to zoom)

Command Line Usage

Disk2vhd includes command-line options that enable you to script the creation of VHDs. Specify the volumes you want included in a snapshot by drive letter (e.g. c:) or use «*» to include all volumes.

Usage: disk2vhd
Example: disk2vhd * c:\vhd\snapshot.vhd

Physical-to-virtual hard drive migration of a Windows installation is a valid function for customers with Software Assurance and full retail copies of Windows XP, Windows Vista, and Windows 7. Software Assurance provides users valuable benefits—please contact Microsoft Corporation for further information. Windows XP, Windows Vista and Windows 7 installed by Original Equipment Manufacturers (OEM) using OEM versions of these products may not be transferred to a virtual hard drive in accordance with Microsoft licensing terms.

Download Disk2vhd (879 KB)

Run now from Sysinternals Live.

Работа с виртуальными жесткими дисками VHD и VHDX средствами Windows

VHD — сокращение от Virtual Hard Disk, буквально «виртуальный жесткий диск». По содержанию, является аналогом настоящего жесткого диска, используя такую же структуру данных. Является стандартным форматом виртуальных жестких дисков у Microsoft Hyper-V и Microsoft Virtual PC, многие другие гипервизоры и виртуальные машины так же поддерживают работу с данным форматом виртуальных жестких дисков. VHDX является более новым форматом виртуального жесткого диска, с различными улучшениями.

Работу с VHD файлами поддерживают все версии Windows, начиная с Windows 7 и Windows Server 2008.
Работу с VHDX файлами поддерживают все версии Windows, начиная с Windows 8 и Windows Server 2012.

Использование Управление дисками

Подключение виртуального жесткого диска

  1. Подключить VHD/VHDX диск в систему Windows можно через Управление дисками. Для этого, достаточно просто нажать правой кнопкой мыши по иконке меню «Пуск», и выбрать пункт «Управление дисками».
  2. В открывшемся окне управления дисками, в верхнем меню нужно выбрать раздел «Действие», и в нем выбрать «Присоединить виртуальный жесткий диск».
  3. Откроется маленькое окошко, где нужно выбрать VHD или VHDX файл. В нем так же можно установить чекбокс «Только для чтения.», установка которого закроет любую возможность вносить какие-либо изменения в данный файл виртуального жесткого диска.
  4. После нажатия кнопки «ОК», VHD/VHDX файл будет смонтирован в систему, а в «Мой компьютер» появятся разделы виртуального жесткого диска (при условии, что у них файловая система, которую поддерживает Windows — exFAT, FAT, FAT32, NTFS или ReFS).

Отключение виртуального жесткого диска

Отключить подключенный VHD/VHDX файл можно так же через управление дисками. Для этого, нужно найти данный жесткий диск в списке подключенных дисков, и нажать на нем правой кнопкой мыши. В появившемся меню нужно выбрать пункт «Отсоединить виртуальный жесткий диск».

Читайте также:  Как восстановить экранную клавиатуру windows

Использование diskpart

Запускаем diskpart (через Проводник, Выполнить или Командную строку). В нем указываем расположение VHD файла:

Для монтирования диска, нужно выполнить следующую команду:

Для размонтирования диска, нужно выполнить следующую команду:

Использование PowerShell

В PowerShell так же возможно выполнить монтирование и размонтирование виртуальных жестких дисков VHD и VHDX. Для этого, нужно запустить PowerShell от имени администратора, и выполнить следующие команды:

  • Для монтирования диска:
  • Для размонтирования диска:

Boot to a virtual hard disk: Add a VHDX or VHD to the boot menu

Native Boot allows you to create a virtual hard disk (VHDX), install Windows to it, and then boot it up, either on your PC side-by-side with your existing installation, or on a new device.

A native-boot VHDX can be used as the running operating system on designated hardware without any other parent operating system. This differs from a scenario where a VHDX is connected to a virtual machine on a computer that has a parent operating system.

Native boot for WindowsВ 10 requires the .vhdx format, not the .vhd format.

VHDXs can be applied to PCs or devices that have no other installations of Windows, without a virtual machine or hypervisor. (A hypervisor is a layer of software under the operating system that runs virtual computers.) This enables greater flexibility in workload distribution because a single set of tools can be used to manage images for virtual machines and designated hardware.

You can also deploy the VHDX to a PC that already has Windows installed on it, and use a boot menu to select between the existing version of Windows, or the version on the VHD.

To learn more about using VHDXs in an enterprise environment, see Understanding Virtual Hard Disks with Native Boot.

Prerequisites

A technician PC with the Windows Assessment and Deployment Kit (WindowsВ ADK) tools installed on it.

A generalized WindowsВ image (.WIM file). To learn more, see Sysprep (Generalize) a Windows installation.

A bootable WindowsВ PE drive. To learn more, see WinPE: Create USB Bootable drive.

A destination PC or device on which to install the VHDX. This device requires 30В gigabytes (GB) or more of free disk space. You can install the VHDX to a device already running other operating system installations, or as the only operating system on a device.

Step 1: Create a VHDX from diskpart

On the technician PC:

From the Command Prompt, open Diskpart.

Create and prepare a new VHDX. In this example, we create a 25 GB fixed-type VHDX.

Attach the VHDX. This adds the VHDX as a disk to the storage controller on the host.

Create a partition for the Windows files, format it, and assign it a drive letter. This drive letter will appear in File Explorer.

Step 2: Apply a Windows image to the VHD

On your technician PC, apply a generalized Windows image to the primary partition of the VHDX that you created and attached in Step 1.

Step 3: Detach the VHD, copy it to a new device, and attach it (optional)

You can deploy the VHDX to a device that already has a copy of Windows installed on it, or you can clean and prepare the destination PC’s hard drive to use the VHD.

Detach the VHDX and save it to a network share or storage drive

Use diskpart to detach the virtual disk from your technician PC.

Copy the VHDX to a network share or removable storage drive. The following maps a drive letter to a network share, creates a directory for the VHD, and then copies the VHD.

Clean and prepare a new device for native boot

On your destination PC:

Use your bootable WinPE key to boot the destination PC to WinPE.

Clean and prepare the destination PC’s hard drive. Create a system partition (S), and a main partition (M) where the VHDX will be stored.

Connect to the network drive or storage location where you copied the VHDX in step 3.2.

Copy the VHDX from the network drive or storage location to the destination PC’s main partition.

Attach the VHDX

While still booted into WinPE, attach your VHDX to the destination PC.

Identify the attached VHDX’s volume letter. (Optional: Change it to another letter that makes more sense, for example V, and leave the diskpart command line open for the next step).

Step 4: Add a boot entry

From your destination PC, open Diskpart (if necessary) and identify the drive letters of the VHDX and the system partition, for example, V and S.

Add a boot entry to the device. You can add multiple VHDX files using this method.

Remove the Windows PE USB key.

Restart the destination PC.

If there’s only one boot entry, the device immediately boots to Windows. If there’s more than one boot entry, you’ll see a boot menu where you can choose between the available versions of Windows on the device.

VHD Native Boot снаружи и внутри

Цель настоящей статьи — рассказать о моем опыте работы с весьма полезной и не слишком хорошо известной функцией Windows, которая называется VHD Native Boot, то есть способности загружаться с виртуального жесткого диска формата VHD/VHDx.

Начиная с 7-й версии, в Windows появилась возможность создавать виртуальные диски VHD/VHDx (далее просто VHD), а также подсоединять и отсоединять их через графический интерфейс «Управление дисками» и утилиту командной строки diskpart. Кроме этого, Windows научилась с таких дисков загружаться, и все бы ничего, но этот самый Native Boot был доступен только обладателям старших версий, то есть от Pro и выше. Очевидно, что это было лишь маркетинговое ограничение, потому что с появлением Windows 10, а я проверял Anniversary Update (1607) и Creators Update (1703), никаких ограничений больше нет. Это работает и в Windows 10 Home, причем она может выступать как в роли хоста, так и в роли гостя. О том, как это выглядит и как это можно использовать, вы узнаете ниже.

Читайте также:  Python minimize all windows

С давних пор меня интересовала идея использования виртуализации применительно к рабочему компьютеру, внутренней виртуализации, если так можно выразиться. Как полезны и удобны виртуальные машины для разработчиков-программистов, специалистов по безопасности, тестированию. А вот до уровня домашнего/рабочего компьютера и его операционной системы это дело все никак не доходило. Ну, очевидно же, что если операционная система — такой сложный и чувствительный компонент, нельзя огульно доверять ее пользователю, он ее так и норовит чем-нибудь заразить или повредить. Да, есть резервное копирование и восстановление из точек восстановления (то есть из теневой копии), и это отличные вещи. Но это весьма чувствительные к ошибкам компоненты, и могут не спасти, кроме того, многие зловреды умеют удалять теневые копии, не оставляя пользователю шанса. Хотелось бы что-то простое и банальное на уровне copy-paste, чтобы «упавшую» или «испортившуюся» систему вернуть в рабочее состояние в течение нескольких минут. Конечно, идеально было бы, чтобы решение было в самой системе, просто заложено в ней. Hyper-V все же не совсем то, хотя может быть его и допилят до требуемого уровня. Ведь хочется, чтобы все возможности машины, все ее железо, вся мощь были доступны, с минимальными жертвами.

Использование виртуального жесткого диска вместо реального кажется вполне допустимой жертвой с учетом того, что вся система умещается в один файл, и достаточно этот файл время от времени копировать куда-то «в сторонку», и всё будет хорошо. Ведь копировать один файл, пусть и большой, явно проще, чем десятки тысяч. Кроме того, такой файл можно легко использовать для развертывания Windows в организации.

Когда есть несколько (немного) типов компьютеров, достаточно установить систему и все требуемое ПО на VHD, а потом просто скопировать этот файл на все аналогичные компьютеры, сведя работы на местах к минимуму. Неплохо было бы иметь некую оболочку, без загрузки Windows, что-то типа «консоли гипервизора», позволяющую попадать в нее и работать с VHD на уровне файлов, копировать, заменять, обновлять и т.д. Тем более, что сама Windows такую оболочку в своем составе имеет, и называется она Windows Recovery Environment, далее WinRE. Давайте посмотрим, как все это выглядит на практике.

1. Установка Windows на VHD с нуля

Эта тема широко освещена в Сети, существуют десятки толковых руководств (см. ссылки в конце статьи), поэтому я остановлюсь лишь вскользь, попутно рассматривая возможные варианты.
В целом все сводится к нажатию волшебной комбинации Shift-F10 в момент, когда компьютер загрузился с установочного диска. Параллельно открывается окошко командной строки, где следует, используя diskpart, отформатировать и разметить реальный жесткий диск (если компьютер/диск новый) и создать VHD требуемого объема. Для простоты я буду рассматривать установку 64-разрядной версии и жесткие диски с MBR.

Итак, жесткий диск разбит, папка VHDs на соответствующем томе создана, теперь в diskpart надо создать виртуальный жесткий диск в этой папке, дав ему понятное имя, и выполнить присоединение, тогда тому виртуального диска будет присвоена очередная буква. Теперь можно вернуться в окно установки Windows и выбрать именно эту букву для установки. Всё, дальше программа установки все сделает сама. В том числе и добавит нужную запись в файл BCD.

Сразу скажу, что использовать bcdedit мне показалось уж слишком жестоким самоистязанием, поэтому я позволил себе использование одного стороннего инструмента для манипуляций, это утилита Bootice соответствующей разрядности. Предположим, он у вас есть на том же установочном диске. Если нет, в дальнейшем я покажу, как его можно «закинуть» в нашу оболочку «гипервизора».

Итак, для демонстрации пусть у меня есть один жесткий диск 25 Gb (я воспользуюсь любимым Virtualbox для показа), в нем один раздел, там папка VHDs, где я создал виртуальный диск, а на него установил Windows 10.

Вот так будет выглядеть меню загрузки системы в Bootice (раздел BCD, Easy Mode)

Здесь 25 Gb C: это тот «физический» диск, на котором я создал виртуальный размером 20 Gb и куда установил Windows 10. Все прекрасно, но дальше нам нужно создать оболочку для управления. Как известно, WinRE всегда устанавливается вместе с Windows и приходит на помощь тогда, когда обнаруживаются проблемы с загрузкой. Нам же она нужна для другой цели, я хочу попадать туда для работы с VHD-файлами. Добавим пункт WinRE в меню загрузки. Для этого в Bootice воспользуемся Professional Mode, последний объект в списке слева это как раз Windows Recovery, справа видно его расположение на VHD:

Этот объект, вернее, ссылку на него, надо добавить в список меню загрузки, выберем вверху слева ветвь Windows Boot Manager, в правой панели выберем пункт Display Order и добавим пункт про WinRE из выпадающего списка:

Теперь пункт Windows Recovery Environment будет показываться в загрузочном меню системы, в чем мы можем убедиться, вернувшись в Easy Mode:

Осталось перезагрузиться и выбрать второй пункт, начнется загрузка WinRE, а там нас интересует только пункт Поиск и устранение неисправностей, Дополнительные параметры, Командная строка. Все это напоминает и программу установки Windows, и прародителя WinRE, широко известную Windows Preinstallation Environment. Отсюда, собственно, и начинается работа с оболочкой, и не так важно, какую именно вы выберете, поскольку там все приблизительно одно и то же.

Наш основной жесткий диск оказывается в ней диском C:, в его папке VHDs обнаруживается наш master.vhd, и мы можем спокойно его куда-нибудь скопировать. В WinRE волшебной командой мы подключаем сеть:

автоматически выбирается и запускается драйвер сетевого адаптера, получается ip-адрес от сервера DHCP, и мы можем работать с сетью. В Virtualbox я могу подключить сетевую папку такой командой:

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

Помимо Bootice легко добавляются Far Manager, 7-zip, а с ними уже как-то повеселее. Мне удалось найти даже работающий веб-браузер Palemoon Portable, а уж с ним загрузить из Сети необходимые компоненты совсем легко. Прекрасно установился cygwin64, что открывает путь для ssh/rsync в смешанных средах. Дальше понятно, у нас есть возможность спокойно архивировать и копировать файлы vhd. Если что-то не так в master.vhd, мы загружаемся в WinRE и забираем его резервную копию из сетевого хранилища, затем выходим из WinRE и получаем нашу систему обратно.

Читайте также:  Как связаться с windows по телефону

Прямо из оболочки WinRE при помощи diskpart или Bootice можно создать новый VHD диск, запустить программу установки Windows, если хочется добавить какую-то иную версию и установить эту новую Windows на новый VHD, нужный пункт в меню загрузки ОС добавится сам.

Осталось только подстраховаться на тот случай, если с master.vhd все настолько плохо, что и в оболочку WinRE не загрузишься, ведь она часть этого диска. Конечно, это не смертельно, всегда можно загрузиться с установочного диска Windows и нажать Shift-F10, но приложив определенные усилия, можно сделать так, чтобы WinRE находилась на нашем хост-диске, и грузиться в нее оттуда. Загрузочное меню будет выглядеть так:

2. Установка Windows на VHD на работающем компьютере

Не представляет никакой проблемы добавить на имеющемся компьютере дополнительную операционную систему, создав новый VHD и присоединив его, а затем запустив программу установки и выбрав букву, назначенную для присоединенного диска. Намного более сложной задачей будет перенос текущей конфигурации, уже установленной на физическом диске системы на диск виртуальный. Здесь приходит на ум несколько вариантов. Первый, о котором я вспомнил, это использовать Windows Backup, ведь он как раз создает файл VHD (vhdx) в режиме создания образа системы. Казалось бы, всё, что требуется — это добавить ссылку на такой VHD в меню загрузки и посмотреть, что выйдет. Так я и сделал, при первой загрузке Windows выдала ошибку, а при всех последующих старательно что-то загружалось, очень долго, и даже промелькивало окошко с картинкой экрана блокировки первоначальной системы, но так и исчезало опять. Не знаю почему, но с VHD-диска, полученного из backup’а, Windows загрузить не удается. Пришлось идти иным путем, воспользоваться Disk2vhd из комплекта Sysinternals.

Все довольно просто, выбираешь раздел физического диска, или весь диск, и Disk2vhd делает из него VHD-файл:

Но дальше начинаются неудобства. Получившийся VHD, какого бы он ни был реального размера, сообщает о себе, что он размером с весь наш физический диск. То есть если у меня был физический диск 180 Gb, а я выбрал только первый раздел размером 100 Gb, VHD-файл получился около 50 Gb, но сообщает он о себе как о 180-гигабайтном. Проблема здесь в том, что если с такого VHD загрузиться, то Windows потребует 180 Гб места для его работы. То есть как его ни оптимизируй (defrag, sdelete -z), как ни сжимай (compact vdisk, shrink), от первоначальных характеристик, снятых Disk2vhd никак не избавиться. Пришлось пойти на сложное преобразование, создать пустой VHD, загрузить в Virtualbox PartedMagic, подсунув тому преобразованный и пустой VHD и при помощи Gparted (и Clonezilla, если не хочется возится с bootrec) перенести раздел. В результате получился VHD 20 Gb, с которого я сейчас и пишу данную статью.

3. Использование дифференциальных VHD

В особо ненадежных средах, на публичных компьютерах или при проведении каких-то опасных экспериментов, может пригодиться возможность использования дифференциальных VHD-дисков, на которых записывается только разница, изменившаяся информация, а оригинальный VHD остается без изменений. Ясно, что для начала надо уже иметь работающую систему на VHD-диске, а потом добавить вариант с дифференциальным диском. Создать такой диск можно в diskpart или все в том же Bootice. Пусть master.vhd наш основной диск, создадим для него дифференциальный child.vhd, нажав кнопку Create:

Теперь нужно добавить/исправить в BCD пункт, отвечающий за загрузку с VHD, указав вместо master.vhd дифференциальный child.vhd.

Для этого воспользуемся Professional Mode в Bootice, сделаем копию имеющегося пункта Windows 10 (правая кнопка мыши, Duplicate this entry) и переименуем новый в Windows 10 Child VHD. Теперь в этом пункте исправим ApplicationDevice и OsDevice, изменив имя vhd-файла:

Всё, теперь нужный пункт добавлен в загрузочное меню. Если выбрать Windows 10 Child VHD, Windows запустится и с этого момента будет все изменения записывать в child.vhd. Следует учесть, что под child.vhd в момент загрузки будет зарезервировано столько же места, сколько указано в master.vhd, то есть в нашем случае 20 Gb, пусть его реальный размер в сотни раз меньше. Время от времени имеет смысл выполнять процедуру слияния (merge), то есть отправлять накопленную разницу из child в master, чтобы ничего не потерять. Дело в том, что стоит вам загрузиться не в child, а в master или даже WinRE на основе master.vhd, то связь между master и child будет нарушена, придется чинить child, но Bootice и это умеет:

4. Рекомендуемая конфигурация физического диска при работе с загрузочными VHD

Я бы предложил разметить физический диск следующим образом.

Один раздел, достаточно большой, оставить под хранение файлов VHD, тут все зависит от того, сколько разных VHD вам понадобится. Минимально для установки Windows x64 требуется 20 Гб, можно создавать динамические диски, то есть увеличивающие свой реальный размер только по мере их внутреннего наполнения. Но еще раз подчеркну, в момент загрузки динамического VHD Windows резервирует под него место в соответствии с указанным максимальным размером.

Microsoft советует использовать VHD фиксированного размера в производственной среде, а динамические — только для тестов, но я особой потери производительности у динамических VHD не ощутил.

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

А скрыть раздел можно при помощи вот такого нехитрого сценария для diskpart, с учетом выбранного диска и раздела для хранения VHD.

Теперь раздел скрыт, буква ему не присвоена, однако Windows все равно будет грузиться с VHD, хранящегося в этом разделе. Единственный нюанс — выбор места на физическом диске для файла подкачки. Если он выбирается системой, и это как раз тот раздел, который будет скрыт, каждый раз при старте Windows будет спрашивать, где же создавать файл подкачки.

А чтобы вернуть ларчик назад, достаточно в diskpart выполнить команду

Оцените статью