KVM и AQEMU - аппаратная виртуализация на домашней машине
Содержание:
1.Немного теории (Вы читаете данный раздел);
2. KVM и QEMU;
3. AQEMU.
На протяжении последнего десятилетия пальму первенства в области виртуализации на настольных машинах прочно удерживала VMware со своей Workstation. Основной свободной альтернативой с дружественным интерфейсом традиционно считается VirtualBox. Другие свободные решения, такие как Xen, QEMU или KVM, применяются в основном на серверах, отпугивая многих пользователей-неспециалистов необходимостью разбираться в дебрях опций командной строки. Однако ситуация не столь плачевна, как может показаться - ведь и для инструментов командной строки существуют графические оболочки-надстройки.
Эта статья посвящена KVM (Kernel-based Virtual Machine): как она работает, чем примечательна, как её использовать вместе с графической оболочкой AQEMU, получив вполне реальную альтернативу VirtualBox.
Виртуализацию - возможность запускать несколько ОС на одной физической машине так, что они не подозревают о существовании друг друга - впервые реализовали еще в 60-х годах прошлого века для систем IBM System/360 и 370. Идея тех реализаций была достаточно простой и основывалась на аппаратном разграничении привилегий: каждый процесс, выполняемый на компьютере, работает на определенном уровне привилегий, и в зависимости от этого уровня ему разрешается либо запрещается выполнение тех или иных инструкций. При попытке выполнить «запрещенную» инструкцию генерируется аппаратное исключение, которое может быть перехвачено и обработано программами с более высоким уровнем привилегий.
В классической схеме виртуализации, получившей название «Trap-and-Emulate» («лови и эмулируй») виртуализируемые ОС переносятся на один из непривилегированных уровней, а на уровень с наивысшими привилегиями помещается специальная программа - монитор виртуальных машин (ВМ), или гипервизор. Попытка выполнить привилегированную инструкцию в ВМ приводит к аппаратному исключению. Это ис-ключение перехватывается гипервизором, который эмулирует выполнение инструкции для конкретной ВМ. Непривилегированные же инструкции выполняются «как есть», без участия гипервизора. Как показала практика, доля инструкций, которые необходимо эмулировать, в реальных системах достаточно мала, поэтому производительность такой реализации достаточно высока. Однако есть тонкость: чтобы описанная реализация работала, все инструкции процессора, которые могут изменить состояние ресурсов машины, должны быть привилегированными. Также не должно быть инструкций, которые ведут себя по-разному на разных уровнях привилегий, не вызывая аппаратных исключений. Эти условия были впервые сформулированы разработчиками систем виртуализации IBM и по их именам получили название критерия Попека-Голдберга.
Увы, архитектура Intel x86 (и ее 64-битное расширение) этому критерию не удовлетворяет. Поэтому долгое время считалось, что разработать эффективное (в плане производительности) ПО для виртуализации на этой платформе нельзя. (Неэффективное - пожалуйста; например, программа Bochs просто эмулирует каждую инструкцию, выполняемую ВМ, но ее производительность может быть в сотни раз меньше, чем у реальной машины).
Тем не менее, возможность виртуализации оказалась востребованной и на платформе x86, так что в конце концов были разработаны пути обхода ограничений аппаратуры. Сначала VMware предложила эффективную реализацию динамической бинарной трансляции, осуществляющую анализ и эмуляцию инструкций от ВМ «на лету». Альтернативным подходом явилась паравиртуализация, основанная на внесении модификаций в код ОС, запускаемой внутри ВМ. Целью таких модификаций является замена инструкций, которые необходимо эмули-ровать, на прямые обращения к гипервизору. То есть при таком подходе гипервизору не надо ничего перехватывать - ОС сама отдает ему управление в случае необходимости.
Однако бинарная трансляция в общем случае все-таки привносит замедление в работу ВМ и может серьезно нагружать процессор, а паравиртуализация подходит только для ОС, код которых можно модифицировать. Поэтому, наблюдая все возрастающий интерес к виртуализации, Intel и AMD решили пойти навстречу разработчикам и доработать архитектуры своих процессоров, существенно упростив создание гипервизоров. Опять же, к тому времени (примерно 2005 год) гонка мегагерцев несколько приутихла/приелась, и надо было предоставить рынку что-то новенькое.
Решения, предложенные Intel и AMD, с архитектурной точки зрения достаточно просты - в дополнение к существующим уровням привилегий («кольцам защиты» в терминологии x86), в процессоры был добавлен новый «корневой» («root») режим. Работающие в нем программы обладают большими привилегиями, чем процессы, размещающиеся на классических уровнях привилегий, и могут перехватывать все инструкции, выполняемые этими процессами. Фактически в процессоры был добавлен еще один уровень привилегий, на котором и предлагается размещать гипервизор.
Именно на использовании новых свойств процессоров Intel и AMD и базируется KVM, добавляющий функции гипервизора непосредственно в ядро Linux.
Вы из Владивостока и ищите вакансию программиста, готового работать под AQEMU? Тогда я советую Вам посетить сайт vladivostok.stepo.ru (http://vladivostok.stepo.ru). Здесь вас уже ждут сотни потенциальных работодателей, которые находятся в поиске именно такого специалиста, как Вы.
1.
2. KVM и QEMU;
3. AQEMU.
На протяжении последнего десятилетия пальму первенства в области виртуализации на настольных машинах прочно удерживала VMware со своей Workstation. Основной свободной альтернативой с дружественным интерфейсом традиционно считается VirtualBox. Другие свободные решения, такие как Xen, QEMU или KVM, применяются в основном на серверах, отпугивая многих пользователей-неспециалистов необходимостью разбираться в дебрях опций командной строки. Однако ситуация не столь плачевна, как может показаться - ведь и для инструментов командной строки существуют графические оболочки-надстройки.
Эта статья посвящена KVM (Kernel-based Virtual Machine): как она работает, чем примечательна, как её использовать вместе с графической оболочкой AQEMU, получив вполне реальную альтернативу VirtualBox.
Немного теории
Виртуализацию - возможность запускать несколько ОС на одной физической машине так, что они не подозревают о существовании друг друга - впервые реализовали еще в 60-х годах прошлого века для систем IBM System/360 и 370. Идея тех реализаций была достаточно простой и основывалась на аппаратном разграничении привилегий: каждый процесс, выполняемый на компьютере, работает на определенном уровне привилегий, и в зависимости от этого уровня ему разрешается либо запрещается выполнение тех или иных инструкций. При попытке выполнить «запрещенную» инструкцию генерируется аппаратное исключение, которое может быть перехвачено и обработано программами с более высоким уровнем привилегий.
В классической схеме виртуализации, получившей название «Trap-and-Emulate» («лови и эмулируй») виртуализируемые ОС переносятся на один из непривилегированных уровней, а на уровень с наивысшими привилегиями помещается специальная программа - монитор виртуальных машин (ВМ), или гипервизор. Попытка выполнить привилегированную инструкцию в ВМ приводит к аппаратному исключению. Это ис-ключение перехватывается гипервизором, который эмулирует выполнение инструкции для конкретной ВМ. Непривилегированные же инструкции выполняются «как есть», без участия гипервизора. Как показала практика, доля инструкций, которые необходимо эмулировать, в реальных системах достаточно мала, поэтому производительность такой реализации достаточно высока. Однако есть тонкость: чтобы описанная реализация работала, все инструкции процессора, которые могут изменить состояние ресурсов машины, должны быть привилегированными. Также не должно быть инструкций, которые ведут себя по-разному на разных уровнях привилегий, не вызывая аппаратных исключений. Эти условия были впервые сформулированы разработчиками систем виртуализации IBM и по их именам получили название критерия Попека-Голдберга.
Увы, архитектура Intel x86 (и ее 64-битное расширение) этому критерию не удовлетворяет. Поэтому долгое время считалось, что разработать эффективное (в плане производительности) ПО для виртуализации на этой платформе нельзя. (Неэффективное - пожалуйста; например, программа Bochs просто эмулирует каждую инструкцию, выполняемую ВМ, но ее производительность может быть в сотни раз меньше, чем у реальной машины).
Тем не менее, возможность виртуализации оказалась востребованной и на платформе x86, так что в конце концов были разработаны пути обхода ограничений аппаратуры. Сначала VMware предложила эффективную реализацию динамической бинарной трансляции, осуществляющую анализ и эмуляцию инструкций от ВМ «на лету». Альтернативным подходом явилась паравиртуализация, основанная на внесении модификаций в код ОС, запускаемой внутри ВМ. Целью таких модификаций является замена инструкций, которые необходимо эмули-ровать, на прямые обращения к гипервизору. То есть при таком подходе гипервизору не надо ничего перехватывать - ОС сама отдает ему управление в случае необходимости.
Однако бинарная трансляция в общем случае все-таки привносит замедление в работу ВМ и может серьезно нагружать процессор, а паравиртуализация подходит только для ОС, код которых можно модифицировать. Поэтому, наблюдая все возрастающий интерес к виртуализации, Intel и AMD решили пойти навстречу разработчикам и доработать архитектуры своих процессоров, существенно упростив создание гипервизоров. Опять же, к тому времени (примерно 2005 год) гонка мегагерцев несколько приутихла/приелась, и надо было предоставить рынку что-то новенькое.
Решения, предложенные Intel и AMD, с архитектурной точки зрения достаточно просты - в дополнение к существующим уровням привилегий («кольцам защиты» в терминологии x86), в процессоры был добавлен новый «корневой» («root») режим. Работающие в нем программы обладают большими привилегиями, чем процессы, размещающиеся на классических уровнях привилегий, и могут перехватывать все инструкции, выполняемые этими процессами. Фактически в процессоры был добавлен еще один уровень привилегий, на котором и предлагается размещать гипервизор.
Именно на использовании новых свойств процессоров Intel и AMD и базируется KVM, добавляющий функции гипервизора непосредственно в ядро Linux.
Вы из Владивостока и ищите вакансию программиста, готового работать под AQEMU? Тогда я советую Вам посетить сайт vladivostok.stepo.ru (http://vladivostok.stepo.ru). Здесь вас уже ждут сотни потенциальных работодателей, которые находятся в поиске именно такого специалиста, как Вы.