Объединить разностный жесткий диск с родительским
область применения: Windows Server 2022, Windows 10, Windows 8.1, Windows 8, Windows 7, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2 Windows Server 2012 и Windows server 2008 R2, Windows server 2008
Интерпретатор команд DiskPart помогает управлять дисками компьютера (дисками, разделами, томами или виртуальными жесткими дисками).
Прежде чем можно будет использовать команды DiskPart , необходимо сначала вывести список, а затем выбрать объект, чтобы получить фокус. После того как объект находится в фокусе, любые команды DiskPart, которые вы вводите, будут действовать для этого объекта.
Синтаксис
Чтобы запустить интерпретатор команд DiskPart, в командной строке введите:
Для запуска DiskPart необходимо быть членом локальной группы администраторов или группы с аналогичными разрешениями.
Разностный, или дифференциальный (англ. differencing) виртуальный жесткий диск (VHD) является одним из трех типов виртуальных дисков, которые используются в Hyper-V. Разностный диск еще иногда называют «дочерним», так как он не является самостоятельным диском и в процессе работы полностью зависит от «родительского» диска. Разностный VHD содержит не полную копию данных, а только изменения связанного с ним родительского VHD. Родительский диск может быть любым из из трех типов VHD, в том числе и другим разностным. Можно даже создавать цепочку дисков, объединив несколько разностных VHD.
Принцип работы разностных дисков состоит в следующем: родительский диск содержит неизменный набор данных, а все изменения записываются на разностный диск. На этом принципе основана система создания моментальных снимков — снапшотов (или чекпойнтов в VMM). При создании снапшота как раз создается разностный диск, в который и продолжают писаться все изменения виртуальной машины, а основной диск становится родительским и уже не изменяется. При создании следующего снапшота создается еще один разностный диск, а предыдущий становится по отношению к нему родительским. Называется эта конструкция деревом снапшотов.
Сохраняются снапшоты в виде файлов с расширением .AVHD, которые как раз и являются разностными VHD. Для примера, виртуальная машина test-pc-01 имеет основной VHD диск и два разностных AVHD, из которых первый является родительским для второго.
Разностные диски можно объединять. Для этого достаточно кликнуть правой клавишей на снапшоте и выбрать пункт Delete Snapshot (удалить). При этом снапшот будет убран из списка, все изменения будут перенесены в родительский диск (операция Merging), а разностный AVHD удален.
Кстати, при удалении снапшотов в Windows Server 2008 есть один нюанс. Если в данный момент виртуальная машина запущена, то AVHD, связанный с этим снапшотом остается, и запись в него продолжается. Объединение состоится только тогда, когда виртуальная машина будет остановлена. В зависимости от объемов данных операция объединения может занять определенное время, в течение которого запустить виртуалку нельзя. В Server 2012 эта проблема была решена, и снимки можно удалять при работающей виртуальной машине.
Область применения разностных дисков не ограничивается одними снапшотами. При желании разностные VHD можно использовать и при развертывании новых виртуальных машин.
Например, у нас есть шаблон виртуальной машины — VHD с установленой на нем и подготовленой к переносу операционной системой (процесс создания шаблона ВМ описан в предыдущей статье). Используем его как родительский диск. Процесс этот выглядит следующим образом:
Создаем новую ВМ без жесткого диска — пункт «Attach a virtual hard disc later»
Идем в свойства машины и выбираем контроллер жестких дисков. Можно использовать как IDE, так и SCSI контроллер, особой разницы нет.
Теперь к выбранному контроллеру необходимо подключить виртуальный жесткий диск. Для подключения идем в свойства контроллера и жмем кнопку «New», запуская мастер создания VHD.
Из предложенных мастером типов дисков выбираем разностный.
Указываем имя и месторасположение разностного диска.
Затем указываем расположение родительского диска, которым является созданый нами шаблон ВМ.
Смотрим суммарную информацию и подтверждаем создание нового диска кнопкой «Finish».
Теперь в свойствах ВМ будет указан в качестве основного разностный диск.
Если посмотреть свойства диска кнопкой «Inspect», в них указан не только его тип, но и расположение родительского диска.
Таким образом можно создать много однотипных виртуалок, используя всего один родительский диск. При этом мы сэкономим не только время на развертывание, но и дисковое пространство. К примеру, одна установка Windows Server 2008 R2 занимает примерно 10Гб. Развернув 10 виртуалок с одним родительским диском мы сохраним 90 Гб места на диске.
Однако подобное решение ограничено возможностями дисковой подсистемы, ведь все 10 машин будут одновременно обращаться к одному диску, что отрицательно скажется на его производительности. Кроме того, у всех ВМ появляется единая точка отказа — жесткий диск, т.е. уменьшается надежность.
Как и в случае со снапшотами, с разностными дисками можно провести процедуру объединения. Для этого надо остановить виртуальную машину, зайти в ее свойства и на вкладке жесткого диска нажать на кнопку «Edit» (редактирование). В открывшемся окне выбираем пункт «Merge» (объединение).
Можно не только объединить разностный диск с родительским, но и создать отдельный новый диск со всеми изменениями. Очень полезная возможность в случае, если родительский диск используется несколькими виртуалками. Можно даже выбрать тип нового диска.
И еще одно правило по работе с разностными дисками: не следует изменять родительский диск разностного виртуального жесткого диска. Если изменить родительский виртуальный жесткий диск или заменить его другим виртуальным жестким диском (даже с тем же именем файла), структура блоков между родительским диском и разностным виртуальным жестким диском будет нарушена, и разностный виртуальный жесткий диск будет поврежден.
Разностный, или дифференциальный (англ. differencing) виртуальный жесткий диск (VHD) является одним из трех типов виртуальных дисков, которые используются в Hyper-V. Разностный диск еще иногда называют «дочерним», так как он не является самостоятельным диском и в процессе работы полностью зависит от «родительского» диска. Разностный VHD содержит не полную копию данных, а только изменения связанного с ним родительского VHD. Родительский диск может быть любым из из трех типов VHD, в том числе и другим разностным. Можно даже создавать цепочку дисков, объединив несколько разностных VHD.
Принцип работы разностных дисков состоит в следующем: родительский диск содержит неизменный набор данных, а все изменения записываются на разностный диск. На этом принципе основана система создания моментальных снимков — снапшотов (или чекпойнтов в VMM). При создании снапшота как раз создается разностный диск, в который и продолжают писаться все изменения виртуальной машины, а основной диск становится родительским и уже не изменяется. При создании следующего снапшота создается еще один разностный диск, а предыдущий становится по отношению к нему родительским. Называется эта конструкция деревом снапшотов.
Сохраняются снапшоты в виде файлов с расширением .AVHD, которые как раз и являются разностными VHD. Для примера, виртуальная машина test-pc-01 имеет основной VHD диск и два разностных AVHD, из которых первый является родительским для второго.
Разностные диски можно объединять. Для этого достаточно кликнуть правой клавишей на снапшоте и выбрать пункт Delete Snapshot (удалить). При этом снапшот будет убран из списка, все изменения будут перенесены в родительский диск (операция Merging), а разностный AVHD удален.
Кстати, при удалении снапшотов в Windows Server 2008 есть один нюанс. Если в данный момент виртуальная машина запущена, то AVHD, связанный с этим снапшотом остается, и запись в него продолжается. Объединение состоится только тогда, когда виртуальная машина будет остановлена. В зависимости от объемов данных операция объединения может занять определенное время, в течение которого запустить виртуалку нельзя. В Server 2012 эта проблема была решена, и снимки можно удалять при работающей виртуальной машине.
Область применения разностных дисков не ограничивается одними снапшотами. При желании разностные VHD можно использовать и при развертывании новых виртуальных машин.
Например, у нас есть шаблон виртуальной машины — VHD с установленой на нем и подготовленой к переносу операционной системой (процесс создания шаблона ВМ описан в предыдущей статье). Используем его как родительский диск. Процесс этот выглядит следующим образом:
Создаем новую ВМ без жесткого диска — пункт «Attach a virtual hard disc later»
Идем в свойства машины и выбираем контроллер жестких дисков. Можно использовать как IDE, так и SCSI контроллер, особой разницы нет.
Теперь к выбранному контроллеру необходимо подключить виртуальный жесткий диск. Для подключения идем в свойства контроллера и жмем кнопку «New», запуская мастер создания VHD.
Из предложенных мастером типов дисков выбираем разностный.
Указываем имя и месторасположение разностного диска.
Затем указываем расположение родительского диска, которым является созданый нами шаблон ВМ.
Смотрим суммарную информацию и подтверждаем создание нового диска кнопкой «Finish».
Теперь в свойствах ВМ будет указан в качестве основного разностный диск.
Если посмотреть свойства диска кнопкой «Inspect», в них указан не только его тип, но и расположение родительского диска.
Таким образом можно создать много однотипных виртуалок, используя всего один родительский диск. При этом мы сэкономим не только время на развертывание, но и дисковое пространство. К примеру, одна установка Windows Server 2008 R2 занимает примерно 10Гб. Развернув 10 виртуалок с одним родительским диском мы сохраним 90 Гб места на диске.
Однако подобное решение ограничено возможностями дисковой подсистемы, ведь все 10 машин будут одновременно обращаться к одному диску, что отрицательно скажется на его производительности. Кроме того, у всех ВМ появляется единая точка отказа — жесткий диск, т.е. уменьшается надежность.
Как и в случае со снапшотами, с разностными дисками можно провести процедуру объединения. Для этого надо остановить виртуальную машину, зайти в ее свойства и на вкладке жесткого диска нажать на кнопку «Edit» (редактирование). В открывшемся окне выбираем пункт «Merge» (объединение).
Можно не только объединить разностный диск с родительским, но и создать отдельный новый диск со всеми изменениями. Очень полезная возможность в случае, если родительский диск используется несколькими виртуалками. Можно даже выбрать тип нового диска.
И еще одно правило по работе с разностными дисками: не следует изменять родительский диск разностного виртуального жесткого диска. Если изменить родительский виртуальный жесткий диск или заменить его другим виртуальным жестким диском (даже с тем же именем файла), структура блоков между родительским диском и разностным виртуальным жестким диском будет нарушена, и разностный виртуальный жесткий диск будет поврежден.
29.11.2017
itpro
Hyper-V, Windows Server 2016
комментариев 10
Технология разностных (дифференциальных) дисков Hyper-V присутствует в гипервизоре Microsoft уже довольно давно (если не ошибаюсь, с версии Hyper-V в Windows Server 2008). Как правило, большинству администраторов она знакома применительно к технологиям создания снапшотов (чекпоинтов) и широко используется различными системами резервного копирования ВМ. При создании снапшота или выполнении бэкапа текущее состояние ВМ фиксируется в одном vhd файле, а все изменения пишутся уже в другой, дифференциальный (или разностный) диск.
Создаем разностные диски и ВМ на их основе
Теперь можно создать несколько зависимых (дочерних) vhd файлов:
New-VHD -ParentPath: e:\data\vhd\Win2016.vhdx -Path e:\data\vhd\Win2016-diff1.vhdx -Differencing
New-VHD -ParentPath: e:\data\vhd\Win2016.vhdx -Path e:\data\vhd\Win2016-diff2.vhdx –Differencing
При создании разностного диска через графический интерфейс Hyper-V Manager в качестве формата диска нужно выбрать VHDX-> Differencing, указать его имя и путь к родительскому диску.
Теперь на основе этих vhd файлов создадим 2 виртуальные машины Hyper-V:
New-VM -Name "Win2016-diff1" -Generation 2 -MemoryStartupBytes 1GB -VHDPath e:\data\vhd\Win2016-diff1.vhdx -SwitchName "External Network"
New-VM -Name "Win2016-diff2" -Generation 2 -MemoryStartupBytes 1GB -VHDPath e:\data\vhd\Win2016-diff2.vhdx -SwitchName "External Network"
Создаем эталонный VHD образ системы
Создать эталонный VHD файл можно с помощью графического интерфейса Hyper-V Manager или с помощью PowerShell. В PowerShell намного быстрее.
Совет. Для работы следующих командлетов должен быть установлен модуль Hyper-V для Windows PowerShell :
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Management-PowerShell
Создадим новый vhdx файл.
new-vhd -path e:\data\vhd\Win2016.vhdx -SizeBytes 50GB –Dynamic
На его базе создадим новую ВМ:
new-vm -Name TemplateVM –Path e:\data\vhd\ -VHDPath e:\data\vhd\Win2016.vhdx | `
set-vmmemory -DynamicMemoryEnabled $true -MaximumBytes 2GB -MinimumBytes 512MB -StartupBytes 1GB
Смонтируем установочный ISO образ с образом нужной ОС:
add-vmdvddrive -VMName TemplateVM -Path d:\WinSrv2016.ISO
После того, как вы создали новую ВМ, нужно установить на нее ОС, которая будет использоваться в качестве базового образа. Данную ОС нужно настроить соответствующим образом (установить драйвера, обновления, поменять настройки системы). Затем с помощью Sysprep выполняем обезличивание ОС для последующего развертывания.
cd %SystemRoot%\System32\Sysprep
sysprep /generalize /oobe /shutdown
Таким образом, у нас получается эталонный образ ВМ.
Саму ВМ теперь можно удалить (сохранив ее vhd файл. ). Чтобы избежать случайного изменения этого vhd файла, которое может в обрушить все дочерние ВМ, переведем его в режим ReadOnly:
Set-ItemProperty e:\data\vhd\Win2016.vhdx -Name IsReadOnly -Value $true
Дифференциальные диски Hyper-V
Еще одной интересной возможностью дифференциальных дисков является возможность создания некого базового образа ОС (в виде vhd файла) со всеми необходимыми настройками и ПО. Затем на базе этого образа можно развернуть множество типовых виртуальны машин, которые используют vhd диск базового образа, а все изменения пишут уже в собственные виртуальные диски. Тем самым достигается существенная экономия дискового пространства. Например, на примере ниже видно, что при использовании дифференциальных дисков для 4 ВМ на основе одного образа понадобится всего 40 Гб, а при классической модели развертывания для этих же машин нужно 150 Гб. Разница существенная, особенно для быстрых и дорогих SSD дисков!
Дифференциальный (разностный) диск Hyper-V является одним из поддерживаемых типов виртуальных дисков (vhd). Однако, в отличии от обычного vhd диска, он жестко привязан к другому родительскому диску. Дифференциальный диск выступает в роли дочернего диска и содержит не полную версию данных на диске ВМ, а лишь изменения, которые были внесены в процессе ее работы, т.е. это данные, отличающие его от родительского.
Родительский (шаблонный) vhd образ остается неизменным, а все дочерние виртуальные машины, созданные на его основе, пишут изменения в собственные разностные диски. Размер такого дифференциального диска как правило довольно небольшой (его максимальный размер не может превысить размеров родителя).
Определение фокуса
При выборе объекта фокус остается на этом объекте до тех пор, пока не будет выбран другой объект. Например, если фокус установлен на диске 0 и вы выбрали том 8 на диске 2, фокус переместится с диска 0 на диск 2, том 8.
Некоторые команды автоматически меняют фокус. Например, при создании новой секции фокус автоматически переключается на новую секцию.
Вы можете передать фокус только на раздел на выбранном диске. После того как раздел имеет фокус, связанный с ним том (если он есть) также имеет фокус. После того как у тома будет фокус, связанный диск и раздел также будут иметь фокус, если том сопоставляется с одним конкретным разделом. Если это не так, фокус на диске и разделе будет потерян.
Список доступных объектов
Вы можете получить список доступных объектов и определить число или букву диска с помощью:
list disk — Отображает все диски на компьютере.
list volume — Отображает все тома на компьютере.
list partition — Отображает разделы на диске, на котором находится фокус на компьютере.
list vdisk — Отображает все виртуальные диски на компьютере.
После выполнения команд List рядом с объектом с фокусом отображается звездочка (*).
Объединение (Merge) дифференциальных дисков в Hyper-V
В Hyper-V версии Windows 2008 R2 и выше появилась возможность объединения дифференциальных дисков с родительским (или же другим диском) без приостановки ВМ. Для этого имеется специальный командлет Merge-VHD либо специальная опция в меню редактирования vhd диска в консоли Hyper-V Manager.
Set-ItemProperty e:\data\vhd\Win2016.vhdx -Name IsReadOnly -Value $false
$Merge = @Path = ‘e:\data\vhd\Win2016-diff2.vhdx'
DestinationPath = 'e:\data\vhd\Win2016.vhdx'
>
Merge-VHD @Merge
Заключение
Для уменьшения нагрузки дисковой подсистемы при множественном обращении к одному родительскому vhd файлу со стороны всех ВМ, его рекомендуется размещать на быстрых дисках. Чтобы этот файл не стал единой точкой отказа, нужно предусмотреть стратегии его резервного копирования.
При корректном удалении снимков виртуальной машины при её выключении снимки жёстких дисков должны объединяться автоматически. К сожалению, не всегда это получается и в силу разных причин папка со снимками может распухать и привести ко всяким неприятным последствиям. Инструмента по автоматическому объединению таких “бесхозных” снимков нет. Приходится делать объединение вручную. Для этого необходимо знать где находятся снимки жёстких дисков (находятся обычно в папке виртуальной машины в подпапке Snapshots) и где находится исходный vhd-файл, к которому эти снимки мы будем прикреплять. Так же необходимо понять в каком порядке объединять снимки. Сначала объединяем самый свежий снимок (дата изменения снимка при включённой виртуалке совпадает с текущей, например 20/05/2010) со снимком более старшим (дата изменения снимка меньше предыдущей, но больше остальных, например 15/05/2010). Получившийся в итоге снимок объединяем со следующим по старшинству. Процедуру повторяем до тех пор пока не остается один снимок, который объединяется с исходным vhd-файлом. Процедура получается следующая:
- Выключаем виртуалку, чьи диски-снимки надо объединить.
- Меняем расширения всех снимков с .avhd на .vhd.
- На всякий случай делаем копии всех преобразуемых файлов (бывших .avhd и исходных .vhd).
- Записываем порядок в котором быдем объединять диски (20/05/2010.vhd => 15/05/2010.vhd =>… => Virtual Disk.vhd), чтобы в процессе не сбиться.
- В оснастке Hyper-V запускаем Edit Disk, выбираем самый новый снимок (20/05/2010.vhd). В окне выбора действия будет доступно только одно действие – Reconnect. Далее надо будет указать родительский снимок (предыдущий относительно того, который последний – 15/05/2010.vhd). При этом, для облегчения выбора, будет подсказка какой диск является родительским к исходному. Выбираем его. Нажимаем Finish.
- Запускаем Edit Disk повторно, выбираем самый свежий снимок. В окне выбора действия должно появится 2 пункта – Compact и Merge. Нас интересует второй. Выбираем его. В окне Summary можно будет посмотреть какой снимок с каким объединяется. Убеждаемся что это нужные нам снимки и запускаем процесс. При больших размерах снимков процесс может длиться достаточно долго.
- По завершении процесса в папке со снимками останется только самый новый снимок (20/05/2010.vhd). Родительский снимок (15/05/2010.vhd) будет удалён. Если в папке остались ещё более старые снимки, то переходим к пункту 5 и повторяем процесс объединения.
- Запускаем снова Edit Disk, в окне выбора действия будет 2 пункта – Compact и Merge. Выбираем второй. По завершении процесса в папке снимков снимков исходного диска не останется – все они будут объединены с исходным vhd-диском.
- Теперь, если мы зайдём в свойства виртуальной машины, то при попытке посмотреть на свойства нашего разбитого на снимки диска будет ошибка – виртуалка не сможет найти последний снимок. Смело можно удалять диск из свойств виртуалки и подключать его заново.
Последнюю часть в картинках можно посмотреть здесь. Исходный пост, который и помог провернуть всю эту операцию можно посмотреть здесь.
Читайте также: