Перед тем, как создать облачный сервер из образа, образ необходимо подготовить — это нужно для того, чтобы установка была выполнена корректно и полноценно работал функционал панели управления.
Ниже рассмотрим, какие проверки и настройки потребуется выполнить для успешного создания сервера.
В нашем репозитории на 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
для корневого раздела указывайте монтирование по 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"
При создании сервера будет сгенерирован пароль для пользователя root (или Администратор в случае Windows). Убедитесь, что такой пользователь существует. Как правило, пользователь есть, если он не был специально удален.
Убедитесь, что установлен и запущен сервис 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 с помощью скрипта командой:
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, проверьте, что он установлен и запускается при загрузке сервера.
Systemd:
systemctl status ssh.service
OpenRC и init.d:
/etc/init.d/ssh status
или:
service ssh status
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
Рекомендуем отключить файл подкачки.
swapon --show
Пример вывода:
NAME TYPE SIZE USED PRIO
/swap.img file 685M 0B -2
swapoff -a
Здравствуйте! Мне необходимо создать сервер из моего предустановленного и настроенного образа Windows2019. Не нашел у Вас инструкции на этот случай. Она есть у Вас?
Добрый день! Можно посмотреть пример сборки образа у нас на Гитхабе, при такой настройке образ точно «заведется» на нашем сервере.
Если возникнут сложности, напишите в поддержку — постараемся помочь. Отметим, что в образ обязательно должны быть добавлены драйверы VirtIO.
А если у вас уже есть работающий сервер с Windows в Timeweb Cloud, его можно просто клонировать.
Извините, но вы не рассказали самое главное - с чего начать и как закончить. Примерно догадываюсь, что надо создать виртуальную машину, например, на Virtualbox, потом проделать манипуляции описанные в инструкции, выключить виртуалку и взять образ диска. А как IP прописать? Насколько я знаю, сами производители Линуксов предоставляют облачные образы, они будут работать? Почему советуете выключить swap, когда наоборот он спасет в экстренных случаях? swap можно сделать в виде файла на диске, если отдельный раздел сложно. Пожалуста, допишите недостающую информацию.
Ага, хорошее замечание. Апдейт по дополнению статьи не помешает :)
Обычно SWAP рекомендуют отключить для сохранности дисков на серверах из-за ограниченности циклов записи на них :)
Здравствуйте, Александр! Возьмем в работу инструкцию по созданию образов :)
В целом вы все описали корректно. Удобнее будет создать и установить виртуальный сервер на компьютере (например, через virtualbox или virt-manager), установить всё необходимое и выполнить настройки. После этого — выключить виртуалку, чтобы все изменения сохранились на диске, и полученный диск загрузить к нам. Другой вариант — собирать образ самостоятельно через qemu-img, но это будет сложнее.
Облачные образы будут работать, если они в нужных форматах. Мы поддерживаем vmdk, vhd, vhdx, vdi, raw, img, qcow2. Например, у Ubuntu есть образы в .img — такие подойдут.
Swap рекомендуем отключать из-за возможной высокой нагрузки на диски. А что касается IP-адресов, то эти настройки выполним мы после создания сервера в панели.