Виртуализация: виртуальные сети и установка гостей
Обзор
В этом документе описаны действия по созданию виртуальных сетей (public1, private1) в Virtual Machine Manager, подготовке kickstart-файлов для автоматизированной установки (node01/node02), генерации MAC-адресов и запуску установки гостевых систем через virt-install. Инструкции даются для пользователя с правами root на хосте с Xen/Libvirt.
Важно: не оставляйте окно virt-manager открытым без надобности — оно потребляет много памяти; при проблемах перезапустите Xen.
Содержание
- Виртуальные сети — создание через virt-manager
- Kickstart-файлы для node01 и node02
- Генерация MAC-адресов (macgen.py)
- Установка гостевых систем через virt-install
- Чек-листы, критерии приёмки и шпаргалка команд
Виртуальные сети
Запустите virt-manager от root:
virt-manager
Откроется окно Virtual Machine Manager. Вы увидите Domain-0 и ресурсы, которые он использует.
Создание виртуальной сети
- В меню выберите «Редактировать (Edit)», затем «Сведения о хосте (Host details)».
- В окне Host Details слева появится только «default». Нажмите «Add» (Добавить).
- Откроется окно «Create a new virtual network» — нажмите «Forward» (Далее).
- Введите имя сети public1 и нажмите «Forward».
- Укажите сеть: 192.168.222.0/24 и нажмите «Forward».
- Диапазон DHCP: Start: 192.168.222.128 End: 192.168.222.254 — нажмите «Forward».
- Выберите «Isolated virtual network» — нажмите «Forward».
- Подтвердите сводку и нажмите «Finish».
Сводка будет выглядеть примерно так:
- Network Name: public1
- IPV4 network:
- Network: 192.168.222.0/24
- Gateway: 192.168.222.1
- Netmask: 255.255.255.0
- DHCP:
- Start address: 192.168.222.128
- End address: 192.168.222.254
- Forwarding:
- Connectivity: Isolated virtual network
Повторите те же шаги для сети private1 с параметрами:
- Network Name: private1
- Network: 192.168.100.0/24
- Gateway: 192.168.100.1
- Netmask: 255.255.255.0
- DHCP Start: 192.168.100.128
- DHCP End: 192.168.100.254
- Connectivity: Isolated virtual network
Когда закончите, в окне Host Details выберите File > Close, затем File > Quit, чтобы выйти.
Важно: оставлять virt-manager открытым не рекомендуется — он может занять много памяти.
После создания сетей интерфейсы vnet0 и vnet1 будут видны в выводе ifconfig:
ifconfig
Пример вывода:
vnet0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.222.1 Bcast:192.168.222.255 Mask:255.255.255.0
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:7782 (7.5 KiB)
vnet1 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.100.1 Bcast:192.168.100.255 Mask:255.255.255.0
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:7712 (7.5 KiB)
Kickstart-файлы
Ниже представлен kickstart-файл для node01, который можно скопировать и адаптировать для node02 — измените IP-адреса и hostname там, где указано.
node01 (node01_ks.cfg)
#START of node01_ks.cfg
install
text
reboot
#uncomment the line you want to use
# for nfs
nfs --server=192.168.222.1 --dir=/var/ftp/pub/centos5u1
##url --url ftp://:@/
# this will be an anonymous ftp access
#url --url ftp://192.168.222.1/pub/centos5u1/i386
#key --skip
lang en_US.UTF-8
keyboard us
skipx
# private
network --device eth1 --bootproto static --ip 192.168.100.10 --netmask 255.255.255.0
# public - disabled on initial install
network --device eth0 --bootproto static --ip 192.168.222.10 --netmask 255.255.255.0 --gateway 192.168.222.1 --nameserver 192.168.222.1 --hostname node01.example.com
## password is n0de01pass
rootpw --iscrypted $1$Lqk1Y$Y8TIWCMLiiPjVt1GjRS0F1
## password is n0de02pass
#rootpw --iscrypted $1$Rn47b$DDwgrOv3IFGf3HVhsxv9X0
firewall --disabled
authconfig --enableshadow --enablemd5
selinux --disabled
timezone --utc Asia/Singapore
services --disabled ipsec,iptables,bluetooth,hplip,firstboot,cups,sendmail,xfs
bootloader --location=mbr --driveorder=xvda,xvdb --append="rhgb quiet"
clearpart --all --initlabel --drives=xvda
part /boot --fstype ext3 --size=100 --ondisk=xvda
part pv.2 --size=0 --grow --ondisk=xvda
volgroup VolGroup00 --pesize=32768 pv.2
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1000 --grow --maxsize=1984
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
%packages
@development-libs
@system-tools
@gnome-software-development
@text-internet
@x-software-development
@dns-server
@core
@authoring-and-publishing
@base
@ftp-server
@network-server
@legacy-software-development
@java
@legacy-software-support
@smb-server
@base-x
@web-server
@printing
@server-cfg
@sql-server
@admin-tools
@development-tools
emacs
lsscsi
gnutls-utils
hwbrowser
audit
iptraf
mesa-libGLU-devel
kexec-tools
device-mapper-multipath
vnc-server
xorg-x11-utils
xorg-x11-server-Xnest
xorg-x11-server-Xvfb
imake
iscsi-initiator-utils
ypserv
-sysreport
%post
cat <> /etc/hosts
# private or replace with nodeXY-
192.168.100.10 node01-priv
192.168.100.20 node02-priv
192.168.100.1 node00-priv
#public or replace with nodeXY
192.168.222.10 node01
192.168.222.20 node02
192.168.222.1 node00
EOT
# yum local repo
mv /etc/yum.repos.d/*.repo /tmp
cat > /etc/yum.repos.d/centos5.repo << EOF
[centos5-Server]
name=CEntos5 Server
baseurl=http://node00/centos5u1/i386
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
EOF
#change default runlevel
ed /etc/inittab << EOF
,s/id:5:initdefault:/id:3:initdefault:/g
.
w
EOF
# vncserver stuff
cat << EOT > /opt/vnc_xstartup
#!/bin/sh
# run vncserver and copy to your $HOME/.vnc/xstartup file
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 130x30+12+12 -ls -bg black -fg green -title "$VNCDESKTOP Desktop" &
mwm &
EOT
# END of nod01_ks.cfg
node02
Скопируйте node01_ks.cfg в node02_ks.cfg и изменитеые записи для node02 (hostname и IP-адреса).
Установка гостевых систем (node01 и node02)
Установку запускают из командной строки с помощью virt-install.
Генерация MAC-адресов
Для генерации MAC-адресов можно использовать скрипт macgen.py из руководства Red Hat:
#!/usr/bin/python
# macgen.py script to generate a MAC address for Red Hat Virtualization guests
import random
#
def randomMAC():
mac = [ 0x00, 0x16, 0x3e,
random.randint(0x00, 0x7f),
random.randint(0x00, 0xff),
random.randint(0x00, 0xff) ]
return ':'.join(map(lambda x: "%02x" % x, mac))
#
print randomMAC()
# careful with the indention
# this is from the Virtualization guide from redhat.com
# http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.2/html/Virtualization/index.html
Пример использования для node01:
node01 NICs
# for eth0 . public1
[root@node00 ~]# ./macgen.py
00:16:3e:33:32:07
# for eth1 . private1
[root@ node00 ~]# ./macgen.py
00:16:3e:55:6b:83
Сгенерируйте аналогично для node02.
Команда virt-install для node01
virt-install -p -n node01 -r 768 -f /dev/Virtual00VG/lvNODE01 -m 00:16:3e:33:32:07 \
-w network:public1 -m 00:16:3e:55:6b:83 -w network:private1 \
-l nfs:192.168.222.1:/var/ftp/pub/centos5u1/i386 \
-x "ksdevice=eth0 ks=http://192.168.222.1/centos5u1/node01_ks.cfg" --vnc
Параметры (кратко):
- -n node01 — имя гостя
- -r 768 — оперативная память в МБ
- -f /dev/Virtual00VG/lvNODE01 — диск гостя (может быть раздел/логический том)
- -m
— MAC-адрес для интерфейса - -w network:public1 — сеть для интерфейса eth0
- -w network:private1 — сеть для интерфейса eth1
- -l nfs:… — источник установки
- -x “ksdevice=eth0 ks=…” — kickstart-параметры
- –vnc — открытие VNC-консоли для просмотра установки
Команда virt-install для node02
virt-install -p -n node02 -r 768 -f /dev/Virtual00VG/lvNODE02 -m 00:16:3e:1e:05:b6 \
-w network:public1 -m 00:16:3e:40:3d:b0 -w network:private1 \
-l nfs:192.168.222.1:/var/ftp/pub/centos5u1/i386 \
-x "ksdevice=eth0 ks=http://192.168.222.1/centos5u1/node02_ks.cfg" --vnc
Совет: запуск virt-install внутри VNC-сессии хоста позволяет автоматически видеть экраны установки. Если запуск на консоли хоста, установка будет проходить в фоне; открыть экраны можно через virt-manager и подключение к созданным гостям.
Когда этот подход не подходит
- Если требуется внешняя маршрутизация между сетями — «Isolated virtual network» не подходит.
- Для высокопроизводительных сетевых нагрузок лучше использовать SR-IOV или мостовые сетевые драйверы.
- Если хост использует другой гипервизор (KVM без libvirt, VMware, Hyper-V), команды и интерфейсы отличаются.
Альтернативные подходы
- Использовать сетевые мосты (bridge) для прямого доступа к физической сети.
- Использовать Open vSwitch для более гибкой виртуальной сети и VLAN.
- Развернуть отдельный DHCP/DNS сервер на узле управления вместо DHCP внутри виртуальной сети.
Чек-лист ролей
Администратор хоста:
- Проверить наличие свободного дискового пространства и LVM-томов.
- Создать виртуальные сети через virt-manager.
- Настроить NFS/FTP-репозиторий с инсталляционными файлами.
Инженер установки:
- Подготовить kickstart-файлы для каждой машины.
- Сгенерировать MAC-адреса и зафиксировать их в документации.
- Запустить virt-install и проверить VNC-консоль установки.
Оператор после установки:
- Убедиться, что сетевые интерфейсы настроены и доступны.
- Проверить /etc/hosts и локальный yum-репозиторий.
Критерии приёмки
- Виртуальные интерфейсы vnet0 и vnet1 присутствуют и имеют адреса 192.168.222.1 и 192.168.100.1 соответственно.
- Гость загружается после установки и отвечает по SSH (если включён).
- IP-адреса гостей соответствуют указанным в kickstart-файле.
- NFS/FTP-источник установки доступен с гостя.
Шпаргалка команд
- Запуск GUI менеджера: virt-manager
- Проверить интерфейсы: ifconfig или ip addr show
- Генерация MAC: ./macgen.py
- Запуск установки: virt-install [параметры]
Мини-методология (быстрая последовательность действий)
- Подготовить NFS/FTP с образом и kickstart.
- Создать виртуальные сети в virt-manager (public1, private1).
- Сгенерировать MAC-адреса и зафиксировать.
- Запустить virt-install с указанием ks и MAC.
- Проверить доступность гостя и выполнить post-install проверки.
Ключевые числа
- Диапазоны DHCP: 192.168.222.128–254 и 192.168.100.128–254
- Сеть: /24 (маска 255.255.255.0)
- Стартовая память для гостя в примерах: 768 МБ
- Префикс MAC из примера: 00:16:3e
Глоссарий — 1 строка
- kickstart — файл автоматической установки для RHEL/CentOS.
- virt-install — утилита командной строки для создания и установки виртуальных машин.
- virt-manager — графическая оболочка для управления виртуальными машинами.
Короткое резюме
- Настройте два изолированных виртуальных сегмента (public1, private1).
- Подготовьте kickstart и источник установки, сгенерируйте MAC-адреса.
- Запустите virt-install с параметрами и проверьте соответствие конфигурации.
Важно: проверяйте конфигурацию сетей и kickstart-файлов в тестовой среде перед массовым развертыванием.
Похожие материалы

Сохранить парковку в Google Maps вручную

Prime Video не работает на iPhone — как исправить

Криптоарбитраж: стратегия, боты и практический план
Стать инфлюенсером в Великобритании через Instagram
