Файлы виртуальных жестких дисков не могут быть подключены из файлов образов

Обновлено: 22.06.2024

Цель настоящей статьи — рассказать о моем опыте работы с весьма полезной и не слишком хорошо известной функцией 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, причем она может выступать как в роли хоста, так и в роли гостя. О том, как это выглядит и как это можно использовать, вы узнаете ниже.

С давних пор меня интересовала идея использования виртуализации применительно к рабочему компьютеру, внутренней виртуализации, если так можно выразиться. Как полезны и удобны виртуальные машины для разработчиков-программистов, специалистов по безопасности, тестированию. А вот до уровня домашнего/рабочего компьютера и его операционной системы это дело все никак не доходило. Ну, очевидно же, что если операционная система — такой сложный и чувствительный компонент, нельзя огульно доверять ее пользователю, он ее так и норовит чем-нибудь заразить или повредить. Да, есть резервное копирование и восстановление из точек восстановления (то есть из теневой копии), и это отличные вещи. Но это весьма чувствительные к ошибкам компоненты, и могут не спасти, кроме того, многие зловреды умеют удалять теневые копии, не оставляя пользователю шанса. Хотелось бы что-то простое и банальное на уровне 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.

image

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

image

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

image

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

image

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

image

Осталось перезагрузиться и выбрать второй пункт, начнется загрузка 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 и получаем нашу систему обратно.

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

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

image

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

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

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

image

Но дальше начинаются неудобства. Получившийся 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:

image

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

image

Всё, теперь нужный пункт добавлен в загрузочное меню. Если выбрать 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 и это умеет:

image

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

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

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

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

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

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


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

Узнайте что такое виртуальный жесткий диск (VHD) , как его создать, применить на практике и, при необходимости, извлечь или восстановить удаленные данные с него.

Что такое виртуальный жесткий диск

Виртуальный жесткий диск (VHD) — это накопитель, имеющий аналогичные функции обычному жесткому диску. Однако установка, доступ к нему и управление им осуществляется в инфраструктуре виртуальной машины.

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

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

Зачем нужен виртуальный жесткий диск

В большинстве случаев виртуальный жесткий диск используется специалистами для облегчения жизни в процессе работы. Например, если вы программист и не хотите создавать путаницу, устанавливая Linux на один диск с Windows, поместите новую ОС на VHD. Теперь вы можете свободно тестировать программное обеспечение на разных платформах.

Управление виртуальным жестким диском происходит из системы хост-машины. Вам доступны следующие операции:

  • Восстановление и резервное копирование.
  • Обеспечение безопасности данных.
  • Управление образами диска.
  • Конвертация томов.
  • Обмен файлами между VHD и файловой системой компьютера.

В этой статье мы рассмотрим 2 руководства, которые могут вам создать VHD, инициализировать диск и, при необходимости, отключить его.

Как восстановить данные с виртуального жесткого диска в Windows

Если по какой то причине данные на вашем диске VHD утеряны, вам всегда помогут инструменты восстановления Starus Recovery.

Рекомендуем воспользоваться приложением Starus Partition Recovery . Чтобы восстановить файлы из виртуального диска, достаточно смонтировать его в программу нажав кнопку на панели программы «Монтировать диск» и выбрать соответствующий файл *VHD.

Поддерживаются виртуальные диски или образы дисков следующих форматов: *.dsk, *.hdd, *.vdi, *.vhd, *.vhdx, *.vmdk , и др. Обладая функцией глубокого сканирования, программа найдет даже самые старые файлы, которые когда-либо записывались на жесткий диск.

Управление виртуальным жестким диском

Руководство по созданию VHD

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

1. Откройте утилиту Выполнить с помощью комбинации клавиш Windows + R .

2. Введите команду diskmgmt.msc и нажмите клавишу Enter .

3. На панели инструментов найдите меню Действие . Щелкните по нему и в открывшемся списке действий выберите Создать виртуальный жесткий диск .

