Восстановление файлов с сломанной машины Virtualbox .vdi


23

На моем Ubuntu 12.04.1, работающем на virtualbox, не хватило места, пока я устанавливал на него программное обеспечение, и теперь оно не перезагружается . У меня есть файлы, которые мне нужно восстановить. У меня есть ubuntu64.vdiфайл на моем ноутбуке с Windows 7 (хост), и мне было интересно, есть ли способ восстановить файлы из файла vdi.

Параллельно я сгенерировал новую машину 12.04.1 на виртуальной машине на том же ноутбуке, и я буду использовать ее вместо загруженной.

Я могу добавить занесенный vdiв список дисков на рабочем. Затем я использовал gnome nautilus, чтобы смонтировать разорванный диск.

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

Отредактированный:

Вот что Virtual Media Managerговорит мне о моем ubuntu64.vdiфайле: введите описание изображения здесь

EDITED2:

Я скопировал мой ubuntu.vdiна внешний USB с большим количеством дискового пространства. Я пытался использовать Windows для клонирования, но получил ошибку:

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

Я попробовал то же самое с рабочей виртуальной машины через общую папку USB-накопителя, и она начала клонирование. Прошло много времени, но закончилось успешно:

root@precise64:/media/sf_E_DRIVE/copy_of_ubuntu64_vm_folder_20140224/ubuntu64# 
VBoxManage clonehd ubuntu64.vdi ubuntu64.raw --format RAW
0%...

10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'RAW'. UUID: 90f99198-18e1-40ee-85fe-c083dcbb1ac3

EDITED3:

После создания файла необработанного, я бегу testdiskс Deeper Search, я получаю список , как это: введите описание изображения здесь

Атер Deeper Searchзакончил, я получаю список вроде этого:

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

Но я не знаю, какой именно снимок ... Есть идеи?


@ Таккат, звучит круто. Как я могу это сделать?
719016

@Takkat, я сделал это и установил его, используя gnome nautilus, но я верю, что он установил двухмесячную версию машины.
719016

2
Проблема здесь не в том, как восстановить диск, а в том, как сделать это слитым со снимком. Если вы попытаетесь клонировать ваш vdi, у него будет другой uuid, и снимок не будет работать с ним, и вы потеряете последние данные. Я не использую снимки на регулярной основе, потому что у меня были поврежденные диски в прошлом, и я смог восстановить базовый диск, но всегда терял ошибки. Я надеюсь, что кто-то здесь даст хороший рецепт для восстановления базы и дельты.
Пабло Марин-Гарсия

1
Это на следующий раз: никогда не храните данные на виртуальной машине, всегда монтируйте внешний диск ... или делайте частое резервное копирование / синхронизацию через rsync.
Ди

1
Попробуйте клонировать самый последний снимок, а не оригинальный диск. Вы должны использовать Vboxmanage clonehd 2208...(скопируйте самый последний UUID здесь). См. Serverfault.com/a/506581/195528
Rmano

Ответы:


21

Из командной строки

Если мы используем Ubuntu в качестве хоста, мы можем преобразовать наш .vdi диск в сырой диск с помощью следующей команды:

VBoxManage clonehd <sourcename> <clone.raw> --format RAW

Затем мы можем открыть тестовый диск Установить тестдиск с этим файлом, чтобы восстановить файлы на образе виртуального диска (также см. Ниже):

testdisk <clone.raw>

Виртуальной машины

Если поврежденный образ диска VDI все еще зарегистрирован в Virtual Box, мы можем добавить этот образ в качестве диска на нашу новую виртуальную машину:

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

Запустите виртуальную Ubuntu, в которую мы добавили сломанный .vdi, но не монтируем диск .

  1. Создайте каталог на смонтированном разделе для хранения собранных данных (например ~/rescued),

  2. Установите тестдиск Установить тестдиск на виртуальной машине.

  3. Запустите там тестдиск с терминала:

    sudo testdisk
    
  4. Выберите подходящий диск для сбора данных (здесь показано для /sdb) и выберите[Proceed]

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

  5. Выберите подходящий макет раздела (обычно Intel)

  6. Выберите [Analyse]-[Quick Search]

  7. Выберите раздел, содержащий данные для сбора (здесь присутствовал только один раздел NTFS):

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

  8. Нажмите, P чтобы просмотреть файлы этого раздела.

  9. Перейдите в каталог, содержащий данные. Просмотрите имена файлов, чтобы убедиться, что вы выбрали правильные.

  10. Выберите каталоги или файлы для сбора урожая, используя : . Все выбранные файлы / каталоги будут отмечены зеленым:

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

  11. Нажмите верхний регистр, C чтобы скопировать все выбранные каталоги / файлы в каталог восстановления, который будет выбран на следующем шаге.

  12. Выберите каталог на смонтированных разделах вашей виртуальной машины Ubuntu для хранения восстановленных данных:

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

  13. Нажмите, c чтобы начать копирование данных из испорченного .vdi в наш каталог восстановления в вашей здоровой виртуальной машине.

