23.6. 多部机器追踪

Contributed by Mike Meyer.

当有多部主机需要追踪相同的源码树,要在每一部主机的系统下载源码与重新编译所有的东西会耗费不少磁盘空间、网络频宽与CPU运算,要解决这个问题的方法是先在一部主机上做完大部份的工作,而其余的主机透过NFS挂载使用编译完的成果。本节会介绍如何做这件事。要取得更多有关使用NFS的信息请参考第 29.3 节 “网络文件系统(NFS)”

首先,要先确认要执行同一组Binary的一群主机,这群主机又称作建置集(Build set),其中每部主机可以有自己的自定义核心,但会执行相同的Userland binary。建置集中需挑选一部做为建置主机(Build machine),这部主机将会拿来编译World与核心(Kernel),理想情况下,要挑选一部速度较快、有足够的CPU能够执行make buildworldmake buildkernel的主机。

再挑选一部主机做为测试主机(Test machine),这部主机,要在将系统更新上正式运作的环境前做测试,这必须一部能够承受服务停止一段时间的主机,它也可是同时是建置主机,但不是一定要。

所有在此建置集中的主机需要透过NFS挂载在建置主机上的/usr/obj/usr/src。在有多个建置集时,/usr/src也应放在其中一部建置主机,然后由其他主机使用NFS挂载。

确保在建置集中的所有主机的/etc/make.conf/etc/src.conf与建置主机一致,这是由于建置主机必须编译整个基础系统(Base system)给所有建置集中的主机安装。此外,每一部建置主机应在/etc/make.conf使用KERNCONF设定其核心名称,且建置主机应列出所有要编译的核心名称在KERNCONF,并且把自己要用的核心放在第一个。建置主机也必须有每部主机的核心配置文件在其/usr/src/sys/arch/conf

在建置主机上,编译核心与World如第 23.5 节 “从源码更新FreeBSD”所述,但不要在建置主机上安装所有编译好的东西,而是要将编译好的核心安装到测试主机,在测试主机透过NFS挂载/usr/src/usr/obj。然后执行shutdownnow进入单使用者模式来安装新的核心与World并如同往常执行mergemaster。完成之后,重启回到正常的多使用者模式运作。

在测试主机上检验完所有东西皆运作正常之后,使用相同的程序将编译好的结果安装到在建置集中的其他主机。

同样的方法也可用在Port树,第一个步骤是透过NFS共享/usr/ports给所有在建置集中的主机。要设定/etc/make.conf使用共享的distfiles,可设定 DISTDIR为由NFS挂载对应到的使用者root可写入的通用共享目录。每一台主机应设定WRKDIRPREFIX到一个本地的编译目录,若Port要在本地编译。或者,若建置系统要编译并散布套件到建置集中的主机可在建置系统上设定PACKAGES到一个类似DISTDIR的目录。

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.