KVM (Kernel-based Virtual Machine) – Linux-решение, которое обеспечивает виртуализацию x86-платформы, поддерживающей Intel VT (Virtualization Technology) или AMD SVM (Secure Virtual Machine).
Разрабатывается компанией Red Hat.
Чтобы проверить, поддерживает ли ваша платформа VT или SVM – дайте команду
|
1 |
egrep '(vmx|svm)' /proc/cpuinfo |
Если вывод команды не пустой, значит поддерживает.
Устанавливаем KVM:
|
1 |
apt-get install kvm libvirt-bin virtinst bridge-utils |
Создаем мост – в файл /etc/sysctl.conf добавляем строки:
|
1 2 |
net.ipv4.conf.all.forwarding=1 net.ipv4.conf.all.proxy_arp=1 |
и даем команду sysctl -p
Для моста в файл /etc/network/interfaces добавляем новый сетевой интерфейс, например kvmbr0 – в результате файл interfaces получился приблизительно таким:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet manual auto kvmbr0 iface kvmbr0 inet static address 10.45.11.192 network 10.45.11.0 netmask 255.255.255.0 broadcast 10.45.11.255 gateway 10.45.11.254 bridge_ports eth0 # dns-nameservers 10.81.101.5 |
Перезагрузим сеть:
|
1 |
/etc/init.d/networking restart |
Теперь вывод brctl show должен показать примерно следующее:
kvmbr0 8000.f46d04976c46 no eth0
У меня все будет в домашнем каталоге /home/sborka
Скачиваем (или передаем между компьютерами через scp/nc) в домашний каталог iso-образ (дистрибутив) той операционной системы, которая впоследствии будет гостевой.
Создаем файл-диск виртуальной системы (здесь 10 Гб):
dd if=/dev/zero of=/home/sborka/vmwindows.img bs=1024k count=10000
При запуске следующей команды может появиться сообщение:
Unable to connect to graphical console: virt-viewer not installed. Please install the ‘virt-viewer’ package. – не обращайте на него внимания.
Сама команда – установка гостевой ОС:
|
1 |
virt-install -n winda -r 1024 -f /home/sborka/vmwindows.img -s 30 -c /home/sborka/windows.iso --accelerate --os-type=windows --vnc -v -w bridge:kvmbr0 |
(“–os-type=linux –os-variant=generic26” для линуксов)
где:
-r 1024 – количество памяти выделяемой под виртуальную машину (в мегабайтах)
–vnc – включаем VNC (будет слушать на localhost:5900, позже сделаем SSH-туннель)
-w bridge:kvmbr0 – подключаем к сети на интерфейс kvmbr0
Как я предупреждал ранее, если после запуска этой команды не появилось никаких ошибок, а отобразилось что-то вида:
Starting install…
Creating domain… 0 B 00:01
Unable to connect to graphical console: virt-viewer not installed. Please install the ‘virt-viewer’ package.
Domain installation still in progress. You can reconnect to the console to complete the installation process.
то все отлично, виртуальная машина запустилась (можно проверить командой virsh -c qemu:///system list –all)
Теперь с любого компьютера пробрасываем SSH-туннель:
|
1 |
ssh -L 5900:localhost:5900 root@HOST_SERVER_IP |
и remmina на localhost:5900
или
Устанавливаем (если в самом начале не установили, а настраивали сервер локально) ssh-клиент, или, например, kitty. Запускаем, настраиваем:
Во вкладке Session — Host Name (or IP address) адрес нашего хост-сервера (в моем случае 172.16.4.24).
Во вкладке Windows-Translation — выбираем UTF-8.
Во вкладке Connection-SSH-Tunnels — заполняем поля Source port 59000, Destination localhost:5900, нажимаем Add.
Жмем Open и мы должны подключиться по SSH к хост-серверу. Одновременно у нас произойдет перенаправление порта 5900 хост-сервера (порт vnc-сервера) на наш локальный порт 59000.
Если у вас появляется ошибка: “qemu: could not open disk image … : Permission denied”, скопируйте .img/.iso файлы в /var/lib/libvirt/images, чтобы SELinux “не был против”
Администрирование виртуальных машин:
Для начала запускаем консоль управления
|
1 |
sudo virsh |
и уже в ней:
list –all -посмотреть все виртуальные машины
destroy имя виртуальной машины – жесткое выключение виртуальной машины
undefine имя виртуальной машины – удалить виртуальную машину(не забываем потом удалить файл виртуальной машины, конечно если она больше не нужна)
start имя виртуальной машины – запустить виртуальную машину
autostart имя виртуальной машины – автозагрузка виртуальной машины
autostart –disable имя виртуальной машины – выключить автозагрузку виртуальной машины
P.S. gui для KVM – virt-manager

