Серверы
  • Готовые серверы
  • Конфигуратор
  • Серверы с 1CPU
  • Серверы с 2CPU
  • 4 поколение AMD EPYC и Intel Xeоn
  • Серверы с AMD Ryzen и Intel Core i9
  • Серверы для хранения данных
  • Cерверы с портом 10 Гбит/c
  • GPU
  • Распродажа
  • VPS
    GPU
  • Выделенные серверы с GPU
  • Виртуальные серверы с GPU
  • Распродажа
    Маркетплейс
    Colocation
  • Размещение серверов в дата-центре в Москве
  • Обслуживание серверов в других ЦОД
  • Кластеры
    Прокат
    Услуги
  • Аренда сетевого оборудования
  • Защита L3-L4 от DDoS атак
  • IPV4 и IPV6 адреса
  • Администрирование серверов
  • Уровни технической поддержки
  • Мониторинг сервера
  • BYOIP
  • USB диск
  • IP-KVM
  • Трафик
  • Коммутация серверов
  • AI-чат-бот Lite
  • О нас
  • Работа в HOSTKEY
  • Панель управления серверами и API
  • Дата-центры
  • Сеть
  • Тест скорости
  • Специальные предложения
  • Отдел продаж
  • Для реселлеров
  • Гранты для специалистов по Data Science
  • Гранты для научных проектов и стартапов
  • Документация и Частые вопросы
  • Новости
  • Блог
  • Оплата
  • Документы
  • Сообщите о нарушении
  • Looking Glass
  • 09.05.2023

    Настройка автоматической установки TrueNAS

    server one
    HOSTKEY
    Арендуйте выделенные и виртуальные серверы с моментальным деплоем в надежных дата-центрах класса TIER III в Москве и Нидерландах. Принимаем оплату за услуги HOSTKEY в Нидерландах в рублях на счет российской компании. Оплата с помощью банковских карт, в том числе и картой МИР, банковского перевода и электронных денег.

    В статье «Автоматическая установка платформы TrueNAS» мы рассказывали, что для автоматической установки на виртуальные и физические серверы теперь доступна операционная система TrueNAS SCALE. Расскажем об автоматической установке подробнее.

    Почему мы запустили именно SCALE, а не CORE? Давайте сравнивать и выбирать. Разработчик этих операционных систем собрал основные различия в таблицу. Видим, что с точки зрения функционала их почти нет. Основное отличие между версиями заключается в базовой ОС и, соответственно, в типе встроенной виртуализации, а еще у SCALE-версии заявлена возможность масштабирования ZFS на несколько узлов при помощи распределенной файловой системы Gluster. И да, поддержка ZFS на SCALE-версии реализована все же через DKMS.

    Затем нужно было выяснить, на какие серверы мы сможем ставить тот или иной TrueNAS. Мы поддерживаем единый список операционных систем как для «дедиков», так и для «виртуалок». В теории (по инструкциям для установки Install и Installing SCALE) список поддерживаемого оборудования и систем виртуализации тоже не особенно отличается, но будем проверять. С поддержкой физических серверов у обеих систем проблем нет, но вот наша стандартная конфигурация клиентской VM с диском Virtio-SCSI не нравится инсталлятору TrueNAS CORE, а точнее — он не видит такой тип диска. Подобная ситуация была и с автоматизацией установки Windows, и решали мы ее добавлением необходимых драйверов в инсталлятор. Установщик TrueNAS SCALE же видит диск «из коробки». А еще CORE-версия поддерживает меньшее количество разнообразных 10G-адаптеров. В общем, если не видно разницы, то зачем платить больше дорабатывать CORE под наши реалии, когда можно взять SCALE? Берем.

    Следующий шаг — автоматизация установки. Официальная документация предлагает нам всего один вариант — установка с ISO-образа посредством инсталлятора, управляемого исключительно клавиатурой. Что ж, будем пробовать подход, который мы уже применяли для автоматизации установки Cloud Hosted Router (там этот способ правда является официальным), а именно заливать на диск образ частично установленной операционной системы и донастраивать ее «по месту». У того же Cloud Hosted Router для финишной конфигурации есть специальный файл в файловой системе, куда просто пишется набор команд на его стандартном языке скриптов, и он выполняется один раз при первой загрузке. TrueNAS нам такого «подарка» не делает, во всяком случае официально, так что будем разбираться самостоятельно.

    Для начала ставим TrueNAS SCALE 22 с ISO на минимальный диск, который одобрит инсталлятор (это 8 ГБ) и до первой загрузки ОС сразу снимаем получившийся полный образ диска в архив. Вот с этим образом и будем потом работать. Судя по сообщениям в консоли, родной инсталлятор на самом деле делает именно распаковку на диск некоего образа, только предварительно проверяет, что оборудование соответствует минимальным требованиям, а еще умеет собрать два диска в зеркало и поставить ОС на него. Спасибо разработчикам, разбивка диска и загрузчик сделаны универсальными и работают как с UEFI, так и с Legacy, а значит, одним вопросом меньше.

    Как мы рассказывали в статье «От DVD и флешек до современных решений: как мы автоматизировали установку ОС на серверы», основным установщиком у нас является Live-образ, основанный на Rocky Linux 8, который загружается на деплоящийся сервер по PXE, выполняет зачистку дисков, выбор диска для инсталляции, скачивает и распаковывает образ нужной системы на подготовленные диски, делает финишную настройку. Первые шаги для TrueNAS выполняем те же, затем заливаем снятый «минимальный» образ на диск без предварительной нарезки разделов, потому что они уже есть в образе, а вот затем все уже нестандартно.

    Под корневую файловую систему у TrueNAS используется ZFS, настройки ОС хранятся именно там, и нам нужен туда доступ из-под нашего инсталлятора. Поскольку это пока единственный случай, когда драйвер ZFS понадобился в нашем Live-образе, встраивать его «на постоянку» и, соответственно, раздувать размер загружаемого образа не стали. Ничто не мешает добавить поддержку ZFS «на лету» при работе инсталляционного скрипта.

    dnf install -y epel-release
    dnf install https://zfsonlinux.org/epel/zfs-release-2-2$(rpm --eval "%{dist}").noarch.rpm -y
    dnf install -y dkms
    dnf config-manager --disable zfs
    dnf config-manager --enable zfs-kmod
    dnf install zfs -y
    modprobe zfs

    Затем импортируем zpool и монтируем в удобное место.

    zpool import boot-pool
    mount -t zfs boot-pool/ROOT/22.12.1 /mnt

    Как выяснилось, все основные настройки TrueNAS SCALE хранит в SQLite-базе в файле /data/freenas-v1.db. Соответственно, доустанавливаем необходимый инструментарий необходимый для работы с этой базой данных:

    dnf install sqlite -y

    После копания в базе настроенного экземпляра TrueNAS, а также сравнения с «голым» экземпляром, были найдены записи, содержащие нужные нам настройки, и затем написаны команды для создания необходимой минимальной конфигурации:

    sqlite3 /mnt/data/freenas-v1.db "INSERT INTO network_interfaces VALUES(1,'$inetif','',0,0,'',NULL,0,NULL,NULL,'<%= @host.mac %>',
     '<%= host_param('ip')%>','',<%= host_param('cidr')%>,4);"
     ## inetif — имя активного сетевого интерфейса
     ## <%= @host.mac %>,<%= host_param('ip')%>,<%= host_param('cidr')%> — соответственно
     ##   MAC-адрес, IP и маска подсети из параметров, передаваемых в Foreman при создании конфигурации
    sqlite3 /mnt/data/freenas-v1.db "DELETE FROM network_globalconfiguration WHERE id=1"
     ## Эта запись нам не нужна
    sqlite3 /mnt/data/freenas-v1.db "INSERT INTO network_globalconfiguration VALUES(1,'TrueNAS','TrueNAS-b','local','<%= host_param('gateway')%>','','8.8.8.8',
     '','','',0,'','','',NULL,'{\"mdns\": false, \"wsd\": false, \"netbios\": false}',
     '{\"type\": \"DENY\", \"activities\": []}');"
     ## Тут задаются шлюз, DNS-сервер, а также разрешенная Outbound activity через интерфейс
    pass=$(openssl passwd -6 <%= host_param("password") %>)
     sqlite3 /mnt/data/freenas-v1.db "UPDATE account_bsdusers SET bsdusr_unixhash='$pass'
      WHERE bsdusr_username='admin'"
     ## Задаем пароль пользователя-администратора из Foreman-конфигурации сервера
    sqlite3 /mnt/data/freenas-v1.db "UPDATE system_settings SET stg_guihttpsredirect=1 WHERE id=1"
     ## Пусть web-интерфейс установленной ОС работает только через HTTPS  	

    В принципе, на этом можно было бы и закончить настройку, но есть один нюанс. Во-первых, GPT-таблица у нас от диска на 8ГБ и хорошо бы ее поправить под размер реального диска. А во-вторых, хочется обойти ограничение операционной системы на использование отдельного диска под ОС и отдельных дисков под данные. При установке на физический сервер с несколькими дисками клиент сможет на них самостоятельно создать ZFS pool через web-интерфейс TrueNAS, но в случае однодисковой конфигурации, которая является стандартной для наших виртуальных серверов, web-интерфейс такого не позволит, хоть свободное место там, конечно, останется (мы заняли всего 8ГБ нашим образом). Без создания еще хотя бы одного пула не удастся ни разместить пользовательские данные, ни создать shares, ни активировать встроенные приложения. Поэтому создаем пул из-под нашего инсталлятора и добавляем в конфигурацию:

     echo w | fdisk /dev/$INST_DRIVE
     ## исправляем GPT таблицу. INST_DRIVE — диск, на который ставится ОС
    parted -s /dev/$INST_DRIVE mkpart primary 8590 100%
     ## создаем дополнительный раздел
    if [[ $(echo $INST_DRIVE | grep -c nvme) -eq 0 ]]; then
     ## для не-nvme дисков:
       	wipefs -a /dev/${INST_DRIVE}4
       	dd if=/dev/zero of=/dev/${INST_DRIVE}4 bs=512k count=20
        	## Эти две команды затрут возможные сохранившиеся артефакты предыдущей инсталляции
       	zpool create init-pool /dev/${INST_DRIVE}4
        	## Создаем ZFS pool под данные/приложения
    else
     ## аналогично для nvme дисков, различие только в имени раздела.
       	wipefs -a /dev/${INST_DRIVE}p4
       	dd if=/dev/zero of=/dev/${INST_DRIVE}p4 bs=512k count=20
       	zpool create init-pool /dev/${INST_DRIVE}p4
    fi
    ## Теперь нужно добавить получившийся пул в «импортированные» в конфигурацию ОС
    sqlite3 /mnt/data/freenas-v1.db "INSERT INTO system_systemdataset
      VALUES(1,'init-pool',1,'8f179c8648fc4419af075a5cf26c19f8',NULL);"
    sqlite3 /mnt/data/freenas-v1.db "INSERT INTO storage_volume
      VALUES(1,'init-pool','14024449139687287443',0,'');"

    На этом настройка закончена, остается перезагрузить сервер уже с системного диска. Первый запуск TrueNAS будет чуть дольше обычного, потому что будут отрабатывать родные инициализационные скрипты, но через пару минут мы получим операционную систему с настроенной сетью, доступным по HTTPS конфигурационным web-интерфейсом, заданным паролем администратора и активным ZFS pool под данные и приложения. Если на сервере несколько дисков, на них можно будет создать пул средствами web-интерфейса ОС и тогда использовать уже этот пул, как это и задумано разработчиками TrueNAS.

    Арендуйте выделенные и виртуальные серверы с моментальным деплоем в надежных дата-центрах класса TIER III в Москве и Нидерландах. Принимаем оплату за услуги HOSTKEY в Нидерландах в рублях на счет российской компании. Оплата с помощью банковских карт, в том числе и картой МИР, банковского перевода и электронных денег.

    Другие статьи

    25.10.2024

    TS3 Manager: что происходит, когда додумываешь документацию

    Есть проблемы с подключением к TS3 Manager после установки на VPS? Управление сервером TeamSpeak через TS3 Manager не такое уж и простое, как кажется. Давайте решим проблемы вместе!

    07.10.2024

    Список всех кодов состояния HTTP-ответа сервера

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

    01.10.2024

    Устанавливаем Python 3 на VPS и VDS

    Пошаговая инструкция установки Python 3 на VPS и VDS для быстрой и корректной работы.

    27.09.2024

    В чем основные отличия VPS-сервера от VDS?

    VPS или VDS — в чем разница? Узнайте ключевые отличия между этими типами виртуальных серверов и решите, какой вариант подходит именно вам.

    24.09.2024

    Как выбрать сервер для Telegram-бота?

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

    HOSTKEY Выделенные серверы в Европе, России и США Готовые решения и индивидуальные конфигурации серверов на базе процессоров AMD, Intel, карт GPU, Бесплатной защитой от DDoS-атак и безлимитный соединением на скорости 1 Гбит/с 30
    4.3 48 48
    Upload