Настроим лучшую свободную систему виртуализации Proxmox VE на Raid1 в операционной системе Debian 8. В качестве гипервизора система использует KVM и LXC, что позволяет виртуализировать все популярные операционные системы. Браузерная панель управления.

Вступление

Вышла новая 5 версия Proxmox и о ней я написал новую статью. Принцип моего использования системой не поменялся. В новой статье вы узнаете некоторые нюансы c которыми я столкнулся при переходе на новую версию.
Подробнее..

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

Основными моими требованиями было:

  • Простота установки,
  • Удобное управление,
  • Установка разных систем OC (Linux, Windows и тд.),
  • Удобная система архивирования,
  • Информирование на почту об ошибках системы,
  • Подключение ИБП с отключение системы при пропадании 220 вольт,
  • Проброс портов USB в виртуальную систему.
Все виды не свободных систем управления виртуализацией или всё что связанно с Microsoft я отбросил в сторону и искал только свободный вариант. Единственная система которая устроила меня по всем параметрам это была система Proxmox.

Система Proxmox не поддерживает установку из коробки на mdadm для использования программного raid1, хотя есть система zfs. Может эта файловая система и хороша но мне она пока не нужна.

Система Proxmox базируется на OC Debian. У разработчика есть инструкция по установке системы, которую мы возьмем за основу.

Проверка аппаратной поддержки виртуализации

Проверка поддержки виртуализации в процессоре выполняется командой:

egrep '(vmx|svm)' /proc/cpuinfo
=вывод команды=
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx tm2 ssse3 cx16 xtpr pdcm dca lahf_lm tpr_shadow dtherm
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx tm2 ssse3 cx16 xtpr pdcm dca lahf_lm tpr_shadow dtherm
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx tm2 ssse3 cx16 xtpr pdcm dca lahf_lm tpr_shadow dtherm
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx tm2 ssse3 cx16 xtpr pdcm dca lahf_lm tpr_shadow dtherm

Если в выводе присутствует параметр svm (Secure Virtual Machines) — значит процессор с поддержкой аппаратной виртуализации от AMD, если vmx (Virtual Machine eXtension) — значит процессор Intel.

Если вывод пустой, то смотрите в bios на предмет включения виртуализации, в противном случае использовать Proxmox не получится.

Исходные параметры системы

  • proxmox — название машины
  • sevo44.loc — полное имя домена
  • 192.168.0.150 — ip системы с Proxmox
  • 192.168.0.106 — шлюз сети
  • 255.255.255.0 — маска сети
  • 2 жестких диска по 107,4 GB.

Установка Debian 8 на mdadm raid1

Скачиваем последнюю версию системы Debian-8.6.0-amd64-netinst.iso.
Скачать

Установка до начала работы с дисками

Создание RAID1

Общая схема создания raid1 массивов состоит из нескольких шагов:

  • Создаем одинаковые разделы на дисках с типом «физический том для RAID»,
  • Объединяем два одинаковых раздела в необходимый раздел RAID1,
  • Форматируем наш RAID1 под нужный нам формат файловой системы.

Скрины сделаны на создание разделов только на одном из дисков на другом делаем по аналогии. Всё пространство диска не использовалось специально. Мы установим саму систему и позже решим как и где мы хотим хранить наши образы системы, бэкапы и другие данные. Раздел swap был специально не создан. Пропустите этот пункт. Мы создадим его позже.

В итоге у нас получилось:

  • Загрузочный раздел /boot с меткой «загрузочный» и размером 500 MB форматом ext2,
  • Корневой раздел / размером 50 GB форматом ext4.

Не указывайте раздел boot меньше 500 MB если не хотите проблем при первом обновлении системы Proxmox.

Завершение установки Debian 8

Настройка Debian 8

Установка текстового редактора mc

Установку выполним командой:

apt-get -y install mc

Настроим редактор mc по умолчанию командой:

select-editor
=вывод команды=
Select an editor. To change later, run 'select-editor'.
 1. /bin/nano <---- easiest
 2. /usr/bin/mcedit
 3. /usr/bin/vim.tiny
Choose 1-3 [1]: 2

Разрешение подключения под root в ssh

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

mcedit /etc/ssh/sshd_config
=необходимые изменения=
# Сделаем разрешение подключаться под root
PermitRootLogin yes

Полное обновление системы с перезагрузкой

Выполним команду:

apt-get -y update && apt-get -y upgrade && reboot

Мы без вопросов системы:

  • Произведёт обновление индекса пакетов до последних изменениях в репозитории,
  • Выполним обновление всех пакетов системы,
  • Перезагрузимся.

Настройка статического IP адреса

Последнее что нам надо чтобы сразу подключаться к системе по ssh это назначит системе статический ip адрес.

Определим ip адрес системы введя команду:

ip addr
=вывод команды=
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group 
default 
 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 
 valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP 
group default qlen 1000
 link/ether 08:00:27:52:85:09 brd ff:ff:ff:ff:ff:ff
 inet 192.168.0.168/24 brd 192.168.0.255 scope global eth0
 valid_lft forever preferred_lft forever
 inet6 fe80::a00:27ff:fe52:8509/64 scope link 
 valid_lft forever preferred_lft forever

Мы видим что наш адрес inet 192.168.0.168/24 brd 192.168.0.255 scope global eth0

Подключится к система через ssh введя команду в консоли другого компьютера:

ssh root@192.168.0.168
=вывод команды=
root@192.168.0.168's password: 
Last login: Wed Dec 28 00:40:34 2016 from 192.168.0.3
root@proxmox:~#

При установке мы использовали получение ip адреса по DHCP сменим его на статический.

Отредактируем файл interfaces, который отвечает за сетевые настройки в Debian. Для того, чтобы назначить постоянный статический ip адрес, его нужно привести к следующему виду:

mcedit /etc/network/interfaces
=вывод команды с необходимыми изменениями=
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
# Запускать автоматически при загрузке системы
auto eth0 
# Интерфейс eth0 в диапазоне IPv4 со статическим адресом
iface eth0 inet static
# IP адрес
address 192.168.0.150
# Шлюз по умолчанию
gateway 192.168.0.106
# Маска сети
netmask 255.255.255.0

Сохраним и перезагрузимся командой:

reboot

Проверим после перезагрузки ip адрес:

ip addr
=часть вывода команды=
inet 192.168.0.150/24 brd 192.168.0.255 scope global eth0

Проверка работы интернета

Проверим интернет отправив 4 пакета на ya.ru.

ping -c 4 ya.ru
=вывод команды=
PING ya.ru (93.158.134.3) 56(84) bytes of data.
64 bytes from www.yandex.ru (93.158.134.3): icmp_seq=1 ttl=51 time=14.7 ms
64 bytes from www.yandex.ru (93.158.134.3): icmp_seq=2 ttl=51 time=13.8 ms
64 bytes from www.yandex.ru (93.158.134.3): icmp_seq=3 ttl=51 time=15.1 ms
64 bytes from www.yandex.ru (93.158.134.3): icmp_seq=4 ttl=51 time=14.2 ms
--- ya.ru ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3010ms
rtt min/avg/max/mdev = 13.842/14.471/15.142/0.514 ms

Всё прошло без потерь.

Установка загрузчика GRUB на оба жестких диска

Без этого мы не сможем загрузится со второго диска в случае отказа первого по причине отсутствия загрузочного раздела.

Установим grub на оба жестких диска. Для этого выполняем команду:

dpkg-reconfigure grub-pc
=вывод команды=
Installing for i386-pc platform. 
Установка завершена. Ошибок нет.
Installing for i386-pc platform.
Установка завершена. Ошибок нет.
Generating grub configuration file ...
Найден образ linux: /boot/vmlinuz-3.16.0-4-amd64
Найден образ initrd: /boot/initrd.img-3.16.0-4-amd64
завершено

На все вопросы даём дефолтные значения, в конце выбираете оба жестких диска для установки загрузчика.

Установка загрузчика GRUB на оба жестких диска Debian

Информация о разделах дисков в системе

df -h
=вывод команды=
Файловая система Размер Использовано Дост Использовано% Смонтировано в
/dev/md1 46G 965M 43G 3% /
udev 10M 0 10M 0% /dev
tmpfs 201M 4,4M 196M 3% /run
tmpfs 501M 0 501M 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 501M 0 501M 0% /sys/fs/cgroup
/dev/md0 461M 33M 405M 8% /boot

Всё хорошо.

Проверка работы массивов RAID1

cat /proc/mdstat
=вывод команды=
Personalities : [raid1] 
md1 : active raid1 sda2[0] sdb2[1]
 48795648 blocks super 1.2 [2/2] [UU]
 
md0 : active raid1 sda1[0] sdb1[1]
 487104 blocks super 1.2 [2/2] [UU]
 
unused devices:

Параметр “UU” говорит о том что всё в порядке.

Уже сейчас можно отключить один диск и система спокойно загрузится с другого. При подключении отключенного ранее диска raid не заработает так как для этого нужно произвести определенные манипуляции. Далее мы в статье настроим почту и в случае ошибки raid1 нам придет сообщение на необходимый e-mail.

В другой статье Вы можете узнать Как работать с raid 1 после отказа.
Подробнее...

Создание раздела SWAP

При установке Debian мы отказались от создания swap раздела, так как по многим рекомендациям не советуют создавать raid 1 для раздела swap.

Наличие раздела swap важно и необходимо.

Проверим наличие swap раздела:

swapon -as

Если пусто, значит его нет.

Создадим файл для будущего swap раздела:

dd if=/dev/zero of=/swap bs=1024 count=4000000
=вывод команды=
4000000+0 записей получено
4000000+0 записей отправлено
скопировано 4096000000 байт (4,1 GB), 26,9641 c, 152 MB/c

Размер файла 4 GB, равен объему памяти на сервере. Выбирайте размер на свое усмотрение.

Форматируем файл в формат свопа:

mkswap /swap
=вывод команды=
Setting up swapspace version 1, size = 3999996 KiB
no label, UUID=7db57287-a7c3-4973-9f89-0be098a493ac

Подключаем файл к системе:

swapon /swap
=вывод команды=
swapon: /swap: insecure permissions 0644, 0600 suggested.

Проверяем результат работы:

swapon -as
=вывод команды=
Filename Type Size Used Priority
/swap file 3999996 0 -1

Сделаем чтобы swap раздел монтировался при загрузке. Для этого добавляем в fstab строку:

mcedit /etc/fstab
=необходимые дополнения=
# Подключим swap при загрузке
/swap swap swap defaults 0 0

В конце файла делаем переход на новую строку.

Сохраняем файл и перезагружаемся.

reboot

Проверяем:

swapon -as
=вывод команды=
Filename Type Size Used Priority
/swap file 3999996 0 -1

Все необходимые настройки произвели переходим к непосредственной установке Proxmox.

Установка Proxmox

За основу мы взяли инструкцию от разработчика исходя из неё и будем устанавливать.
Перейти

Правка /etc/hosts

В нашем случае файл /etc/hosts выглядит так:

cat /etc/hosts
=вывод команды=
127.0.0.1 localhost
127.0.1.1 proxmox.sevo44.loc proxmox
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Приведем его к виду:

mcedit /etc/hosts
=вывод команды c необходимыми изменениями=
127.0.0.1 localhost.localdomain localhost
192.168.0.150 proxmox.sevo44.loc proxmox pvelocalhost
# The following lines are desirable for IPv6 capable hosts
#::1 localhost ip6-localhost ip6-loopback
#ff02::1 ip6-allnodes
#ff02::2 ip6-allrouters

Добавление репозитория Proxmox

Добавим Proxmox репозиторий выполнив команду:

echo "deb http://download.proxmox.com/debian jessie pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list

Добавляем цифровую подпись Proxmox репозитория:

wget -O- "http://download.proxmox.com/debian/key.asc" | apt-key add -

Обновим репозитории и систему выполнив команду:

apt-get update && apt-get dist-upgrade

Перезагрузим систему:

reboot

Установка необходимых пакетов Proxmox

Установка производиться командой:

apt-get install proxmox-ve ssh postfix ksm-control-daemon open-iscsi systemd-sysv

В процессе установке необходимо будет настроить Postfix.

Выберем параметры:

  • Интернет-сайт,
  • proxmox.sevo44.loc — укажем полное название машины.

Если нам в последствии надо будет изменить настройки Postfix то выполнить это можно командой:

dpkg-reconfigure postfix

Перезагружаем систему, новое ядро Proxmox VE ​​будет автоматически выбрано в меню загрузчика GRUB.

reboot

Отправка почты на внешний e-mail адрес

Отправим тестовое письмо пользователю root в котором отправим данные файла /etc/fstab:

cat /etc/fstab | mail -s Testmail root

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

cat /var/mail/local
=вывод команды=
From root@proxmox.sevo44.loc Wed Dec 28 10:53:07 2016
Return-Path:
X-Original-To: root
Delivered-To: root@proxmox.sevo44.loc
Received: by proxmox.sevo44.loc (Postfix, from userid 0)
 id 6D99F2224F1; Wed, 28 Dec 2016 10:53:07 +0300 (MSK)
To: root@proxmox.sevo44.loc
Subject: Testmail
Message-Id: <20161228075307.6D99F2224F1@proxmox.sevo44.loc>
Date: Wed, 28 Dec 2016 10:53:07 +0300 (MSK)
From: root@proxmox.sevo44.loc (root)
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# 
# / was on /dev/md1 during installation
UUID=6219d7b4-1d25-4fd7-a382-e162d46114d7 / ext4 
errors=remount-ro 0 1
# /boot was on /dev/md0 during installation
UUID=bf5388b2-0dde-47ae-aaa6-b192123bce3d /boot ext2 defaults 
 0 2
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
swap /swap swap defaults 0 0

Видим что письмо пришло.

Настроим чтобы эти письма пересылались на нужную нам внешнюю e-mail почту.

Открываем файл /etc/aliases для правки выполнив команду:

mcedit /etc/aliases
=необходимые изменения=
# Правим вписывая свой адрес
root: local,info@sevo44.ru

В данном виде почта будет приходить как в локальный файл так и на почту. Можете выбрать что то одно.

Применим изменения выполнив команду:

newaliases

Можно еще раз отправить тестовое письмо и убедиться что оно пришло.

Обязательно проверьте спам почты. Если в спаме нет то смотрите логи отправки почты. Всегда использую почтовый сервис yandex.ru и проблем с ними нет.

Удаление пакета ОС-Prober

apt-get remove os-prober

Удаление Debian kernel

apt-get remove linux-image-amd64 linux-image-3.16.0-4-amd64 linux-base

Проверим конфигурацию Grub командой:

update-grub

Ускоряем работу дисков ext4

Для проверки работы дисковой подсистем в Proxmox есть утилита pveperf которую мы будем использовать.

Посмотрим все смонтированые разделы в системе:

df -h
= вывод команды =
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
udev 10M 0 10M 0% /dev
tmpfs 1,6G 14M 1,6G 1% /run
/dev/md1 230G 57G 162G 26% /
tmpfs 3,9G 34M 3,9G 1% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup
/dev/sde1 917G 651G 220G 75% /var/lib/vz/backup
/dev/md0 91M 47M 40M 54% /boot
/dev/md2 913G 758G 110G 88% /var/lib/vz/images
/dev/md3 921G 861G 14G 99% /mnt/md3
/dev/fuse 30M 20K 30M 1% /etc/pve
tmpfs 798M 4,0K 798M 1% /run/user/115
tmpfs 798M 0 798M 0% /run/user/0

Посмотрим информацию о необходимом разделе:

pveperf /var/lib/vz/images
= вывод команды =
CPU BOGOMIPS: 25535.20
REGEX/SECOND: 578497
HD SIZE: 912.93 GB (/dev/md2)
BUFFERED READS: 145.76 MB/sec
AVERAGE SEEK TIME: 22.12 ms
FSYNCS/SECOND: 65.94
DNS EXT: 60.41 ms
DNS INT: 2.62 ms (sevo44.loc)

Из вывода видно, что параметр FSYNCS маловат и надо его улучшить.

Откроем необходимый файл и сделаем изменения:

cat /etc/fstab
= вывод части команды с необходимыми изменениями =
/dev/md2 /var/lib/vz/images ext4 relatime,barrier=0 0 1

После перезагрузки системы Proxmox проверим результат:

pveperf /var/lib/vz/images
= вывод команды =
CPU BOGOMIPS: 25535.20
REGEX/SECOND: 578497
HD SIZE: 912.93 GB (/dev/md2)
BUFFERED READS: 145.76 MB/sec
AVERAGE SEEK TIME: 22.12 ms
FSYNCS/SECOND: 1328.94
DNS EXT: 60.41 ms
DNS INT: 2.62 ms (sevo44.loc)

Вот так поигравшись с настройками файловой системы ext4 мы значительно увеличили производительность дисковой системы. Варианты настройки могут быть разные и тут все зависит от ваших требований к данным на дисках.

Панель управления Proxmox

Теперь мы можем зайти по адресу https://192.168.0.150:8006 и увидеть после авторизации панель управления Proxmox.

Сообщение о том что не подключены платные репозитории можно конечно убрать, но после обновления системы оно появиться снова.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Хотите сказать денежное спасибо? Подарите денежку!

  • http://vk.com/id63130413 Алексей Долотов

    Отдельное спасибо Владимиру владельцу ресурса https://serveradmin.ru/ который подарил мне старенький но рабочий сервер. Для меня его ресурс является базовый при изучении и практике работы с Linux.