Не удается загрузиться после изменения размера жесткого диска VHD в VirtualBox


15

В Windows 7 я установил другую виртуальную машину Windows 7 в VirtualBox. Это работало отлично. Затем мне нужно было увеличить размер VHD HD. Итак, я использовал утилиту VBoxManage для этого со следующим комментарием:

VBoxManage modifyhd "c:\VMs\Win7.vhd" --resize 30000

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

FATAL: не найдено загрузочного носителя! Система остановлена.

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

Любая идея, что пошло не так и как я могу сохранить свою виртуальную машину в этом файле VHD?


У меня была точно такая же проблема, и я не смог найти полезного решения в Интернете, поэтому я начал анализировать VHD вручную в соответствии с документацией Microsoft. В настоящее время кажется, что есть ошибка в реализации modifyhd, когда он не корректировал смещение для блоков данных после того, как расширил таблицу размещения блоков. Мне нужно сделать еще несколько экспериментов, чтобы проверить это.
billc.cn

На VirtualBox 4.3.10 я изменил размер файла .vhd. Похоже, он не только не изменил указатели таблицы размещения блоков, но и расширил таблицу размещения блоков в первый блок данных, переписав мою MBR и таблицу разделов. Не используйте VirtualBox для изменения размера VHD-файлов!
Аарон

Ответы:


12

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

Там хорошая рецензия процедуры здесь ; просто перейдите к шагу 4.


Ну, это облом. Это означает, что я только что выбросил 3 часа работы. Спасибо за информацию.
Тагберк

4
Я следовал за хорошей записью (после того, как я изменил размер своего VHD и не мог загрузиться с него), и GParted не показывал никаких разделов на жестком диске, только 50 гигабайт нераспределенного пространства. Означает ли это, что modifyhdнеисправен привод?
GSerg


1

