Глава 8. Установка на ZFS

Весь смысл изучения ZFS заключается в применении файловой системы на машине. Давайте обсудим установку на ZFS FreeBSD 10.

Если необходимо установить целую кучу машин FreeBSD, например, фермe серверов, мы рекомендуем установщик PC-BSD. Сценарии наподобие демонстрируемые здесь хороши для установок по случаю для несколько машин, однако если вы настраиваете машины стойками, вы на самом деле нуждаетесь в установщике на основе PXE.

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

Когда у вас есть очень очень много дисков, отделяйте вашу операционную систему от ваших данных. FreeBSD и хорошая выборка дополнительного программного обеспечения прекрасно разместятся в зеркалированном пуле или в RAID-Z. Вам не нужен RAIDZ-3 только для операционной системы! Если у вас есть сотни дисков для хранения данных, используйте раздельные пулы для операционной системы и данных. При сотнях дисков Лукас хотел бы всего несколько отдельных пулов, но он старый хрен. Джуд залил бы всё в один гигантский пул. Один неправильный выбор может создать вам очень много работы.

Данная глава подразумевает, что вы знакомы с разбиением на разделы GPT, инструментами наподобие FreeBSD gpart(8) и типами разделов FreeBSD. Если нет, освежите знания по документации FreeBSD или, возможно, прочтите FreeBSD Mastery: Storage Essentials. (FMSE также охватывает сценарии установки и другие профессиональные техники установки.)

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

Однако начните с эталонной установки FreeBSD.

 Эталонная установка FreeBSD

перед установкой настроенной под ваши нужды системы FreeBSD, установите небольшую виртуальную машину ZFS FreeBSD в качестве эталонной платформы. Это снабдит вас большим объёмом информации о стандартной установке FreeBSD. Установка вашей собственной системы это прекрасно, но не отказывайтесь от всех тщательно предусмотренных по умолчанию назначений, используемых установщиком. Возможно имеющиеся у вас цели подстройки установки по ее ходу не допускаются, не ликвидируют все стандарты FreeBSD.

Загрузите свою эталонную платформу, станьте root-ом и выполните zpool history для просмотра того, как была создана данная ZFS.

# zpool history
History for 'zroot':
2015-04-08.07:18:30 zpool create -o altroot=/mnt -O compress=lz4 -O atime=off -m none -f zroot raidz1 da0p3.nop da1p3.nop da2p3.nop
2015-04-08.07:18:30 zfs create -o mountpoint=none zroot/ROOT
2015-04-08.07:18:30 zfs create -o mountpoint=/ zroot/ROOT/default
2015-04-08.07:18:30 zfs create -o mountpoint=/tmp -o exec=on -o setuid=off zroot/tmp
...
	   

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

 Выделение разделов пользовательской установки ZFS

Загрузите в ваш установщик FreeBSD образ и выберите install. Когда вы достигните места где вы создаете разделы дисков, выберите режим командной строки вместо любого автоматического метода или действия по инструкции. Вы также можете воспользоваться чем-то наподобие mfsBSD для выбранной вами версии, если вы находите это удобным.

 Разбиение диска

Когда компьютер загрузится, он попытается найти операционную систему на носителе. Для FreeBSD это будет начальный загрузчик. FreeBSD предоставляет начальный загрузчик gptzfsboot(8) специально для загрузки с пулов ZFS. Аппаратный BIOS {Прим. пер.: правильнее для современных машин использовать термин UEFI} загружает ваш начальный загрузчик, который активирует пул и запускает ядро ​​FreeBSD. Каждый диск в каждом виртуального устройства в загрузочном пуле должен иметь установленный загрузчик ZFS, что означает, что на дисках должны быть созданы разделы. Максимальный размер раздела начального загрузчика FreeBSD только чуть-чуть больше 512кБ по некоторой странной причине, так что назначайте для начального загрузчика 512кБ. Затем мы выделим 1ГБ для раздела подкачки FreeBSD и выделим оставшееся пространство для ZFS. Разделы подкачки и ZFS выравниваются на границы 1МБ.

Хотя я применяю такие короткие имена для своих меток GPT для учебных целей, мы строго рекомендуем вам использовать метки на основе местоположения, как это обсуждалось в Главе 0.

# gpart add –a 1m -t freebsd-boot -s 512k -l zfsboot da0
da0p1 added
# gpart add –a 1m -t freebsd-swap -s 1g -a 1m -l swap0 da0
da0p2 added
# gpart add –a 1m -t freebsd-zfs -a 1m -l zfs0 da0
da0p3 added
	   

Теперь установите начальный загрузчик FreeBSD на этот диск. Каждый диск, с которого вам нужно выполнять загрузку, должен иметь начальный загрузчик.

# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
bootcode written to da0
	   

Повторите эту процедуру для каждого диска, содержащегося в данном пуле хранения.

 Создание пула

