KVM в Linux

С недавнего времени я активно использую OpenVZ, но вот понадобилось поставить на виртуальную машину M$ Windows и взор обратился к KVM (KVM и OpenVZ не являются взаимоисключающими и могут работать одновременно).

KVM использует аппаратную виртуализацию, что накладывает сильные ограничения на аппаратную составляющую, но, теоретически, дает минимальную усадку по производительности.

Аппаратная часть

Компьютер собирался относительно недавно и с расчетом на виртуализацию. Основное, как выяснилось, – это процессор с поддержкой виртуализации (серверные варианты я не рассматривал):

  1. От Intel (технология Intel VT): поддержка виртуализации есть на некоторых Core2 Duo и некоторых Core2 Quad (см. здесь: http://www.intel.com/products/processor/core2duo/specifications.htm и http://ark.intel.com/cpu.aspx), а так же на Core i7;
  2. От AMD (технология AMD SVM): поддержка есть на всех AMD Phenom, включая AMD Phenom X3.

Себе лично я взял самый дешевый AMD Phenom X3 из тех, что были в наличии.

Проверить наличие виртуализации в системе можно по наличию в файле /proc/cpuinfo флага vmx для Intel и флага svm для AMD.

Так же виртуализацию нужно включить в BIOS.

Программная часть

Работает KVM только под Linux и требует включения его в ядре. В Ubuntu 8.10 по-умолчанию модули для KVM есть, в том числе и в ядре с патчем под OpenVZ. То есть это дает возможность использовать KVM и OpenVZ одновременно.

Для установки KVM под Ubuntu Linux 8.10 достаточно выполнить:

apt-get install kvm

Так как под KVM нет свой утилиты для создания вируального диска, придется поставить еще и qemu:

apt-get install qemu

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

Для начала нужно создать виртуальный диск, например:

qemu-img create -f qcow disk.img 10G

Эта команда создаст диск формата qcow (в отличие от raw, файл будет расти по мере надобности) с логическим объемом 10Гб.

После этого можно запустить виртуальную машину, например:

kvm disk.img -m 512 -localtime -no-acpi -net nic -net tap,ifname=veth1 -vnc :1 -daemonize

Здесь:

  • -m 512 – выделить 512Мб оперативной памяти;
  • -localtime – в виртуальной машине использовать локальное время (по умолчанию UTC), что полезно при запуске M$ Windows;
  • -no-acpi – избавление от проблем с ACPI, иногда полезно;
  • -net nic -net tap,ifname=veth1 – создать для виртуальной машины сетевой интерфес veth1 и цепануть его к первому попавшемуся bridge-у (по умолчанию используется сеть HOST-only). Для указания конкретного интерфеса моста я правил файл /etc/kvm/kvm-ifup.
  • -vnc :1 – сделать машину доступной по VNC на дисплее :1. Очень полезно при удаленной установке;
  • -daemonize – не держать процесс до завершения работы виртуальной машины.

Штатного интерфейса для запуска виртульных машин при старте системы я не обнаружил.

Впечатления

Впечатления следующие: после установки M$ Windows настройл в ней подключение по RDP и поиздевался над системой (компиляция, установка нескольких программ и т.д.). Тормозов не почувствовал.

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

Ссылки

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Закончите арифметическое действие * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.