创建监狱有多种方法和工具,现在磁盘空间越来越便宜,创建一个完整的监狱(已经编译了一个世界)只是几秒钟的事情:
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目前,为了更新现有的监狱,我使用的方法如下:
for jail in /jails/*; do
make installworld delete-old delete-old-libs DESTDIR=$jail
done它可以工作,但它意味着一个“停机时间”,除了作为一个破坏性的过程,因为没有办法回滚,如果需要。
有一些方法描述了如何创建基本映像,然后使用nullfs只挂载只读框架,或者其他方法使用符号链接,但在所有可能的选项中,我想知道您是如何处理滚动升级的?
尽管使用了工具(例如,如果主机使用的是FreeBSD 11.2,现在已经更新为FreeBSD 12 ),但我还是想要运行一次:
make installworld DESTDIR=/jails/new-base12 SRCCONF=/etc/src-jail.conf然后每个监狱要么升级(zfs),要么修改自定义/etc/fstab.jailname (nullfs),这样,一旦完成,我就可以做一个/etc/rc.d/jails restart并最小化停机时间。
任何最佳实践或方法,记住目标是尽量减少停机时间,如果可能的话,尽可能简化升级或多个监狱?
发布于 2019-02-13 07:07:01
伊兹贾尔涵盖了您描述的用例。回答你的问题:
你是如何处理滚动升级的?
让我引用FreeBSD手册14.6.2.初始设置的话:
To在监狱中填充了安装世界,基座监狱可以通过构建世界在主机上创建的二进制文件安装,其中包含ezjail admin更新.执行安装世界,将主机的/usr/obj安装到基监狱中。
# ezjail-admin update -i -pFWIW,为了自动化安装和配置,我维护了Ansible role freebsd_监牢,用FreeBSD 12.0进行了测试。
回答你的问题:
ezjail是否使用zfs来创建监狱、基库和其他组件,并将nullfs用于只读共享组件?
是的,确实如此。请参阅典型的zfs文件系统列表,2) fstab和3)模板newjail的目录和链接。
$ 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/https://serverfault.com/questions/953596
复制相似问题