4. Укажите расположение виртуального жесткого диска и установите нужные параметры в соответствии с вашими требованиями. Для дисков менее 2040 Тб применим формат VHD , для дисков большего объема понадобится VHDX . При выборе типа виртуального диска руководствуйтесь идеей: если вам нужно хранить определенный объем данных (операционная система), лучше выделить строгое значение; если вы планируете хранить фотографии, фильмы и не знаете какой объем потребуется в будущем, установите динамически расширяемый тип.

5. Нажмите клавишу ОК .

6. Пролистав список дисков вниз, вы заметите, что появился не распределенный участок.

7. Щелкните по не распределенному участку правой кнопкой мыши и создайте новый том.

Обратите внимание! Клавиша Создать новый том не всегда становится активна сразу. Если вы столкнулись с данной проблемой, перезапустите утилиту Управление дисками .

9. Еще раз щелкните по не распределенному пространству и создайте новый том.

10. Перед вами появится окно мастера по созданию нового раздела. Нажмите Далее .

11. Выберите максимально доступный размер (выбранный вами ранее) и нажмите Далее .

Но я столкнулся с проблемой: некоторые образы не открывались Система выдавала ошибку: К сожалению при подключении файла возникла проблема.


Решение проблемы я нашёл на форумах. Оказывается всё дело в атрибутах файла в iso.

Атрибут SPARE (разреженный файл) негативно влияет на работоспособность утилиты, которая монтирует виртуальный диск. Она не может корректно обработать файл с данным атрибутом, поэтому выдаёт ошибку.

Чтобы проверить наличие атрибута и снять его:

  1. Открываем в проводнике папку с нашим iso-файлом;
  2. Переходим в главное меню проводника: Файл > Запустить Windows Power Shell от имени администратора;
  3. Проверяем, установлен ли атрибут: fsutil sparse queryflag <имя_вашего_файла>
  4. Если да, то снимаем его: fsutil sparse setflag <имя_вашего_файла> 0

После всех проведённых манипуляций файл должен монтироваться, если он не повреждён и отсутствуют другие причины, мешающие его использованию.

Есть более простое решение — можно просто скопировать файл в другую папку и он будет монтироваться без проблем.

PS. Sparse file — файл, который использует специальный алгоритм для уменьшения занимаемого на диске места. В нём последовательности нулевых байтов заменены на информацию об этих последовательностях (список дыр). Дыра — последовательность нулевых байт внутри файла, не записанная на диск. Информация о дырах (смещение от начала файла в байтах и количество байт) хранится в метаданных ФС.


Описание проблемы

К сожалению при подключении файла возникла проблема


так же вы можете встретить еще одну разновидность данной проблемы в виде ошибки:

Убедитесь, что файл находится на томе NTFS, при этом папка или том не должна быть сжатыми



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



В моем примере есть ISO образ объемом 3,1 ГБ, предположим, что в нем есть много нулей. Если они есть, то файл обычно оптимизируют, разбивая его не маленькие блоки, которые в последствии анализируются. Если хотя бы один байт внутри такого блока имеет отличное от 0x00 значение, блок записывается на диск как содержащий реальные данные. Блоки же, содержащие только байты 0x00, считаются пустыми и на диск не записываются. Таким образом файл получается меньшим по размеру, чем он есть на самом деле, однако сжатие при этом не используется.

Файловая система NTFS при попытке считать данный файл, знает его длину и количество блоков отданные под данные, а вот блоки с нулями будут генерится на лету, восстанавливая таким образом его изначальную структуру. Но как мы знаем операционная система Windows не идеальна и ее утилита отвечающая за монтирование ISO образов, может некорректно отработать с файлами, где есть атрибут sparse. Данный атрибут очень часто выставляют различные торрент-приложения, чтобы повысить производительность.

Чтобы удостовериться, что на файле стоит атрибут SPARE, откройте командную строку от имени администратора. и выполните команду:

fsutil sparse setflag путь до файла, например:

