Цель этой статьи — рассказать о моем опыте использования очень полезной и не очень известной функции 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 и может выступать как в качестве хоста, так и в качестве гостя.
Ниже вы узнаете, как это выглядит и как его можно использовать.
Меня давно интересовала идея использования виртуализации применительно к рабочему компьютеру, внутренней виртуализации, так сказать.
Насколько полезны и удобны виртуальные машины для разработчиков ПО, специалистов по безопасности и тестированию.
Но до уровня домашнего/рабочего компьютера и его операционной системы это дело еще не дошло.
Ну и очевидно, что если операционная система является таким сложным и чувствительным компонентом, то нельзя безоговорочно доверять ее пользователю, он норовит ее чем-то заразить или повредить.
Да, есть бэкап и восстановление из точек восстановления (т.е.
из теневой копии), и это отличные вещи.
Но это очень чувствительные к ошибкам компоненты, и они могут вас не спасти; кроме того, многие вредоносные программы способны удалять теневые копии, не оставляя пользователю шансов.
Хотелось бы чего-то простого и банального на уровне копипаста, чтобы за несколько минут вернуть «упавшую» или «поврежденную» систему в рабочее состояние.
Конечно, идеально было бы, чтобы решение было в самой системе, просто встроено в нее.
Hyper-V все еще не совсем тот, хотя его можно улучшить до необходимого уровня.
В конце концов, вы хотите, чтобы все возможности машины, все ее оборудование, вся ее мощь были доступны с минимальными жертвами.
Использование виртуального жесткого диска вместо реального кажется вполне приемлемой жертвой, учитывая, что вся система умещается в один файл, и достаточно время от времени копировать этот файл куда-нибудь «в сторону», и все будет отлично.
Ведь скопировать один файл, даже большой, явно проще, чем десятки тысяч.
Кроме того, такой файл можно легко использовать для развертывания Windows в организации.
При наличии нескольких (немногих) типов компьютеров достаточно установить систему и все необходимое программное обеспечение на VHD, а затем просто скопировать этот файл на все аналогичные компьютеры, сводя полевые работы к минимуму.
Было бы неплохо иметь какую-нибудь оболочку, без загрузки винды, что-то вроде «консоли гипервизора», позволяющей попасть в нее и работать с VHD на файловом уровне, копировать, заменять, обновлять и т.д. Тем более, что винда сама имеет в своем составе такую оболочку, и называется она Windows Recovery Environment, далее WinRE. Давайте посмотрим, как это все выглядит на практике.
1. Установка Windows на VHD с нуля
Эта тема широко освещена в Интернете, есть десятки толковых руководств (см.ссылки в конце статьи), поэтому остановлюсь лишь кратко, попутно рассматривая возможные варианты.
В общем, все сводится к нажатию волшебной комбинации Shift-F10 в тот момент, когда компьютер загружается с установочного диска.
При этом откроется окно командной строки, где следует с помощью diskpart отформатировать и разбить на разделы реальный жесткий диск (если компьютер/диск новый) и создать VHD необходимого размера.
Для простоты я буду рассматривать 64-битные установки и жесткие диски с MBR. Итак, жёсткий диск разбит на разделы, папка VHDs на соответствующем томе создана, теперь в diskpart нужно создать в этой папке виртуальный жёсткий диск, дав ему понятное имя, и присоединить его, тогда следующая буква будет назначенный тому виртуального диска.
Теперь вы можете вернуться в окно установки Windows и выбрать для установки именно эту букву.
Все, программа установки все сделает сама.
Это также добавит необходимую запись в файл BCD. Скажу сразу, использование bcdedit показалось мне слишком жестоким самоистязанием, поэтому я позволил себе использовать для манипуляций один сторонний инструмент, это утилита Bootice соответствующего разрядности.
Предположим, он у вас есть на том же установочном диске.
Если нет, то в будущем я покажу, как его можно «закинуть» в нашу оболочку «гипервизора».
Итак, для демонстрации, допустим, у меня есть один жесткий диск на 25 Гб (для демонстрации я буду использовать мой любимый Virtualbox), на нем один раздел, есть папка VHDs, на которой я создал виртуальный диск и установил на него Windows 10. это.
Вот как будет выглядеть меню загрузки системы в Bootice (раздел BCD, Easy Mode)
Вот 25 Гб C: это тот «физический» диск, на котором я создал виртуальный размером 20 Гб и на который установил Windows 10. Все хорошо, но дальше нам нужно создать оболочку управления.
Как известно, WinRE всегда устанавливается вместе с Windows и приходит на помощь при обнаружении проблем с загрузкой.
Нам он нужен для другой цели, я хочу туда попасть для работы с VHD файлами.
Добавим пункт WinRE в меню загрузки.
Для этого в Bootice воспользуемся Professional Mode, последний объект в списке слева — Windows Recovery, справа видно его расположение на VHD:
Этот объект, а точнее ссылку на него, необходимо добавить в список загрузочного меню, выбрать слева вверху ветку Windows Boot Manager, в правой панели выбрать «Порядок отображения» и из выпадающего списка добавить пункт о WinRE:
Теперь пункт «Среда восстановления Windows» будет отображаться в меню загрузки системы, в чем мы можем убедиться, вернувшись в простой режим:
Останется только перезагрузиться и выбрать второй пункт, WinRE начнет загружаться, а там нас интересует только пункт Устранение неполадок, Дополнительные параметры, Командная строка.
Это напоминает как установщик Windows, так и прародителя WinRE, известную среду предустановки Windows. Вот здесь, собственно, и начинается работа с оболочкой, и не так важно, какую вы выберете, так как все примерно одинаково.
Нашим основным жёстким диском оказывается диск C:, наш master.vhd находится в его папке VHDs, и мы можем спокойно скопировать его куда-нибудь.
В WinRE подключаем сеть волшебной командой:
Драйвер сетевого адаптера автоматически выбирается и запускается, IP-адрес получается от DHCP-сервера, и мы можем работать с сетью.wpeutil initializenetwork
В Virtualbox я могу смонтировать сетевую папку с помощью этой команды: net use z: \\10.0.2.2\d$
и оттуда скопируйте необходимые инструменты для работы в оболочке.
Поскольку выбрана версия 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 находится на нашем хост-диске, и загрузиться в него оттуда.
Меню загрузки будет выглядеть так:
2. Установка Windows на VHD на работающем компьютере
Добавить дополнительную операционную систему на существующий компьютер легко, создав новый виртуальный жесткий диск и подключив его, затем запустив установщик и выбрав букву, присвоенную подключенному диску.Гораздо более сложной задачей будет перенос текущей конфигурации, уже установленной на физическом диске системы, на виртуальный диск.
Здесь на ум приходит несколько вариантов.
Первое, что я вспомнил, — это использование Windows Backup, поскольку оно создает файл VHD (vhdx) в режиме создания образа системы.
Казалось бы, все, что требуется, — это добавить ссылку на такой VHD в меню загрузки и посмотреть, что произойдет. Я так и сделал, при первой загрузке винда выдала ошибку, а при всех последующих что-то старательно загружалось, очень долго, и даже мелькнуло окно с картинкой экрана блокировки исходной системы, но оно исчезло снова.
Не знаю почему, но с VHD-диска, полученного из резервной копии, Windows не загружается.
Мне пришлось пойти другим путем, используя Disk2vhd из комплекта Sysinternals.
Все довольно просто, вы выбираете раздел физического диска или весь диск, а Disk2vhd делает из него VHD-файл:
Но тут начинаются неудобства.
Полученный виртуальный жесткий диск, независимо от его фактического размера, заявляет, что его размер равен всему нашему физическому диску.
То есть, если у меня был физический диск 180 ГБ, и я выбрал только первый раздел размером 100 ГБ, то VHD-файл получился около 50 ГБ, но сообщает о себе как 180 ГБ.
Проблема здесь в том, что если вы загрузитесь с такого VHD, Windows для его запуска потребуется 180 ГБ места.
То есть, как бы вы его не оптимизировали (дефрагментация, удаление -z), как бы вы его не сжимали (компактный виртуальный диск, сжатие), вы не сможете избавиться от исходных характеристик, захваченных Disk2vhd. Пришлось пройти сложное преобразование, создать пустой VHD, загрузить PartedMagic в Virtualbox, подсунуть ему преобразованный и пустой VHD и использовать Gparted (и Clonezilla, если не хотите заморачиваться с bootrec) для переноса раздела.
В результате получился VHD 20 Gb, с которого я сейчас пишу эту статью.
3. Использование дифференциальных виртуальных жестких дисков
В особо ненадежных средах, на общедоступных компьютерах или при проведении каких-то опасных экспериментов может оказаться полезной возможность использования дифференциальных VHD, на которых записывается только разница, измененная информация, а исходный VHD остается неизменным.Понятно, что сначала нужно уже иметь рабочую систему на VHD-диске, а потом добавлять вариант с дифференциальным диском.
Создать такой диск можно в diskpart или в Bootice. Пусть master.vhd будет нашим основным диском, создадим для него дифференциальный дочерний.
vhd, нажав кнопку Create:
Теперь нужно добавить/исправить в BCD элемент, отвечающий за загрузку с VHD, указав дифференциальный child.vhd вместо master.vhd.
Для этого мы воспользуемся профессиональным режимом в Bootice, создадим копию существующей записи Windows 10 (правая кнопка мыши, Дублировать эту запись) и переименуем новую в Windows 10 Child VHD. Теперь на этом этапе мы исправим ApplicationDevice и OsDevice, изменив имя VHD-файла:
Всё, теперь нужный пункт добавлен в загрузочное меню.
Если вы выберете Windows 10 Child VHD, Windows запустится и с этого момента будет записывать все изменения в child.vhd. Следует учитывать, что на момент загрузки для child.vhd будет зарезервировано столько же места, сколько указано в master.vhd, то есть в нашем случае 20 Гб, даже если его реальный размер составляет сотни раз меньше.
Время от времени имеет смысл выполнять процедуру слияния, то есть отправлять накопленную разницу от дочернего к мастеру, чтобы ничего не потерять.
Дело в том, что если загрузиться не в дочерний, а в мастер или даже WinRE на базе master.vhd, то связь между мастером и дочерним оборвется, придется восстанавливать дочерний элемент, но Bootice тоже может это сделать:
4. Рекомендуемая конфигурация физического диска при работе с загрузочными VHD.
Я бы предложил разбить физический диск на разделы следующим образом.Один раздел, достаточно большой, следует оставить для хранения VHD-файлов, все зависит от того, сколько разных VHD вам нужно.
Минимально необходимый для установки Windows x64 — 20 ГБ; вы можете создавать динамические диски, то есть они увеличивают свой фактический размер только по мере заполнения их внутреннего содержимого.
Но еще раз подчеркну, что в момент загрузки динамического VHD Windows резервирует для него место в соответствии с указанным максимальным размером.
Microsoft рекомендует использовать VHD фиксированного размера в рабочей среде, а динамические VHD только для тестирования, но я не заметил существенной потери производительности при использовании динамических VHD. Я бы предпочёл создать второй раздел для пользовательских данных и набора портативных приложений, если, например, вы хотите загружаться с разных VHD, но работать с одними и теми же файлами и программами.
Такое разделение может быть полезно и для того, чтобы вообще скрыть раздел с VHD, во избежание необоснованных действий со стороны конечного пользователя.
А скрыть раздел можно с помощью этого простого скрипта для diskpart с учетом выбранного диска и раздела для VHD-хранилища.
sel disk 0
sel part 1
set id=17
Теперь раздел скрыт, ему не назначена буква, но Windows все равно будет загружаться с VHD, хранящегося в этом разделе.
Единственный нюанс – выбор места на физическом диске для файла подкачки.
Если он выбран системой, и именно этот раздел будет скрыт, то при каждом запуске Windows будет спрашивать, где создать файл подкачки.
А чтобы вернуть шкатулку обратно, достаточно выполнить команду в diskpart set id=07
или set id=27
Список полезных ссылок msdn.microsoft.com/ru-ru/windows/hardware/commercialize/manufacture/desktop/understanding-virtual-hard-disks-with-native-boot msdn.microsoft.com/ru-ru/windows/hardware/commercialize/manufacture/desktop/windows-recovery-environment--windows-re--technical-reference gotch.techfaq.ru/archives/91 gotch.techfaq.ru/archives/115 winitpro.ru/index.php/2017/01/27/vosstanovlenie-sredy-windows-recovery-environment-winre-v-windows-10 https://technet.microsoft.com/ru-ru/library/cc766465(v=ws.10).
aspx Спасибо за внимание Теги: #Виртуализация #windows 10 #Системное администрирование #Резервное копирование #Оболочки #Восстановление данных #VHD #winre #bootice #diskpart #disk2vhd
-
История Citrix И Openstack
19 Oct, 24 -
Иллюзия Цвета И Контраста
19 Oct, 24 -
Netsuite Становится Публичной
19 Oct, 24