Объявление: В ближайшее врема, возможность комментировать записи в блогах с учетной записью социальной сети ВКонтакте, будет удалена! В силу неприятия данной социально сети владельцем блога. Комментарии постараюсь сохранить.

Слава Україні! Ла-ла-ла-ла!...

Блог Морозов

Заметки, идеи, мысли...

FreeBSD 9: установка на ZFS

Автор: MadHead
MadHead
DevOps, Системный администратор, работающий как с Windows, так и UNIX системами.
Пользователей в сайте сейчас нет
Создано: Среда, 17 Июль 2013 в FreeBSD

С момента, когда я узнал о особенностях ZFS прошло не так много времени (я и раньше знал о существовании данной файловой системы, но на "существовании" мои познания заканчивались)... Хотя я уже успел перевести свой домашний сервер на эту файловую систему.

Миграция прошла фактически без проблем (руководствовался статьями Удалённая миграция с UFS на ZFS и Installing FreeBSD Root on ZFS (Mirror) using GPT и собственным опытом), но эта заметка несколько о ином...

Мне нужно было поддержать советом человека, которы будет устанвливать FreeBSD 9 на ZFS. Дабы не полагаться на память я взял статью Installing FreeBSD 9.0 (or later) Root on ZFS using GPT и решил откатать процедуру на виртуальной машине... Все оказалось не так гладко, как написано... Точнее все работает, но с некоторыми оговорками. Так что предлагаю, пусть не совсем "свой", но адаптированный мной метод установки. (В большинстве случаев шаги будут совпадать с оригиналом статьи, но на русском, отличия я буду указывать)

 

 

Сразу оговорюсь, что использовать мы будем не MBR, а GPT разметку диска. Обусловлено это тем, что FreeBSD нумерацию дисков определяет во время загрузки. Если мы удаляем-добавляем диск на сервер, то нумерация может поменяться (при использовании MBR) и пул хранения данных перестает работать и начинает сходить с ума. При использовании GPT мы оперируем не номерами дисков, а метками (записаны на диск), поэтому путаницы не возникает. Но это так, лирическое отступление-объяснение...

Перейдем наконец к установке. Берем загрузочный диск (CD, DVD, USB), загружаемся...

Теперь выбираем не "Install", а "Shell" и попадаем в оболочку UNIX

Нужно создать разметку диска (я буду описывать использование одного диска, это имеет мало смысла, но дает простор для творчества в дальнейшем, также укажу отличия, для использования 2 дисков в режиме зеркала). Делается это утилитой gpart

gpart destroy -F ada0                                  # уничтожаем текущую разметку
gpart create -s gpt ada0                               # создаем таблицу разметки
gpart add -s 222 -a 4k -t freebsd-boot -l boot0 ada0   # создаем загрузочный раздел
gpart add -s 2g -a 4k -t freebsd-swap -l swap0 ada0    # создаем область подкачки 2Gb
gpart add -a 4k -t freebsd-zfs -l disk0                # остальное место отводим под файловую систему
# далее нужно записать загрузочный код
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0

Если у нас 2 диска, то для второго (ada1 скажем) нужно проделать все тоже самое (включая запись загрузочного кода) с тем отличием, что метки будут: boot1, swap1, disk1

Теперь нужно загрузить модули ядра для работы с ZFS

kldload opensolaris
kldload zfs

Теперь можно приступать к созданию пула хранения:

# при использовании одного диска
zpool create -o altroot=/mnt -O canmount=off zroot /dev/gpt/disk0
# при использовании зеркалирования на 2 диска
zpool create -o altroot=/mnt -O canmount=off zroot mirror /dev/gpt/disk0 /dev/gpt/disk1
# простомтерь статус после создания
zpool status -v

Создаем и настраиваем файловые системы для нашего сервера

zfs set checksum=fletcher4 zroot  # устанавливаем алгоритм проверки целостности
zfs set atime=off zroot           # отключаем обновление времени доступа при чтении

# нарезаем файловые системы
zfs create -o mountpoint=/ zroot/ROOT

zfs create -o exec=on -o setuid=off zroot/tmp
chmod 1777 /mnt/tmp

zfs create zroot/usr
zfs create zroot/usr/local

zfs create -o compression=lzjb -o setuid=off zroot/usr/ports
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages

zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/usr/src
zfs create zroot/usr/obj

zfs create zroot/var
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash
zfs create -o exec=off -o setuid=off zroot/var/db
zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg
zfs create -o exec=off -o setuid=off zroot/var/empty
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log
zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail
zfs create -o exec=off -o setuid=off zroot/var/run
zfs create -o exec=on -o setuid=off zroot/var/tmp
chmod 1777 /mnt/var/tmp

zfs create zroot/home

На этом подготовка файловой структуры закончена, вводим последнюю команду

exit

Теперь проводим установку системы. Разметку выбираем в ручном режиме (shell) и выходим - мы ее уже сделали. Когда инсталяция закончена нам предлагают перезагрузку или открыть шел в новой системе. Открываем шел - завершим настройку.

Активируем область подкачки (я использовал редактор vi, но можно и иначе) в файле /tmp/bsdinstall_etc/fstab для каждой области подкачки создаем запись вида:

/dev/gpt/swap0 none swap sw 0 0

Монтируем devfs (возможно это надо сделать до активации области подкачки, не помню)

mount -t devfs devfs /dev

Добавляем загрузку модулей ZFS в конфигурационные файлы

echo 'zfs_enable="YES"' >>/etc/rc.conf
echo 'zfs_load="YES"' >>/boot/loader.conf

Размонтируем файловую систему и назначаем новые точки монтирования

zfs unmount -a
# вероятно тут будет выдана ошибка, тогда используем команду: umount -f /mnt
zpool set bootfs=zroot/ROOT
zfs set mountpoint=/ zroot/ROOT
zfs set mountpoint=/zroot zroot
zfs set mountpoint=/tmp zroot/tmp
zfs set mountpoint=/usr zroot/usr
zfs set mountpoint=/var zroot/var
zfs set mountpoint=/home zroot/home
zfs set readonly=on zroot/var/empty

Теперь пора затаить дыхание и перезагрузить сервер.

P.S. - в статье, что я указывал выше, есть пункт экспорта пула, но после экспорта система не загружается, пока не сделашь импорт... поэтому я этот сомнительный шаг упустил.

0 голоса(ов)
Облака: FreeBSD, ZFS, ZFSROOT

Не достаточно прав для добавления комментариев (только зарегистрированные пользователи)

Tekstkontent