首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更新和维护多个监狱(ZFS & nullfs骨架)

如何更新和维护多个监狱(ZFS & nullfs骨架)
EN

Server Fault用户
提问于 2019-02-12 19:39:05
回答 1查看 899关注 0票数 0

创建监狱有多种方法和工具,现在磁盘空间越来越便宜,创建一个完整的监狱(已经编译了一个世界)只是几秒钟的事情:

代码语言:javascript
复制
zfs create tank/jails/sandbox
zfs create tank/jails/sandbox/home
zfs create tank/jails/sandbox/tmp
make installworld DESTDIR=/jails/sandbox SRCCONF=/etc/src-jail.conf

目前,为了更新现有的监狱,我使用的方法如下:

代码语言:javascript
复制
for jail in /jails/*; do
   make installworld delete-old delete-old-libs DESTDIR=$jail  
done

它可以工作,但它意味着一个“停机时间”,除了作为一个破坏性的过程,因为没有办法回滚,如果需要。

有一些方法描述了如何创建基本映像,然后使用nullfs只挂载只读框架,或者其他方法使用符号链接,但在所有可能的选项中,我想知道您是如何处理滚动升级的?

尽管使用了工具(例如,如果主机使用的是FreeBSD 11.2,现在已经更新为FreeBSD 12 ),但我还是想要运行一次:

代码语言:javascript
复制
make installworld DESTDIR=/jails/new-base12 SRCCONF=/etc/src-jail.conf

然后每个监狱要么升级(zfs),要么修改自定义/etc/fstab.jailname (nullfs),这样,一旦完成,我就可以做一个/etc/rc.d/jails restart并最小化停机时间。

任何最佳实践或方法,记住目标是尽量减少停机时间,如果可能的话,尽可能简化升级或多个监狱?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2019-02-13 07:07:01

伊兹贾尔涵盖了您描述的用例。回答你的问题:

你是如何处理滚动升级的?

让我引用FreeBSD手册14.6.2.初始设置的话:

To在监狱中填充了安装世界,基座监狱可以通过构建世界在主机上创建的二进制文件安装,其中包含ezjail admin更新.执行安装世界,将主机的/usr/obj安装到基监狱中。

代码语言:javascript
复制
# ezjail-admin update -i -p

FWIW,为了自动化安装和配置,我维护了Ansible role freebsd_监牢,用FreeBSD 12.0进行了测试。

回答你的问题:

ezjail是否使用zfs来创建监狱、基库和其他组件,并将nullfs用于只读共享组件?

是的,确实如此。请参阅典型的zfs文件系统列表,2) fstab和3)模板newjail的目录和链接。

代码语言:javascript
复制
$ zfs list
NAME                   USED  AVAIL  REFER  MOUNTPOINT
zroot                 3.04G   104G    23K  /zroot
zroot/jails           3.03G   104G    63K  /local/jails
zroot/jails/basejail  1.54G   104G  1001M  /local/jails/basejail
zroot/jails/build      281M   104G   281M  /local/jails/build
zroot/jails/newjail   2.29M   104G  2.29M  /local/jails/newjail
zroot/jails/test_01    977M   104G   977M  /local/jails/test_01
zroot/jails/test_02    134M   104G   134M  /local/jails/test_02
zroot/jails/test_03    134M   104G   134M  /local/jails/test_03

$ cat /etc/fstab.test_01 
/local/jails/basejail /local/jails/test_01/basejail nullfs ro 0 0

$ ll /local/jails/newjail/
total 25
drwxr-xr-x  13 root  wheel    23 Jan 21 17:19 ./
drwx------   9 root  wheel     9 Jan 21 17:19 ../
-rw-r--r--   2 root  wheel   951 Dec  7 05:13 .cshrc
-rw-r--r--   2 root  wheel   470 Dec  7 05:13 .profile
drwxr-xr-x   2 root  wheel     2 Jan 21 17:19 basejail/
lrwxr-xr-x   1 root  wheel    13 Jan 21 17:18 bin@ -> /basejail/bin
lrwxr-xr-x   1 root  wheel    14 Jan 21 17:18 boot@ -> /basejail/boot
-r--r--r--   1 root  wheel  6177 Dec  7 05:17 COPYRIGHT
dr-xr-xr-x   2 root  wheel     2 Dec  7 05:11 dev/
drwxr-xr-x  25 root  wheel   103 Jan 21 17:19 etc/
lrwxr-xr-x   1 root  wheel    13 Jan 21 17:18 lib@ -> /basejail/lib
lrwxr-xr-x   1 root  wheel    17 Jan 21 17:18 libexec@ -> /basejail/libexec
drwxr-xr-x   2 root  wheel     2 Dec  7 05:11 media/
drwxr-xr-x   2 root  wheel     2 Dec  7 05:11 mnt/
drwxr-xr-x   2 root  wheel     2 Dec  7 05:11 net/
dr-xr-xr-x   2 root  wheel     2 Dec  7 05:11 proc/
lrwxr-xr-x   1 root  wheel    16 Jan 21 17:18 rescue@ -> /basejail/rescue
drwxr-xr-x   2 root  wheel     6 Dec  7 05:17 root/
lrwxr-xr-x   1 root  wheel    14 Jan 21 17:18 sbin@ -> /basejail/sbin
lrwxr-xr-x   1 root  wheel    11 Dec  7 05:11 sys@ -> usr/src/sys
drwxrwxrwt   2 root  wheel     2 Dec  7 05:11 tmp/
drwxr-xr-x   6 root  wheel    15 Jan 21 17:19 usr/
drwxr-xr-x  25 root  wheel    25 Jan 21 17:19 var/
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/953596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档