С недавнего времени я активно использую OpenVZ, но вот понадобилось поставить на виртуальную машину M$ Windows и взор обратился к KVM (KVM и OpenVZ не являются взаимоисключающими и могут работать одновременно).
KVM использует аппаратную виртуализацию, что накладывает сильные ограничения на аппаратную составляющую, но, теоретически, дает минимальную усадку по производительности.
Аппаратная часть
Компьютер собирался относительно недавно и с расчетом на виртуализацию. Основное, как выяснилось, – это процессор с поддержкой виртуализации (серверные варианты я не рассматривал):
- От Intel (технология Intel VT): поддержка виртуализации есть на некоторых Core2 Duo и некоторых Core2 Quad (см. здесь: http://www.intel.com/products/processor/core2duo/specifications.htm и http://ark.intel.com/cpu.aspx), а так же на Core i7;
- От 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 и поиздевался над системой (компиляция, установка нескольких программ и т.д.). Тормозов не почувствовал.
Сильно портит впечатление тот факт, что я не обнаружил штатного средства запуска при старте системы и корректного завершения виртуальной машины при остановке системы. Хотя, возможно, я просто недоглядел.
Добавить комментарий