Какой образ диска я должен использовать с VirtualBox, VDI, VMDK, VHD или HDD?


296

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

  • VDI
  • VMDK
  • VHD
  • жесткий диск

Теперь меня интересует рекомендация или сравнение, которое учитывает следующее:

  • уметь использовать динамический размер
  • иметь возможность делать снимки
  • быть в состоянии перенести мою виртуальную машину на другую ОС или даже другое бесплатное решение для виртуализации с минимальными усилиями (вероятно, что-то, что будет работать в Ubuntu).
  • представление

11
Запустите Виртуальный ящик и щелкните значок справки> Содержание, там есть объективное объяснение в разделе «Виртуальное хранилище»
Моав

1
Что касается перехода на «другое бесплатное решение для виртуализации ... которое отлично работает в Ubuntu», я уверен, что VirtualBox доступен для Linux.
Изи

С точки зрения производительности, я думаю, что лучше всего создавать фиксированные диски, если у вас есть место. В противном случае это будет очень стресс для операционной системы при использовании виртуальной машины, а не один раз во время создания.
Алексис Уилк

3
Еще одна вещь, которую следует учитывать, - это изменение размера изображения, когда вам может понадобиться - VBoxManage не может изменить размер VMDK, поэтому сначала вам нужно будет клонировать VDI, затем изменить размер, а затем вернуться к VMDK +, чтобы укрупнить UUID. Только по этой причине VDI кажется лучшим выбором для меня.
Майк Деменок

Ответы:


214

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 и повышает скорость виртуальных операционных систем)
  • тот факт, что вы работаете в виртуальной операционной системе. Производительность всегда ниже, чем при работе операционной системы на хосте из-за издержек виртуализации.

18
+1 Я добавлю, что VMDK, кажется, предлагает панацею, которую я искал в терминах инкрементных резервных копий: мне больше не нужно резервировать огромный монолитный VDI для изменения одного бита в гостевой системе.
мсанфорд

Я думаю, что не хватает соображений о необработанном жестком диске хоста, то есть виртуальном госте, использующем «физический» жесткий диск (или устройство RAID), как видно из хоста. Это позволило бы добиться лучшей производительности, чем использование смоделированного диска в файловой системе.
EnzoR

1
@Enzo: Сейчас я использую VMDK на блочном устройстве. Большая загвоздка в том, что VirtualBox должен работать от имени пользователя root. Кроме того, моментальные снимки не поддерживаются на сырых дисках, но у меня есть сторонняя система моментальных снимков (ZFS). VMDK на сыром диске также намного менее переносим. Что касается производительности, у меня нет никаких твердых ориентиров, но у меня также нет жалоб.
Дельтик

6
VHD может быть смонтирован как диск в Windows Disk Management, который не выглядит таким простым с VDI: superuser.com/q/342334/13889
endolith

5
@msanford, не могли бы вы рассказать, как VMDK избегает резервного копирования огромного файла - лучше ли rsync выяснить различия? файл VMDK также, кажется, изменяется при каждой настройке.
Бен

39

Я всегда использую VDI, так как это родной формат VirtualBox; однако использование VMDK (формат VMWare) повысит совместимость с другим программным обеспечением виртуальной машины.

VirtualBox будет отлично работать в Ubuntu, поэтому, если целью является совместимость Windows / Ubuntu, VDI будет идеальным выбором.

Оба формата будут соответствовать вашим требованиям.

Что касается двух других, VHD - это формат, разработанный Microsoft, а HDD - формат, разработанный Apple; они оба по собственной лицензии, поэтому ограничьте кроссплатформенную поддержку; Я бы не рекомендовал их.


18

Mpack объясняет ключевую разницу в производительности между VHD и VDI:

Недавно изучив формат VHD, я ожидал бы, что будет как минимум небольшая разница в пользу VDI, наиболее заметная, когда вы сравниваете подобное с like, то есть оптимизированный VDI против оптимизированного VHD. Причина в том, что в динамическом формате VHD эти «растровые» сектора разбросаны по всему диску. Каждый раз, когда вы изменяете сектор внутри блока, эти битовые блоки также могут нуждаться в обновлении и записи, включая дополнительные операции поиска, чтения и записи. Эти секторы растрового изображения также должны быть пропущены при чтении последовательных кластеров из образа диска - больше запросов. Формат VDI не имеет этих издержек, особенно если VDI был оптимизирован (блоки на виртуальном диске отсортированы в порядке LBA).

Все мои комментарии относятся к динамическому формату VHD против динамического VDI. Тестирование производительности на виртуальных дисках фиксированного размера не имеет смысла, поскольку оба формата одинаковы (просто образ диска), у них просто разные заголовки.

https://forums.virtualbox.org/viewtopic.php?f=1&t=22688


5

Я не знаю, позволит ли использование vmdk прозрачно запустить виртуальную машину, созданную в VirtualBox в VMware, или нет. Это может. Однако более универсальным вариантом может быть использование функции VirtualBox File / Export для создания .ova-файла «Open Virtualization Appliance», который затем можно импортировать в VMware. При таком подходе вы можете портировать на любую систему виртуализации, которая поддерживает .ova, не заботясь о том, какой формат образа диска вы используете в VirtualBox.

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

