Последнее время стало модно использовать всюду виртуализацию.
Имеем сервер с установленной CentOS 7 minimal x64 и планируем использовать KVM.
Конечно, не плохо бы было убедится что наш сервер поддержит виртуализацию (но если у вас современный нормальный сервер то думаю что 100% он это поддерживает).
egrep '(vmx|svm)' /proc/cpuinfo
Устанавливаем KVM на наш сервер:
Устанавливаем необходимые пакеты и инструменты:
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install –y
не забываем добавить в автозагрузку:
systemctl enable libvirtd && systemctl start libvirtd
Создадим каталог для хранения образов виртуальных машин:
mkdir /var/vm
Ну тут у нас два пути или добавляем соответствующий контекст для нашей директории что бы не ругался SElinux:
semanage fcontext --add -t virt_image_t '/var/vm(/.*)?'
restorecon -R -v /var/vmили просто его отключаем.
Ну в общем то готово. Остается только при необходимости произвести изменения настройки сети если такая необходимость есть.
Посмотреть список возможных сетей можно командой «virsh net-list»
По умолчанию имеем одну внутреннею сеть редактировать которую можно командой «virsh net-edit default» , где «default» название сети
Создадим виртуальную машину
Для примера (проверки) создадим первую виртуальную машину с простыми настройками и подключением к сети «default». Для начала скачаем образ OS которую будем ставить на сервер.
virt-install --network network=default --name vm1 --ram=2048 --vcpus=1 --disk path=/var/vm/vm1.img,size=20,format=qcow2 --graphics vnc,password=123 --cdrom /home/iso/CentOS-7-x86_64-Minimal-1503-01.iso --boot cdrom,hd,menu=on
И так пройдемся немного по параметрам которые мы указываем:
- --network network=default Подключаем виртуальную машину к виртуальной сети с именем default
- --name Указываем название виртуальной машины
- --ram= Указываем размер оперативной памяти который выделяем
- --vcpus= Указываем количество процессоров которое мы выделяем
- --disk Указываем расположение, формат и размер виртуального диска
- --graphics vnc,password=123 Указываем пароль и возможность подключатся к терминалу виртуальной машины через VNC
- --cdrom Указываем расположение образа с которого будем устанавливать систему
- --boot Что подключено при загрузке
virt-install --network network=default --name vm1 --ram=2048 --vcpus=1 --disk path=/var/vm/vm1.img,size=20,format=qcow2 --graphics vnc,password=123 --cdrom /home/iso/CentOS-7-x86_64-Minimal-1503-01.iso --boot cdrom,hd,menu=on
и мы увидим:
Запуск установки... Выделение ресурсов «vm1.img»... | 10 GB 00:00:00 Создание домена... | 0 B 00:00:00 Установка домена продолжается. Ожидание до завершения установки...
Подключение к Виртуальной машине по VNC
Поскольку на нашем сервере нет оконного менеджера то что бы произвести установку и настройку нам необходимо как то подключится. В настройках при создании виртуалки «--graphics vnc,password=123» мы указали что можем подключатся к терминалу через VNC .
Нашей виртуальной машине был назначен порт VNC, узнать какой порт назначен конкретной виртуальной машине можно командой (где «vm1» название виртуальной машины ):
virsh vncdisplay vm1
127.0.0.1:0
Это означает, что порт VNC 5900+0=5900. Если бы результат был "127.0.0.1:1", порт VNC был бы 5901. И т.д. Подключатся к порту надо на хост (наш сервер который мы настраивали) виртуальных машин.
По умолчанию, хост виртуальных машин (у нас это CentOS 7 minimal) не должен позволять подключение к любому порту кроме ssh (22/tcp). Не советую вам открывать доступ к портам VNC из-вне. Это небезопасно. Для того, чтобы получить доступ к экрану виртуальной машины с рабочей станции Windows, с которой я все настраиваю, я сделал туннелирование порта в Putty: 5900 -> 127.0.0.1:5900.


После успешного логина по ssh, можно запустить TightVNC и указать порт 127.0.0.1::5900 (обратите внимание на двойное двоеточие).

Подключившись к виртуальной машине можем произвести установку ОС и последующую настройку.
Управление Виртуальной машиной:
Включение виртуальной машины
virsh start vm1
Выключение виртуальной машины
virsh shutdown vm1
Выдергивание кабеля питания:
virsh destroy vm1
Приостановка работы:
virsh suspend vm1
Подключить к виртуальной машине iso-образ в качестве cdrom
virsh attach-disk vm1 /home/iso/CentOS-7-x86_64-Minimal-1503-01.iso hda --type cdrom --mode readonly
Отключить iso-образ (не удалить устройство из гостя, а просто "извлечь cd-диск из привода"):
virsh attach-disk vm1 "" hda --type cdrom --mode readonly
Для того, чтобы при перезапуске хоста виртуальная машина vm1 запускалась автоматически:
virsh autostart vm1
Выключить автостарт для vm1:
virsh autostart vm1 --disable Domain vm1 unmarked as autostarted
Отключить iso-образ (не удалить устройство из гостя, а просто "извлечь cd-диск из привода"):
virsh attach-disk vm1 "" hda --type cdrom --mode readonly