<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Бесплатная миграция IT-инфраструктуры в облако
На главную
61c46507-12c7-4300-a301-bd8bc30c7c19
Инструкции для серверов

Подготовка образа для создания облачного сервера

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

Ниже рассмотрим, какие проверки и настройки потребуется выполнить для успешного создания сервера.

В нашем репозитории на 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"

Наличие основного пользователя

При создании сервера будет сгенерирован пароль для пользователя root (или Администратор в случае Windows). Убедитесь, что такой пользователь существует. Как правило, пользователь есть, если он не был специально удален.

Наличие 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
Была ли статья полезна?
Ваша оценка очень важна
Комментарии 5
Александр Ермоленко
Александр Ермоленко
20.09.2023, 07:09

Здравствуйте! Мне необходимо создать сервер из моего предустановленного и настроенного образа Windows2019. Не нашел у Вас инструкции на этот случай. Она есть у Вас?

Команда Timeweb Cloud
Команда Timeweb Cloud
20.09.2023, 09:43

Добрый день! Можно посмотреть пример сборки образа у нас на Гитхабе, при такой настройке образ точно «заведется» на нашем сервере.

Если возникнут сложности, напишите в поддержку — постараемся помочь. Отметим, что в образ обязательно должны быть добавлены драйверы VirtIO.

А если у вас уже есть работающий сервер с Windows в Timeweb Cloud, его можно просто клонировать.

Alexander Zubkov
Alexander Zubkov
17.06.2023, 09:37

Извините, но вы не рассказали самое главное - с чего начать и как закончить. Примерно догадываюсь, что надо создать виртуальную машину, например, на Virtualbox, потом проделать манипуляции описанные в инструкции, выключить виртуалку и взять образ диска. А как IP прописать? Насколько я знаю, сами производители Линуксов предоставляют облачные образы, они будут работать? Почему советуете выключить swap, когда наоборот он спасет в экстренных случаях? swap можно сделать в виде файла на диске, если отдельный раздел сложно. Пожалуста, допишите недостающую информацию.

Tarlan Isaev (organic)
Tarlan Isaev (organic)
29.06.2023, 05:12

Ага, хорошее замечание. Апдейт по дополнению статьи не помешает :)

Обычно SWAP рекомендуют отключить для сохранности дисков на серверах из-за ограниченности циклов записи на них :)

Команда Timeweb Cloud
Команда Timeweb Cloud
29.06.2023, 15:08

Здравствуйте, Александр! Возьмем в работу инструкцию по созданию образов :)

В целом вы все описали корректно. Удобнее будет создать и установить виртуальный сервер на компьютере (например, через virtualbox или virt-manager), установить всё необходимое и выполнить настройки. После этого — выключить виртуалку, чтобы все изменения сохранились на диске, и полученный диск загрузить к нам. Другой вариант — собирать образ самостоятельно через qemu-img, но это будет сложнее.

Облачные образы будут работать, если они в нужных форматах. Мы поддерживаем vmdk, vhd, vhdx, vdi, raw, img, qcow2. Например, у Ubuntu есть образы в .img — такие подойдут.

Swap рекомендуем отключать из-за возможной высокой нагрузки на диски. А что касается IP-адресов, то эти настройки выполним мы после создания сервера в панели.