FreeBSD 11.0 Release. Установка и настройка сервера в картинках. Подробная инструкция.

Задача: Установка сервера с операционной системой FreeBSD 11.00 Release на ZFS для сервера резервного копирования.

Решил попробовать ZFS на реальном сервере. В 11 версии FreeBSD уже содержится встроенная поддержка установки на ZFS. 

ОЗУ 4 GB. 2 жестких диска SATA 2 штуки по 1Tb. Систему решил поставить используя зеркалирование.

Подготовка к установке FreeBSD 11.0

Сначала необходимо подготовить загрузочный носитель. Это может быть флэшка, CD-диск или DVD-диск. Также можно установить операционную систему FreeBSD через сетевую установку, но для этого придется сначала создать сервер для загрузки по сети.

Скачиваем необходимый дистрибутив с официального сайта проекта Анонс релиза FreeBSD 11.0.

Сервер для загрузки дистрибутива ОС. Вам необходимо скачать нужный файл. Учтите, что если у вас сервер не поддерживает 64х битную архитектуру, то скачиваете файл содержащий i386  в названии, например FreeBSD-11.0-RELEASE-i386-bootonly.iso. Если ваш сервер более менее современный, то рекомендуется устанавливать дистрибутив содержащий в названии amd64 (слово amd не говорит, что это процессор AMD, т.е. устанавливается и на процессоры INTEL), также есть дистрибутивы для других архитектур, но они используются очень редко. Если вы ничего не поняли про архитектуры и процессоры, то выбирайте выделенный жирным шрифтом файл, скорее всего он вам и нужен :-)

Для установки на флэшку скачиваем файл: FreeBSD-11.0-RELEASE-amd64-memstick.img

Для установки с CD-диска: FreeBSD-11.0-RELEASE-amd64-disc1.iso

Для установки с DVD-диска: FreeBSD-11.0-RELEASE-amd64-dvd1.iso 

Если вы используете Windows, то записать можно щелкнув на скачанном файле правой кнопкой мышки и вызвав контекстное меню выбрать в нем пункт меню «Записать образ диска».

Для записи образа на флэшку, придется скачать специальную программу и записать с помощью нее этот образ на диск. Это необходимо, чтобы флэшка стала загрузочной. Наиболее популярная программа Win32 Disk Imager: бесплатная, без лишних наворотов и не требует установки. Запускаем ее выбираем скачанный образ, выбираем имя диска с вставленной флэшкой и нажимаем Write. Все готово!

Кстати после того, как вы установили FreeBSD с флэшки, вставив ее обратно в компьютер с Windows, вы не сможете ни отформатировать ее средствами Windows, ни нормально ее использовать. Для того, чтобы ее переоформатировать придется использовать специальную программу, например RUFUS. Ничего страшного в этом нет, просто имейте ввиду.

На моем сервере не пошла загрузка с флэшки, хотя версия FreeBSD 9.3 загружается. Пришлось записывать DVD-диск и подсоединять внешний DVD-привод, т.к. в сервере не было DVD-ROMa. Естественно в BIOS необходимо выбрать первым устройством то устройство, с которого вы будете производить установку системы. Вход в BIOS у всех компьютеров по разному, на моем сервере через клавишу F2 (у вас может быть F1, F10, Del)

Если загрузка с диска или флэшки благополучно пошла, то после того как пробегут разные буковки, вы увидите следующее меню.

Установка FreeBSD 11.0

