Еще немного заметок по KVM/LibVirt

Оцените статью

Как я собственно и обещал продолжаем разбираться с Libvirt/KVM, но уже на более глубоком уровне.

Создаем сетевой мост при помощи NetPlan

Для интеграции виртуальных машин в локальную сеть организации будем использовать сетевой мост который в современных дистрибутивах Ubuntu создается при помощи NetPlan.

По умолчанию всему нашими настройками на десктопе управляет Network Manager.

# cat /etc/netplan/01-network-manager-all.yaml 
# This file was written by calamares.
# Let NetworkManager manage all devices on this system.
# For more information, see netplan(5).
network:
  version: 2
  renderer: NetworkManager

Перепишем таким образом, чтобы мы управляли параметрами сети вручную. И переключаемся с Network Manager на systemd-networkd.

# systemctl enable systemd-networkd

Конфигурация с мостом.

network:
  version: 2
  renderer: networkd
  ethernets:
    enp7s0:
      dhcp4: no
  bridges:
    vbridge-1:
      dhcp4: yes
      interfaces:
        - enp7s0

Проверяем корректность настроек.

# netplan try --config-file ./01-network-manager-all.yaml

После применения настроек у нас появляется сетевой мост.

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master vbridge-1 state UP group default qlen 1000
    link/ether a8:a1:59:06:37:e4 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::b0ea:88ec:dfac:cf82/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: vbridge-1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 1e:aa:4e:c7:43:dd brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.117/24 metric 100 brd 192.168.3.255 scope global dynamic vbridge-1
       valid_lft 572sec preferred_lft 572sec
    inet6 fe80::1caa:4eff:fec7:43dd/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

Отключаем Network Manager так как он нам больше не нужен.

# systemctl disable NetworkManager.service
# systemctl disable NetworkManager-wait-online.service
# systemctl stop NetworkManager.service
# systemctl stop NetworkManager-wait-online.service

Получаем список зарегистрированных сетей LibVirt при помощи утилиты virsh.

# virsh net-list --all

Смотрим XML-описание нашей сети default.

$ virsh net-dumpxml default
<network>
  <name>default</name>
  <uuid>f5e8be56-0747-48de-8c85-3d098c68347b</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:9a:f3:61'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

Как мы видим это и есть наша NAT-сеть. Создаем XML-описание сети типа мост bridge.xml.

<network>
    <name>main-bridge</name>
    <forward mode="bridge" />
    <bridge name="vbridge-1" />
</network>

Применяем описание сети, ставим на автостарт и запускаем.

$ virsh net-define ./bridge.xml
$ virsh net-start main-bridge
$ virsh net-autostart main-bridge

Основы работы с утилитой Virsh

Список всех виртуальных машин (включая отключенные).

# virsh list --all
 Id   Name                     State
-----------------------------------------
 -    srv-remoteapp-01         shut off
 -    srv-remoteapp-01-clone   shut off

Подробная информация о виртуальной машине.

# virsh dominfo srv-remoteapp-01-clone
Id:             -
Name:           srv-remoteapp-01-clone
UUID:           981248c6-7d00-4add-84a3-41cbd501b4f3
OS Type:        hvm
State:          shut off
CPU(s):         2
Max memory:     4194304 KiB
Used memory:    4194304 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: apparmor
Security DOI:   0

Старт-стоп-перезагрузка виртуальной машины.

# virsh start srv-remoteapp-01-clone
# virsh shutdown srv-remoteapp-01-clone
# virsh reboot srv-remoteapp-01-clone

Принудительная остановка (по питанию).

$ virsh destroy srv-remoteapp-01-clone

Подключение к виртуальной машине (отдельная утилита).

$ virt-viewer srv-remoteapp-01-clone
virt-viewer утилита для подключения к консоли гостевых VM

Установка флага автозапуска виртуальной машины при загрузке.

$ virsh autostart vadersrv-remoteapp-01-clone

Похожие записи

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

GlusterFS — это масштабируемая, распределённая файловая система с открытым исходным кодом, которая объединяет хранилища нескольких серверов в единое пространство имён. Она идеально подходит для создания отказоустойчивых и высокопроизводительных хранилищ, особенно…

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Запихать Mysql в Kubernetes оказалось не очень хорошей идеей и я решил основательно пересмотреть инфраструктуру своего pet-проекта и за основу будет принят кластер из трех серверов. На каждом узле кластера…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS