Установка Centos7
Установка Firewalld
Отключаем iptables
systemctl stop iptables
Убераем с автозагрузки
systemctl mask iptables
Проверяем состояние
systemctl status iptables
Устанавливаем firewalld с конфигом по умолчанию
yum install firewalld firewall-config -y
Запускаем
systemctl start firewalld
Проверяем состояние
systemctl status firewalld
Добавляем в автозагрузку
systemctl enable firewalld
Добавляем ssh
firewall-cmd --permanent --add-service=ssh
Проверяем
firewall-cmd --list-all
ИМЯ КОМПЬЮТЕРА
$ echo $HOSTNAME
Чтобы его изменить вам нужно отредактировать файл /etc/hostname и заменить там старое имя на новое. Прописываем имя этого сервера в /etc/sysconfig/network и /etc/hostname:
$ vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hostname
$ vi /etc/hostname
hostname.domain.com
Перезапускаем сетевую подсистему:
$ systemctl restart network
НАСТРОЙКА ЛОКАЛИ
$ localectl set-locale LANG=ru_RU.UTF-8
Для синхронизации времени используется chronyd
systemctl start chronyd
systemctl enable chronyd
systemctl status chronyd
Настройка истории команда в bash_history
vim /root/.bashrc
Добавляем строки
export HISTSIZE=10000
export HISTTIMEFORMAT="%h/%d/%y - %H:%M:%S "
PROMPT_COMMAND='history -a' #сохранять команду в историю сразу после выполнения.
export HISTIGNORE="ls:ll:history:w" #список команд которые не писать в историю.
Применяем настройку
source ~/.bashrc
СОЗДАЙТЕ ПОЛЬЗОВАТЕЛЯ
$ useradd имя_пользователя
$ passwd user
Затем добавьте пользователя в группу wheel, чтобы разрешать пользователю работать от имени администратора:
$ usermod -G wheel имя_пользователя
Теперь осталось подправить настройки sudo, для этого добавьте такую строчку, если ее там еще нет:
$ visudo
%wheel ALL = (ALL) ALL
Устанавливаем таймзону
$ timedatectl set-timezone Europe/Kiev
Настройка SSH-сервера
$ sudo vi /etc/ssh/sshd_config
Protocol 2 #удаляем строчку Protocol 2,1. Ставим Protocol 2
Address Family inet #использовать только 4-ю версию IP протокола
Port 22 # слушать порт
PermitRootLogin no # запретить логин пользователю root
AllowUsers <name> #разрешим логин только пользователю <name>
MaxStartups 3:30:9 # количество неавторизованных подключений
# ssh-copy-id root@server_ip — копируем на сервер свой ключь
Настройка репозитариев
Для инсталляции различного софта необходимо подключить репозитории в CentOS. Наиболее популярные это EPEL и rpmforge
$ sudo yum repolist all - состояние репозитариев
$ sudo yum --enablerepo="base" -y install yum-utils - устанавливаем пакет yum-config-manager
$ sudo yum-config-manager --enable centosplus - подключаем репозитарии (enable)
EPEL – репозиторий с дополнительными пакетами для Enterprise Linux
# yum install epel-release REMI - хранилище yum репозиториев который поддерживается – Реми Колле.
# wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm# rpm -Uvh remi-release-7.rpm
Обновление пакетов
$ sudo yum list updates - список пакетов для обновления
$ sudo yum update && sudo yum upgrade - обновление пакетов
Отключаем SELinux
$ vi /etc/sysconfig/selinux
меняем значениеSELINUX=disabledЧтобы изменения вступили в силу, перезагружаемся:
# reboot
Установка ПО
Ставим vim
$ sudo yum -y install vim net-tools wget iftop lsof wget bzip2 traceroute gdisk mc screen nano bind-utils curl htop
Включаем подсветку синтаксиса для mc
# cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax
Настройка истории команд
Список последних выполненных команд хранится в домашней директории пользователя в файле .bash_history, там же находится настройка в .bashrc.
# history — посмотреть список последних команд
# history | grep yum — фильтрация запуска комманды yum
Правим файл .bashrc. Добавляем в него следующие строки:
$ sudo vim /home/root/.bashrc
export HISTSIZE=10000 #Увеличиваем размер файла до 10000 строк.
export HISTTIMEFORMAT="%h %d %H:%M:%S " #сохранять дату и время выполнения команды.
PROMPT_COMMAND='history -a' #сохранять команду в историю сразу после выполнения.
export HISTIGNORE="ls:ll:history:w" #список команд которые не писать в историю.
Применяем изменения:
# source ~/.bashrc
Установка fail2ban, в связке с firewalld
# Для начала установим следующие пакеты
yum -y install ipset systemd-python
# Теперь нам нужно установить сам fail2ban, но при этом укажем
# из какого именно репозитория мы его будем устанавливать
# уточню также, что вместе с ним установятся также и зависимые утилиты,
# такие как: fail2ban-firewalld, fail2ban-sendmail, fail2ban-server
yum --disablerepo=* --enablerepo=epel -y install fail2ban fail2ban-systemd
# запустим утилиту и активируем при запуске системы
systemctl start fail2ban
systemctl status fail2ban
Создадим файл sshd.local в директории /etc/fail2ban/jail.d
Настраиваем
vim /etc/fail2ban/jail.local
[DEFAULT]
#ignoreip = 192.168.1.1/24
bantime = 21600
findtime = 300
maxretry = 3
banaction = iptables-multiport
backend = systemd
[sshd]
enabled = true
Запускаем
systemctl start fail2ban
systemctl enable fail2ban
systemctl status fail2ban
Мониторим
fail2ban-client status
Мониторим по сервису
fail2ban-client status sshd
Убрать клиента с бана
fail2ban-client unban 192.168.56.1
Маны
man jail.conf
man fail2ban-client
Итак, вроде бы всё, смотрим пишется ли что-то в логи fail2ban
tail -f /var/log/fail2ban.log
systemctl restart fail2ban
Отправка сообщений
Почта адресованная локальному root по умолчанию складывается в файл /var/spool/mail/root. Отправляем ее через внешний почтовый сервер на свой ящик.
Ставим необходимые пакеты:
# yum install mailx cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain
Дописуем конфиг postfix.
$ vim /etc/postfix/main.cf
## DEFAULT CONFIG END ##
# Имя сервера, которое выводит команда hostname
myhostname = centos7-test.xs.local
# Здесь по логике нужно оставлять только домен, но в данном случае лучше оставить полное имя сервера, чтобы в поле отправитель фигурировало полное имя сервера, так удобнее разбирать служебные сообщения
mydomain = centos7-test.xs.local
mydestination = $myhostname
myorigin = $mydomain
# Адрес сервера, через который будем отправлять почту
relayhost = mailsrv.mymail.ru:25
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = may
Создаем файл с информацией об имени пользователя и пароле для авторизации.
# vim /etc/postfix/sasl_passwd
mailsrv.mymail.ru:25 admin@mymail.ru:password
Создаем db файл.
# postmap /etc/postfix/sasl_passwd
Теперь можно перезапустить postfix и проверить работу.
# systemctl restart postfix
К стандартному алиасу для root в /etc/aliases, добавьте внешний адрес, куда будет дублироваться почта, адресованная root. Для этого редактируем указанный файл, изменяя последнюю строку.
Было:
#root: marc
Стало
root: root,admin@mymail.ru
Обновляем базу сертификатов:
# newaliases
Отправим письмо через консоль локальному руту:
# df -h | mail -s "Disk usage" root
Письмо должно уйти на внешний ящик. На этом настройка локальной почты закончена.
Для WEB
Ставим браузер links
# yum install links
Настройка дисков, добавление RAID
Смотрим диски
fdisk -l
нас интерисуют /dev/md* это raid массивы, входим
fdisk /dev/md124
Команда (m для справки): p — смотрим таблицу разделов
Disk /dev/md124: 1000.2 GB, 1000202043392 bytes, 1953519616 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xb46d8d3d
Устр-во Загр Начало Конец Блоки Id Система
Команда (m для справки): n — создадим новый раздел
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p — первичный раздел
Номер раздела (1-4, default 1): 1 - выбираем свободный
Первый sector (2048-1953519615, по умолчанию 2048):
Используется значение по умолчанию 2048
Last sector, +sectors or +size{K,M,G} (2048-1953519615, по умолчанию 1953519615): +500G
Partition 1 of type Linux and of size 500 GiB is set - отрезаем сколько нужно или все по умолчанию
Команда (m для справки): t - изменить системный идентификатор раздела
Selected partition 1
Hex code (type L to list all codes): 8e — выбираем тип Linux LVM
Changed type of partition 'Linux' to 'Linux LVM'
Команда (m для справки): w — записываем
Создание ключа
dd if=/dev/urandom of=/root/secret.key bs=1024 count=2
chmod 0400 /root/secret.key
Установка программу для шифрования
apt-get install cryptsetup
Пока все
reboot
Создаем lvn vgcreate {имя lvn} {полный путь к устройству}
vgcreate hdd0 /dev/md124p1
pvs
lvcreate -L249,9G -nTest1 hdd0
lvcreate -L250G -nTest2 hdd0
Шифрование диска при помощи файла-ключа
Создайте LUKS-раздел с использованием созданного ключа:
Появится предупреждение об уничтожении данных, большими буквами введите YES:
cryptsetup luksFormat /dev/hdd1/dinay /mnt/key/kvm-8.3/dinay.key
Свяжите ключ с разделом, что позже позволит его авторизовать раздел и скрыть подсказку пароля:
cryptsetup luksAddKey /dev/hdd1 /root/dinay.key --key-file=/root/dinay.key
Прежде чем начать использовать LUKS-раздел, его необходимо правильно отобразить и отформатировать. Для этого сначала используется опция luksOpen, которая создает устройство ввода-вывода, позволяющее взаимодействовать с разделом:
cryptsetup -d /mnt/key/kvm-8.3/dinay.key luksOpen /dev/hdd1/dinay dinaynew
Просмотр зашифрованного раздела в mapper
ls /dev/mapper/ | grep dinay
Автозапуск скрипта в CentOS 7 с помощью systemd
Создаем скрипт для монтирования и расшифровки раздела и вставляем код:
vim /root/scrypts/crypt.sh
### BEGIN INIT INFO
# Provides: defaultdaemon
# Required-Start: $remote_fs $syslog $network $time
# Required-Stop: $remote_fs $syslog $network
# Default-Start: 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
#!/bin/sh
mount //NAS-SERV/patch_key -o username=admin,password=MY_PASSWORD /mnt
cryptsetup -d /mnt/key/kvm-8.3/dinay.key luksOpen /dev/hdd1/dinay dinaynew
cryptsetup -d /mnt/key/kvm-8.3/buhta.key luksOpen /dev/ssd0/buhta buhtanew
cryptsetup -d /mnt/key/kvm-8.3/1c.key luksOpen /dev/ssd0/1c 1cnew
virsh start Dinay
umount /mnt
Создаем файл нашей службы:
touch /etc/systemd/system/crypt-settings.service
chmod 664 /etc/systemd/system/crypt-settings.service
с таким содержимым:
[Unit]
Description=Crypt Settings Service
After=network.target
[Service]
Type=oneshot
User=root
ExecStart=/root/crypt.sh
[Install]
WantedBy=multi-user.target
Проверяем:
systemctl start crypt-settings
Если после выполнения скрипта мы увидели ожидаемый результат, то разрешим этот "сервис" для автозапуска:
systemctl enable crypt-settings
Пробуем перезагрузиться. Должно работать.
Посмотрим, когда наша служба была запущена:
systemctl status crypt-settings
В выводе мы увидим, какую команду, когда выполнили и другие подробности.
Установка и настройка KVM
Подготовка сервера
Проверяем наличие поддержки со стороны процессора:
# cat /proc/cpuinfo | egrep "(vmx|svm)"
Если команда ничего не вернет, на сервере отсутствует поддержка виртуализации или она отключена в настройках БИОС.
Создадим каталоги, в которых будем хранить все, что касается виртуализации:
* каталог /kvm/images для виртуальных дисков; /kvm/iso — для iso-образов.
# mkdir -p /home//kvm/{images,iso}
Установка и запуск
Установка выполняется из репозитория следующей командой:
# yum install qemu-kvm libvirt virt-install
* где qemu-kvm — сам гипервизор; libvirt — библиотека управления виртуализацией; virt-install — утилита для управления виртуальными машинами.
Разрешаем автозапуск:
# systemctl enable libvirtd
Запускаем KVM:
# systemctl start libvirtd
Драйвера Windows Virtio
Добавляем репозиторий
wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
У
станавливаем пакет для win:
yum install virtio-win
ls /usr/share/virtio-win/*.iso
/usr/share/virtio-win/virtio-win-0.1.141.iso /usr/share/virtio-win/virtio-win.iso
Обновляем:
# sudo yum --enablerepo=virtio-win-latest update virtio-win
Содержание RPM:
- /usr/share/virtio-win/*.iso: компакт-диск ISO, содержащий все драйверы. Подробности смотрите ниже
- /usr/share/virtio-win/*.vfd: образы дискет VFD для использования во время установки Windows XP
- / usr / share / virtio-win / drivers: копия содержимого извлеченного драйвера VFD
- /usr/share/guest-agent/*.msi: Установщики гостевого агента QEMU 32- и 64-разрядные MSI
Содержание ISO:
- NetKVM /: сетевой драйвер Virtio
- viostor /: Virtio Block driver
- vioscsi /: драйвер Virtio SCSI
- viorng /: Водитель Virtio RNG
- vioser /: серийный драйвер Virtio
- Balloon /: Водитель воздушного шара Virtio Memory
- qxl /: графический драйвер QXL для Windows 7 и более ранних версий. (сборка virtio-win-0.1.103-1 и новее)
- qxldod /: графический драйвер QXL для Windows 8 и более поздних версий. (сборка virtio-win-0.1.103-2 и новее)
- pvpanic /: драйвер устройства QEMU pvpanic (сборка virtio-win-0.1.103-2 и новее)
- guest-agent /: QEMU Guest Agent 32-битные и 64-битные установщики MSI
- qemupciserial /: QEMU PCI драйвер последовательного устройства
- * .vfd: образы дискет VFD для использования во время установки Windows XP
Загрузка ISO с драйверами Windows:
Настройка сети
В данной инструкции рассмотрим использование сетевого моста.
Настраивая сетевой мост через удаленное подключение, внимательно проверяйте вводимые данные. В случае ошибки соединение будет прервано.
Устанавливаем пакет для работы с bridge:
# yum install bridge-utils
Смотрим список сетевых интерфейсов и их настроек:
# ip a
Редактируем настройки реального адаптера:
# vim /etc/sysconfig/network-scripts/ifcfg-enp4s0f0
Приводим его к виду:
ONBOOT=yesBRIDGE=br0TYPE=EthernetDEVICE=enp4s0f0BOOTPROTO=none
Создаем интерфейс для сетевого моста:
# vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0TYPE=BridgeONBOOT=yesBOOTPROTO=staticIPADDR=192.168.1.24NETMASK=255.255.255.0GATEWAY=192.168.1.1DNS1=8.8.8.8DNS2=77.88.8.8
Перезапускаем сетевую службу:
# systemctl restart network
Настаиваем перенаправления сетевого трафика:
# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
Применяем настройки:
# sysctl -p /etc/sysctl.conf
Перезапускаем libvirtd:
# systemctl restart libvirtd
Создание виртуальной машины
Смотрим доступные варианты гостевых операционных систем:
# osinfo-query os
Загружаем iso образ OC в /home//kvm/iso
# wget -P /home//kvm/iso http://centos.ip-connect.vn.ua/7.5.1804/isos/x86_64/CentOS-7-x86_64-Minimal-1804.iso
Для создания первой виртуальной img машины вводим следующую команду:
# virt-install -n FirstTest \--noautoconsole \--network=bridge:br0 \--ram 2048 --arch=x86_64 \--vcpus=2 --cpu host --check-cpu \--disk path=/home/kvm/images/FirstTest.img,size=100 \--cdrom /home//kvm/iso/CentOS-7-x86_64-Minimal-1804.iso \--graphics vnc,listen=0.0.0.0,password=my_password \--os-type linux --os-variant=rhel7 --boot cdrom,hd,menu=on
* где:*
FirstTest — имя создаваемой машины;
-
noautoconsole — после создания не подключается автоматически к консоли виртуальной машины;
-
network — тип сети (в нашем примере сетевой мост);
-
ram — объем оперативной памяти, который будет выделен;
-
vcpus — количество виртуальных процессоров;
-
disk — виртуальный диск: path — путь до диска; size — его объем;
-
cdrom — виртуальный привод с образом системы;
-
graphics — параметры подключения к виртуальной машины с помощью графической консоли (в данном примере используем vnc); listen — на какой адресе принимает запросы vnc (в нашем примере на всех); password — пароль для подключения при помощи vnc;
-
os-variant — гостевая операционная система (весь список мы получали командой virt-install --os-variant list, в данном примере устанавливаем Reв Hat 7 / CentOS 7).
Разрешаем автостарт для созданной ВМ:
# virsh autostart FirstTest
Для создания виртуальной lvm windows на зашифрованном разделе машины вводим следующую команду:
# virt-install -n Dinay \--noautoconsole \--network=bridge:br0 \--ram 2048 --arch=x86_64 \--vcpus=2 --cpu host --check-cpu \--disk path=/dev/mapper/dinaynew,size=100 \--cdrom /home/kvm/iso/in2008r2sp1.iso \--graphics vnc,listen=0.0.0.0,password=my_password \--os-type windows --os-variant=win2k3r2 --boot cdrom,hd,menu=on
Разрешаем автостарт для созданной ВМ:
# virsh autostart Dinay
Подключение к виртуальной машине
Для дальнейшей установки операционной системы скачиваем VNC-клиент на компьютер администратора, например, TightVNC и устанавливаем его.
На сервере смотрим, на каком порту слушает VNC созданной машины:
# virsh vncdisplay FirstTest
в моем случае было:
:0
Это значит, что нужно к 5900 прибавить 0. Если результат команды будет :1 — 5900 + 1 = 5901 и так далее.
Открываем порт на брандмауэре:
# firewall-cmd --permanent --add-port=5900-5905/tcp
* в данном примере добавлено сразу 6 tcp-портов от 5900 до 5905.
Запускаем установленный TightVNC Viewer, в открывшемся окне вводим IP-адрес сервера KVM и порт, на котором слушает наша ВМ (в данном примере, 5900):

Нажимаем Connect. Программа запросит пароль — вводим тот, что указали при создании ВМ, (в данном примере, my_password). Мы подключимся к виртуальной машине, как будто, к ней подключен монитор или удаленная консоль KVM.
Базовые команды управления ВМ
Конфиги ВМ находятся здесь /etc/libvirt/qemu/
К примеру, можно указать статический порт vnc для конкретной ВМ, чтобы всегда подключаться к нужному порту
<graphics type='vnc' port='5914' autoport='no' listen='0.0.0.0' passwd='some.password.here'>
<listen type='address' address='0.0.0.0'/>
</graphics>
Теперь у этой ВМ порт vnc будет — 5914. Не забудьте перезагрузить libvirtd для применения изменений. Саму ВМ тоже следует перезагрузить. Поэтому изменяйте конфигурационный файл ВМ пока она выключена, далее выполняйте service libvirtd reload, затем стартуйте ВМ.
Получить список созданных машин:
# virsh list --all
Включить виртуальную машину:
# virsh start FirstTest
* где FirstTest — имя созданной машины.
Выключить:
# virsh shutdown FirstTest
Управление виртуальными машинами с помощью virsh
Утилита virsh пакета программ libvirt предназначена для управления системами виртуализации (KVM, XEN, VmWare, OpenVZ, LXC) из командной строки и служит альтернативой графическому менеджеру виртуальных машин virt-manager.
Обычные пользователи могут работать только в режиме просмотра.
virsh с одной стороны может запускать командную оболочку аналогичную bash, с другой стороны, может управлять виртуальными машинами прямо из командной строки.
Для запуска командной оболочки нужно просто ввести имя команды и нажать <Enter>:
virsh
# <команда>
...
# <команда>
...
# quit
Для использования в качестве команды управления виртуальными машинами используется следующий синтаксис:
virsh <команда> <опции>
== Подключение к удаленному гипервизору ==
virsh можно использовать как локально так и удаленно. Для подключения к удаленному гипервизору используется следующие форматы команды:
*
запуск удаленной командной оболочки:
virsh --connect <адрес_гипервизора>
*
удаленное выполнение команд:
virsh --connect <адрес_гипервизора> <команда> <опция>
== Обзор команд ==
Команды управления виртуальными машинами:
Команда |
Описание |
help |
Краткая справка. |
list |
Просмотр всех виртуальных машин. |
dumpxml |
Вывести файл конфигурации XML для заданной виртуальной машины. |
create |
Создать виртуальную машину из файла конфигурации XML и ее запуск. |
start |
Запустить неактивную виртуальную машину. |
destroy |
Принудительно остановить работу виртуальной машины. |
define |
Определяет файл конфигурации XML для заданной виртуальной машины. |
domid |
Просмотр идентификатора виртуальной машины. |
domuuid |
Просмотр UUID виртуальной машины. |
dominfo |
Просмотр сведений о виртуальной машине. |
domname |
Просмотр имени виртуальной машины. |
domstate |
Просмотр состояния виртуальной машины. |
quit |
Закрыть интерактивный терминал. |
reboot |
Перезагрузить виртуальную машину. |
restore |
Восстановить сохраненную в файле виртуальную машину. |
resume |
Возобновить работу приостановленной виртуальной машины. |
save |
Сохранить состояние виртуальной машины в файл. |
shutdown |
Корректно завершить работу виртуальной машины. |
suspend |
Приостановить работу виртуальной машины. |
undefine |
Удалить все файлы виртуальной машины. |
migrate |
Перенести виртуальную машину на другой узел. |
Команды управления ресурсами и гипервизором:
Команда |
Описание |
setmem |
Определяет размер выделенной виртуальной машине памяти. |
setmaxmem |
Ограничивает максимально доступный гипервизору объем памяти. |
setvcpus |
Изменяет число предоставленных гостю виртуальных процессоров. |
vcpuinfo |
Просмотр информации о виртуальных процессорах. |
vcpupin |
Настройка соответствий виртуальных процессоров. |
domblkstat |
Просмотр статистики блочных устройств для работающей виртуальной машины. |
domifstat |
Просмотр статистики сетевых интерфейсов для работающей виртуальной машины. |
attach-device |
Подключить определенное в XML-файле устройство к гостю. |
attach-disk |
Подключить новое дисковое устройство к гостю |
attach-interface |
Подключить новый сетевой интерфейс к гостю |
detach-device |
Отключить устройство от гостя (принимает те же определения XML, что и attach-device). |
detach-disk |
Отключить дисковое устройство от гостя. |
detach-interface |
Отключить сетевой интерфейс от гостя. |
Другие команды:
Команда |
Описание |
version |
Просмотр версии virsh. |
nodeinfo |
Просмотр информации о гипервизоре. |
Создание виртуальной машины
Файла конфигурации виртуальной машины
Для создания виртуальной машины необходим файл конфигурации в формате XML.
Пример файла конфигурации:
<domain type='xen' id='13'>
<name>r5b2-mySQL01</name>
<uuid>4a4c59a7ee3fc78196e4288f2862f011</uuid>
<bootloader>/usr/bin/pygrub</bootloader>
<os>
<type>linux</type>
<kernel>/var/lib/libvirt/vmlinuz.2dgnU_</kernel>
<initrd>/var/lib/libvirt/initrd.UQafMw</initrd>
<cmdline>ro root=/dev/VolGroup00/LogVol00 rhgb quiet</cmdline>
</os>
<memory>512000</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<interface type='bridge'>
<mac address='00:16:3e:49:1d:11'/>
<script path='vif-bridge'/>
</interface>
<graphics type='vnc' port='5900'/>
<console tty='/dev/pts/4'/>
</devices>
</domain>
Виртуальная машина создается командой:
virsh define <имя_файла_конфигурации>.xml
Примечание
Описание виртуальной машины становится доступно в virt-manager
Команда:
virsh create <имя_файла_конфигурации>.xml
создает и запускает виртуальную машину.
Примечание
После выключения описание виртуальной машины удаляется из virt-manager
Редактирование файла конфигурации
virsh edit <виртуальная_машина>
где <виртуальная_машина> - это имя виртуальной машины или ее идентификатор.
Откроется окно текстового редактора, заданного переменной оболочки $EDITOR (по умолчанию используется vi).
== Управление состоянием виртуальной машины ==
Приостановка виртуальной машины:
virsh suspend <виртуальная_машина>
Возобновление работы виртуальной машины:
virsh resume <виртуальная_машина>
Работа машины будет возобновлена немедленно. Параметры будут сохраняться между циклами suspend и resume.
Завершение работы виртуальной машины:
virsh shutdown <виртуальная_машина>
Поведение выключаемого гостя можно контролировать с помощью параметра on_shutdown в его файле конфигурации.
Перезагрузка виртуальной машины:
virsh reboot <виртуальная_машина>
Поведение перезагружаемого гостя можно контролировать с помощью параметра on_reboot в его файле конфигурации.
Принудительная остановка виртуальной машины:
virsh destroy <виртуальная_машина>
Определение идентификатора домена:
virsh domid <имя_машина>
Определение имени домена:
virsh domname {domain-id or domain-uuid}
Определение UUID:
virsh domuuid {domain-id or domain-name}
Пример вывода virsh domuuid:
# virsh domuuid r5b2-mySQL01
4a4c59a7-ee3f-c781-96e4-288f2862f011== Получение информации о виртуальной машине ==
Команда для получения информации:
virsh dominfo <имя_машина>
Пример вывода virsh dominfo:
# virsh dominfo r5b2-mySQL01
id: 13
name: r5b2-mysql01
uuid: 4a4c59a7-ee3f-c781-96e4-288f2862f011
os type: linux
state: blocked
cpu(s): 1
cpu time: 11.0s
max memory: 512000 kb
used memory: 512000 kb== Получение информации об узле ==
Команда получения информации об узле:
virsh nodeinfo
Пример вывода virsh nodeinfo:
# virsh nodeinfo
CPU model x86_64
CPU (s) 8
CPU frequency 2895 Mhz
CPU socket(s) 2
Core(s) per socket 2
Threads per core: 2
Numa cell(s) 1
Memory size: 1046528 kb
Вывод содержит информацию об узле и машинах, поддерживающих виртуализацию.
Просмотр списка виртуальных машин:
virsh list
Можно добавить аргументы:
--inactive покажет список неактивных доменов (неактивным считается тот домен, который был определен, но в настоящий момент не является активным).
--all покажет все виртуальные машины независимо от их состояния.
Пример:
# virsh list --all
Id Name State
----------------------------------
0 Domain-0 running
1 Domain202 paused
2 Domain010 inactive
3 Domain9600 crashed
Столбец «Status» может содержать следующие значения:
running |
работающие виртуальные машины, то есть те машины, которые используют ресурсы процессора в момент выполнения команды. |
blocked |
заблокированные, неработающие машины. Такой статус может быть вызван ожиданием ввода/вывода или пребыванием машины в спящем режиме. |
paused |
приостановленные домены. В это состояние они переходят, если администратор нажал кнопку паузы в окне менеджера виртуальных машин или выполнил команду xm pause или virsh suspend. В приостановленном состоянии гость продолжает потреблять ресурсы, но не может занимать больше процессорных ресурсов. |
shutdown |
виртуальные машины, завершающие свою работу. При получении виртуальной машиной сигнала завершения работы, она начнет завершать все процессы. Стоит отметить, что некоторые операционные системы не отвечают на такие сигналы. |
dying |
сбойные домены и домены, которые не смогли корректно завершить свою работу. |
crashed |
сбойные домены, работа которых была прервана. В этом состоянии домены находятся, если не была настроена их перезагрузка в случае сбоя. |
Получение информации о виртуальных процессорах
Команда получения информации о виртуальных процессорах:
virsh vcpuinfo {domain-id, domain-name or domain-uuid}
Пример вывода:
# virsh vcpuinfo r5b2-mySQL01
VCPU: 0
CPU: 0
State: blocked
CPU time: 0.0s
CPU Affinity: yy
Настройка соответствий виртуальных процессоров:
virsh vcpupin {domain-id, domain-name or domain-uuid} vcpu, список_cpu
где:
vcpu – номер виртуального процессора,
список_cpu — сопоставляемые ему физические процессоры.
Изменение числа виртуальных процессоров:
virsh setvcpus {domain-name, domain-id or domain-uuid} count
Примечание
Заданное число не может превышать значение, определенное при создании ВМ.
Изменение выделенного объема памяти:
virsh setmem {domain-id or domain-name} count
Объем памяти, определяемый заданным числом, должен быть указан в килобайтах.
Примечание
Объем не может превышать значение, определенное при создании ВМ, но в то же время не должен быть меньше 64 мегабайт.
Изменение максимального объема памяти может оказать влияние на функциональность только в том случае, если указанный размер меньше исходного.
Получение информации о блочных устройствах работающей виртуальной машины:
virsh domblkstat GuestName block-device
Получение информации о сетевых устройствах работающей виртуальной машины:
virsh domifstat GuestName interface-device
== Миграция виртуальных машин ==
virsh позволяет переносить виртуальные машины с одного узла на другой. Для выполнения живой миграции просто нужно указать параметр –live.
Команда переноса выглядит так:
virsh migrate --live GuestName DestinationURL
Параметр –live не является обязательным.
== Управление виртуальными сетями ==
В этой секции будет рассмотрены управляющие команды virsh. Например, команда просмотра списка виртуальных сетей выглядит так:
virsh net-list
Пример вывода этой команды:
# virsh net-list
Name State Autostart
-----------------------------------------
default active yes
vnet1 active yes
vnet2 active yes
Просмотр информации для заданной виртуальной сети:
virsh net-dumpxml NetworkName
Пример вывода этой команды (в формате XML):
# virsh net-dumpxml vnet1
<network>
<name>vnet1</name>
<uuid>98361b46-1581-acb7-1643-85a412626e70</uuid>
<forward dev='eth0'/>
<bridge name='vnet0' stp='on' forwardDelay='0' />
<ip address='192.168.100.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.100.128' end='192.168.100.254' />
</dhcp>
</ip>
</network>
Другие команды управления виртуальными сетями:
virsh net-autostart <имя_сети> |
перевести сеть в режим автоматической активизации при запуске сервиса libvirt |
virsh net-create <файл_XML> |
создание и запуск новой сети на основе существующего XML-файла |
virsh net-define <файл_XML> |
создание (без активизации) новой сети на основе файла конфигурации |
virsh net-destroy <имя_сети> |
деактивизация заданной сети |
virsh net-name <UUID_сети> |
определение имени сети по идентификатору |
virsh net-uuid <имя_сети> |
преобразование заданного имени в идентификатор UUID |
virsh net-start <имя_сети> |
активизация неактивной сети |
virsh net-undefine <имя_сети> |
удаление неактивной сети |
Для замены виртуальной сети ее нужно сначала удалить:
virsh net-destroy <имя_сети>
virsh net-undefine <имя_сети>
а затем определить заново:
virsh net-define <файл_XML>
virsh net-start <имя_сети>
net-autostart <имя_сети>=== Виртуальная сеть типа bridge ===
+--ethA
| ...
host ethY-----brY---ethN vm
| ...
+--ethX
Позволяет использовать IP-адрес из подсети host.
<network>
<name>host-bridge</name>
<forward mode="bridge"/>
<bridge name="br0"/>
</network>
Примечание
Сетевой мост br0 должен существовать.
Примечание
В VirtualBox не передает пакеты на host при использовании «Сетевого моста». NAT работает нормально.
=== Виртуальная сеть типа route ===
+--ethA
| ...
host ethY---virbrY---ethN vm
| ...
+--ethX
XML-файл:
<network>
<name>default</name>
<forward mode='route' dev='eth0' />
<bridge name='virbr0' />
<mac address='52:54:00:37:9B:28'/>
<domain name='example.com' />
<dns>
<host>
<hostname>vm00</hostname>
</host>
</dns>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<bootp file='pxelinux.0' />
<range start='192.168.122.100' end='192.168.122.254' />
<host mac='xx:xx:xx:xx' name='vm00' ip='192.168.122.10' />
</dhcp>
</ip>
</network>
Изменения в iptables:
*mangle
:PREROUTING ACCEPT [32:5042]
:INPUT ACCEPT [25:4454]
:FORWARD ACCEPT [12:2228]
:OUTPUT ACCEPT [22:2764]
:POSTROUTING ACCEPT [34:4992]
-A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
*filter
...
:OUTPUT ACCEPT [22:2764]
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
...
-A FORWARD -d 192.168.122.0/24 -i eth0 -o virbr0 -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -o eth0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
...
Примечание
Для доступа в интернет из контейнера необходимо добавить в таблицу nat правило:
-A POSTROUTING -s 192.168.122.0/24 -o eth0 -j SNAT --to-source 10.0.2.15
=== Виртуальная сеть типа nat ===
XML-файл:
<network>
<name>nat</name>
<forward mode='nat'>
<nat>
<port start='1024' end='65535' />
</nat>
</forward>
<bridge name='virbr0' />
<mac address='52:54:00:37:9B:29'/>
<ip address='192.168.123.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.123.100' end='192.168.123.254' />
</dhcp>
</ip>
</network>
Изменения в iptables:
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [6:432]
:POSTROUTING ACCEPT [6:432]
-A POSTROUTING -s 192.168.123.0/24 ! -d 192.168.123.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.123.0/24 ! -d 192.168.123.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.123.0/24 ! -d 192.168.123.0/24 -j MASQUERADE
COMMIT
*mangle
:PREROUTING ACCEPT [6:482]
:INPUT ACCEPT [6:482]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6:432]
:POSTROUTING ACCEPT [6:432]
-A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
*filter
...
:OUTPUT ACCEPT [6:432]
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
...
-A FORWARD -d 192.168.123.0/24 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.123.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable== Spice ==
Spice-сервер |
обеспечивает удаленный доступ к экрану и не только. Поддерживает виртуальную видеокарту QXL |
Spice-клиент |
реализует удаленный доступ |
Spice-агент |
автоматизирует настройку связи виртуальной и реальной машины, ставиться на виртуальной |
Источник: https://serveradmin.ru/ustanovka-i-nastroyka-zabbix-3-4-na-centos-7/ |