Заметки:

  • В случае, если мы не можем видеть наши файлы с [Quick Search]опцией в 6. нам, возможно, придется выполнить [Deeper Search]. Это также перечислит предыдущие удаленные и перезаписанные разделы. Поэтому нам нужно убедиться, что мы выбрали соответствующие разделы, в которых находятся наши данные.

  • Если мы сделали снимки .vdi, мы можем их найти, ~/.VirtualBox/Machines/<Name of Machine>/Snapshots/{###}.vmdkно всякий раз, когда мы использовали функцию снимка Virtual Box, любые изменения снимка будут записываться в дифференциальный файл.

    Чтобы объединить дифференциальный файл с жестким диском, нам нужно удалить все снимки (что, вероятно, не то, что нам нужно, так как тогда мы могли бы просто восстановить предыдущий снимок, а не вызывать восстановление данных), или нам нужно клонировать диск машины, используя:

    VBoxManage clonehd <name_of_source> <clone>
    

    Затем мы связываем клон с нашей спасательной виртуальной машиной, как показано выше.

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

  • В случае, если наша спасательная Ubuntu слишком мала для хранения восстановленных данных, мы можем создать еще один новый виртуальный диск для привязки к ВМ. Затем этот диск должен быть смонтирован в виртуальной машине, чтобы иметь возможность сохранять данные с тестового диска там.


спасибо за эти блестяще подробные инструкции. Я правильно следовал за ними и добавил файлы для копирования в мою спасенную папку. Копия была успешной, но временная метка файлов была довольно старой: лето 2013, а не два дня назад. Я не могу вспомнить, делал ли я что-то конкретно 8 месяцев назад, но на первый взгляд, моих файлов двухдневной давности не было. Я теперь использую, Deeper Searchчтобы просмотреть это снова.
719016

@ 213441265152351 - также взгляните на папку с моментальными снимками ... может быть более новый .vmdk (по крайней мере, это было с моими системами здесь). Надеюсь, вы найдете ваши данные :)
Takkat

Я сделал Deeper Search, и через пару часов снова просмотрел содержимое, которое я хотел восстановить: они все еще указывают на версию виртуальной машины летом 2013 года, а не просто монтировали раздел с помощью gnome nautilus, который давал мне январь 2014 версия, но до сих пор не удалось найти файлы двух дней назад.
719016

1
@ 213441265152351: ну, тогда все сложнее. Возможно, что разностные изображения еще не были записаны соответствующим образом на диск, когда произошел «сбой». Вы можете попытаться взглянуть на диск из Virtual Media Manager (см. Virtualbox.org/manual/ch05.html#diffimages ), чтобы увидеть, так ли это, но я должен сказать, что тогда у меня не будет хорошего Идея о том, как восстановить данные из этих изображений.
Таккат

2
@Rmano: фактически клонированный VDI не будет содержать снимков, но будет последним текущим состоянием виртуальной машины с объединенными дифференциалами. Только в случае, если нам нужно клонировать более ранний снимок, мы можем использовать VDI снимка для клонирования, но тогда все изменения позже, чем снимок, не будут включены в клон.
Таккат

5

1) Попробуйте восстановить снимок по UUID, используйте следующий хак:

  • выберите UUID состояния, которое вы хотите восстановить.
  • Откройте файл .xml, желательно в инструменте (работает Internet Explorer), который позволяет легко перемещаться по файлу XML.
  • В «ОЧЕНЬ НИЖЕ» в разделе «Контроллеры хранения» найдите UUID текущего состояния и запомните параметры «Имя хранилища», «Тип» и «Тип AttachedDevice =, порт =» и «Устройство = настройки».
  • Посередине найдите нужный снимок.
  • В разделе «Контроллер хранилища» снимка найдите AttachedDevice со значениями (имя / тип / тип / порт / устройство), которые соответствуют значениям, полученным выше.
  • Этот образ UUID идентифицирует снимок для жесткого диска. Снять скобки {} и

введите команду C:> VBoxManage clonehd <UUID> CloneDisk.vdi

Надеюсь, это поможет, я нашел решение здесь: ( https://forums.virtualbox.org/viewtopic.php?t=791 )

2) если шаги в 1) не работают, вот другие шаги, которые вы можете попробовать. Как клонировать текущее состояние диска:

  • Откройте диспетчер виртуальных носителей (Меню: Файл> Диспетчер виртуальных носителей).
  • Перейдите на жесткий диск, который вы хотите клонировать, и полностью раскройте дерево (используйте клавишу * на цифровой клавиатуре).
  • Найдите файл {hexUUID} .vdi, который прикреплен к виртуальной машине, для которой вы хотите клонировать текущее состояние. Это будет (один из) листовых файлов в конце ветви. Когда вы выбираете его, текст «Attached to:» в нижней части окна будет отображать: «Attached to:», без (имя снимка) в скобках после него.
  • Щелкните по имени файла справа от «Location:», отображаемого в нижней части окна.
  • Ctrl + C / Копировать, чтобы скопировать текст в буфер обмена, который будет выглядеть примерно так: (путь) {b6441469-5ccb-418c-8fdd-73c5e1a17314} .vdi
  • Ctrl + V / Вставьте и извлеките значение hexUUID (снимая скобки {}) и запустите clonehd, чтобы клонировать его!

Это решение отсюда: ( http://www.im-code.com/blog/blog/2012/02/04/virtualbox-clone-snapshots/ ) Оба говорят в основном об одном и том же.


1

У меня была повреждена система Linux, /и я fsckне мог это исправить . Я использовал следующий простой подход:

  1. Добавьте новый VDI для замены на машину.
  2. Загрузите новый linux ISO.
  3. Загрузите и установите новый linux на диск, который вы добавили в (1).
  4. Смонтируйте диск в вашей новой системе и скопируйте нужные вам файлы. Обычно это означает копирование /home/user/папки. Не забудьте скопировать скрытые файлы (файлы настроек).

Хорошо сработало для меня. Повреждение диска только мешало загрузке, в моей домашней папке не было потери данных.

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