Соберите ваши диски в ваш корневой пул хранения, находясь все еще в командной строке приглашения форматирования диска. Общепринято называть корневой пул как-то типа system, или zroot, или вы можете назвать его именем хоста. Делайте все что удобно вашей среде. Я, например, называю пул zroot, так что это соответствует имени, используемому по умолчанию установщиком FreeBSD.

Взглянем на zpool history установки FreeBSD по умолчанию и рассмотрим что она отображает.

2015-04-08.07:18:30 zpool create -o altroot=/mnt -O compress=lz4 -O atime=off -m none -f zroot raidz1 da0p3.nop da1p3.nop da2p3.nop
	   

Это система FreeBSD 10.1. Установщик временно смонтировал загрузочный пул в /mnt, и мы на самом деле должны оставить это так чтобы установщик мог продолжить работу. Нам нужны дополнительные параметры наподобие установок compression в lz4 и запрета atime. -m none просит zpool(8) не назначать точку монтирования для этого пула. Применение -f просит zpool(8) игнорировать любую другую информацию на этих дисках. Свойство altroot предоставляет временную точку монтирования, как это обсуждалось в Главе 4 {Прим. пер.: так в оригинале, на самом деле обсуждение свойства altroot идет только в разделе Переименование импортированных пулов в Главе 5.}

Установщик 10.1 еще не обновлен {на момент написания книги} для получения преимуществ vfs.zfs.min_auto_ashift sysctl, но я собираюсь ими сейчас воспользоваться.

# sysctl vfs.zfs.min_auto_ashift=12
	   

Теперь ZFS использует сектора с 4096 байтами. Создадим наш пул. Мы тырим все параметры установки FreeBSD по умолчанию, заменяя только те, которые хотим изменить.

# zpool create -o altroot=/mnt -O compress=lz4 -O atime=off -m none -f zroot mirror gpt/zfs0 gpt/zfs1 cache gpt/zcache0 log gpt/zlog0
	   

Скорее всего, установки пула FreeBSD нормальные. Возможно, вы захотите подстроить наборы данных.

 Наборы данных

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

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

Вот некоторые выдержки из zpool history с эталонного хоста FreeBSD с опусканием временных отметок.

zfs create -o mountpoint=none zroot/ROOT
zfs create -o mountpoint=/ zroot/ROOT/default
zfs create -o mountpoint=/tmp -o exec=on -o setuid=off zroot/tmp
zfs create -o mountpoint=/usr -o canmount=off zroot/usr
zfs create zroot/usr/home
zfs create -o setuid=off zroot/usr/ports
zfs create zroot/usr/src
zfs create -o mountpoint=/var -o canmount=off zroot/var
zfs create -o exec=off -o setuid=off zroot/var/crash
zfs create -o exec=off -o setuid=off zroot/var/log
zfs create -o atime=on zroot/var/mail
zfs create -o setuid=off zroot/var/tmp
zpool set bootfs=zroot/ROOT/default zroot
zpool set cachefile=/mnt/boot/zfs/zpool.cache zroot
	   

Вы легко можете добавить сюда ваши собственные наборы данных, создав zroot/var/mysql или переместив /home из /usr, или еще что-то нужное вам.

Создание наборов данных сопряжено с обильным набором данных с клавиатуры. Мы рекомендуем создавать сценарии установки, как это обсуждается в книге FreeBSD Mastery: Storage Essentials.

Когда вы получите свои наборы данных, выйдите из командной строки создания разделов , тем самым возобновив работу установщика.

 Настройка после установки

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

Убедитесь что ZFS запустилась в /etc/rc.conf. Это монтирует ваши наборы данных файловых систем при загрузке.

zfs_enable=yes
	   

Измените /boot/loader.conf, чтобы сообщить FreeBSD о необходимости загрузки ZFS и соответствующих модулей ядра при начальной загрузке.

zfs_load="YES"
	   

Здесь вы также можете сделать любые другие нужные вам изменения системы.

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

Когда завершите, перезагрузитесь и вы в новую, настроенную под ваши потребности установку FreeBSD!

 Установка FreeBSD вручную

Если вы должны перейти в командную строку для создания разделов на ваших дисках, вы можете также установить файлы FreeBSD на свой диск самостоятельно. Файлы дистрибутива FreeBSD находятся в /usr/freebsd-dist и вы записываете их на свой диск посредством tar(1). Ваше место назначения установки смонтировано в /mnt.

# tar --unlink -xpJf base.txz -C /mnt
# tar --unlink -xpJf kernel.txz -C /mnt
	   

Вы можете установить и другие наборы дистрибутива, однако base и kernel являются критически важными.

Вашей установке понадобится /etc/fstab для файлов подкачки, даже если больше ничего не надо. Создайте его в /mnt/etc/fstab. Вы также можете изменить критически важные системные файлы, такие как /mnt/etc/rc.conf и /mnt/boot/loader.conf.

После небольшого объема работ и тестирований вы можете сделать свою установку ZFS {Прим. пер.: FreeBSD?} как простой, так и сложной по своему желанию.

Точно так же, как вы можете поступать с ZFS.