Какой образ диска я должен использовать с VirtualBox, VDI, VMDK, VHD или HDD?
Последние версии VirtualBox поддерживают несколько форматов для виртуальных дисков, но они забыли предоставить сравнение между ними.
- VDI
- VMDK
- VHD
- жесткий диск
Теперь меня интересует рекомендация или сравнение, которое учитывает следующее:
- уметь использовать динамический размер
- иметь возможность делать снимки
- быть в состоянии перенести мою виртуальную машину на другую ОС или даже другое бесплатное решение для виртуализации с минимальными усилиями (вероятно, что-то, что будет нормально работать в Ubuntu).
- спектакль
11 ответов
VirtualBox имеет
- полная поддержка
- VDI
- VMDK
- VHD
- частичная поддержка
- HDD (только для Parallels версии 2)
- и недокументированная поддержка
- QCOW
- QED
Источник: Oracle® VM. Руководство пользователя VirtualBox® " Глава 5. Виртуальное хранилище " 5.2. Файлы образов дисков (VDI, VMDK, VHD, HDD)
Отвечая на ваши соображения
- уметь использовать динамический размер
VDI, VMDK и VHD поддерживают динамически распределенное хранилище. VMDK имеет дополнительную возможность разбивать файл хранилища на файлы размером менее 2 ГБ каждый, что полезно, если в вашей файловой системе установлен небольшой размер файла.
HDD, QCOW и QED должны быть выделены динамически, если они созданы в VirtualBox.
- иметь возможность делать снимки
VirtualBox поддерживает создание снимков всех шести форматов.
- быть в состоянии перенести мою виртуальную машину на другую ОС или даже другое бесплатное решение для виртуализации с минимальными усилиями (вероятно, что-то, что будет нормально работать в Ubuntu).
VDI является родным форматом VirtualBox. Другое программное обеспечение для виртуализации, как правило, не поддерживает VDI, но его довольно легко преобразовать из VDI в другой формат, особенно с qemu-img convert
,
VMDK разработан VMWare и для него, но VirtualBox и QEMU (другое распространенное программное обеспечение для виртуализации) также поддерживают его. Этот формат может быть лучшим выбором для вас, потому что вам нужна широкая совместимость с другим программным обеспечением для виртуализации.
VHD - это родной формат Microsoft Virtual PC. Windows Server 2012 представил VHDX в качестве преемника VHD, но VirtualBox не поддерживает VHDX.
HDD - это формат для Parallels. Parallels специализируется на виртуализации для macOS. Возможно, это вам не подходит, особенно если учесть, что VirtualBox поддерживает только старую версию формата жесткого диска.
QCOW - это старая оригинальная версия формата qcow. Он был заменен qcow2, который VirtualBox не поддерживает.
QED был заброшенным улучшением qcow2. QEMU советует не использовать QED.
- спектакль
Каждый из форматов может иметь нюансы производительности из-за того, что хранилище блоков абстрагируется от формата, но я не нашел никаких тестов, сравнивающих форматы, поддерживаемые VirtualBox.
Существуют и другие факторы, влияющие на производительность, такие как:
- ограничения вашего физического устройства (гораздо более заметны на жестком диске, чем на твердотельном диске... Почему?)
- расширение динамически выделяемого виртуального диска (операции записи замедляются по мере расширения виртуального диска, но как только он становится достаточно большим, расширение должно происходить реже)
- технология виртуализации ( аппаратное и программное обеспечение; аппаратная виртуализация помогает VirtualBox и повышает скорость виртуальных операционных систем)
- тот факт, что вы работаете в виртуальной операционной системе. Производительность всегда ниже, чем при работе операционной системы на хосте из-за издержек виртуализации.
Я всегда использую VDI, так как это родной формат VirtualBox; однако использование VMDK (формат VMWare) повысит совместимость с другим программным обеспечением виртуальной машины.
VirtualBox будет отлично работать в Ubuntu, поэтому, если целью является совместимость Windows/Ubuntu, VDI будет идеальным выбором.
Оба формата будут соответствовать вашим требованиям.
Что касается двух других, VHD - это формат, разработанный Microsoft, а HDD - формат, разработанный Apple; они оба по собственной лицензии, поэтому ограничьте кроссплатформенную поддержку; Я бы не рекомендовал их.
Mpack объясняет ключевую разницу в производительности между VHD и VDI:
Недавно изучив формат VHD, я ожидал бы, что будет как минимум небольшая разница в пользу VDI, наиболее заметная, когда вы сравниваете подобное с like, то есть оптимизированный VDI против оптимизированного VHD. Причина в том, что в динамическом формате VHD эти "растровые" сектора разбросаны по всему диску. Каждый раз, когда вы изменяете сектор внутри блока, эти битовые блоки также могут нуждаться в обновлении и записи, включая дополнительные операции поиска, чтения и записи. Эти секторы растрового изображения также должны быть пропущены при чтении последовательных кластеров из образа диска - больше запросов. Формат VDI не имеет этих издержек, особенно если VDI был оптимизирован (блоки на виртуальном диске отсортированы в порядке LBA).
Все мои комментарии относятся к динамическому формату VHD против динамического VDI. Тестирование производительности на виртуальных дисках фиксированного размера не имеет смысла, поскольку оба формата одинаковы (просто образ диска), у них просто разные заголовки.
Похоже, использование VDI позволяет обрезать файл диска до его фактического размера VirtualBox и поддержку команды TRIM SSD
Хорошая причина для меня, чтобы использовать vmdk, заключается в том, что Virtualbox (по крайней мере до v4.1), использующий формат VDI, имеет тенденцию со временем заполнять все выделенное дисковое пространство, хотя использование внутреннего виртуального диска все еще намного меньше. С Virtualbox, использующим диски vmdk, это кажется меньшей проблемой.
Но я говорю годы безотказной работы. Это не может быть проблемой, с которой сталкиваются многие люди.
Это зависит от того, как вы планируете использовать виртуальный диск. Не каждая виртуальная машина хочет один раздел на одном диске.
У VDI, кажется, есть больше опций (при использовании с VirtualBox), но как только вы убираете VirtualBox из картинки, поддержка VDI становится несколько шаткой (по состоянию на конец 2014 года).
Например, мои решения должны иметь максимальную межплатформенную поддержку. Монтирование VDI (такого как устройство обратной связи) в Linux или Windows 7 сложнее и сложнее, чем вы могли ожидать. Почти как у VDI слишком много функций, что затрудняет создание полностью соответствующих утилит, которые могут работать на нем.
VMDK выглядит просто менее безболезненно, если вы хотите, чтобы он работал с любой виртуальной машиной на любой рабочей станции, когда вы хотите клонировать его 3 раза одновременно на другие системы в сети, и когда вы хотите открыть его без запуска виртуальной машины. пример.
Несмотря на то, что я использую VirtualBox 90% времени, те несколько раз, когда мои диски становятся недоступными в определенных рабочих процессах, привели меня к выбору VMDK для подключаемых / совместно используемых файловых систем.
Файлы образов дисков находятся в хост-системе и рассматриваются гостевыми системами как жесткие диски определенной геометрии. Когда гостевая операционная система выполняет чтение или запись на жесткий диск, VirtualBox перенаправляет запрос в файл образа.
Как и физический диск, виртуальный диск имеет размер (емкость), который должен быть указан при создании файла образа. В отличие от физического диска, VirtualBox позволяет расширять файл образа после создания, даже если он уже содержит данные; VirtualBox поддерживает четыре варианта файлов образов дисков:
VDI: Обычно VirtualBox использует собственный формат контейнера для гостевых жестких дисков - файлы образа виртуального диска (VDI). В частности, этот формат будет использоваться при создании новой виртуальной машины с новым диском.
VMDK: VirtualBox также полностью поддерживает популярный и открытый формат контейнера VMDK, который используется многими другими продуктами виртуализации, в частности, VMware. [25]
VHD: VirtualBox также полностью поддерживает формат VHD, используемый Microsoft.
Также поддерживаются файлы изображений Parallels версии 2 (формат HDD).[26] Из-за отсутствия документации о формате более новые форматы (3 и 4) не поддерживаются. Однако вы можете конвертировать такие файлы изображений в формат версии 2, используя инструменты, предоставляемые Parallels.
Я не знаю, позволит ли использование vmdk прозрачно запустить виртуальную машину, созданную в VirtualBox в VMware, или нет. Это может. Однако более универсальным вариантом может быть использование функции VirtualBox File/Export для создания.ova-файла "Open Virtualization Appliance", который затем можно импортировать в VMware. При таком подходе вы можете портировать на любую систему виртуализации, которая поддерживает.ova, не заботясь о том, какой формат образа диска вы используете в VirtualBox.
Если вам необходимо экспортировать данные с одной и той же виртуальной машины через равные промежутки времени, например, каждый день, это может быть проблемой. Но если вы время от времени переходите на другую технологию, все будет в порядке.
Если у вас уже есть файл.vdi, вы можете проверить, работает ли он, не создавая новую виртуальную машину. Экспортируйте его в.ova, затем попробуйте импортировать с помощью vmware.
Я только что перенес необработанный VMDK, который был сопоставлен с разделом Transcend SSD370 128 ГБ на Samsung Pro 850 512 ГБ.
Очевидно, VMDK намного быстрее, чем VDI. Я не понимаю почему, может я где-то допустил ошибку.
Я скопировал VMDK через Virtual Media Manager на 850. Один раз как VDI, один раз как VMDK.
Потом я побежал hdparm -tT --direct /dev/sda
на изображениях. Для каждого из "запусков" я переключал замену "Машина -> Настройки -> Хранение -> Контроллер SATA -> ImageFile.xxx". Необработанный раздел на SSD370 был определен файлом VMDK, поэтому на самом деле это не образ.
Вот результаты:
################################################################################################
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-96-generic x86_64)
System information as of Thu Sep 21 17:02:51 CEST 2017
System load: 1.96 Processes: 201
Usage of /: 83.2% of 43.88GB Users logged in: 0
Memory usage: 4% IP address for eth0:
Swap usage: 0% IP address for docker0: 172.17.0.1
################################################################################################
======================================================================================
V M D K --- R A W !!! --- on Transcend SSD370 128 GB
======================================================================================
Timing O_DIRECT cached reads: 1024 MB in 2.00 seconds = 511.61 MB/sec <---
Timing O_DIRECT disk reads: 1134 MB in 3.00 seconds = 377.88 MB/sec <---
Timing O_DIRECT cached reads: 1042 MB in 2.00 seconds = 520.82 MB/sec <---
Timing O_DIRECT disk reads: 1162 MB in 3.00 seconds = 387.27 MB/sec <---
---
Timing O_DIRECT cached reads: 816 MB in 2.00 seconds = 407.55 MB/sec
Timing O_DIRECT disk reads: 1020 MB in 3.01 seconds = 339.43 MB/sec <---
======================================================================================
V M D K --- on Samsung Pro 850 515GB
======================================================================================
Timing O_DIRECT cached reads: 836 MB in 2.00 seconds = 417.21 MB/sec <---
Timing O_DIRECT disk reads: 782 MB in 3.01 seconds = 260.21 MB/sec
Timing O_DIRECT cached reads: 834 MB in 2.00 seconds = 416.08 MB/sec
Timing O_DIRECT disk reads: 786 MB in 3.00 seconds = 261.71 MB/sec
---
Timing O_DIRECT cached reads: 826 MB in 2.00 seconds = 412.75 MB/sec <---
Timing O_DIRECT disk reads: 774 MB in 3.00 seconds = 257.79 MB/sec
Timing O_DIRECT cached reads: 828 MB in 2.00 seconds = 413.88 MB/sec <---
Timing O_DIRECT disk reads: 774 MB in 3.00 seconds = 257.83 MB/sec
---
Timing O_DIRECT cached reads: 842 MB in 2.00 seconds = 420.76 MB/sec <---
Timing O_DIRECT disk reads: 770 MB in 3.00 seconds = 256.56 MB/sec
======================================================================================
V D I --- on Samsung Pro 850 515GB
======================================================================================
Timing O_DIRECT cached reads: 470 MB in 2.01 seconds = 234.21 MB/sec <---
Timing O_DIRECT disk reads: 766 MB in 3.00 seconds = 254.94 MB/sec
Timing O_DIRECT cached reads: 494 MB in 2.00 seconds = 246.45 MB/sec <---
Timing O_DIRECT disk reads: 754 MB in 3.00 seconds = 250.92 MB/sec
Timing O_DIRECT cached reads: 490 MB in 2.00 seconds = 244.46 MB/sec <---
Timing O_DIRECT disk reads: 764 MB in 3.01 seconds = 254.03 MB/sec
################################################################################################
# Data above comes from here
################################################################################################
======================================================================================
V M D K --- on Samsung Pro 850 515GB
======================================================================================
System information as of Thu Sep 21 17:02:51 CEST 2017
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 836 MB in 2.00 seconds = 417.21 MB/sec <======
Timing O_DIRECT disk reads: 782 MB in 3.01 seconds = 260.21 MB/sec <======
user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 21080 MB in 2.00 seconds = 10554.40 MB/sec
Timing buffered disk reads: 784 MB in 3.00 seconds = 260.92 MB/sec
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 834 MB in 2.00 seconds = 416.08 MB/sec <======
Timing O_DIRECT disk reads: 786 MB in 3.00 seconds = 261.71 MB/sec <======
======================================================================================
V M D K --- R A W !!! --- on Transcend SSD370 128 GB
======================================================================================
System information as of Thu Sep 21 17:00:47 CEST 2017
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 1024 MB in 2.00 seconds = 511.61 MB/sec <======
Timing O_DIRECT disk reads: 1134 MB in 3.00 seconds = 377.88 MB/sec <======
user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 21182 MB in 2.00 seconds = 10603.52 MB/sec
Timing buffered disk reads: 1060 MB in 3.00 seconds = 352.91 MB/sec
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 1042 MB in 2.00 seconds = 520.82 MB/sec <======
Timing O_DIRECT disk reads: 1162 MB in 3.00 seconds = 387.27 MB/sec <======
======================================================================================
V M D K --- on Samsung Pro 850 515GB
======================================================================================
System information as of Thu Sep 21 16:58:12 CEST 2017
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 826 MB in 2.00 seconds = 412.75 MB/sec <======
Timing O_DIRECT disk reads: 774 MB in 3.00 seconds = 257.79 MB/sec <======
user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 22082 MB in 2.00 seconds = 11055.78 MB/sec
Timing buffered disk reads: 788 MB in 3.01 seconds = 262.11 MB/sec
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 828 MB in 2.00 seconds = 413.88 MB/sec <======
Timing O_DIRECT disk reads: 774 MB in 3.00 seconds = 257.83 MB/sec <======
======================================================================================
V D I --- on Samsung Pro 850 515GB
======================================================================================
System information as of Thu Sep 21 16:55:24 CEST 2017
user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 21468 MB in 2.00 seconds = 10747.37 MB/sec
Timing buffered disk reads: 662 MB in 3.01 seconds = 220.12 MB/sec
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 470 MB in 2.01 seconds = 234.21 MB/sec <======
Timing O_DIRECT disk reads: 766 MB in 3.00 seconds = 254.94 MB/sec <======
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 494 MB in 2.00 seconds = 246.45 MB/sec <======
Timing O_DIRECT disk reads: 754 MB in 3.00 seconds = 250.92 MB/sec <======
user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 20872 MB in 2.00 seconds = 10448.98 MB/sec
Timing buffered disk reads: 694 MB in 3.01 seconds = 230.78 MB/sec
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 490 MB in 2.00 seconds = 244.46 MB/sec <======
Timing O_DIRECT disk reads: 764 MB in 3.01 seconds = 254.03 MB/sec <======
======================================================================================
V M D K --- on Samsung Pro 850 515GB
======================================================================================
System information as of Thu Sep 21 16:52:32 CEST 2017
user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 20872 MB in 2.00 seconds = 10448.90 MB/sec
Timing buffered disk reads: 764 MB in 3.01 seconds = 254.11 MB/sec
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 842 MB in 2.00 seconds = 420.76 MB/sec <======
Timing O_DIRECT disk reads: 770 MB in 3.00 seconds = 256.56 MB/sec <======
======================================================================================
V M D K --- R A W !!! --- on Transcend SSD370 128 GB
======================================================================================
System information as of Thu Sep 21 16:29:55 CEST 2017
user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 22034 MB in 2.00 seconds = 11029.82 MB/sec
Timing buffered disk reads: 990 MB in 3.00 seconds = 329.68 MB/sec
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 816 MB in 2.00 seconds = 407.55 MB/sec <======
Timing O_DIRECT disk reads: 1020 MB in 3.01 seconds = 339.43 MB/sec <======
Я действительно не знаю, как это интерпретировать, может быть, кто-то хочет оставить комментарий к этому. Я выбрал VMDK тогда.
VDI гораздо проще сжать, если виртуальная машина становится слишком большой.
Давным-давно я провел один тест, преобразовал динамический VDI в динамический VHD, чтобы проверить скорость и размеры файлов.
Помните, что это была неизменная гостевая установка Windows с некоторыми приложениями, помните, что для моего теста я конвертировал один формат в другой, так что оба должны иметь одно и то же изображение, как при клонировании.
Для диска размером 64 ГБ размер файла VDI был около 18 ГБ, а размер файла VHD - около 22 ГБ.
Я помню, я видел эти две вещи:
- Время загрузки было существенно другим, если я не помню, плохой VHD был в 1,6 раза быстрее, чем VDI
- Размер VHD был намного больше, чем VDI, около 4 ГБ гигабайт больше, чем 18 ГБ, поэтому в 1,2 раза больше.
Это было давно, и тестирование проводилось на жестком диске, но я гарантирую, что оба файла будут дефрагментированы и расположены рядом друг с другом на быстрой части диска.
Надеюсь, кто-то может сделать реальные тесты SSD, но я чувствую, что VHD быстрее (и больше), чем VDI.
Просто подсказка: VHD/VHDX можно сжимать напрямую в любой Windows 7 и выше с помощью инструмента командной строки DiskPart, для VDI необходим внешний инструмент CloneVDI.
Извините, я не тестировал VMDK, я не знал, как сжать его, не изменив его UUID (UUID диска), помните, что командные инструменты VBOX всегда меняют его в каждом клоне, независимо от того, какой формат вы используете.