Начальный экран загрузки FreeBSD11.0
Начальный экран загрузки FreeBSD 11.0
Смотрим при загрузке как у вас будут называться сетевые интерфейсы, в данном случае em0 и em1
Выбираем драйвер системной консоли, кодировку которая будет использоваться. Можно ничего не трогать, чуть позже настроим сразу кодировку UTF-8
Выбираем Install для установки FreeBSD 11.0
Даем название серверу rкак пример srv01, это не сильно принципиально, затем можно сменить в любое время в файле /etc/rc.conf
Выбираем опциональные компоненты, рекомендую как указано на картинке. В принципе тоже не важно, можно установить потом, но придется немного почитать как это сделать
Я решил попробовать поюзать ZFS, выбираем его. Можно использовать UFS если у вас меньше 4Gb оперативной памяти
ZFS конфигурация. Так как у меня два диска SATA по 1 Tb, так как это все таки сервер, то лучшее решение в моем случае это создание «зеркала», т.е. при выходе из строя одного из дисков мы будем работать на втором. Учтите, что размер будет не 2 Tb, а всего лишь 1 Tb. Но зато мы имеем избыточность в виде одного диска.
Выбираем наши жесткие диски, которые мы включим в ZFS массив. Массив будет размером как меньший из двух дисков. Очень рекомендуется использовать одинаковые диски, как по объему, так и по производителю
Выбранные диски ada0 и ada1
Сервер у меня не новый, не поддерживает загрузку с GPT раздела, поэтому я выбрал MBR (BIOS), вам рекомендую GPT (BIOS)
Установщик FreeBSd дает вам последний шанс перед тем как удалить все данные с выбранных жестких дисков, о чем вам и говорит. Выбирайте YES и прощайтесь с данными на жестком диске :-) Я думаю они вам особо не были нужны…
Ниже выходит сообщение о том, что если у вас меньше чем 4 Gb ОЗУ, то необходимо добавить строчку vfs.zfs.prefetch_disable=0 в файл /boot/loader.conf
Дальше вы видите красивые ползуночки, которые показывают вам процесс копирования выбранных опций
Затем все это также красиво разархивируется (распаковывается)
Затем просят вести пароль root, самого главного администратора системы. Вы как обычно вводите «password», чтобы не дай Бог не забыть :-). Это конечно шутка, на самом деле не менее 20 символов, в том числе в разном регистре, цифры, символы ну и т.д. Чтобы не забыть используйте KeePass, очень нужная бесплатная программа!
Переходим к настройке сетевых интерфейсов, для начала настроим em0. В дальнейшем можете задействовать и второй, если конечно он у вас есть и вам это необходимо.
Спрашивают хотите использовать IPv4. То есть обычный привычный IP-адрес.
Потом спрашивает хотите ли вы использовать DHCP для присвоения адреса. Отказываемся.

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

Хотите ли использовать IPv6 ? Смотрите если нужно, то тоже настраиваете. У меня в сети не используется, я отказался.
Настраиваете разрешатель имен, т.е. DNS. Можно забить ДНС-адреса Гугла.
Хотите ли использовать локальное время? Да хотим.
Настраиваете временную зону. Выбираем Европу.

Затем Россию, а еще говорят Россия не входит в Европу :-) Еще как входит.

Если у вас Московское время, то выбираем Moscow+00
Время будет выводится с меткой MSK
Устанавливаем дату, если необходимо. У меня правильная, я пропуска.
Аналогично устанавливаем время, я пропускаю.
Выбираем параметры безопасности системы. В принципе, в дальнейшем все это можно настроить. Мне вроде ничего из этого не понадобится, вы смотрите сами.

Здесь есть различные параметры:

  • Скрывать запущенные процессы других пользователей
  • Скрывать запущенные процессы других групп пользователей
  • Запретить чтение сообщений ядра непривилегированным пользователям
  • Запрещать отладку непривилегированным пользователям
  • Случайный PID новым процессам (номер процесса случайным образом)
  • Вставлять защищенную страницу памяти в расширяемых сегментах
  • Удалять временные файлы при старте системы
  • Запретить Syslog
  • Запретить запуск почтового сервиса
Выбираете необходимые сервисы при запуске системы, очень желательно оставить sshd, остальное на ваше усмотрение. Я выбрал еще себе local_unbound это DNS сервер, BIND уже не идет по умолчанию в FreeBSd 11.0. А Unbound облегченный DNS-сервер.
Хотите ли добавить еще одного пользователя, кроме root, который мы уже создали. Без roota никак.
Создаем пользователя andrew. вы называйте как хотите. Например user, pupkin, ivanov. Не забываем добавить его в группу wheel, для того, чтобы в дальнейшем вы могли заходить на сервер через SSH. Заходить через SSH root’ом не секьюрно, т.е. не безопасно.
Ну все уже подустали. Идем на выход.
Ура! Установка завершена. Перегружаемся. Выбираем Reboot
Чего то еще… Хотите ли вы внести изменения перед перезагрузкой, иногда бывает нужно. Но в данном случае нам не надо, мы уже устали.

Ну вот и все, поздравляю! У меня прошло где то 18 мин, с учетом того, что мне приходилось еще все это дело фотографировать.

Вы установили FreeBSD 11.0. Теперь начинается самое интересное, вы узнаете много нового и полезного — эта бесплатная надежная операционная система сначала украдет у вас много времени на ее изучение, зато потом сэкономит много времени на ее администрирование!

