Linux KVM
KVM
KVM - система виртуализации, которая включена в состав ядра linux, начиная с 2.6.20. Вероятно, наиболее прогрессивная система, т.к. RedHat переключилась на нее с XEN. Задача - запускать внутри виртуальных машин ОС отличную от хостовой (в моем случае - win32, FreeBSD, linux но другие версии ядра отличные от хостовых).
Сейчас использую VMWare, решил отказаться из-за следующих недостатков
- Неудобство управления (нужно держать под рукой vmware-console)
- Большие накладные расходы.
- VMWare не позволяет эмулировать более 2 процессоров (проверить!)
- Иногда - проблемы при обновлении ядра.
- Нет механизмов ограничения процессорного времени. (или я о них не знаю)
Hardware
KVM требует наличия x86-совместимого процессора с поддержкой одной из технологий аппаратной виртуализации — Intel VT либо AMD SVM. На данный момент KVM в состоянии запускать в качестве гостевых ОС GNU/Linux (32-битные и 64-битные), Windows (32-битные и 64-битные) и другие системы.
Для полноценной работы немодифицированных гостевых ОС потребуется процессор с поддержкой аппаратной виртуализации: Проверить наличие поддержки можно по наличию соответвующих флагов - комманда ниже должна дать непустой результат
В моем случае это
#cat /proc/cpuinfo processor : 0 vendor_id : AuthenticAMD cpu family : 15 model : 107 model name : AMD Athlon(tm) 64 X2 Dual Core Processor 4400+ stepping : 1 cpu MHz : 2310.439 cache size : 512 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 2 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch bogomips : 4620.87 TLB size : 1024 4K pages clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management: ts fid vid ttp tm stc 100mhzsteps processor : 1 vendor_id : AuthenticAMD cpu family : 15 model : 107 model name : AMD Athlon(tm) 64 X2 Dual Core Processor 4400+ stepping : 1 cpu MHz : 2310.439 cache size : 512 KB physical id : 0 siblings : 2 core id : 1 cpu cores : 2 apicid : 1 initial apicid : 1 fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch bogomips : 4621.05 TLB size : 1024 4K pages clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management: ts fid vid ttp tm stc 100mhzsteps
Конфигурация ядра
Что бы включить поддержку KVM, следует включить следующие опции ядра (я использовал модули):
Linux Kernel Configuration: Поддержка KVM |
Device Drivers ---> [*] Virtualization ---> --- Virtualization <M> Kernel-based Virtual Machine (KVM) support <M> KVM for Intel processors support <M> KVM for AMD processors support |
KjCxBP <a href="http://pguhcnwzcxme.com/">pguhcnwzcxme</a>, [url=http://gnvenhvfhrky.com/]gnvenhvfhrky[/url], [link=http://npanenwmjnce.com/]npanenwmjnce[/link], http://kpmonslmqhjg.com/
Запуск первой виртуальной машины
Добавляю в /etc/modules.autoload.d/kernel-2.6:
kvm-amd tun
и загружаю модули (tun нужен для работы сети, на этапе запуска виртуальной машины и установки гостевой WinXP - не нужен)
Далее, создаю диск с именем test1 размером 10G
Что бы посмотретьинформацию о диске можно воспользоваться следующей коммандой
image: ./test1.img file format: qcow2 virtual size: 10G (10737418240 bytes) disk size: 1.4G cluster_size: 4096
Далее пробую установить WinXP с образа установочного диска:
Т.к. все эксперементы я провожу на удаленном сервере, где нет ничего связанного с Х, то получаю следующее сообщение
Could not initialize SDL - exiting
Очевидно, что kvm попробовал вывести на экран какую-то графику и у него это не получилось. Отмечу, что я не сразу нашел решение, наиболее простое и правильное - перенаправить вывод графики на vnc. Соответвенно, комманда приобретает вид
Теперь можно подключиться к серверу на порт 5910 по vnc и пронаблюдать загрузку виртуальной машины.
Далее, наблюдаю за установкой и жму "далее" через vnc.
Если ОС не использует графику совсем - то запускать с параметром -curses вместо -vnc. В этом случае вывод будет праямо на текущюю консоль, что в большенстве случаев достаточно удобно.
Натройка сети на хост-системе и виртуальных машинах
Вцелом схема сети выглядит так: (вторая гостевая система пока только в процессе подготовки)
HOST KVM Гостевая система 1 (WinXP) +-----------------------+ +-----------------+ | 95.69.хх.xx | | | INET---+---- eth0 | | | | | | | KVM Гостевая система 2 (FreeBSD 7.2) | +------+ +--+---+---- nic0 | +--------------+ | |kvm_tap0---------+ | |172.16.254.6 | | | | | 172.16.254.5 | | | | | | |kvm_tap0---------+ | +-----------------+ | | | | 172.16.254.9 | | | | | +------+ | | | | | +--+-------------------------+---- nic0 | | | |172.16.254.10 | +-----------------------+ +--------------+
Конфигурация ядра для поддержки сети
Понадобиться поддержка в ядре TUN/TAP устройств и возможно VLAN (не уверен что это необходимо). Я в своей конфигурации предпочел использовать routed а не bridged соеднение, и поддержка birdge обязательной не является. Поддержка VLAN мне необходима в любом случае, выключить ее я не могу.
Linux Kernel Configuration: Поддержка bridging, TUN и VLAN |
Device Drivers ---> [*] Network device support ---> <M> Universal TUN/TAP device driver support Networking support ---> Networking options ---> <M> 802.1d Ethernet Bridging <*> 802.1Q VLAN Support |
R33FUv <a href="http://kqqjekdgbnev.com/">kqqjekdgbnev</a>, [url=http://jymugrzqnzsj.com/]jymugrzqnzsj[/url], [link=http://fsqojsmgbqaa.com/]fsqojsmgbqaa[/link], http://wwykzgatpgmh.com/
Windows 7 (тест)
Ну, есть и хорошая новость - она работает )
oQCsK6 <a href="http://dclmjzpcxiju.com/">dclmjzpcxiju</a>, [url=http://aebbetkayfkr.com/]aebbetkayfkr[/url], [link=http://olyaaelzlikm.com/]olyaaelzlikm[/link], http://aklvsqigfccf.com/
Ссылки
Есть некоторая доля вероятности, что какую-то из ссылок которой я воспользовался я забыл указать. Потому, если такое вдруг случиться - укажите мне на ошибку. Я исправлю.