fsutil sparse setflag E:\Write\Games\Civilization IV.iso (Если выскочит ошибка Использование: fsutil sparse setflag <имя_файла> . Пример: fsutil sparse setflag C:\Temp\test.txt, то введите путь с кавычками, так как в нем есть пробелы)


Далее убираем атрибут SPARE, выполните команду:


После этих действий пробуем смонтировать ISO Образ, как видим, все работает.



Сделать это сравнительно просто, порядок действий будет следующим.

Если действия с атрибутом sparse никак не повлияли на исправление проблемы, возможны дополнительные способы найти её причины и подключить образ ISO.

Если раздел или папка являются сжатыми, попробуйте просто скопировать ваш образ ISO из них в другое расположение или снять соответствующие атрибуты с текущего расположения.

Если и это не помогло, вот еще что можно попробовать:

Что делать, если при монтировании ISO-образа в Проводнике выдается ошибка «Убедитесь, что файл находится на томе NTFS»

Как известно, просматривать содержимое образов ISO в Windows 8.1 и 10 можно не прибегая к помощи сторонних программ, вместо этого достаточно смонтировать его в Проводнике двойным кликом. Образ без проблем откроется, но это при условии, что он не окажется поврежденным и не будет иметь атрибута sparse или как еще говорят, разреженного или неполного. Образы ISO с этим атрибутом встречаются редко, но если пользователю как раз выпадет удача его скачать, монтирование оного в Проводнике может оказаться проблематичным.


Но что такое атрибут sparse и почему отмеченный им образ не получается смонтировать в Проводнике? Sparse files или иначе разреженные (неполные) файлы — это файлы, в которых области с нулевыми байтами представлены в виде информации об этих самых областях.

Выглядит это примерно следующим образом.


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

Когда выполняется чтение такого файла, драйвер NTFS, которому уже известна длина файла и количество блоков с данными, генерирует недостающие нулевые байты на лету, восстанавливая таким образом его изначальную структуру. К сожалению, встроенная утилита монтирования дисков некорректно обрабатывает разреженные файлы, поэтому при монтировании образа ISO с атрибутом sparse пользователь получает ошибку. Но откуда берутся такие образы и какой смысл их оптимизировать, если в экономии дискового пространства нет нужды?

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

Теперь что касается решения этой проблемы.

Для этого откройте командную строку от имени администратора и выполните в ней такую команду:

1 fsutil sparse queryflag


В нашем примере образ livedisk.iso как раз имеет такой атрибут.

Снимем его следующей командой, после чего еще раз проверим его наличие:

1 fsutil sparse setflag 0


Готово, образ можно монтировать, ошибка возникнуть не должна.

Наконец, вместо Проводника Windows вы можете воспользоваться любой сторонней программой для монтирования образов, большинство из них точно знают, что делать с атрибутом sparse.

В июне 2005 года компания Microsoft разработала новую спецификацию формата образов виртуальных жестких дисков (Virtual Hard Disk - VHD). VHD – это формат файла, у которого полная структура и содержимое аналогичны с жестким диском. Он используется для хранения виртуальных операционных систем, программ и других файлов в одном файле-образе, который можно открыть разными программами виртуализации или виртуальными машинами. Формат Microsoft VHD в настоящее время используется в Microsoft Virtual PC 2007, Microsoft Virtual Server 2005 R2 и Hyper-V. Виртуальные жесткие диски позволяют нескольким операционным системам одновременно находиться на одном компьютере. Файл VHD определяет формат жесткого диска виртуальной машины, который расположен в едином файле на хостовой операционной системе. Помимо этого, операционные системы Windows 7 и Windows Server 2008 R2 могут поддерживать создание, подключение и загрузку с VHD-дисков, расположенных на хостовой системе. В этой статье я расскажу о поддерживаемых типах виртуальных жестких дисков, а также о базовых операциях, которые можно с ними выполнять.

Поддерживаемые форматы виртуальных жестких дисков

Жесткие диски виртуальных машин хранятся на хостовой операционной системе в виде отдельных файлов. Существует три типа виртуальных дисков:

    Динамически расширяемый дисковый образ, который обеспечивает объем пространства, необходимый для хранения данных. Размер VHD-файла в момент создания диска небольшой, но увеличивается по мере добавления данных на диск. Распределение данных осуществляется в блоках. При удалении данных с виртуального жесткого диска размер VHD-файла автоматически не уменьшается. Например, если был создан динамически расширяемый жесткий диск, объемом 5 Гб, то изначально этот файл на хостовой системе будет занимать порядка двух мегабайт. По мере накопления информации в этом образе, его размер будет увеличиваться, пока не достигнет пяти гигабайт.

Помимо этого, динамические диски хранят метаданные, которые используются при получении доступа к данным пользователей, хранящихся на жестком диске. Максимальный размер динамического жесткого диска 2040 Гб. Фактический размер ограничивается основным протоколом аппаратного диска. Например, ATA жесткие диски имеют 127 ГБ.

Пространство, отведенное для передачи данных, использует структуру Hard Disk Footer Format. В этом случае, размер файла на хостовой операционной системе будет включать в себя размер жесткого диска гостевой операционной системы и размер нижнего колонтитула.

Базовые действия, выполняемые с VHD-дисками

К базовым операциям, которые можно проводить с виртуальными жесткими дисками, можно отнести такие действия, как: создание, присоединение, отсоединение, удаление виртуальных жестких дисков. Возможно также сжатие дисков, конвертирование физических дисков в виртуальные, подключение дисков как папки и другое. В этом руководстве рассматриваются не все возможные операции, которые проводятся над виртуальными жесткими дисками.

Очень полезная статья об установке операционной системы Windows 7 на виртуальный диск была написана Игорем Шаститко: Kaк установить Windows 7 и ничего не «сломать», а также можете посмотреть видео доклад Михаила Гоча «Новые возможности Windows 7. Загрузка системы с диска VHD».

Создание виртуальных жестких дисков

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

*

*

*

*

Виртуальный жесткий диск также можно создать средствами утилиты командной строки DiskPart. Для этого в командной строке с правами администратора нужно воспользоваться командой Create Vdisk. Синтаксис команды следующий:

