В магазине полно разных сетевых хранилищ от именитых производителей. Однако, при наличие двух рук и головы, всё равно возникает желание собрать собственный NAS. Маленький домашний или офисный NAS. Экономия значительная.
И можно и не маленький, а побольше, почему бы ни нет. Сегодня раскатываем TrueNAS Core на HPE Proliant DL380 Gen9 с дисковой полочкой. 24 диска в комплекте. Сразу замечание насчёт дисков. Под ОС понадобится хотя бы два диска в RAID1, для надёжности.
TrueNAS Core работает на FreeBSD, TrueNAS Scale — на Debian. На момент тестирования, это был конец 2023 года, версия TrueNAS SCALE работала нестабильно, глючил биндинг пользователей Active Directory. По этой причине за основу взяли TrueNAS Core. Как сейчас обстоят дела у TrueNAS Scale — не знаю, отпишитесь в комментариях.
Подготовка к установке TrueNAS Core
Сначала подготовимся, выделим IP адрес в локальной сети для нашего NAS. И DNS имя. Для работы по HTTPS протоколу выпустим корпоративный сертификат. Если мы собираем NAS для дома, то с сертификатом можно не возиться, TrueNAS Core в этом случае будет использовать самоподписанный SSL сертификат.
Подготовим сервер, вернее, дисковую подсистему. Отключаем режимы RAID на встроенных контроллерах и переводим всё в AHCI. Если у вас на сервере используются аппаратные RAID контроллеры, то переводим их в режим работы HBA. На HPE Proliant DL380 Gen9 у меня целых два контроллера. Загружаюсь в Smart Storage Administrator. Выбираю первый контроллер, это Smart Array P840ar, на нём 12 дисков. Enable HBA Mode.
OK.
Контроллера перейдёт в режим HBA после перезагрузки. Finish.
Первый контроллер настроили.
На контроллере горит уведомление о том что после перезагрузки конфигурация контроллера очистится и он начнёт работать в режиме HBA.
Повторяем операцию для второго контроллера, это у меня Smart HBA H241, на нём ещё 12 дисков. Тоже переводим его в режим HBA.
Оба контроллера ожидают перезагрузку.
Теперь нам нужен дистрибутив.
Software → TrueNAS Core.
Download.
Пропускаем вход через соцсети. Находим TrueNAS CORE 13.0-U6.1. Это стабильная версия. Download Stable.
Скачивается инсталляционный образ ISO.
Установка TrueNAS Core
Если мы работаем с домашним сервером, то делаем из ISO образа загрузочную флешку. В моём случае я просто монтирую ISO образ через KVM.
Перезагружаем сервер. Грузится в UEFI. Для выбора опций загрузки жмём F11.
Да, после включения режима HBA у нас здесь много дисков. Но нас интересует вариант iLO Virtual USB : HPE iLO Virtual USB CD/DVD ROM, выбираем.
Начинает грузиться инсталлятор. Для начала установки выбираем 1. Я тут случайно на стрелки нажал, пришлось перезагружаться, аккуратнее выбирайте клавиши для нажатия.
Попадаем в консольный мастер установки. Для установки выбираем пункт 1 Install/Upgrade. OK.
Нам предлагают выбрать диски, на которых установится операционная система. Мне требуется обеспечить загрузку даже в том случае, если один контроллеров выйдет из строя, поэтому под систему я выделю по одному диску с каждого контроллера. Первый диск я возьму из первой дюжины, пусть это будет da0.
Второй диск по идее нужно было бы взять da12, но он у меня немного не той модели, возьму da13. OK.
Нас предупреждают, что процедура удалит все данные с дисков da0 и da13. Здесь же говорится о том, что эти диски будут использованы только под систему, использовать их в качестве дисков для данных не получится. Этот момент в TrueNAS мне не нравится, потому что при проектировании домашнего сервера пору дисков нужно будет отдать только под систему. Можно и один, но хочется надёжности. Исходя из здравой заботы о надёжности нас также отговаривают от мысли поставить систему на флешку, и я вас тоже отговариваю от этой больной идеи, если она вас вдруг посетит. Yes.
Указываем пароль от пользователя root. Пароль можно будет потом изменить.
TrueNAS может загружаться в режимах Legacy (BIOS) или UEFI, выбираем. Естественно, выбираю Boot via UEFI. Что-то я не уверен что в BIOS будут распознаваться диски больше 2 ТБ...
Выбираем, нужен ли раздел swap размером 16 GB. Create swap. Если вы начинаете размышлять, нужен ли вам своп на загрузочных дисках, то вы слишком много думаете о свопе. Не думайте о нём.
Побежала матрица. Процесс может быть долгим.
Только через несколько минут я увидел какую-то понятную обычному человеку надпись:
Installing base-os (1 of 3)
Установка TrueNAS на диски da0 и da13 прошла успешно. OK. Просят перезагрузиться и извлечь образ ISO. Тут я извлёк ISO, какие-то строчки на экран повылезали. Нажал ввод.
Выскочило меню инсталляции зачем-то. Попробовал выбрать 3 Reboot System — ничего не произошло. Странно.
Перезагрузил сервер через reset. И система не загрузилась.
Настройка загрузки
По какой-то причине инсталлятор не добавил в опции загрузки новые пункты, сервер не знает с чего ему загружаться. Ну с таким мы уже сталкивались, добавим опции загрузки вручную.
HPE Proliant Gen9 — добавляем опцию в UEFI Boot Order list
Включаем сервер, при загрузке нажимаем F9. Попадаем в BIOS. Входим в System Configuration → BIOS\Platform Configuration (RBSU) → Boot Options → Advanced UEFI Boot Maintenance. Входим в Add Boot Option.
Выбираем один из контроллеров.
<efi>
<boot>
BOOTx64.efi
Указываем имя опции, пусть будет "TrueNAS 1". Commit changes and exit.
Повторяем действия для второго контроллера, добавляем опцию "TrueNAS 2".
Нажимаем ESC для выхода в предыдущее меню. Входим в UEFI Boot Order. Стрелками перемещаем курсор, кнопкой "+" перемещаем опции "TrueNAS 1" и "TrueNAS 2" вверх.
F10 - сохраняемся. Перезагружаем сервер. На этот раз система грузится правильно.
Console setup
Попадаем в Console setup. Наша задача на данном этапе: правильно настроить сеть. Если у вас простой сервер, просто настраиваем IP адрес и шлюз. Если сеть сложнее, меню тоже позволяет это сделать.
В моём примете сервер подключён двумя оптическими шнурками к коммутатору в режиме LASP. Сначала настроим агрегирование портов, пишем "2" (Configure Link Aggregation).
Нас спрашивают, мы хотим создать или удалить интерфейс с агрегированными портами? Пишем "1" (Create Link Aggregation).
Запрашивают тип агрегации, у меня lacp, так и пишу "2".
Спрашивают какой интерфейс добавить в агрегацию. Для добавления ix0 пишу "1". Затем для добавления ix1 тоже пишу "1". Больше не нужно, пишу "q".
И у нас тут же линк поднимается в UP (интерфейс будет называться lagg0).
Если у вас используется VLAN, то самое время прикрутить его к интерфейсу. Пишем "3" (Configure VLAN Interface).
К какому интерфейсу вешаем суб-интерфейс VLAN? Я — к свежесозданному lagg0. Пишем "5". Указываем имя суб-интерфейса в виде vlanX, пишу "vlan69". Пишем тег VLAN — 69. Пишем описание VLAN, пусть будет "BACKUP".
Интерфейсы созданы, сеть перезапускается. Можно настроить IP. Пишем "1" (Configure Network Interface).
Какой интерфейс настраиваем? Конечно наш vlan69. Пишем "6".
Указываем IP адрес и маску. IPv6 не буду использовать.
Теперь настроим шлюз по умолчанию. Пишем "4" (Configure Default Route).
И теперь пробуем зайти на URL нашего сервера по HTTP или HTTPS.
Проверим вход под пользователем root.
Мы справились с установкой TrueNAS Core.
Начальная настройка TrueNAS Core
После установки TrueNAS нужно что-нибудь настроить. Не забываем нажимать SAVE.
Account → Users, здесь можно сменить пароль на root, если при установке не сделали сразу его сложным.
System → Certificates, здесь можно загрузить свой SSL сертификат, указав ему псевдоним.
System → General, здесь можно выбрать загруженный SSL сертификат, указав его псевдоним. Здесь же можно включить редирект с HTTP на HTTPS.
Здесь же можно указать временную зону. И язык (я оставляю English).
System → Advanced, усиливаем безопасность, снимаем галку "Show Text Console without Password Prompt".
Network → Global Configuration, указываем hostname, домен, DNS сервера.
System → NTP Servers, при необходимости указываем свои NTP сервера.
Добавление TrueNAS в домен
Если необходимо ввести NAS в домен, действуем. Убеждаемся, что в домене нет выбранного нами имени сервера.
Directory Services → Active Directory:
- Domain Name — имя домена в формате domain.local
- Domain Account Name — логин администратора домена, который имеет право вводить сервера в домен. Логин не запомнится. v.poupkin.
- Domain Account Name — пароль администратора домена, он тоже не запомнится
- Ставим галку Enable (requires password or Kerberos principal)
Нажимаем ADVANCED OPTIONS
- Netbios Name — под этим именем сервер будет добавлен в домен.
SAVE
Проверим создание настроек Kerberos.
Directory Services → Kerberos Realms, Realm должен совпасть с именем домена, все поля должны быть заполнены.
Directory Services → Kerberos Keytab, присутствует AD_MACHINE_ACCOUNT.
Shell, проверим успешное наполнение кэша с учётными данными и группами:
midclt call activedirectory.get_cache
Вывод должен вернуть данные.
Создание массивов в TrueNAS
Переходим к тому, ради чего всё это и затевалось — к созданию массивов.
TrueNAS предлагает следующие виды массивов:
- Stripe — ZFS. Аналог Raid0, Stripe. Без отказоустойчивости.
- Mirror — ZFS. Аналог Raid1, Mirror. Выдерживает выход из строя 1 диска.
- Raid-z — ZFS. Минимум два диска для хранения и один для контроля чётности. Аналог Raid5.
- Raid-z2 — ZFS. Минимум два диска для хранения и два для контроля чётности. Аналог Raid6.
- Raid-z3 — ZFS. Минимум два диска для хранения и три для контроля по чётности.
ZFS (Zettabyte File System) — это файловая система, которая работает по принципу Copy-On-Write.
RAIDZ — пул из дисков, отформатированных в ZFS. Цифра после Z означает степень отказоустойчивости. Raid-z выдерживает выход из строя 1 диска, Raid-z2 — двух дисков, Raid-z3 — трёх дисков.
Создадим какой-нибудь массив.
Storage → Disks, здесь видим диски, свободные отмечены "N/A", системные — "boot-pool"
Storage → Pools, здесь создадим наш первый пул дисков. ADD.
Create new pool. CREATE POOL.
Указываем название пула, к примеру, "db-pool". Выбираем диски. Я планирую создать RAID5 (Raid-z) массив из 10 дисков + 1 spare. Выделяю галкой диски с da2 по da11 в области Available Disks, диск da1 не выделяю, он потом пойдёт в spare.
Нажимаем стрелку вправо напротив области Data VDevs, выбранные диски добавляются в эту область.
Займёмся spare. в области Available disks выделяем диск da1. Нажимаем синюю кнопку ADD VDEV со стрелкой вниз.
Нажимаем Hot Spare. Диск предназначен для использования вместо вышедшего из строя диска из DATA pool vdevs.
Скроллим ниже до области Spare VDev.
Нажимаем стрелку вправо напротив области Spare VDev. Диск da1 добавляется в область Spare VDev.
Между областями Data VDevs и Spare VDev спрятался выбор типа массива, по умолчанию стоит Raid-z3, это расточительно, меняем на запланированный Raid-z.
CREATE.
Confirm, CREATE POOL. Создаётся массив.
Массив (дисковый пул) создан.
В статусе (шестерёнка в помощь) можно посмотреть тип массива, диски массива и диски spare. А также статус массива и дисков.
Теперь можно в созданном пуле делать датасеты и использовать их по своему усмотрению.