Я хочу превратить физическую машину с MS Windows 7 в виртуальную машину VirtualBox. Это легко, я делал это раньше, но на этот раз мне нужно было, чтобы виртуальный размер / емкость диска был фиксированным и меньшим .
Это должно быть исправлено, потому что я установлю шифрование диска PGP на это по причинам соответствия. Это расширит динамический диск до максимального размера.
Помимо этого особого случая есть и другие причины, по которым диски должны быть меньше и фиксированнее. Это мой опыт. Например, если вы запускаете сервер сборки Jenkins на динамически расширяющемся диске, вы можете увидеть, как диск быстро расширяется до максимального размера, в то время как в гостевой ОС использование дискового пространства стабильно и много свободного места.
Используя Disk2vhd, я создал файл VHDX. Этот файл я конвертировал в формат VDI.
vboxmanage clonehd --format VDI MSWIN7.VHDX MSWIN7.vdi
Предполагается, что с помощью vdi вы можете уменьшить виртуальный размер / емкость с помощью команд, подобных
vboxmanage modifyhd MSWIN7.vdi --resize 160000
Я обнаружил, что это не работает. Даже если вы попробуете варианты, вы будете постоянно получать сообщения об ошибках, такие как:
Состояние выполнения: VBOX_E_NOT_SUPPORTED VBoxManage: ошибка: операция изменения размера жесткого диска для этого формата еще не реализована!
Ниже приведена схема размещения моего диска vdi. Я добавил это к виртуальной машине Ubuntu, чтобы посмотреть на нее с помощью Gparted и CloneZilla. Емкость около 300 ГБ. Нераспределенный 145ГБ. Используется около 153 ГБ.
Я хочу уменьшить емкость примерно до 160 ГБ. Этого должно быть достаточно, чтобы соответствовать /dev/sdb1
и /dev/sdb2
.
Кстати, я пробовал CloneZilla, но, похоже, он также не любит уменьшать емкость до меньшего диска. Я пробовал различные настройки в CloneZilla, но безуспешно.
Как я могу уменьшить виртуальный размер / емкость?
источник
vboxmanage clonehd "source-disk.vdi" "new-disk.vdi" --existing
уничтожает таблицу разделов на целевом изображении.В конце концов мне удалось неожиданно легко решить эту головоломку, используя предустановленную утилиту командной строки,
dd
см. « Клонирование диска» . Как показано ниже, теперь мой гостевой диск объемом 160 ГБ хранится в фиксированном файле VirtualBox vdi объемом 160 ГБ.Я решил это, используя следующие шаги:
MSWIN7.vdi
с MS Windows 7 к виртуальной машине Ubuntu в качестве второго диска./dev/sda1
с работающей Ubuntu VM,/dev/sdb2
с исходным кодомMSWIN7.vdi
и/dev/sdc1
с новым vdi./dev/sdc
. CloneZilla сделала это для меня. Он не копировал данные, но создавал разделение, которое я хотел. Конечно, вы можете сделать это вручную.sdb
сsdc
помощьюdd
команды, аналогичнойsudo dd if=/dev/sdb of=/dev/sdc
. Команда заканчивается сообщением об ошибке без пробела, которое ожидается. Это я проигнорировал, потому что это просто нераспределенное пространство, которое не удалось скопировать.Я думаю, что можно выполнить команду для каждого раздела. Может быть, это лучше и не будет отображать сообщение об ошибке.
sudo dd if=/dev/sdb1 of=/dev/sdc1
иsudo dd if=/dev/sdb2 of=/dev/sdc2
.источник
Я считаю, что это решение чрезвычайно опасно! Он опирается на все файлы, находящиеся в первых 153 ГБ исходного раздела 300 ГБ. Команда dd не копирует файлы. Он просто копирует ВСЕ блоки в последовательности. Таким образом, если вам не повезло иметь важные файлы ПОСЛЕ обрезания 160 ГБ, dd не узнает, как их скопировать.
Типичное решение, которое я видел во многих, многих публикациях, состоит в том, чтобы включить виртуальную машину Windows и использовать некоторую комбинацию инструментов дефрагментации и инструментов администрирования для консолидации всех файлов в передней части диска - сложность заключается в том, что многие инструменты дефрагментации не перемещаются неподвижно Системные файлы Windows (мне пришлось отключить восстановление системы, чтобы удалить неподвижный кусок диска объемом 7 ГБ), которые находятся где-то посередине пространства, которое вы пытаетесь объединить.
После того, как вы объединили файлы с начала диска (MyDefrag - это бесплатный инструмент, который отображает, где находятся ваши файлы), вы должны уменьшить размер раздела Windows. Я использовал инструмент diskpart с опцией сжатия.
На этом этапе вы можете использовать dd, чтобы скопировать меньший раздел на новый vdi.
Я также использовал vboxmanage modifymedium win10.vdi --compact на своем хосте Linux, но сначала мне пришлось запустить sdelete.exe в системе Windows, чтобы сначала обнулить все неиспользуемое пространство (sdelete -zc :). Использование vboxmanage для сжатия существующего файла vdi позволяет вам делать все на месте (но всегда иметь резервную копию).
источник
В моем случае я имел Windows VM с 50 ГБ VDI, чтобы уменьшить до 20 ГБ.
Я попробовал решение Andre Figueiredo, но у меня была проблема с клонированным
vdi
.Когда я применяю решение Andre Figueiredo и прикрепляю
vdi
сжатую виртуальную машину во время загрузки, Virtualbox останавливается с ошибкой ввода-вывода.Возможно, это связано с моей
btrfs
файловой системой (я слышал,btrfs
вызывает проблемы с Vritualboxvdi
).Мое решение:
Я попробовал другое решение для уменьшения размера диска VM (
vdi
) с именем OVdi ( размер диска OVdi составляет 50 ГБ, один раздел NTFS с 40 ГБ свободного места).Давайте выполните следующие шаги (это мой случай, вы можете адаптировать / придумать разные имена VDI ):
остановить ВМ (выключение)
создайте новый диск (
vdi
) с именем DVdi желаемого размера (20 ГБ в моем случае ..)подключить DVdi к ВМ
загрузите ВМ и установите утилиту EaseUS Backup Free
Запустите EasyUS и используйте функцию EasyUS Clone (она клонирует OVdi MBR и ntfs-раздел OVdi путем сжатия до нового диска DVdi )
Выключить ВМ
Отсоединить OVdi от VM
Проверьте, является ли DVdi первым загрузочным устройством для виртуальной машины.
перезагрузите ВМ
Радоваться, веселиться
Не забудьте удалить том OVdi .
Следуя этим шагам, я успешно уменьшил размер диска виртуальной машины с 50 до 20 ГБ.
источник
Как уже упоминали другие, ответ Андре Фигейредо основан на удаче, поскольку нет никакой гарантии, что «первый X gb» пространства - это ваше пространство, если только вы не дефрагментируете, в этом случае это все еще рискованно.
Ответ Пола Хурски намного безопаснее. Я перечислю некоторые дополнительные шаги, которые я сделал (обратите внимание, что это для Windows, у меня была XP, но она также должна работать для других):
1) Получить бесплатную версию "MiniTool Partition Wizard Free 12" по этой ссылке
2) Установите его в гостевую ОС и измените размер своего диска, оставьте передышку, чтобы быть в безопасности (не тяните его полностью назад ...). Поскольку вы, скорее всего, изменяете размер жесткого диска текущей ОС, у вас будет возможность перезагрузить компьютер и выполнить действие, сделайте это.
3) Теперь, используя ту же программу MiniTool Partition, выберите нераспределенное пространство (внизу
*:
) -> Правый клик -> Wipe Partition -> Заполнить секторы нулями (Quick).4) Теперь безопасно отключите гостевую ОС. Перейдите в папку VirtualBox, где существует VBoxManage.exe, откройте cmd по этому пути и запустите:
5) И теперь все должно волшебным образом работать. Когда вы в следующий раз откроете гостевую ОС, она запустит проверку диска LET IT RUN и обнаружит «потерянные файлы», которые выглядели как системные файлы.
источник