Create Vdisk File=<имя_файла> Maximum=<n> Type=Fixed|Expandable [/Опция Параметр]

  • При помощи параметра File можно указать полный путь и имя виртуального диска.
  • Параметр Maximum отвечает за максимальное дисковое пространство, предоставляемое виртуальным диском, заданное в мегабайтах.
  • При помощи параметра Type можно указывать формат виртуального диска. Существует два значения для данного параметра:
    • FIXED создает файл виртуального диска фиксированного размера;
    • EXPANDABLE создает динамически расширяемый образ виртуального диска.

    С помощью параметра SD можно указать дескриптор безопасности в формате языка SDDL. По умолчанию дескриптор безопасности берется из родительского каталога. В простейшем случае строка может содержать дескриптор безопасности, обеспечивающий защиту доступа, который называется списком управления доступом на уровне пользователей (DACL).

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

    Если у вас уже имеется созданный виртуальный жесткий диск, то вы его можете присоединить к оснастке управления дисками. Это можно сделать следующим образом:

    1. Откройте «Управление компьютеров». В нем, раскройте узел «Запоминающие устройства», нажмите правой кнопкой мыши на «Управление дисками» и из контекстного меню выберите команду «Присоединить виртуальный жесткий диск»;
    2. Нажмите на кнопку «Обзор», чтобы выбрать файл виртуального жесткого диска. Если вам не нужно записывать данные на диск, то в этом диалоге можно установить флажок «Только для чтения»;

    *

    Также виртуальный жесткий диск можно присоединить средствами утилиты командной строки DiskPart. Для этого в командной строке с правами администратора нужно выбрать нужный виртуальный диск командой Select Vdisk, а затем воспользоваться командой Attach Vdisk. Синтаксис следующий:

    Attach Vdisk

    Эту команду можно использовать без параметров. Доступные параметры:

    • Параметр ReadOnly присоединяет виртуальный диск в режиме только для чтения. Любая операция записи приведет к возникновению ошибки ввода-вывода устройства.
    • При помощи параметра UseFileSD можно указать, что для виртуального диска следует использовать дескриптор безопасности самого виртуального файла. Если параметр не указан, то у диска не будет явно заданного дескриптора безопасности, если не был также задан параметр SD=(строка SDDL).
    • Параметр SD задает дескриптор безопасности в формате SDDL. По умолчанию дескриптор безопасности обеспечивает доступ, аналогичный любому физическому диску. Дополнительные сведения о формате строки SDDL см. в справке по команде Create Vdisk.

    Инициализация виртуального жесткого диска

    После того как виртуальный жесткий будет создан или присоединен, для дальнейшей работы его нужно инициализировать. При помощи графического интерфейса это можно сделать следующим образом:

    1. Откройте «Управление компьютеров». В нем, раскройте узел «Запоминающие устройства» и нажмите левой кнопкой мыши на «Управление дисками»;
    2. Найдите диск, который нужно инициализировать, нажмите на нем правой кнопкой мыши и из контекстного меню выберите команду «Инициализировать диск»;

    *

    • Основная загрузочная запись (Master Boot Record - MBR) - это первый физический сектор на жёстком диске или другом устройстве хранения информации, разбиваемом на логические диски (разделы). MBR содержит таблицу разделов (partition table) и небольшой фрагмент исполняемого кода;
    • Таблица с GUID разделов (GUID Partition Table - GPT) – это стандартный формат размещения таблиц разделов на физическом жестком диске. Он является частью Extensible Firmware Interface (EFI) (Расширяемый Микропрограммный Интерфейс) — стандарта, предложенного Intel на смену отжившего BIOS, одного из последних реликтов первозданной IBM PC

    *

    Создание простого тома в VHD диске

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

      Нажмите на правую кнопку на нераспределенном VHD диске и из контекстного меню выберите команду «Создать простой том»;

    *

    *

    *

    *

    *

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

    Для того чтобы отсоединить виртуальный диск, выполните следующие действия:

      Найдите виртуальный диск, который хотите отсоединить, нажмите на нем правой кнопкой мыши и из контекстного меню выберите команду «Отсоединить виртуальный жесткий диск»;

    *

    *

    Отсоединить виртуальный жесткий диск также можно при помощи утилиты командной строки DiskPart. Для этого в командной строке с правами администратора нужно выбрать предполагаемый виртуальный диск командой Select Vdisk, а затем воспользоваться командой Detach Vdisk. Синтаксис команды следующий:

    Detach Vdisk

    Просмотр информации о виртуальном диске

    Для того чтобы просмотреть подробную информацию о диске, выполните следующие действия:

    1. Выберите нужный виртуальный диск при помощи команды Select Vdisk;
    2. Присоедините диск, если он еще не присоединен к компьютеру;
    3. Воспользуйтесь командой Detail Vdisk

    Для данной команды не существует дополнительных параметров.

    Сжатие виртуальных дисков

    При помощи утилиты командной строки DiskPart можно сжимать виртуальные диски. Для этого выберите нужный виртуальный диск, подключите диск в режиме «только для чтения» и воспользуетесь командой Compact Vdisk. Эта команда сжимает файл виртуального диска для уменьшения физического размера файла. Сжатие возможно только для отсоединенного расширяемого виртуального диска или для расширяемого виртуального диска, подключенного в режиме «только для чтения».

    Заключение

    В этой статье вкратце рассказывается о технологии Virtual Hard Disk (VHD) и о возможных форматах виртуальных жестких дисков. Также подробно описаны базовые действия, которые можно проводить над виртуальными жесткими дисками при помощи графического интерфейса, а также средствами утилиты командной строки DiskPart. Описаны варианты создания, присоединения, инициализации, отсоединения и просмотра информации о виртуальных жестких дисках.

    Статья опубликована в рамках конкурса "Наш выбор - Windows 7!". Оригинальный стиль автора сохранен.

    Читайте также: