Отклик диска виртуальной машины linux

Загрузка виртуальных linux-машин с диска без разделов

При создании корневых дисков виртуальных машин, обычно, на них с помощью fdisk/gdisk создается таблица разделов с единственным разделом для размещения на нем операционной системы. Это порождает некоторые неприятности на стороне гипервизора, например:

  • При монтировании диска нужно помнить, что монтируется не само блочное устройство, а раздел на нем. Проблема усугубляется если используется lvm-диск — ядро не видит разделы на нем без применения средств убеждения в виде kpartx.
  • Для восстановления раздела требуется не только резервная копия файловой системы, но и бубен/копия первого трека.
  • Изменение размера такого диска требует еще одного бубна лишней операции по изменению размера раздела на диске

Избавиться от таблицы разделов можно прямой загрузкой ядра, но этот метод не безгрешен. Гипервизор должен иметь на своей стороне образы ядер виртуальных машин, которые нужно поддерживать актуальными при обновлениях гостевых ОС.
Хочу рассказать вам об альтернативном варианте загрузки с диска без разделов с помощью EFI и GRUB2.

Все будет происходить в libvirt, qemu, kvm, Ubuntu.

Краткое содержание

EFI BIOS

Причем здесь EFI? Загрузка в EFI-режиме позволяет нам разместить grub-efi в обычной файловой системе и не требует наличия MBR. Прежде всего нам нужен BIOS для qemu с поддержкой EFI. Называется он OVMF. Из всего скачанного богатства нужен только OVMF.fd (далее подразумевается, что он лежит /opt/ovmf/). OVMF подключается в разделе os домена тегом loader:

Загрузчик

Теперь наша виртуалка умеет грузиться современным способом. Этому способу нужен специальный раздел EFI, где будет лежать загрузчик. Приготовим grub-efi:

Как видите, есть некоторые особенности в месте размещения и имени создаваемого загрузчика. Дело в том, что по умолчанию OVMF-BIOS будет пытаться загрузить с EFI-раздела файл /efi/boot/bootx64.efi. Мы воспользуемся этим и подсунем туда grub-efi, который возьмет свой конфиг со второго диска в системе из /boot/grub/. В последствии этот загрузчик можно использовать для множества виртуальных машин, подключая его на readonly диске и при условии, что диск с /boot/grub будет вторым в системе.

EFI-раздел и грабли

Итак, теперь нам нужен загрузочный EFI-раздел внутри гостя на который мы положим загрузчик. Можно создать небольшой диск, разместить таблицу разделов GPT и EFI-раздел с загрузчиком. Если этот диск подключать в режиме readonly, то можно будет использовать один такой диск для нескольких виртуальных машин. Но тут есть грабли. Если мы расположим его на шине virtio, как любой нормальный диск, то при загрузке нас ожидает сюрприз в виде EFI-shell вместо загруженной системы. Причем этот шелл будет прекрасно видеть наш раздел и грузить загрузчик по команде «bootx64.efi», но без рук фокус сделать не удастся. Вот тут ребята подробно обсуждают и выясняют почему и сходятся, что это баг OVMF.
Поэтому придется подключать диск на шину ide. Это рабочий вариант, но диски не могут быть readonly. Потребуется соблюдать гигиену относительно этого диска внутри гостя и (возможно) распрощаться с идей запуска нескольких машин одним загрузчиком.
Есть вариант лучше.

Отражение директории в диск в Qemu

Qemu умеет создавать виртуальные диски из директорий. Это выглядит вот так:

При этом в гостевой системе появится диск с таблицей разделов в MBR, разделом в FAT16 с содержимым директории на нем. У этого диска есть пара важных для нас особенностей — при его подключении необходим атрибут readonly и раздел на нем имеет тип 0x06, а не 0xEF, как того требует EFI. К счастью, загрузиться с такого раздела можно, если повесить диск на шину usb. В этом случае OVMF-BIOS будет искать загрузчик на обычном разделе FAT.

И тут присутствуют еще одни грабли. В лоб ими получаешь, если работает apparmor, а он по умолчанию в Ubuntu работает.
Для каждой виртуалки libvirt создает apparmor-профиль, который дает ей доступ только к указанным в ее конфиге ресурсам. Для диска сделанного из директории правила создаются неправильные, поэтому стоит добавить в /etc/apparmor.d/abstractions/libvirt-qemu строчки:

Важные замечания

Теперь можно плодить виртуалки создавая диски напрямую на lvm-томах, легко и безопасно менять их размер, не утруждать себя установкой загрузчика на новых машинах развернутых с помощью debootstrap, делать резервные копии корневых систем помощью dump и восстанавливать их простым restore.

Однако, есть некоторые ограничения. Диски на шинах usb и ide OVMF всегда расположит ранее дисков на virtio, а мы захардкодили в grub на загрузку меню и модулей со второго диска (первым у нас стоит диск с загрузчиком):

Сделали мы это параметром -p «(hd1)/boot/grub/». Здесь (hd1) как раз и указывает на второй диск (первый, соответственно (hd0)). Учитывайте это, если будете добавлять в машину диски отличные от virtio.

Так же, нужно помнить, что grub может динамически подгружать дополнительные модули из /boot/grub корневого раздела, а так как гостевые системы могут быть разные, то версии этих модулей могут оказаться несовместимыми с загрузчиком из EFI-раздела. Избавится от этого можно понапихав необходимые модули статически путем добавления их названия в вышеприведенную строку.

Читайте также:  Не могу запустить меню загрузки windows

Источник

Издержки виртуализации, часть 2:виртуальная машина Oracle VM VirtualBox на базе хост-ОС Linux Ubuntu

В прошлой статье мы рассмотрели работу виртуальной машины (ВМ) Oracle VM VirtualBox в схеме, где в качестве и хост-ОС, и гостевой системы использовалась Windows 7 x64. Сегодня мы посмотрим, как изменится производительность виртуальной системы Windows 7 x64, если в качестве хост-ОС будет выступать не Windows, а Linux. Для тестирования мы взяли Ubuntu 14.04 LTS. В качестве гостевой системы выступил наш стандартный тестовый образ Windows 7 x64 образца 2011 года.

Стоит сразу объяснить, почему был выбран именно этот вариант Linux. Несмотря на то, что Oracle VM VirtualBox поддерживает большое количество разных дистрибутивов Linux, выбор пал на Ubuntu 14.04 LTS в первую очередь по причине схожего позиционирования с Windows 7 — для десктопа.

Второе, что следует оговорить: в качестве хост-ОС в первом тестировании использовался тот же образ Windows 7 x64 образца 2011 г. с установленными приложениями. Поэтому в теории более современная и к тому же чистая сборка Linux может в некоторых ситуациях получить преимущество.

Исследование производительности

Интерактивная работа в трехмерных пакетах

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

Real w/HT Windows Ubuntu
CAD CreoElements
Результаты 584 1635 2282
Рейтинг производительности 100 36 26
Издержки, % 64 74
CAD SolidWorks
Результаты 105 672 974
Рейтинг производительности 100 16 11
Издержки, % 84 89

Как и в предыдущем материале, уровень издержек при использовании ВМ недопустимо высок. Если смотреть по группе, то Windows в целом имеет более низкий уровень издержек, но внутри группы ситуация «разнонаправленная», так что окончательный вывод сделать сложно.

Финальный рендеринг трехмерных сцен

При финальном рендеринге используется только ЦП, так что ситуация получится более объективной. Посмотреть таблицу с результатами

Real w/HT Windows Ubuntu
3Ds Max
Результаты 5:15 7:04 7:50
Рейтинг производительности 100 74 67
Издержки, % 26 33
Lightwave
Результаты 5:12 5:33 5:26
Рейтинг производительности 100 94 96
Издержки, % 6 4

Издержки в этом тесте находятся на приемлемом уровне что в этом, что в предыдущем тестировании. Если брать средний балл по группе, то Windows показывает издержки на уровне 16%, а Ubuntu — 18%. Однако если взглянуть на результаты отдельных приложений, то 3Ds Max под Linux проигрывает, а Lightwave — наоборот, показывает в Ubuntu более высокий результат, чем в ВМ с Windows. На Ubuntu издержки в Lightwave составляют всего 4%, но плохой результат в 3Ds Max снижает средний балл, отдавая победу Windows.

Упаковка и распаковка

В целом, производительность современных процессоров такова, что бутылочным горлышком при распаковке скорее станет жесткий диск, чем современный мощный процессор. ВМ использует в качестве диска виртуальный образ на диске тестовой машины, что лишь усиливает зависимость скорости архивации от скорости дисковой подсистемы. На хосте Windows используется NTFS, на Ubuntu — EXT. Посмотреть таблицу с результатами

Real w/HT Windows Ubuntu
7zip pack
Результаты 0:59 1:07 1:17
Рейтинг производительности 100 88 77
Издержки, % 12 23
7zip unpack
Результаты 0:07 0:09 0:10
Рейтинг производительности 100 78 70
Издержки, % 22 30
RAR pack
Результаты 1:02 1:23 1:41
Рейтинг производительности 100 75 61
Издержки, % 25 39
RAR unpack
Результаты 0:32 0:40 0:40
Рейтинг производительности 100 80 80
Издержки, % 20 20

В прошлом материале мы уже отмечали, что время выполнения теста слишком мало для современных процессоров, поэтому к результатам стоит относиться с некоторой осторожностью. Тем не менее, стоит отметить большие издержки при архивации. Причем для обоих архиваторов потери в Linux заметно больше.

Вероятно, проигрыш Linux можно связать с тем, что связка «NTFS гостевой системы — vdi-образ ВМ — NTFS хост-ОС» более эффективна, чем «NTFS гостевой системы — vdi-образ ВМ — EXT хост-ОС». Но окончательные выводы пока делать рано.

Кодирование аудио

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

Real w/HT Windows Ubuntu
Apple Результаты 386 362 360
Apple Рейтинг производительности 100 94 93
FLAC Результаты 543 508 495
FLAC Рейтинг производительности 100 94 91
Monkey Audio Результаты 369 348 346
Monkey Audio Рейтинг производительности 100 94 94
MP3 Результаты 243 230 231
MP3 Рейтинг производительности 100 95 95
Nero AAC Результаты 229 212 214
Nero AAC Рейтинг производительности 100 93 93
OGG Vorbis Результаты 167 159 161
OGG Vorbis Рейтинг производительности 100 95 96
Читайте также:  Voice commander для windows

Издержки минимальны на обеих системах, хотя можно отметить чуть большие издержки виртуализации для системы с Linux. Этот тест достаточно чувствительный, так что разнице в 1% можно доверять.

Компиляция

Компиляция — сама по себе сложная и достаточно ресурсоемкая задача. Но, как показало предыдущее исследование, компиляторы довольно капризны (и, видимо, по-разному оптимизированы), поэтому при переносе в виртуальную среду ведут себя очень по-разному. Хуже всего при этом становится MSVC, который существенно снижает и общий балл по группе. Посмотреть таблицу с результатами

Real w/HT Windows Ubuntu
GCC
Результаты 6:49 9:11 10:32
Рейтинг производительности 100 74 65
Издержки, % 26 35
ICC
Результаты 8:32 12:43 14:37
Рейтинг производительности 100 67 58
Издержки, % 33 42
MSVC
Результаты 4:26 11:33 16:21
Рейтинг производительности 100 38 27
Издержки, % 62 73

В целом по группе издержки и так были большие, 40%, а в Linux ситуация еще ухудшилась — до 50%. Если смотреть отдельные приложения, то везде ситуация при работе из-под Linux существенно хуже, чем при использовании в качестве хост-ОС Windows.

Математические и инженерные расчеты

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

Real w/HT Windows Ubuntu
Maple
Результаты 0,6656 0,5906 0,6069
Рейтинг производительности 100 89 91
Издержки, % 11 9
Matlab
Результаты 0,0235 0,0290 0,0294
Рейтинг производительности 100 81 80
Издержки, % 19 20
Creo Elements (CPU)
Результаты 275 364 347
Рейтинг производительности 100 76 79
Издержки, % 24 21
SolidWorks (CPU)
Результаты 27,12 34,89 37,82
Рейтинг производительности 100 78 72
Издержки, % 22 28

Средний балл по группе у обеих систем получился одинаковым — издержки на уровне 19%. Внутри ситуация разделилась: кто-то лучше работает под Linux, кто-то под Windows. Самая большая разница в Solidworks, при работе в ВМ в Ubuntu издержки производительности растут на 6%.

Растровая графика

В целом, скорость обработки изображений зависи от производительности ЦП, но в рамках нашей методики рассматривается пакетная обработка изображений, что добавляет в уравнение еще и производительность дисковой подсистемы — данный факт является критичным для ВМ.Посмотреть таблицу с результатами

Real w/HT Windows Ubuntu
AСDSee
Результаты 11:07 23:10 29:03
Рейтинг производительности 100 48 38
Издержки, % 52 62
GIMP
Результаты 10:46 18:28 24:48
Рейтинг производительности 100 58 43
Издержки, % 42 56
Imagemagick
Результаты 1:51 2:35 2:16
Рейтинг производительности 100 72 82
Издержки, % 28 18
Photoshop
Результаты 1:46 2:29 2:55
Рейтинг производительности 100 71 61
Издержки, % 29 39

По среднему баллу Windows снова одерживает победу, показывая издержки на уровне 38%, в то время как Ubuntu — 44%. Но радости это не прибавляет: в обоих случаях издержки слишком высоки.

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

Векторная графика

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

Real w/HT Windows Ubuntu
Illustrator
Результаты 5:36 7:39 7:21
Рейтинг производительности 100 73 76
Издержки, % 27 24

Потери производительности заметные, причем в Linux тестовое задание было завершено быстрее.

Кодирование видео

Кодирование видео — весьма распространенный класс ресурсоемких задач. Перед началом тестирования обратим внимание, что в группе есть варианты как простого кодирования, так и обработки видео в специализированных редакторах, поэтому нагрузка на процессор и издержки для двух сценариев будут существенно отличаться.Посмотреть таблицу с результатами Expression

Real w/HT Windows Ubuntu
Expression
Результаты 2:10 3:18 5:51
Рейтинг производительности 100 66 37
Издержки, % 34 63
Premiere
Результаты 1:25 1:59 2:08
Рейтинг производительности 100 71 66
Издержки, % 29 34
Vegas Pro
Результаты 3:36 5:19 5:44
Рейтинг производительности 100 68 63
Издержки, % 32 37
X264
Результаты 4:43 5:15 5:38
Рейтинг производительности 100 90 84
Издержки, % 10 16
XviD
Результаты 5:16 8:24 5:36
Рейтинг производительности 100 63 94
Издержки, % 37 6

И снова по среднему баллу Windows показывает меньшие издержки, чем Ubuntu — 28% против 31%.

Из всей группы выбиваются два приложения — Expression и XviD. В Expression победа достается Windows, которая показала издержки на уровне 34%, а вот поведение Ubuntu явно неадекватное — издержки на уровне 63%. Что касается XviD, то ситуация противоположная — Ubuntu вплотную приближается к физическому серверу по уровню производительности, показывая издержки на уровне всего 6%, а конкурент демонстрирует аж 37%.

Офисное ПО

Группа офисных приложений представляет особый интерес, так как виртуализированный терминал-сервер весьма удобен в эксплуатации (обслуживании, апгрейде, миграции и т. д.) — по сути, это объединение плюсов виртуализации и терминального сервера. Вопрос лишь в издержках.Посмотреть таблицу с результатами

Читайте также:  Theta edge node linux
Real w/HT Windows Ubuntu
Chrome
Результаты 13767 12133 12719
Рейтинг производительности 100 88 92
Издержки, % 12 8
Excel
Результаты 11:39 14:42 14:26
Рейтинг производительности 100 79 81
Издержки, % 21 19
Finereader
Результаты 8:20 10:06 10:28
Рейтинг производительности 100 83 80
Издержки, % 17 20
Firefox
Результаты 7406 6495 6832
Рейтинг производительности 100 88 92
Издержки, % 12 8
IE
Результаты 1216 1010 1076
Рейтинг производительности 100 83 88
Издержки, % 17 12
Opera
Результаты 7378 6012 6495
Рейтинг производительности 100 81 88
Издержки, % 19 12
PowerPoint
Результаты 0:44 0:51 0:50
Рейтинг производительности 100 86 88
Издержки, % 14 12
Word
Результаты 1:08 1:32 1:28
Рейтинг производительности 100 74 77
Издержки, % 26 23

Пакет офисного ПО удивляет: весь офисный набор приложений, начиная от браузеров и заканчивая программным обеспечением MS, показывает меньшие издержки на Ubuntu. Единственным исключением стал Finereader, который как раз-таки генерирует серьезную нагрузку на процессор. Из чего можно сделать вывод, что Linux, скорее всего, оказывается быстрее в сценариях, где отклик важнее чистой производительности, а нагрузка на систему невелика.

Real w/HT Windows Ubuntu
Java
Результаты 236,56 217,03 218,08
Рейтинг производительности 100 92 92
Издержки, % 8 8

Java исполняется на своей виртуальной машине, поэтому результат изначально был очевиден — обе системы показали одинаковые издержки.

Воспроизведение видео

MPCHC (DXVA) Real w/HT Windows Ubuntu
Результаты 6 113 111
MPCHC (software) Real w/HT Windows Ubuntu
Результаты 68 72 97
VLC (DXVA) Real w/HT Windows Ubuntu
Результаты 11 66 65
VLC (software) Real w/HT Windows Ubuntu
Результаты 51 66 66

За исключением MPCHC (software), где Ubuntu загрузил ЦП практически на все 100%, при воспроизведении видео обе системы показали схожие результаты.

Многозадачное окружение

Данный тест представляет собой одновременную работу GIMP, Maya, MSVC, XviD и 7-Zip. Глядя на список приложений, становится ясно, что для ВМ узким местом будет дисковая подсистема — жесткий диск. Возможно, при использовании RAID-массива на базе серверных SSD ситуация окажется иной.Посмотреть таблицу с результатами

Real w/HT Windows Ubuntu
Многозадачное окружение
Результаты 6:08 9:00 9:43
Рейтинг производительности 100 68 63
Издержки, % 32 37

Параллельная работа вообще дается ВМ нелегко, но с Windows взаимодействие лучше: Ubuntu чувствует себя хуже, чем Windows, показывая на 5% большие издержки.

Стоит отметить, что обе системы не вписались не только в установленные рамки, но и в разумные пределы: все-таки издержки свыше 30% — это слишком много.

Средний балл

Итак, средний балл.

Windows Ubuntu
Издержки виртуализации 24% 26%

В общем и целом, «средняя температура по больнице» такова: в роли хост-ОС десктопная Windows быстрее десктопного Linux, но общая разница невелика — всего 2%.

Выводы

Таким образом, при использовании VirtualBox и приложений из нашей тестовой методики 2011 года Ubuntu в качестве хост-ОС практически во всех приложениях имеет немного большие издержки, чем Windows. Иногда отставание может быть заметным, но в общем не превышает нескольких процентов и не является критическим фактором.

Единственным исключением стали офисные приложения, которые дают слабую нагрузку на систему и выполняются быстро. Эта особенность заставляет предположить, что в Ubuntu ВМ работает чуть отзывчивее, но при длительной серьезной нагрузке ей достается чуть меньше ресурсов. Правда, стоит помнить, что, помимо производительности собственно процессорной части, на результаты тестов могут оказывать влияние и другие факторы: в первую очередь, работа дисковой подсистемы, которая зависит от многих факторов, ибо диск ВМ — виртуальный. Можно предположить, что в Windows дисковая подсистема работает с ВМ чуть более эффективно.

Что касается самой виртуализации, то поскольку результаты очень похожи на результаты предыдущего тестирования, сказать что-либо новое в выводах тоже сложно. Делать выводы об общей эффективности Virtualbox пока рано, подождем результаты других виртуальных машин. Но один большой недостаток виден уже сейчас: невозможность задействования ресурсов графического ускорителя.

С. К.: Еще раз подчеркну, что, на мой взгляд, эффективность выполнения того или иного приложения в ВМ зависит не от того, какие задачи оно выполняет, а от внутренних алгоритмов, строения и оптимизации кода в самом приложении. То есть экстраполировать результаты на сходные по функциональности приложения, которые не тестировались, или даже на более новые версии протестированных приложений (если в них серьезно изменена внутренняя структура) не стоит — они могут работать совершенно по-другому и показывать совершенно другой уровень издержек при работе в виртуальной машине.

С. И.: Говоря о виртуализации на разных хост-ОС, обязательно следует учитывать издержки и особенности работы ВМ. В условиях ограниченного бюджета на ИТ при обеспечении гарантированного уровня производительности серверов или рабочих станций в тех или иных приложениях данный подход позволит добиться более высокой эффективности работы и отдачи сервера. И второе: поддержка виртуальной машиной разных ОС дает возможность легко переносить ВМ между самыми разными системами, выбирая оптимальную рабочую среду либо подстраиваясь под уже существующую. Причем это касается не только серверов, но и рабочих станций и других компьютеров (например, перед командировкой можно легко загрузить на разъездной ноутбук ВМ с нужными приложениями и настройками).

Источник

Оцените статью