25.9 跟踪多台机器

贡献者Mike Meyer.

  如果您有多台机器想跟踪同样的源码树, 那么让它们都下载源码并重建所有东西,看起有点浪费资源: 磁盘空间、网络带宽以及 CPU 周期。 解决的办法是让一台机器处理大部分的工作,而其它的机器通过 NFS 挂接 (mount) 这些工作。这部分列举了一种这样做的方法。

25.9.1 准备

  首先,确定一批机器,运行的二进制代码是同一套---我们称作 构建集群 (build set)。 每台机器可以使用不同的定制内核, 但它们运行的是相同的用户区二进制文件(userland binaries)。 从这批机器中选择一台机器做为 构建机器(build machine)。 这将是用于构建(build)系统和内核的机器。想像一下,它应该是一台快速的机器, 有足够的空余的 CPU 来执行make buildworld。 您也想要选一台机器做为 测试机器(test machine), 这个将用于软件的更新生成产品之前对他们进行测试。这个 必须 是一台您能提供的平时也可使用的机器。 它可以是“构建机器”,但没这个必要。

  在这个“构建集群”里的所有机器需要从同一台机器、 同一个点上挂接 /usr/obj/usr/src。理想地, 它们在“构建机器”上的两个不同的驱动器里, 但是在那台机器上可以进行 NFS 挂接。如果您有多个“构建集群”, /usr/src 应该在某个“构建机器”上, 而在其它机器上进行 NFS 挂接。

  最后,确认“构建集群”里所有机器上的 /etc/make.conf/etc/src.conf 与“构建机器”里的相同。 这意味着“构建机器”必须构建部分基本系统用于 “构建集群”里所有机器的安装。同样, 每台“构建机器”要有它自已的内核名字,使用 /etc/make.conf 里的 KERNCONF 进行设置,并且每台“构建机器”应该把它们列在 KERNCONF 里,同时把自已的内核列在最前。 “构建机器”的 /usr/src/sys/arch/conf 里一定要有每台机器的内核配置文件,如果它想构建它们的内核的话。

25.9.2 基本系统

  既然所有的妥当了,就准备构建所有的东西。如第 25.7.7.2 节中描述的一样在“构建机器”上构建内核和系统, 但是什么也不安装。在构建结束后,转到“测试机器”上, 安装您刚构建的内核。如果这台机器通过 NFS 挂接了 /usr/src/usr/obj, 在您重启到单用户模式里,您需要启动网络然后挂接他们。 最简单的方式是启动到多用户模式下,然后执行 shutdown now 转到单用户模式。一旦进入,您就可以安装新的内核和系统,并执行 mergemaster,就像平常一样。完成后, 重启返回到一般多用户模式操作这台机器。

  在您确信所有在 “测试机”里都工作正常后, 就使用相同的过程在 “构建集群”里的其它机器里安装新的软件。

25.9.3 Ports

  类似的想法是使用 ports 树。 第一个关键的步骤是从同一台计算机上挂接 /usr/ports 到 “构建集群” 里的全部计算机。 然后正确设置 /etc/make.conf 共享 distfiles。您应把 DISTDIR 设置到一个共享的目录里, 那里可以被任何一个 root 用户写入, 并且是由您的 NFS 挂接映射的。 设置每一台机器的 WRKDIRPREFIX 到一个本地构建 (build) 目录。最后,如果您要构建和发布包 (packages),那么您应该设置 PACKAGES 到一个类似于 DISTDIR 的目录。

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

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