Какой формат изображения лучше, raw или qcow2, использовать в качестве базового образа для других виртуальных машин?

25

Я использую базовый образ и на его основе создаю много виртуальных машин. А теперь я хочу знать, какой лучше, qcow2 или raw использовать для базового изображения. Более того, не могли бы вы сказать мне, есть ли какое-то преимущество в использовании этого базового образа вместо клонирования всего диска. Скорость может быть одним из факторов, но с точки зрения эффективности, есть ли проблема в использовании базового образа, а затем в создании виртуальных машин, использующих этот базовый образ?

Изменить 1:

Я провел несколько экспериментов и получил введите описание изображения здесьвведите описание изображения здесьвведите описание изображения здесь

Первый - это когда базовый образ и оверлей являются qcow2. Во-вторых, когда baseimage является необработанным, но наложением является qcow2, а в третьем случае я даю индивидуальный необработанный образ диска каждой виртуальной машине. Удивительно, но последний случай гораздо эффективнее по сравнению с двумя другими.

Экспериментальная установка: 
ОС в базовом изображении: Ubuntu Server 14.04 64 бит.
Хост ОС: Ubuntu 12.04 64bit
RAM: 8 ГБ
Процессор: Intel® Core ™ i5-4440 CPU @ 3,10 ГГц × 4 
Диск: 500 ГБ 

На оси абсцисс: номер виртуальной машины, загруженной одновременно. Начиная с 1 и увеличивая до 15.

По оси Y: Общее время загрузки «х» числа машин.

Из графиков видно, что предоставление полного образа диска виртуальной машине гораздо эффективнее, чем другие 2 метода.

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

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

Спасибо.

AB
источник
1
Я бы использовал необработанное базовое изображение и наложил QED вместо qcow2. QED работает быстрее, чем qcow2, и менее вероятно, что он будет поврежден при разработке.
Мэтт
@Matt, пожалуйста, прокомментируйте отредактированный вопрос.
AB
Различия в производительности интересны. Можете ли вы попробовать это с Qed? может быть проблема конкуренции / блокировки в реализации qcow2. Я считаю, что у него есть некоторые проблемы, поэтому они изобрели Qed.
Мэтт
1
@Matt Я проверил с необработанным оверлеем baseimage-qed и необработанным оверлеем baseimage-qcow2. Но qed намного медленнее, чем qcow2 в этой настройке.
AB

Ответы:

18

Для вашего конкретного случая использования (базовое изображение + наложение qcow2) предпочтителен формат RAW:

  1. Это быстрее: поскольку с метаданными не связано, оно работает максимально быстро. С другой стороны, Qcow2 имеет два уровня косвенности, которые необходимо пересечь, прежде чем попасть в реальные данные.
  2. Поскольку оверлейный слой должен быть файлом Qcow2, вы не теряете никогда полезную возможность создания снимков (изображения RAW сами по себе не поддерживают снимки)

Выбор между базовым изображением + наложение qcow2 против нескольких полных копий зависит от вашего приоритета:

  1. Для абсолютной производительности используйте смещенные изображения RAW. Недостатком является отсутствие поддержки снимка, так как в большинстве сред это слишком высокая цена, чтобы платить
  2. Для гибкости и эффективности использования пространства используйте базовые изображения RAW + наложения Qcow2.

Во всяком случае, я нашел файлы Qcow2 несколько хрупкими.

Для моих гипервизоров KVM производства я в основном использую две разные установки:

  1. где производительность # 1, я использую тома LVM, напрямую подключенные к виртуальным машинам, и использую возможность создания снимков LVM для создания последовательных резервных копий
  2. где я могу пожертвовать некоторой производительностью для повышения гибкости, я использую один большой образ LVM Thin Provisioned Volume + XFS + RAW

Другая возможность - использовать обычный том LVM + изображения XFS + RAW. Единственным недостатком является то, что обычные (не тонкие) снимки LVM очень медленные, а моментальный снимок занятого нормального тома LVM снижает производительность (на весь срок действия снимка). В любом случае, если вы планируете использовать только моментальные снимки, это может быть проще и безопаснее.

Некоторые ссылки: объясняется
медлительность ввода-вывода
KVM в производительности хранилища RHEL 6 KVM и предварительное распределение Qcow2 в RHEL 6.1 и
настройках производительности хранилища KVM Fedora 16 и кеша в Red Hat Enterprise Linux 6.2
LVM для тонкого тома

shodanshok
источник
Как указано выше: отдельные изображения RAW будут быстрее из-за отсутствия косвенных слоев. Помните, что вы отказываетесь от снимков (на уровне изображения) и эффективности пространства. Более того, у меня сложилось впечатление, что ваш третий результат был искажен кэшем хоста. Чтобы быть уверенным, повторяйте все ваши тесты, выдавая "sync; echo 3> / proc / sys / vm / drop_caches" между каждым запуском.
Shodanshok
На самом деле я думал так же. Но потом я подумал, что в случае фактического использования также будет следовать тот же поток.
AB
Не совсем: в этой тестовой среде вы просто загружаете свои виртуальные машины, не используя их. В реальном случае после загрузки будут использоваться виртуальные машины, загрязняющие кеш. В общем, лучше всего сравнить с разумным вариантом использования.
Shodanshok
Есть ли у вас какие-либо идеи, почему кеширование не играет такой большой роли в графике 1 и графике 2, то есть наложении Qcow2 base-image + Qcow2 и наложении Raw base-image + Qcow2.
AB
6

Пожалуйста, имейте в виду .... если вы используете Linux, вы можете использовать rawи получить те же преимущества, qcow2что и размер.

... Если ваша файловая система поддерживает дыры (например, в ext2 или ext3 в Linux или NTFS в Windows), то только зарезервированные сектора будут резервировать пространство.

https://docs.fedoraproject.org/en-US/Fedora/18/html/Virtualization_Administration_Guide/sect-Virtualization-Tips_and_tricks-Using_qemu_img.html

сырой необработанный образ диска (по умолчанию). Это может быть самый быстрый файловый формат. Если ваша файловая система поддерживает дыры (например, в ext2 или ext3 в Linux или NTFS в Windows), то только зарезервированные сектора будут резервировать пространство. Используйте информацию qemu-img для получения реального размера, используемого изображением, или ls -ls в Unix / Linux.

д хи
источник
Хорошая точка зрения! Но, похоже, в резервном копировании / копировании / сжатии используется весь размер необработанного файла изображения. Необработанный файл
размером
Это было совершенно новым для меня. У меня есть виртуальная машина в Proxmox VE с виртуальным диском 30 ГБ ... и я вижу, что диск имеет размер в файловой системе хоста. Но файловая система хоста имеет общее использование << 10GB. Вот почему я искал.
cljk