Вам очень пригодится подробная документация по FreeBSD на английском языке, также есть на русском, но она не всегда поспевает за новыми версиями. Настоятельно рекомендую читать английскую :-)

Конфигурация моего сервера

Настройка Legacy в BIOS (это скриншот с аналогичного сервера с другими жесткими, суть та же)

Начальная подготовка к работе с системой FreeBSD

Дальше несколько манипуляций, объяснение здесь : https://www.andrewblog.ru/freebsd-10-3-ustanovka-shlyuza-na-staryj-server-hp-proliant-g3/

# portsnap fetch (обновляем порты)
# portsnap extract (распаковываем их)
# cd /usr/ports/ports-mgmt/portmaster && make install clean (устанавливаем portmaster для работы с портами)
# portmaster -PP ru-freebsd-doc (документация по умолчанию в каталог /usr/share/doc, не обязательно)
# portmaster /usr/ports/misc/mc  (устанавливаем Midnight Commander)
# drill ya.ru (проверяем DNS)

Русификация консоли во FreeBSD 11.0 Release

Добавляем следующую строку в файл /boot/loader.conf

Не нашел файл boot/loader.conf при разбиение диска под ZFS и вообще каталога /boot , выполнив следующую команду

# zpool import -f bootpool
# ee /boot/loader.conf

Добавляем следующую строку:
kern
.vty=vt

Добавляем в файл /etc/rc.conf способ переключения раскладки в консоли клавишами CTRL+SHIFT

# ee /etc/rc.conf

Добавляем строку:

keymap="ru.win"

Локализуем shell, я использую tcsh, для него редактируем файл ~/.cshrc, добавив в него две следующие строки:

setenv LANG ru_RU.UTF8 
setenv MM_CHARSET UTF8

Заодно сразу поправим строку

setenv EDITOR vi

изменяем на

setenv EDITOR ee

Устанавливаем по умолчанию редактор ee.

Пользователю необходимо прописать класс russian, командой:

# pw user mod user_name L russian

Где user_name — имя пользователя

При создании нового пользователя можно сразу прописать нужный нам класс командой

# pw useradd user_name L russian

Вот и все, заново войдите в shell, для локализации терминала, консоль русифицируется после перезагрузки системы.

Заметки по работе с ZFS

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

# gpart show
=> 63 488397105 ada0 MBR (233G)
 63 1 - free - (512B)
 64 488397096 1 freebsd [active] (233G)
 488397160 8 - free - (4.0K)

=> 0 488397096 ada0s1 BSD (233G)
 0 4194304 1 freebsd-zfs (2.0G)
 4194304 4194304 2 freebsd-swap (2.0G)
 8388608 480008480 4 freebsd-zfs (229G)
 488397088 8 - free - (4.0K)

=> 63 488397105 ada1 MBR (233G)
 63 1 - free - (512B)
 64 488397096 1 freebsd [active] (233G)
 488397160 8 - free - (4.0K)

=> 34 3907029101 ada2 GPT (1.8T)
 34 3907029101 - free - (1.8T)

=> 0 488397096 ada1s1 BSD (233G)
 0 4194304 1 freebsd-zfs (2.0G)
 4194304 4194304 2 freebsd-swap (2.0G)
 8388608 480008480 4 freebsd-zfs (229G)
 488397088 8 - free - (4.0K)

# zpool create pool ada2
root@srv01:/usr/home/andrew # zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
pool 1.81T 408K 1.81T - 0% 0% 1.00x ONLINE -
zroot 228G 2.10G 226G - 0% 0% 1.00x ONLINE -
root@srv01:/usr/home/andrew # zpool destroy pool
root@srv01:/usr/home/andrew # zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
zroot 228G 2.10G 226G - 0% 0% 1.00x ONLINE -
root@srv01:/usr/home/andrew # zpool create data ada2
root@srv01:/usr/home/andrew # zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
data 1.81T 284K 1.81T - 0% 0% 1.00x ONLINE -
zroot 228G 2.10G 226G - 0% 0% 1.00x ONLINE -

# zfs list
NAME USED AVAIL REFER MOUNTPOINT
data 372K 1.76T 96K /data
zroot 2.10G 219G 96K /zroot
zroot/ROOT 803M 219G 96K none
zroot/ROOT/default 803M 219G 803M /
zroot/tmp 136K 219G 136K /tmp
zroot/usr 1.31G 219G 96K /usr
zroot/usr/home 136K 219G 136K /usr/home
zroot/usr/ports 738M 219G 738M /usr/ports
zroot/usr/src 608M 219G 608M /usr/src
zroot/var 692K 219G 96K /var
zroot/var/audit 96K 219G 96K /var/audit
zroot/var/crash 96K 219G 96K /var/crash
zroot/var/log 204K 219G 204K /var/log
zroot/var/mail 104K 219G 104K /var/mail
zroot/var/tmp 96K 219G 96K /var/tmp 
Пришлось перегрузить сервер, так как сервер очень медленно реагировал на команды и не смог после ввода пароля зайти в консоль.
После этого обнаружилось:
# gpart show
=> 63 488397105 ada0 MBR (233G)
 63 1 - free - (512B)
 64 488397096 1 freebsd [active] (233G)
 488397160 8 - free - (4.0K)

=> 0 488397096 ada0s1 BSD (233G)
 0 4194304 1 freebsd-zfs (2.0G)
 4194304 4194304 2 freebsd-swap (2.0G)
 8388608 480008480 4 freebsd-zfs (229G)
 488397088 8 - free - (4.0K)

=> 63 488397105 ada1 MBR (233G)
 63 1 - free - (512B)
 64 488397096 1 freebsd [active] (233G)
 488397160 8 - free - (4.0K)

=> 34 3907029101 ada2 GPT (1.8T) [CORRUPT]
 34 3907029101 - free - (1.8T)

=> 0 488397096 ada1s1 BSD (233G)
 0 4194304 1 freebsd-zfs (2.0G)
 4194304 4194304 2 freebsd-swap (2.0G)
 8388608 480008480 4 freebsd-zfs (229G)
 488397088 8 - free - (4.0K)
Хотел создать заново, вышла ошибка:
# zpool create data ada2
invalid vdev specification
use '-f' to override the following errors:
/dev/ada2 is part of potentially active pool 'data'
# zpool create -f data ada2
# zpool status -v
 pool: bootpool
 state: ONLINE
 scan: none requested
config:

 NAME STATE READ WRITE CKSUM
 bootpool ONLINE 0 0 0
 mirror-0 ONLINE 0 0 0
 ada0s1a ONLINE 0 0 0
 ada1s1a ONLINE 0 0 0

errors: No known data errors

 pool: data
 state: ONLINE
 scan: none requested
config:

 NAME STATE READ WRITE CKSUM
 data ONLINE 0 0 0
 ada2 ONLINE 0 0 0

errors: No known data errors

 pool: zroot
 state: ONLINE
status: One or more devices has experienced an unrecoverable error. An
 attempt was made to correct the error. Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
 using 'zpool clear' or replace the device with 'zpool replace'.
 see: http://illumos.org/msg/ZFS-8000-9P
 scan: none requested
config:

 NAME STATE READ WRITE CKSUM
 zroot ONLINE 0 0 0
 mirror-0 ONLINE 0 0 0
 ada0s1d ONLINE 0 0 8
 ada1s1d ONLINE 0 0 0

errors: No known data errors
 Создаем вложенные файловые системы:
# zfs create data/ftp
# zfs create data/backup

# zfs list
NAME USED AVAIL REFER MOUNTPOINT
bootpool 121M 1,80G 121M /bootpool
data 604K 1,76T 100K /data
data/backup 96K 1,76T 96K /data/backup
data/ftp 96K 1,76T 96K /data/ftp
zroot 2,10G 219G 96K /zroot
zroot/ROOT 803M 219G 96K none
zroot/ROOT/default 803M 219G 803M /
zroot/tmp 136K 219G 136K /tmp
zroot/usr 1,31G 219G 96K /usr
zroot/usr/home 136K 219G 136K /usr/home
zroot/usr/ports 738M 219G 738M /usr/ports
zroot/usr/src 608M 219G 608M /usr/src
zroot/var 696K 219G 96K /var
zroot/var/audit 96K 219G 96K /var/audit
zroot/var/crash 96K 219G 96K /var/crash
zroot/var/log 208K 219G 208K /var/log
zroot/var/mail 104K 219G 104K /var/mail
zroot/var/tmp 96K 219G 96K /var/tmp
Расшариваем:
# zfs set sharenfs=on data
# zfs set sharenfs=rw=@192.168.146.0/8 data

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

Руководство по администрированию файловых систем ZFS Solaris

Небольшое руководство по ZFS

Пошаговая установка freebsd 11 для чайников

Большое, быстрое, стабильное и недорогое хранилище данных +++

 ZFS FreeBSD — Информация по работе с ZFS