У меня была такая же проблема, и мне удалось получить данные с помощью GParted LiveCD

  1. Создать новый виртуальный жесткий диск для получения скопированных данных (создать разделы и формат)
  2. Загрузите GParted LiveCD и загрузитесь на VirtualBox
  3. Выберите Устройство -> Попытка восстановления данных
  4. Нажмите OK, а после сканирования нажмите View (это будет монтировать / tmp / gparted-roview-XXXXXX)
  5. На терминале подключите второй VHD (sudo mount / dev / sdb1 / mnt)
  6. Скопируйте файлы (sudo cp -R / tmp / gparted-roview-XXXXXX / * / mnt

После этого вы можете выключить виртуальную машину и смонтировать виртуальный жесткий диск в диспетчере устройств Windows.


1

Здесь они объясняют проблему (на испанском)

Резюме:

а. «vboxmanage modifyhd (resize)» генерирует ошибку во многих системах (версии Windows NT5, 9x, Server и x86). В результате получается поврежденный раздел, который очень трудно восстановить.

б. Вам необходимо выполнить «vboxmanage modifyhd (resize)» (чтобы изменить размер VDI) в пути, который содержит все файлы и папки, связанные с VDI. Посмотрите на изображение

введите описание изображения здесь

введите описание изображения здесь

Рекомендация:

Замените "vboxmanage modifyhd" на "vboxmanage clonehd"

  1. Создайте новый виртуальный диск VDI (с размером, который вы хотите расширить). Пример: Old.vdi имел 50 ГБ. New.vdi создать его с 100 ГБ

    VBoxManage createhd - имя файла /path/New.vdi - размер 100000

  2. Клонируйте его с помощью следующей команды:

    vboxmanage clonehd /path/Old.vdi /path/New.vdi - существующий

Примечание : оба VDI не должны находиться на одном пути

  1. Запустите New.vdi и перейдите в Управление компьютером Windows и Расширьте дисковое пространство (назначьте пустое пространство). Если вы не хотите делать это вручную, вы можете использовать любое бесплатное приложение для создания разделов , такое как AOMEI Partition Assistant Standard , GParted и многие другие.

обновите ответ

0

Стоит отметить, что у меня возникла та же проблема, из-за которой я выполнил команду modifyhd во время работы гостя. Официальная документация ничего не говорит о том, что вы должны сначала удалить снимки, и что этот гость должен был быть остановлен.

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

Так что имейте в виду:

  1. Объединить все снимки с базовым изображением
  2. Завершите работу Гостевой ОС

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


0

Мне удалось восстановить изображение, которое было сломано этой ошибкой. В отличие от Эдисона gparted живое изображение ничего не нашло. Вот что я сделал:

  • Во-первых, поскольку поддержка VBD для VBD, по-видимому, глючит и ужасна, начните с преобразования VHD в VDI с помощью VBoxManage clonehd foo.vhd --format vdi foo.vdi. Когда я пропустил этот шаг, я смог восстановить файлы из образа, но после нескольких перезагрузок он снова «сломался». Я предполагаю, что ошибка действительно испортила VHD-файл таким образом, что в дальнейшем I / O «ломает» его ... VBox, похоже, не имеет этих проблем с VDI, поэтому я отказался от VHD.

  • Загрузитесь в WinPE, среду предустановки Windows. Как это сделать может быть статья сама по себе. Если вы не знакомы с этим, вот ярлык: загрузитесь с установочного DVD-диска Windows (Vista или выше) и нажмите shift-F10, как только появится графический интерфейс, он выдаст вам командную строку.

  • Загрузите тестовый диск , найдите способ вставить его в образ WinPE (или подойдет простая флешка USB) и запустите его из среды WinPE. (Примечание: в WinPE отсутствует WOW64, 32-битный уровень совместимости для 32-битных приложений. Поэтому для моей 64-битной установки WinPE требовался 64-битный двоичный файл тестового диска.)

  • Тестдиск нашел разделы и восстановил их.

  • На этом этапе файлы были восстановлены, но загрузчик не удалось из-за нескольких проблем. Во- первых я использовал , diskpartчтобы отметить раздел как активный ( list disk, sel disk <disk number>, sel par 0, active). Дальше, не загрузится. Вернулся в WinPE и удалил \boot, затем побежал bcdboot C:\windows /s C:переустанавливать загрузчик.

  • В конце я побежал, chkdisk /Rчтобы убедиться, что изображение было в порядке. Прошло несколько часов, проблем не нашлось.


-1

У меня была та же проблема, GParted вообще не распознавал разделы, и это было показано как нераспределенное пространство. В этот момент я понял, что данные могли быть потеряны.

Потом я вспомнил использование testdisk для поиска потерянных разделов на жестких дисках, так почему бы не попробовать его на виртуальных дисках? и это сработало.

  1. При загрузке из GParted во время написания этого ответа в GParted был «тестдиск». Просто запустите терминал, запустите «sudo testdisk / dev / sda» или что-то еще, что он показывает на вашем компьютере. Запустите "sudo fdisk -l", чтобы показать все диски.
  2. Проанализируйте таблицу разделов, она немедленно обнаружит раздел, поскольку он все еще находится в первых секторах. Написать новый раздел, таблицу, а затем продолжить с GParted, чтобы продолжить восстановление, как указано в этой ссылке: http://www.howtogeek.com/124622/how-to-enlarge-a-virtual-machines-disk-in-virtualbox -или-VMware /
  3. В следующий раз, когда вы захотите сделать это, сначала сделайте копию вашего VDISK.
  4. В приведенной ниже ссылке я заметил, что они создают новый виртуальный жесткий диск, а затем клонируют с --existing: http://tips.kaali.co.uk/2012/03/16/expand-or-increase-the-size-of-virtual- box-vdi-dis / Я еще не пробовал, но восстановил свой диск с помощью приведенных выше инструкций.

Надеюсь, это кому-нибудь поможет.


Пожалуйста, процитируйте основные части ответа по ссылочной ссылке (ссылкам), так как ответ может стать недействительным, если связанные страницы изменятся.
DavidPostill
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.