RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Я хотел бы участвовать в процессе инсталляции серверов в моей компании.
Как вы знаете, sysinstall в настоящий момент не поддерживает ZFS или GEOM, но я хотел бы показать вам, как преобразовать систему, установленную с помощью sysinstall на работу только с ZFS. Даже если вы не хотите следовать всем указанным шагам, пожалуйста, посмотрите на dataset ZFS, который, после некоторых модификаций, я считаю довольно оптимальным для FreeBSD.
После выполнения нижеуказанных действий вы получите зеркалируемый и зашифрованный файл подкачки, GPT разделы и зеркалируемый системный пул ZFS.
Я предполагаю, что ваш сервер содержит два идентичных диска (ada0 и ada1).
Запустите процесс установки FreeBSD на первом диске, используя обычный установочный CD/DVD. Установите систему, используя тольуо один слайс и один раздел, после чего перезагрузите компьютер.
Ваша система теперь установлена и работает с файловой системой UFS. Внесите следующие исправления в /boot/loader.conf:
geom_eli_load="YES"
geom_label_load="YES"
geom_mirror_load="YES"
geom_part_gpt_load="YES"
zfs_load="YES"
vm.kmem_size="6G" # This should be 150% of your RAM.
vfs.zfs.arc_max="3G" # This should be a little less than the amount of your RAM.
# zpool attach system /dev/gpt/system1 /dev/gpt/system0
(wait for pool to resilver)
# zpool status
pool: system
state: ONLINE
scrub: resilver completed after 0h2m with 0 errors on Mon Aug 2 11:28:45 2010
config:
NAME STATE READ WRITE CKSUM
system ONLINE 0 0 0
mirror ONLINE 0 0 0
gpt/system1 ONLINE 0 0 0 55,5M resilvered
gpt/system0 ONLINE 0 0 0 1,67G resilvered
errors: No known data errors
Ну, собственно, и всё.
BTW. Поскольку ваш /var/log/ сжат ZFS, вы можете отключить сжатие журналов при ротации в /etc/newsyslog.conf.
Ниже я указываю причины, по которым использую именно такой dataset:
Нет никаких манипуляций со свойствами точек монтирования, за исключением корневой. Когда вы работаете с ZFS, может смущать то, что место каталога в ZFS не соответствует точке монтирования. Свойства точки монтирования всегда наследуются, поэтому при ее изменении вы будете знать, что вся структура каталогов, расположенная ниже наследует ее должным образом и нет необходимости в других изменениях.
Обратите внимание на то, что system/usr и system/var не подмонтированы. /usr/bin, /usr/sbin, /var/named и т.д. принадлежат dataset system/root. Это позволяет при обновлении системы создавать снимок только system/root и в случае неудачи откатить его обратно.
Вы можете отключить setuid для всех datasets, за исключением system/root и system/usr/local.
Вы можете использовать сжатие для /usr/src, /usr/obj, /tmp, /var/tmp, /var/log и /var/audit.
Наличие Ос в одном dataset облегчает создание jail. Таким образом, мне для создания jail необходимо клонировать system/root в system/jails/<name> и, при желании, создать дополнительные dataset:
system/jails/<name>/etc
system/jails/<name>/tmp
system/jails/<name>/var
system/jails/<name>/usr (set canmount to off)
system/jails/<name>/usr/local
system/jails/<name>/usr/work (I build ports here)
system/jails/<name>/root (jailed root home directory)
Таким образом, вы можете сделать datasec system/jails/<name> только для чтения и при обновлении основной системы выполнить следующие шаги для обновления jail:
Остановить jail
Переименовать system/jails/<name> в system/jails/<name>_old
Снова клонировать system/jails/<name> из system/root
Переименовать все dataset, располагающиеся ниже system/jails/<name>_old в созданный system/jails/<name>