14

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

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

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

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

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

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

7 ответов7

11

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

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

6

У меня была такая же проблема

  1. создать новый VHD с желаемым размером
  2. Используйте clonhd для копирования со старого VHD на новый VHD

Ссылка: http://tips.kaali.co.uk/2012/03/16/expand-or-increase-the-size-of-virtual-box-vdi-dis/

1

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

  1. Создать новый VHD для получения скопированных данных (создать разделы и формат)
  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 --filename /path/New.vdi --size 100000

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

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

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

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

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

  • Во-первых, поскольку поддержка VBox для VHD, по-видимому, ошибочна и ужасна, начните с преобразования 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 чтобы убедиться, что изображение в порядке. Прошло несколько часов, проблем не нашлось.

0

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

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

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

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

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

-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 / Я еще не пробовал, но восстановил свой диск с помощью приведенных выше инструкций.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .