Перед тем, как создать облачный сервер из образа, образ необходимо подготовить — это нужно для того, чтобы установка была выполнена корректно и полноценно работал функционал панели управления.
Ниже рассмотрим, какие проверки и настройки потребуется выполнить для успешного создания сервера.
В нашем репозитории на GitHub вы можете найти примеры конфигов сборочной системы Packer для автоматической сборки образов ВМ.
Основные настройки
Таблица разделов
Проверьте разбивку разделов на диске. Мы рекомендуем использовать для разбивки MBR или GPT; они обе поддерживаются большинством Linux-дистрибутивов командами fdisk, gdisk и аналогичными.
gdisk -l /dev/vda
Пример вывода:
GPT fdisk (gdisk) version 1.0.5 Partition table scan: MBR: MBR only BSD: not present APM: not present GPT: not present
Если используется иная разметка, потребуется создать образ заново, с корректной разметкой.
Разметка диска
Если на диске размечен всего один раздел (корневой) и он имеет файловую систему ext3 или ext4, то при установке сервера из образа будет выполнен ресайз файловой системы. ФС будет расширена до заданного в конфигурации сервера размера диска.
Например, если размер блочного устройства в образе 10 ГБ, то при установке сервера с диском 15 ГБ блочное устройство и ФС будут расширены до 15 ГБ.
Ресайз файловой системы не будет выполнен, если задействован LVM (Logical Volume Manager).
Загрузчик ОС
Мы используем для запуска виртуальных машин SeaBIOS, поэтому в ОС должен быть установлен обычный загрузчик для BIOS. Если установлен UEFI-загрузчик, его необходимо удалить и установить загрузчик для BIOS.
Если вы используете GRUB2, cмотрите инструкции по установке и настройке здесь.
Настройка /etc/fstab
Для стабильного запуска системы в файле /etc/fstab для корневого раздела указывайте монтирование по UUID, например:
UUID=f19002a1-6e7a-45ac-91cd-24b7cc0e4cd9 / ext4 defaults 0 1
Посмотреть UUID раздела можно, например, командой:
blkid
Пример вывода:
/dev/vda1: UUID="f19002a1-6e7a-45ac-91cd-24b7cc0e4cd9" TYPE="ext4" PARTUUID="f7a1fae1-01" /dev/loop0: TYPE="squashfs" /dev/loop1: TYPE="squashfs" /dev/loop2: TYPE="squashfs"
Наличие qemu-guest-agent
Убедитесь, что установлен и запущен сервис qemu-guest-agent — он необходим для выполнения определенных операций из панели, например, для создания бэкапов.
- Проверьте статус.
Systemd:
systemctl status qemu-guest-agent.service
OpenRC и init.d:
/etc/init.d/qemu-guest-agent status
или:
service qemu-guest-agent status
- Установите агент, если он отсутствует:
Debian/Ubuntu:
apt-get install qemu-guest-agent
CentOS / RHEL:
yum install qemu-guest-agent
Alpine Linux:
apk add qemu-guest-agent
- Добавьте в автозагрузку:
Systemd:
systemctl enable qemu-guest-agent.service
init.d:
chkconfig --add qemu-guest-agent
OpenRC:
rc-update add qemu-guest-agent
Для Windows сервис можно установить с помощью специального ISO-образа, который можно скачать здесь. Также с его помощью можно установить virtio-драйверы, необходимые для поддержки виртуализированных устройств.
Данных настроек достаточно для создания облачного сервера из образа. Остальные настройки рекомендуется выполнить для более удобной работы с сервером.
Дополнительные настройки
Установка Zabbix
Для сбора статистики с серверов мы используем агент Zabbix. Чтобы отображать статистику в панели, рекомендуем установить Zabbix с помощью скрипта командой:
wget -O - http://zabbix.repo.timeweb.ru/zabbix-install.sh | bash
Сетевые настройки
После запуска сервера необходимо обеспечить его доступность по сети. Для этого потребуется настроить DHCP-клиент для автоматического получения IP- и IPv6-адресов.
В большинстве систем клиент DHCP установлен по умолчанию, мы рекомендуем использовать утилиту dhclient с таким файлом конфигурации:
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8; option dhcp6.next-hop code 242 = ip6-address; send host-name = gethostname(); request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, domain-search, host-name, dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes, ntp-servers, dhcp6.next-hop; timeout 300;
Доступ по SSH
Так как для доступа к серверу, как правило, используется протокол SSH, проверьте, что он установлен и запускается при загрузке сервера.
- Проверьте статус:
Systemd:
systemctl status ssh.service
OpenRC и init.d:
/etc/init.d/ssh status
или:
service ssh status
- Установите SSH, если он отсутствует:
Debian/Ubuntu:
apt-get install openssh-server
CentOS / RHEL:
yum -y install openssh-server openssh-clients
Alpine Linux:
apk add openssh
- Добавьте в автозагрузку:
Systemd:
systemctl enable ssh.service
Init.d:
chkconfig --add ssh
OpenRC:
rc-update add sshd
- Также убедитесь, что в используемом файрволе открыт доступ к порту SSH (по умолчанию — 22).
Отключение swap
Рекомендуем отключить файл подкачки.
- Проверьте информацию о включенном swap:
swapon --show
Пример вывода:
NAME TYPE SIZE USED PRIO /swap.img file 685M 0B -2
- Отключите swap:
swapoff -a