Суббота, 28.06.2025, 23:54
Приветствую Вас Гость | RSS
UBUNTOLOG
Главная | Каталог статей | Регистрация | Вход
Форма входа

Меню сайта
Категории раздела
Server [44]
WEB [14]
Все что связанно с web технологиями
Desktop [11]
Все что связанно с рабочей станцией
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Главная » Статьи » Server

    Настройка Centos7 + KVM

    Установка 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):

    1 kvm.jpg


    Нажимаем 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/
    Категория: Server | Добавил: Vyacheslav (29.07.2019)
    Просмотров: 546 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Имя *:
    Email *:
    Код *:
    Copyright VR © 2025
    Сделать бесплатный сайт с uCoz