Не удалось задать новый родительский диск для виртуального диска
Виртуальный жесткий диск (Virtual Hard Drive, VHD) по терминологии Microsoft — это одиночный файл, в котором могут находиться встроенные файловые системы и который поддерживает стандартные операции с дисками. В файлах VHD размещаются виртуальные диски, которые подключаются к вируальным машинам в Microsoft Virtual PC, Virtual Server и Hyper-V, а также используются в программах архивации Microsoft Data Ptotection Manager, Windows Server Backup и системе архивации Windows 7.
Подобный подход используется и в различных менеджерах виртуальных машин других производителей, например VirtualBox Disk Image (VDI) в Oracle или Virtual Mashine Disk (VMDK) в VMWare. Однако особенностью VHD является то, что операционная система может работать с ними напрямую, без использования виртуальных машин. Эта возможность есть во всех операционных системах Windows, начиная с Windows Server 2008 R2 и Windows 7.
Для создания VHD-файлов можно использовать средства управления дисками — оснастку Управление дисками (Disk Management) или утилиту Diskpart, а диспетчер загрузки (Windows Boot Manager) поддерживает режим загрузки из VHD-образа.
Самый простой способ создать виртуальный диск — это оснастка Управление дисками. Для ее запуска набираем сочетание клавиш Win+R, в строке Выполнить набираем compmgmt.msc и жмем ввод.
В открывшейся панели Управление компьютером (Computer Management) выбираем пункт Управление дисками (Disk Management) и, щелкнув на нем правой клавишей мыши , выбираем в контекстном меню пункт «Создать виртуальный жесткий диск»
В открывшемся окне выбираем расположение VHD-файла и его размер, а также формат. Если у вас нет проблем со свободным дисковым пространством, то рекомендуется выбрать диск фиксированного размера как более производительный вариант.
Примечание. На самом деле есть и третий тип диска — разностный. Разностный диск отображает свое текущее состояние как набор изменений по сравнению с родительским диском, поэтому размер VHD-файла для разностного диска увеличивается по мере сохранения новых изменений на диске. Этот тип напрямую зависит от другого образа жесткого диска. Родительский образ жесткого диска может быть любым из упомянутых типов.
Жмем Ок и вновь созданный диск появляется в оснастке управления дисками. Теперь надо его инициализировать. Для этого щелкаем правой клавишей мыши на значке диска , и во всплывшем меню выбираем пункт «Инициализировать диск»
В открывшемся окне задаем стиль разделов. По умолчанию используется MBR, его и оставим.
Диск инициализован и переходит в состояние В сети (Оnline). Теперь щелкаем правой клавишей мыши на нераспределенном пространстве диска и выбираем пункт «Создать простой том».
Запускается мастер создания простого тома, с помощью которого мы:
Задаем размер диска
Выбираем букву диска
Файловую систему и метку тома.
Смотрим что получилось и жмем на кнопку «Готово».
Диск создан и готов к использованию.
И мы можем управлять им из оснастки Управление дисками, как обычным жестким диском.
А при необходимости можно отсоединить виртуальный диск или полностью удалить его с компьютера вместе со всем содержимым.
Ну и второй способ создания VHD — утилита Diskpart.
Запускаем командную оболочку, обязательно с правами администратора, и затем вводим команды в следующей последовательности:
- diskpart — попадаем в командную строку утилиты diskpart
- create vdisk file=c:\vhd\vhd1.vhd maximum 10000 — создаем VHD-файл размером 10Гб. При желании можно задать тип файла: type=fixed (фиксированный), type=expandable (расширяемый), а при помощи параметра parent можно указать путь к существующему родительскому файлу виртуального диска для создания разностного диска.
- select vdisk file=c:\vhd\vhd1.vhd — выбираем созданный диск
- attach vdisk — подключаем его
- assign letter=G — назначаем букву диска
- format fs=ntfs label=vhd1 — указываем формат файловой системы и метку диска
- exit — выходим из программы
Чтобы отсоединить виртуальный жесткий диск при помощи утилиты DiskPart:
- select vdisk file=c:\vhd\vhd1.vhd — выбираем наш виртуальный диск
- detach vdisk — отсоединяем его
Вот так вкратце о том, как можно создавать виртуальные диски и управлять ими. О том как их можно использовать поговорим в следующий раз.
2 года назад у меня было такое блестящий идея создать базовый диск Windows XP, который будет использовать вся моя виртуальная машина с XP.
Конечно, это закончилось тем, что у меня была только одна виртуальная машина с XP: -).
Сегодня мне нужно было освободить место на жестком диске, поэтому я нашел одну не используемую виртуальную машину с именем "Windows XP", которая имела только 5 ГБ. Я удалил его как можно быстрее 🙂 и, конечно, я использовал шифт, чтобы не использовать "корзину".
Теперь когда я хочу запустить мой XP VM у меня следующая ошибка: "один из родительских жестких дисков . отсутствовать."
Это не проблема для меня, как только я могу восстановить файлы с этого дифференциального vhd, который у меня есть прямо сейчас.
So:
- у меня дифференциальный диск с файлами
- у меня нет родительского диска
мой вопрос: Как я могу восстановить файлы из этого дифференциального hvd?
Если это только 5 ГБ вы можете попробовать кусок восстановления программного обеспечения, как программы diskeeper это восстановить.
Update: часть программного обеспечения, которое я использую и нашел очень полезным,WinUndelete, который скажет вам, если файл можно восстановить. Это может быть путем наименьшего сопротивления в будущем. Вскоре я опубликую дополнительную информацию о восстановлении с разностных дисков.
обновление (2): по Бену Армстронгу (виртуализация Microsoft Менеджер Программ)Blog
" без родительского AVHD невозможно получить данные от дочернего AVHD."
You нужно чтобы получить этот родительский VHD, если это вообще возможно. Будьте очень осторожны с интенсивными дисковыми операциями, которые могут перезаписать или повредить удаленный файл. Программист во мне говорит, что вы "можете" проанализировать дочерний VHD как поток байтов и найти маркеры для определенного файла и каким-то образом восстановить файлы, но это это не сходство.
Я подозреваю, что вам придется много узнать о внутренней работе файла vhd или как-то смонтировать его, может быть vhdmount или WinMount или что-то подобное будет работать. Я понятия не имею, понадобится ли ему оригинальный диск, поскольку я не знаю подробностей о том, что хранится на дифференциальном диске.
Я предполагаю, что Recuva найти и восстановить исходный файл невозможно, как если бы у вас было так мало места, которое вы заполняли резервное копирование с другими данными, так что оригинал утерян.
эта ссылка также может помочь вам:
при создании разностного диска по возможности следует инициализировать пути для локаторов платформ обоих типов на соответствующих платформах. Примечание: версии предыдущей для Microsoft виртуальный PC 2004 г. сохранены только абсолютные пути. Операция записи для Разностного жесткого диска Для операции записи, все данные записываются в разностном образ жесткого диска. Растровое изображение блока помечено как грязное для все сектора записываются в определенный блок. Операция чтения для Разностного жесткого диска Когда виртуальная машина считывает секторы образа жесткого диска, разностная подсистема жесткого диска проверяет битовую карту блока на разностном жестком диске. Разностный подсистемы жесткого диска считывает сектора помечены как "грязные" из разностного жесткого диска и секторов, помеченных очистить от материнской жестком диске. Например, рассмотрим блок, содержащий сектора от 4096 до 8191 в обоих образ родительского и дочернего жесткого диска. Первый сектор блока содержит растровое изображение блока. Одна ячейка представляет бит в растровом изображении, а черная точка представляет определенный сектор в блоке, в который была записана виртуальная машина.
Я нашел программу под названием MediaHeal для виртуальных дисков и после сканирования моего другого vhd с ним, кажется, что я могу восстановить свои файлы. Демо-версия только восстанавливает структуру папок / файлов, но это доказывает, что он может каким-то образом декодировать эти различия в NTFS.
У меня легкий ум теперь, когда я знаю, что это возможно. Этот инструмент стоит $199. Если кто знает что-то дешевле/бесплатно я открыт для предложений!
Ситуация следующая: виртуальная машина Hyper-V не может запуститься, выдавая при старте ошибку примерно такого содержания «VM failed to start. Synthetic SCSI controller (Instance ID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx): Failed to Power on with Error ‘General access denied error’.».
Если развернуть окно и посмотреть детальную информацию об ошибке, то станет понятно, что проблема кроется в отсутствии доступа к файлу виртуального диска. Дело в том, что виртуальной машине (как и обычному пользователю) для работы с файлом необходимы NTFS-права на этот файл. В том случае, когда у виртуальной машины отсутствуют необходимые разрешения, то она не сможет стартовать и вывалится с ошибкой.
Как видно на рисунке, каждая виртуальная машина имеет свой уникальный идентификатор (Virtual machine ID). Для устранения ошибки надо взять этот ID и добавить его в список контроля доступа VHD-файла. Сделать это можно из командной строки, с помощью утилиты с неблагозвучным 🙂 названием Icacls. В нашем примере команда будет выглядеть так:
Icacls H:\Hyper-V\SRV1.vhdx /grant ″NT Virtual Machine\f72e624c-4cc2-4167-b852-a47d412de8440″:(F)
Этой командой мы выдали виртуальной машине права Full Control на файл. В этом можно убедиться, открыв свойства файла и перейдя на вкладку Security. Как видите, разрешения в порядке и теперь виртуальная машина должна успешно запуститься.
Примечание. Подобную операцию необходимо проделать для каждого vhdx, и, если у машины имеются моментальные снимки (checkpoint), то для каждого avhdx файла, имеющего отношение к данной ВМ.
В заключение опишу некоторые ситуации, которые могут привести к потере прав:
• Перенос файла виртуального диска в другое расположение. Напомню, что при переносе файла на другой диск разрешения файловой системы удаляются и заменяются наследуемыми. Избежать этого можно, перенося файлы виртуальных машин с помощью встроенных средств Hyper-V, таких как Storage migration или Export\Import;
• Копирование файла виртуального диска. Ошибка может возникнуть при попытке подсунуть виртуальной машине чужой диск. Поэтому для ″размножения″ лучше воспользоваться либо экспортом, либо, при наличии VMM, клонированием виртуальных машин;
• Восстановление ВМ из бэкапа. Некоторые программы резервного копирования, например тот же DPM, при восстановлении в другое расположение не выставляют на файлы нужные права.
Разностный, или дифференциальный (англ. 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» (объединение).
Можно не только объединить разностный диск с родительским, но и создать отдельный новый диск со всеми изменениями. Очень полезная возможность в случае, если родительский диск используется несколькими виртуалками. Можно даже выбрать тип нового диска.
И еще одно правило по работе с разностными дисками: не следует изменять родительский диск разностного виртуального жесткого диска. Если изменить родительский виртуальный жесткий диск или заменить его другим виртуальным жестким диском (даже с тем же именем файла), структура блоков между родительским диском и разностным виртуальным жестким диском будет нарушена, и разностный виртуальный жесткий диск будет поврежден.
Предыстория:
Случился у меня следующий баг на сервере. Жесткий диск приказал долго жить, взамен ему был приобретен другой и скопированы данные один в один посредством Windows проводника, пока это еще было возможно сделать! После чего жесткие диски были поменяны местами, но из-за того, что я не заметил, что буква диска стала другой решил пересоздать виртуальные машины (ВМ) и удалил контрольные точки (КТ). После создания новых ВМ, все запустилось, но естественно ВМ была актуальна на ту дату, на которой последний раз было произведено слияние ВМ с КТ.. В моем случае это был июнь текущего года, а на дворе октябрь, соответственно вся информация в этом промежутке была, грубо говоря, утеряна… Я решил подкинуть старые КТ к только что созданным ВМ, на что получил ошибку от Hyper-v: Свойство «maxinternalsize» не существует в классе далее название КТ. И так как решается эта проблема, запускаем powershell от имени администратора, и вводим следующие команды:
PS C:\WINDOWS\system32> set-vhd 'D:\Hyper-V\Virtual Hard Disks\V-VESTACP_DEE2B82D-63E7-4134-A5D6-08448D355FBE.avhdx' -ParentPath "D:\Hyper-V\Virtual Hard Disks\V-VESTACP.vhdx"
Если выдало ошибку, что не удалось задать новый родительский диск для ВМ, применяем эту команду принудительно с игнорированием ошибок:
PS C:\WINDOWS\system32> set-vhd 'D:\Hyper-V\Virtual Hard Disks\V-VESTACP_DEE2B82D-63E7-4134-A5D6-08448D355FBE.avhdx' -ParentPath "D:\Hyper-V\Virtual Hard Disks\V-VESTACP.vhdx" -IgnoreIDMismatch
Если у Вашей ВМ было несколько КТ, то нужно указывать их поочередно, на пример у меня есть ВМ с win 7 у нее 2 КТ..
- Родитель = Win7.vhdx
- Первая КТ = Win7_5A0F4E19-3212-4D0A-8A43-83853D468B0B.avhdx
- Вторая КТ = Win7_31AB2236-D8AC-4CF9-8A75-2DC321590C8C.avhdx
Set-VHD "D:\Hyper-V\Virtual Hard Disks\Win7_31AB2236-D8AC-4CF9-8A75-2DC321590C8C.Avhdx" -ParentPath "D:\Hyper-V\Virtual Hard Disks\Win7_5A0F4E19-3212-4D0A-8A43-83853D468B0B.avhdx"
Set-VHD "D:\Hyper-V\Virtual Hard Disks\Win7_5A0F4E19-3212-4D0A-8A43-83853D468B0B.avhdx" -ParentPath "D:\Hyper-V\Virtual Hard Disks\Win7.vhdx"
Обычно после первой ссылки КТ на родителя, остальные можно сделать через сам диспетчер ВМ hyper-v. Начну с самого начала. После того как вы создали новую ВМ и импортировали нужный Вам диск со старой ВМ. Запустите ее, чтобы убедиться, что она работает, после чего выключите. Далее создаем для нее новую КТ. После чего копируем СТАРУЮ КТ от этой ВМ, у Вас должно получиться 1 образ ВМ и 2 КТ в папке для ВМ, в диспетчере hyper-v — 1 КТ.
Если у Вас также, идем в параметры ВМ — жесткий диск — виртуальный жесткий диск — обзор, выбираем СТАРУЮ КТ (обычно имеет объем больше, чем только что созданная)
Жмем применить, вылетит пара окон на подобие того, что вы уверены, что хотите сделать это и т.д. и т.п., так же предложит переименовать СТАРУЮ КТ, делаем как хотим это не критично
После этого в строке виртуальный жесткий диск, сменится имя на образ вашей старой КТ, в диспетчере hyper-v так же появится вторая КТ, а в папке с образами ВМ 3я КТ!
После этого можно еще раз включить ВМ, чтоб проверить работоспособность, в теории уже в этом состоянии все данные, которые были утеряны с удалением КТ должны вернуться! Но мы идем дальше, выключаем снова эту ВМ. И удаляем последовательно КТ, от самой НОВОЙ к той, которую ДОБАВИЛИ вручную.. Должно произойти слияние КТ с ВМ.
После слияния у вас в диспетчере hyper-v не должно остаться ни одной КТ у ВМ, а в папке с образом ВМ должна находиться одна КТ, ее нужно удалить вручную, после чего вновь создать КТ, для следующего восстановления на сегодняшний день!
Читайте также: