Позвольте мне привести очень конкретный пример для основного вопроса: виртуализировать другую ОС поверх Linux, где работает решение по виртуализации.
Только представьте себе этот сценарий:
При таком сценарии я думаю, какое решение по виртуализации позволит мне сделать все за меньшее время.
Предположим, что время, которое мне нужно сделать в гостевой системе, не учитывается, так как это ручная задача и т. д.; что отдыхает? Всего три вещи:
Теперь предположим, что вы такой же параноик, как и я, и что Гость находится в «неизменяемом» состоянии, поэтому при каждой загрузке все, что вы сделали при предыдущей загрузке, теряется. Всегда загружайтесь одинаково, если Windows UpDates вошли, они ничего не делают (при загрузке состояния дисков возвращаются обратно в «неизменяемое» состояние )и т. д. Что остается? Только две вещи:
Итак, снова главный вопрос: какое решение для виртуализации сделает это быстрее?
Чтобы привести пример того, что я знаю и использовал (QEMU и VirtualBox):
Итак, еще раз, когда два решения виртуализации могут запускать один и тот же гостевой компьютер и позволяют вам выполнять одну и ту же задачу на гостевом компьютере... какое из них быстрее? или лучший вопрос, с каким из них мне нужно меньше времени для загрузки того же гостя и т. д.?
Для ясности, типичный пример для разработчика:
Представьте себе версии Windows от Win95, 98, ME, 2000, XP, Vista, 7, 8, 8.1, 10 и все подверсии 10 (1507, 1511, 1604, 1608, 1709... и так далее, а также со всеми уровнями обновлений Windows и т. д. и для каждого на Home, Pro, Enterprise и т. д. ).
Это усложняет задачу тестирования нового EXE-файла в более чем нескольких десятках тысяч виртуальных гостевых версий Windows.
Представьте себе реальную задачу (тестирование нового EXE-файла )занимает чуть меньше минуты (просто запустите и протестируйте новые дополнительные функции EXE-файла ), но это должно быть выполнено в течение почти миллиона комбинаций версий Windows, обновлений и т. д.
Для каждой комбинации необходимо выполнить ЗАГРУЗКУ определенного уровня исправления версии Windows и т. д., эта ЗАГРУЗКА подразумевает время, которое может составлять от менее одной минуты до более десяти минут... да, я знаю миллион *1 минута = миллиону минут (около 694,4 дней )...это всего лишь простой пример, показывающий соотношение времени BOOT и времени TEST.
Теперь, если решение виртуализации заставляет этот GUEST загружаться в 99,8 % случаев, чем другое решение виртуализации (, на самом деле почти то же время ), что вы выигрываете 1,5 дня... и это всего лишь 0,2 %.... представьте, что это 5% (не представьте, вы выиграете больше месяца времени 34,27 дня ).
Итак, вопрос в том, какое решение виртуализации позволяет быстрее запускать гостевую систему? НЕТ, это следует понимать как то, с каким решением для виртуализации гость справится с задачей за меньшее время.
Просто пример, который я знаю:
Это увеличение на 37,5%, что следует учитывать. Вернемся к примеру тестирования EXE на миллионе виртуальных машин... что сэкономит вам 260 дней работы.
Я думаю, тот, кто спросит (, а также меня ), что нужно знать, будет быстрее. Поскольку некоторые из них являются «платными», а некоторые очень дорогими (>1000€ ), каждый человек в мире не может провести тесты, необходимые для сравнения их всех.
А теперь личное мнение... VirtualBOX - это черепаха... Та же самая Windows 10 (чистая установка с USB -ISO )на реальном оборудовании по сравнению с VirtualBOX загружает Windows 10 за несколько секунд по сравнению с три-четыре минуты... но опять же, это не сравнение реального оборудования с виртуализированным, это сравнение виртуализированного с «A» и виртуализированного vesus с «B».
Я много искал в Интернете и не нашел никакого сравнения времени загрузки гостевой ОС Windows по сравнению с решениями виртуализации.
Другое дело — запуск в виртуализированной среде базы данных и т. д. Поскольку у меня нет опыта в этом, я не могу об этом говорить.
О чем я могу говорить (, так как мне нужно тестировать новые EXE-файлы на всех возможных Winodws )о времени ЗАГРУЗКИ на VirtualBOX... это очень, очень медленно... но так как мне нужно передать гостю несколько USB (ключей )и карт PCIe, ключей параллельного порта ()и т. д. и в бесплатном -платном... я застрял на VirtualBOX.
Надеюсь, это сосредоточит внимание на реальном тексте вопроса... какое решение виртуализации позволяет гостю выполнять работу за меньшее время.
Можно и так:
awk 'BEGIN {chars="OHH"; next_char=1} {print substr(chars, next_char, 1), $0; next_char++} next_char==4 {next_char=1}' matrix
awk '{ print (FNR-1) % 3 ? "H" : "O", $0 }' file
Здесь используется awk
для префикса текущей строки H
или O
в зависимости от того, кратен ли номер текущей строки трем или нет.
Если вы хотите использовать символ табуляции в качестве разделителя между новым столбцом и остальными, убедитесь, что OFS
имеет значение\t
:
awk -v OFS='\t' '{ print (FNR-1) % 3 ? "H" : "O", $0 }' file
Специальное использование GNU sed
и предположение, что вы хотите, чтобы новый столбец был отделен от других символом табуляции:
sed -e '1~3 s/^/O\t/' -e '1~3! s/^/H\t/' file
Первое выражение добавляет O
с последующим символом табуляции к каждой третьей строке, начиная с первой строки. Второе добавляет H
и символ табуляции ко всем строкам, которые не являются каждой третьей строкой, начинающейся с первой строки.
Для этого требуется GNU sed
из-за следующих двух нестандартных -функций:
n~m
означает «каждая m
:-я строка, начиная со строки n
». \t
расширена до буквального символа табуляции. Использование других инструментов:
yes 'O H H' | tr ' ' '\n' | head -n "$( wc -l <file )" | paste - file
Это создает устойчивый поток O
, H
, H
(, повторяющийся )на отдельных строках с использованием yes
и tr
. Этот поток обрывается с помощью head
, чтобы соответствовать количеству строк в нашем файле (, это вычисляется с использованиемwc -l
). ЗатемO
:иH
:вставляются слева от остального содержимого файла с помощью paste
с символом табуляции в качестве разделителя.