Если у вас уже есть файл .vdi, вы можете проверить, работает ли он, не создавая новую виртуальную машину. Экспортируйте его в .ova, затем попробуйте импортировать с помощью vmware.


5

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

У VDI, кажется, есть больше опций (при использовании с VirtualBox), но как только вы убираете VirtualBox из картинки, поддержка VDI становится несколько шаткой (по состоянию на конец 2014 года).

Например, мои решения должны иметь максимальную межплатформенную поддержку. Монтирование VDI (такого как устройство обратной связи) в Linux или Windows 7 сложнее и сложнее, чем вы могли ожидать. Почти как у VDI слишком много функций, что затрудняет создание полностью соответствующих утилит, которые могут работать на нем.

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

Несмотря на то, что я использую VirtualBox 90% времени, те несколько раз, когда мои диски становятся недоступными в определенных рабочих процессах, привели меня к выбору VMDK для подключаемых / совместно используемых файловых систем.


5

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

Как и физический диск, виртуальный диск имеет размер (емкость), который должен быть указан при создании файла образа. В отличие от физического диска, VirtualBox позволяет расширять файл образа после создания, даже если он уже содержит данные; VirtualBox поддерживает четыре варианта файлов образов дисков:

VDI: Обычно VirtualBox использует собственный формат контейнера для гостевых жестких дисков - файлы образа виртуального диска (VDI). В частности, этот формат будет использоваться при создании новой виртуальной машины с новым диском.

VMDK: VirtualBox также полностью поддерживает популярный и открытый формат контейнера VMDK, который используется многими другими продуктами виртуализации, в частности, VMware. [25]

VHD: VirtualBox также полностью поддерживает формат VHD, используемый Microsoft.

Также поддерживаются файлы изображений Parallels версии 2 (формат HDD). [26] Из-за отсутствия документации о формате более новые форматы (3 и 4) не поддерживаются. Однако вы можете конвертировать такие файлы изображений в формат версии 2, используя инструменты, предоставляемые Parallels.


3
Этот ответ взят из главы 5 руководства VirtualBox. ссылка
JerryOL

4

Хорошая причина для меня, чтобы использовать vmdk, заключается в том, что Virtualbox (по крайней мере до v4.1), использующий формат VDI, имеет тенденцию со временем заполнять все выделенное дисковое пространство, хотя использование внутреннего виртуального диска все еще намного меньше. С Virtualbox, использующим диски vmdk, это кажется меньшей проблемой.

Но я говорю годы безотказной работы. Это не может быть проблемой, с которой сталкиваются многие люди.


3
Это больше связано с фрагментацией гостевой файловой системы, чем с самим форматом.
EnzoR

2

Похоже, использование VDI позволяет обрезать файл диска до его фактического размера VirtualBox и поддержку команды TRIM SSD


Хотя он и точен, он немного неясен для вопроса, который задает общие различия между этими форматами, не правда ли?
Сет

3
@Seth Общий обзор был предоставлен предыдущими ответами, и мне не хватает представителя, чтобы просто комментировать, но все же важно упомянуть этот факт
OwnageIsMagic

1
Просто добавьте его, чтобы придать ему больше контекста. Например, «хотя этот ответ дает хороший обзор, вы должны также рассмотреть преимущество ...». Таким образом, даже если вы читаете в одиночку, ваш ответ имеет отношение к более общему.
Сет

@ У меня есть editкнопка под моим вопросом для вас: D
OwnageIsMagic

1
Я могу гарантировать, что я рассмотрю ваши изменения, поэтому ваша работа не будет потрачена впустую. Также вы будете упомянуты как редактор вопроса, так что вы получите надлежащую атрибуцию. В чем проблема?
OwnageIsMagic

2

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


1

Давным-давно я провел один тест, преобразовал динамический VDI в динамический VHD, чтобы проверить скорость и размеры файлов.

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

Для диска размером 64 ГБ размер файла VDI был около 18 ГБ, а размер файла VHD - около 22 ГБ.

Я помню, я видел эти две вещи:

  1. Время загрузки было существенно другим, если я не помню, плохой VHD был в 1,6 раза быстрее, чем VDI
  2. Размер VHD был намного больше, чем VDI, около 4 ГБ гигабайт больше, чем 18 ГБ, поэтому в 1,2 раза больше.

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

Надеюсь, кто-то может сделать реальные тесты SSD, но я чувствую, что VHD быстрее (и больше), чем VDI.

Просто совет: VHD / VHDX может быть сжато в любой Windows 7 и выше с помощью инструмента командной строки DiskPart, для VDI необходим внешний инструмент CloneVDI.

Извините, я не тестировал VMDK, я не знал, как сжать его, не изменив его UUID (UUID диска), помните, что инструменты команд VBOX всегда меняют его на каждом клоне, независимо от того, какой формат вы используете.


1

Я только что перенес необработанный 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 тогда.

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