Глава 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, установите небольшую виртуальную машину 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 ...
Вы воспользуемся этой информацией в процессе установки для подстройки нашей инсталляции.
Загрузите в ваш установщик 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 находятся в /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.