- Как уменьшить размер файла VDI VirtualBox?
- Что ж, после всего этого я попробовал инструмент CloneVDI, и он отлично справился с задачей за гораздо меньшее время и одним щелчком мыши.
- Гость Debian на хосте Windows с использованием discard / TRIM.
- Конфигурация хоста
- Гостевая конфигурация
- Как уменьшить размер файла VDI VirtualBox?
- 8 ответов 8
- Что ж, после всего этого я попробовал инструмент CloneVDI, и он отлично справился с задачей за гораздо меньшее время и в один клик.
- Гость Debian на хосте Windows с использованием discard/TRIM.
- Конфигурация хоста
- Гостевая конфигурация
- Как сжать размер файла VDI VirtualBox?
- 8 ответов
- Ну, после всего этого я попробовал инструмент CloneVDI и он сделал хорошую работу за меньшее время и одним щелчком мыши.
- Гость Debian на хосте Windows с помощью утилиты /TRIM.
- Конфигурация хоста
- Конфигурация гостя
Как уменьшить размер файла VDI VirtualBox?
У меня есть виртуальная машина VirtualBox, в которой настроен очень большой размер жесткого диска (больше, чем у хоста). По моей ошибке программа на виртуальной машине генерировала множество файлов журналов, и размер файла VDI продолжает расти до тех пор, пока на хосте не останется свободного места.
Теперь я удалил файлы журналов, но размер файла VDI не уменьшается после использования VBoxManage.exe modifyhd «C:\Virts\mybox-i386.vdi» compact
Есть ли способ действительно сжать размер файла VDI? Спасибо!
Вы должны сделать следующие шаги:
- Запустите дефрагментацию в гостевой системе (только для Windows)
Обнулить свободное пространство:
С гостем Linux запустите это:
С гостем Windows загрузите SDelete от Sysinternals и запустите это:
(замените C: буквой диска VDI)
Отключение гостевой ВМ
Теперь запустите modifymedium команду VBoxManage с —compact параметром:
С хостом Linux запустите это:
С хостом Windows запустите это:
С хостом Mac запустите это:
Это уменьшает размер VDI.
Я на хосте Windows 7 с гостями Windows. Вот пакетный файл, который я записал в Compact все VDI в дереве папок.
Я оставил ссылки в комментариях, чтобы вы могли (вроде) рассказать, как это работает.
Что ж, после всего этого я попробовал инструмент CloneVDI, и он отлично справился с задачей за гораздо меньшее время и одним щелчком мыши.
Гость Debian на хосте Windows с использованием discard / TRIM.
Это не прямой ответ сам по себе, так как я решаю проблему, а не вопрос. Вместо того, чтобы периодически сжимать образ, это решение использует Discard для автоматического удаления неиспользуемых блоков в образе диска виртуальной машины.
Это решение требует гостевой файловой системы, которая поддерживает непрерывную TRIM. Вики Linux Arch содержит список файловых систем, поддерживающих операции TRIM .
FDE и cryptoroot конкретно не рассматриваются, так как существуют проблемы безопасности, и ни одно из других решений этого вопроса также не позволит сжать. Вики Linux Arch содержит информацию об устройствах TRIM и dm-crypt .
Теоретически, это будет работать для всех гостей Linux на хостах VBox, использующих хранилище VDI.
Конфигурация хоста
Когда VBox завершен, а виртуальные машины не запущены, добавьте поддержку Discard на свои диски, указав оба discard и nonrotational каждый диск в файле конфигурации для VM. В настоящее время discard отсутствует в графическом интерфейсе, но nonrotational отображается как флажок «Твердотельный накопитель». (ссылка: форумы vbox, поддержка отмены )
Загрузите виртуальную машину и убедитесь, что включена поддержка TRIM:
Гостевая конфигурация
Если LVM используется, измените настройку сброса в /etc/lvm/lvm.conf . (ссылка: Debian Wiki, пример lvm.conf )
В fstab добавьте discard опцию к файловым системам, которые вы хотите автоматически отбрасывать (ref: debian wiki, пример fstab )
Перемонтируйте файловые системы, чтобы они выбрали новые опции.
Вручную обрезать свободные блоки теперь с fstrim . fstrim использует смонтированную файловую систему, а не блочное устройство, поддерживающее ее. Вместо установки непрерывного сброса fstab это можно сделать в еженедельном кроне. (Еженедельный cron рекомендуется для физических твердотельных накопителей, которые могут иметь сомнительную поддержку TRIM, но здесь это не актуально, поскольку базовые твердотельные накопители обрабатываются операционной системой хоста. См .: предупреждение об ssd trim ).
На этом этапе размер файловых систем внутри ВМ и размер образов ВМ должны быть довольно близки по значению.
- Гость1: Debian 8.7, ядро: linux 4.8 grsec от backports, файловая система: ext4
- Гость 2: Debian 9 RC2, ядро: linux 4.9, файловая система: ext4
- Host1: VBox 5.1.14, Win7, образ fmt: VDI
- Host2: VBox 5.1.14, Win8.1, образ fmt: VDI
Для гостя MacOS сделайте это:
Обнулить свободное место в гостевой системе:
(замените / Volumes / Macintosh HD на имя вашего диска)
Отключение гостевой ВМ
Запустите эту команду, чтобы уменьшить размер образа диска VDI
Я использую это для моего образа VDI, подключенного к виртуальному Debian в Windows VirtualBox. Это не общее решение, но оно должно по крайней мере дать вам представление о том, что я делаю.
Команды в Debian:
Команды в Windows:
Надеюсь, это поможет 🙂
Я не хочу включать поддержку TRIM в ОС, потому что каждое удаление данных вызывает сжатие данных в файле VDI, делая гостевую систему непригодной для использования, когда файл VDI находится на классическом ротационном диске. Для меня лучше выполнять сжатие вручную, например, раз в месяц.
При обычном сжатии содержимое файла VDI копируется в новый файл. Это требует некоторого (иногда большого) свободного места на диске хоста.
У меня есть решение, аналогичное указанному Эндрю Домашек. Это работает очень хорошо даже с NTFS (Windows10).
- создайте новую виртуальную машину, которая загружается с GParted Live CD (вы можете использовать ваш любимый дистрибутив Linux).
- Отредактируйте настройки машины и установите контроллер диска SATA
- Добавьте существующие файлы VDI, которые вы хотите сжать
Измените диски на основе VDI, чтобы они отображались как SSD с поддержкой TRIM:
Очень приятный трюк в дополнение к принятому ответу заключается в том, что вы можете обойтись без какого-либо уплотнения после обнуления гостевого пространства, используя сжатую файловую систему на хосте (например, выбрав сжатие папки виртуальных дисков в свойствах NTFS на Хост Windows). На самом деле это дает преимущество, позволяющее сэкономить гораздо больше места, поскольку операционные системы, как правило, содержат много повторяющихся текстовых или двоичных файлов (например, гостевой диск объемом 30 ГБ с обнуленным 15 ГБ пространства может превратиться в 4 ГБ на главном диске).
Предостережения включают в себя то, что доступ к диску на реальном оборудовании может увеличиться, а загрузка ЦП несколько увеличивается.
ВАЖНОЕ ПРИМЕЧАНИЕ ДЛЯ LEGACY (
1997-2007) ОПЕРАЦИОННЫЕ СИСТЕМЫ
В целом, методы в приведенных ранее ответах являются действительными; ОДНАКО, есть очень важный особый случай.
В течение нескольких лет — возможно, 1997-2007 гг. Или около того — 32-разрядные операционные системы оставались нормой, но жесткие диски объемом более 2 ГБ уже использовались. В результате, при попытке использовать все свободное пространство путем записи файла нулей (который всегда должен выполняться как root, чтобы включить привилегированное свободное пространство root, которое никто больше не может коснуться), вы можете увидеть:
Файл слишком большой
вместо того, что вы ожидаете:
На устройстве нет свободного места.
В этом случае вы, скорее всего, столкнулись с ограничением размера файла 2 ГБ. В то время это было распространено, потому что многие файловые операции возвращали результаты в виде 32-разрядных целых чисел со знаком, так что отрицательные значения могли сообщать коды ошибок. Это фактически означало, что результаты смещения были ограничены 2 ^ 31 байтами без специальных мер.
Обходной путь прост: продолжайте создавать отдельные файлы обнуления с разными именами до тех пор, пока на диске фактически не останется свободного места.
Если вы являетесь инструктором, желающим продемонстрировать эту ситуацию для класса, достаточно образа диска объемом 4 ГБ со старой копией Red Hat Linux 7.0.
Источник
Как уменьшить размер файла VDI VirtualBox?
У меня есть виртуальная машина VirtualBox, в которой настроен очень большой размер жесткого диска (больше, чем у хоста). По моей ошибке программа на виртуальной машине генерировала множество файлов журналов, и размер файла VDI продолжает расти, пока на хосте не останется свободного места.
Теперь я удалил файлы журналов, но размер файла VDI не уменьшается после использования VBoxManage.exe modifyhd «C:\Virts\mybox-i386.vdi» compact
Есть ли способ действительно сжать размер файла VDI? Спасибо!
8 ответов 8
Вы должны сделать следующие шаги:
- Запустите defrag в гостевой системе (только для Windows)
Обнулить свободное пространство:
С гостем Linux запустите это:
С гостем Windows загрузите SDelete от Sysinternals и запустите это:
(замените C: на букву диска VDI)
Отключение гостевой ВМ
Теперь запустите команду modifymedium VBoxManage с параметром —compact :
С хостом Linux запустите это:
С хостом Windows запустите это:
С хостом Mac запустите это:
Это уменьшает размер VDI.
Если выполнение команды в принятом ответе выдает бесполезное сообщение об ошибке, подобное этому
Просто запустите команду по UUID вместо имени файла:
Я на хосте Windows 7 с гостями Windows. Вот пакетный файл, который я записал в Compact все VDI в дереве папок.
Я оставил ссылки в комментариях, чтобы вы могли (вроде) рассказать, как это работает.
Что ж, после всего этого я попробовал инструмент CloneVDI, и он отлично справился с задачей за гораздо меньшее время и в один клик.
Гость Debian на хосте Windows с использованием discard/TRIM.
Это не прямой ответ сам по себе, так как я решаю проблему, а не вопрос. Вместо того, чтобы периодически сжимать образ, это решение использует Discard для автоматического удаления неиспользуемых блоков в образе диска виртуальной машины хоста.
Это решение требует гостевой файловой системы, которая поддерживает непрерывную TRIM. Вики Linux Arch содержит список файловых систем, поддерживающих операции TRIM.
FDE и cryptoroot специально не рассматриваются, так как существуют проблемы безопасности, и ни одно из других решений этого вопроса не позволит также сжать. Вики Linux Arch содержит информацию об устройствах TRIM и dm-crypt.
Теоретически, это будет работать для всех гостей Linux на хостах VBox, использующих хранилище VDI.
Конфигурация хоста
Когда VBox завершен, а виртуальные машины не запущены, добавьте поддержку Discard на свои диски, установив discard и nonrotational для каждого диска в файле конфигурации для VM. В настоящее время discard отсутствует в графическом интерфейсе, но не nonrotational как флажок «Твердотельный накопитель». (ссылка: форумы vbox, поддержка отмены)
Загрузите виртуальную машину и убедитесь, что включена поддержка TRIM:
Гостевая конфигурация
Если LVM используется, измените настройку сброса в /etc/lvm/lvm.conf . (ссылка: Debian Wiki, пример lvm.conf)
В fstab добавьте опцию discard к файловым системам, которые вы хотите автоматически удалить (ref: debian wiki, пример fstab)
Перемонтируйте файловые системы, чтобы они выбрали новые параметры.
Обрежьте свободные блоки вручную с помощью fstrim . fstrim использует смонтированную файловую систему, а не блочное устройство, поддерживающее ее. Вместо установки непрерывного сброса в fstab , это можно сделать на еженедельном кроне. (Еженедельный cron рекомендуется для физических твердотельных накопителей, которые могут иметь сомнительную поддержку TRIM, но здесь это не актуально, поскольку базовые твердотельные накопители обрабатываются операционной системой хоста. См. Предупреждение об ssd trim).
На этом этапе размер файловых систем внутри ВМ и размер образов ВМ должны быть довольно близки по значению.
- Гость1: Debian 8.7, ядро: linux 4.8 grsec от backports, файловая система: ext4
- Гость 2: Debian 9 RC2, ядро: linux 4.9, файловая система: ext4
- Host1: VBox 5.1.14, Win7, образ fmt: VDI
- Хост 2: VBox 5.1.14, Win8.1, образ fmt: VDI
Для гостя MacOS сделайте это:
Обнулить свободное место в гостевой системе:
(замените /Volumes /Macintosh HD на имя вашего диска)
Отключение гостевой ВМ
Запустите эту команду, чтобы уменьшить размер образа диска VDI
Я не хочу включать поддержку TRIM в ОС, потому что каждое удаление данных вызывает сжатие данных в файле VDI, делая гостевую систему непригодной для использования, когда файл VDI находится на классическом ротационном диске. Для меня лучше выполнять сжатие вручную, например, раз в месяц.
При обычном сжатии содержимое файла VDI копируется в новый файл. Это требует некоторого (иногда большого) свободного места на диске хоста.
У меня есть решение, аналогичное указанному Эндрю Домашек. Это работает очень хорошо даже с NTFS (Windows10).
- создайте новую виртуальную машину, которая загружается с GParted Live CD (вы можете использовать ваш любимый дистрибутив Linux).
- Отредактируйте настройки машины и установите контроллер диска SATA
- Добавьте существующие файлы VDI, которые вы хотите сжать
- Измените диски на основе VDI, чтобы они отображались как SSD с поддержкой TRIM:
VBoxManage storageattach «gpared live» —storagectl «SATA» —port 0 —discard on —nonrotational on VBoxManage storageattach «gpared live» —storagectl «SATA» —port 1 —discard on —nonrotational on
- запустить машину
- В корневой оболочке Linux смонтируйте раздел NTFS mount /dev/sda2 /mnt
- ноль свободного места dd if=/dev/zero of=/mnt/bigfile
- rm /mnt/bigfile
- принудительное сжатие VDI без создания нового файла: fstrim -v /mnt
Источник
Как сжать размер файла VDI VirtualBox?
У меня есть виртуальная виртуальная машина, которая настроила очень большой размер жесткого диска (больше, чем хост). По моей ошибке, программа на виртуальной машине создала много файлов журнала, а размер файла VDI продолжает расти, пока на хосте не останется места.
Теперь я удалил файлы журнала, но размер файла VDI не стал меньше после использования VBoxManage.exe modifyhd «C: \ Virts \ mybox-i386.vdi» compact
Есть ли способ действительно сжать размер файла VDI? Спасибо!
8 ответов
Вам необходимо выполнить следующие действия:
- Запуск дефрагментации в гостевой системе (только для Windows)
Уменьшить свободное пространство:
С Гость Linux запустите это:
С Гость Windows загрузите SDelete из Sysinternals и запустите это:
(заменить C: буквой диска VDI)
Выключение гостевой виртуальной машины
Теперь запустите команду modifymedium VBoxManage — compact :
С Linux Host выполните следующее:
С хостом Windows выполните следующее:
С помощью Mac хоста выполните следующее:
Это уменьшает размер vdi.
Если выполнение команды в принятом ответе создает бесполезное сообщение об ошибке, подобное этому
Просто запустите команду UUID вместо имени файла:
Я на хосте Windows 7 с гостевыми компьютерами Windows. Вот пакетный файл, который я написал для компакт-дисков всех VDI в дереве папок.
Я оставил ссылки в комментариях, чтобы вы (вроде) рассказывали, как это работает.
Ну, после всего этого я попробовал инструмент CloneVDI и он сделал хорошую работу за меньшее время и одним щелчком мыши.
Гость Debian на хосте Windows с помощью утилиты /TRIM.
Это не прямой ответ как таковой, поскольку я рассматриваю проблему, а не вопрос. Вместо автоматического уплотнения изображения это решение использует сброс для автоматического удаления неиспользуемых блоков в образ диска VM на хосте.
Это решение требует гостевой файловой системы, которая поддерживает непрерывный TRIM. В вики Arch Linux есть список файловых систем, поддерживающих операции TRIM .
FDE и cryptoroot специально не охвачены, так как есть проблемы с безопасностью, и ни одно из других решений этого вопроса не даст возможности уплотнения. Вики Arch Linux содержат информацию о TRIM и dm- криптографических устройств .
Теоретически это будет работать для всех гостей Linux на VBox-хостах с использованием хранилища VDI.
Конфигурация хоста
При запуске VBox и отсутствии виртуальных машин добавьте поддержку отбрасывания на свои диски, установив для каждого диска в файле конфигурации для VM как discard , так и nonrotational . В это время discard отсутствует в GUI, но nonrotational отображается как флажок «Solid-State Drive». (ref: форумы vbox, отказаться от поддержки )
Загрузите VM вверх и убедитесь, что поддержка TRIM включена:
Конфигурация гостя
Если LVM используется, измените настройку сброса в /etc/lvm/lvm.conf . (ref: debian wiki, пример lvm.conf )
В fstab добавьте параметр discard в файловые системы, которые вы хотите автоматически отменить (ref: debian wiki, fstab example )
Перезагрузите файловые системы, чтобы они получили новые параметры.
Теперь вручную обрезаем свободные блоки с помощью fstrim . fstrim использует смонтированную файловую систему, а не блок-устройство, поддерживающее ее. Вместо того, чтобы устанавливать непрерывный сброс в fstab , это можно сделать в еженедельном cron. (Еженедельный cron рекомендуется для физических SSD, которые могут иметь сомнительную поддержку для TRIM, но здесь это не имеет значения, поскольку базовые SSD обрабатываются ОС хоста. См. Ниже: предупреждение ssd trim ).
В этот момент размер файловых систем внутри виртуальной машины и размер изображений VM должны быть довольно близкими по значению.
Протестировано с помощью
- Guest1: Debian 8.7, ядро: linux 4.8 grsec из backports, файловая система: ext4
- Guest2: Debian 9 RC2, ядро: linux 4.9, файловая система: ext4
- Host1: VBox 5.1.14, Win7, изображение fmt: VDI
- Host2: VBox 5.1.14, Win8.1, изображение fmt: VDI
Для MacOS Guest выполните следующие действия:
Устранить свободное пространство в гостевой системе:
(замените /Объемы /Macintosh HD с именем вашего диска)
Выключение гостевой виртуальной машины
Запустите эту команду, чтобы уменьшить размер образа диска VDI
Я использую это для своего образа VDI, установленного на виртуальный Debian в Windows VirtualBox. Это не общее решение, но оно должно по крайней мере дать вам суть того, что я делаю.
Команды в Debian:
Команды в Windows:
Надеюсь, это поможет:)
Я не хочу включать поддержку TRIM в ОС, потому что каждое удаление данных приведет к уплотнению данных в файле VDI, что делает гостевую систему непригодной, когда VDI-файл находится на классическом вращательном диске. Для меня лучше выполнять компактирование вручную, например. раз в месяц.
Во время нормального уплотнения содержимое файла VDI копируется в новый файл. Для этого требуется некоторое (иногда большое) свободное место на главном диске.
У меня есть решение, подобное указанию Эндрю Домашека. Он отлично работает даже с NTFS (Windows10).
- создайте новую виртуальную машину, которая загружается с GParted Live CD (вы можете использовать свой любимый дистрибутив Linux).
- Изменить настройки машины и установить контроллер диска SATA
- Добавьте существующие файлы VDI, которые вы хотите сжать
- Измените диски на базе VDI, чтобы они отображались как SSD с поддержкой TRIM:
VBoxManage storageattach «gpared live» —storagectl «SATA» —port 0 —discard on —nrorotational on VBoxManage storageattach «gpared live» —storagectl «SATA» —port 1 —discard on —nrorotational on
- запустить машину
- В корневой оболочке Linux монтируйте раздел NTFS mount /dev /sda2 /mnt
- нулевое свободное пространство dd if = /dev /zero of = /mnt /bigfile
- rm /mnt /bigfile
- принудительное уплотнение VDI без создания нового файла: fstrim -v /mnt
Очень аккуратный трюк, чтобы дополнить принятый ответ, заключается в том, что вы можете уйти без каких-либо уплотнений вообще после обнуления гостевого пространства, используя сжатую файловую систему на хосте (например, для сжатия папки виртуальных дисков на NTFS свойства на хосте Windows). Это на самом деле имеет преимущество, чтобы сэкономить гораздо больше места, потому что операционные системы имеют тенденцию хранить много повторяющихся текстовых или двоичных файлов (например, гостевой диск на 30 ГБ с 15 ГБ свободного места может перейти на 4 ГБ на главном диске).
Предостережения включают, что доступ к диску на реальном оборудовании может увеличиться, и есть небольшое увеличение использования ЦП.
Источник