Поиск по сайту:

Серия RHCSA: Основы виртуализации и гостевого администрирования с помощью KVM. Часть 15


Если вы посмотрите в словаре слово «виртуализировать», то обнаружите, что оно означает «создать виртуальную (а не реальную) версию чего-либо». В вычислительной технике термин «виртуализация» относится к возможности одновременного запуска нескольких операционных систем, изолированных друг от друга, поверх одной и той же физической (аппаратной) системы, известной в схеме виртуализации как хост.

Благодаря использованию монитора виртуальных машин (также известного как гипервизор) виртуальным машинам (называемым гостями) предоставляются виртуальные ресурсы (т. е. ЦП, ОЗУ, хранилище, сеть). интерфейсы, и это лишь некоторые из них) от базового оборудования.

Учитывая это, становится ясно, что одним из основных преимуществ виртуализации является экономия затрат (на оборудование и сетевую инфраструктуру, а также затраты на техническое обслуживание) и существенное сокращение физического пространства, необходимого для размещения всего необходимого оборудования.

Поскольку это краткое руководство не может охватить все методы виртуализации, я рекомендую вам обратиться к документации, указанной в кратком описании, для получения более подробной информации по этому вопросу.

Имейте в виду, что настоящая статья призвана стать отправной точкой для изучения основ виртуализации в RHEL 7 с использованием KVM (виртуальной машины на основе ядра) с утилитами командной строки, а не с помощью утилит командной строки. -углубленное обсуждение темы.

Проверка требований к оборудованию и установка пакетов

Чтобы настроить виртуализацию, ваш процессор должен ее поддерживать. Проверить, соответствует ли ваша система требованиям, можно с помощью следующей команды:


grep -E 'svm|vmx' /proc/cpuinfo

На следующем снимке экрана мы видим, что текущая система (с микропроцессором AMD) поддерживает виртуализацию, на что указывает svm. Если бы у нас был процессор Intel, мы бы вместо этого увидели vmx в результатах приведенной выше команды.

Кроме того, вам необходимо включить возможности виртуализации во встроенном ПО вашего хоста (BIOS или UEFI).

Теперь устанавливаем необходимые пакеты:

  1. qemu-kvm — это виртуализатор с открытым исходным кодом, обеспечивающий аппаратную эмуляцию гипервизора KVM, тогда как qemu-img предоставляет инструмент командной строки для управления образами дисков.
  2. libvirt включает инструменты для взаимодействия с возможностями виртуализации операционной системы.
  3. libvirt-python содержит модуль, который позволяет приложениям, написанным на Python, использовать интерфейс, предоставляемый libvirt.
  4. libguestfs-tools: различные инструменты командной строки системного администратора для виртуальных машин.
  5. virt-install: другие утилиты командной строки для администрирования виртуальных машин.

yum update && yum install qemu-kvm qemu-img libvirt libvirt-python libguestfs-tools virt-install

После завершения установки обязательно запустите и включите службу libvirtd:


systemctl start libvirtd.service
systemctl enable libvirtd.service

По умолчанию каждая виртуальная машина сможет взаимодействовать только с остальными на том же физическом сервере и с самим хостом. Чтобы гости могли получить доступ к другим машинам внутри нашей локальной сети, а также к Интернету, нам нужно настроить мостовой интерфейс на нашем хосте (например, br0) следующим образом:

1. добавление следующей строки в нашу основную конфигурацию сетевого адаптера (скорее всего, /etc/sysconfig/network-scripts/ifcfg-enp0s3):


BRIDGE=br0

2. создание файла конфигурации для br0 (/etc/sysconfig/network-scripts/ifcfg-br0) с таким содержимым (обратите внимание, что вы возможно, придется изменить IP-адрес, адрес шлюза и информацию DNS):


DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.0.18
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
NM_CONTROLLED=no
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=br0
ONBOOT=yes
DNS1=8.8.8.8
DNS2=8.8.4.4

3. наконец, включив пересылку пакетов, создав в /etc/sysctl.conf:


net.ipv4.ip_forward = 1

и загрузим изменения в текущую конфигурацию ядра:


sysctl -p

Обратите внимание, что вам также может потребоваться указать firewalld, что этот тип трафика следует разрешить. Помните, что вы можете обратиться к статье по этой теме в той же серии (Часть 11: Управление сетевым трафиком с помощью FirewallD и Iptables), если вам нужна помощь в этом.