26.7.多台机器的追踪
当多个机器需要跟踪相同的源代码树时,让每台机器下载源代码并重新编译所有内容会浪费磁盘空间、网络带宽和 CPU 资源。解决方案是让一台机器执行大部分工作,其它机器通过 NFS 挂载该机器的工作内容。本节概述了这种方法。有关使用 NFS 的更多信息,请参阅 Network File System (NFS)。
首先,识别一组将运行相同二进制文件的机器,称为 构建集(build set)。每台机器可以有一个自定义内核,但将运行相同的用户空间二进制文件。在这个中,选择一台机器作为 构建机器,用于构建世界(world)和内核。理想情况下,这台机器应该是快速的,具有足够的 CPU 空闲时间来运行 make buildworld
和 make buildkernel
。
选择一台机器作为 测试机器,在将软件更新投入生产之前对其进行测试。这台机器 必须 是能够承受长时间停机的机器。它可以是构建机器,但不一定非得是构建机器。
该构建集中的所有机器都需要通过 NFS 挂载 /usr/obj 和 /usr/src,并从构建机器访问这些目录。对于多个构建集,/usr/src 应该仅在一台构建机器上,并通过 NFS 挂载到其它机器上。
确保构建集中的所有机器上的 /etc/make.conf 和 /etc/src.conf 与构建机器上的一致。这意味着构建机器必须构建所有构建集中的机器将要安装的基本系统的部分。同时,每台构建机器应在其 /etc/make.conf 中使用 KERNCONF
设置其内核名称,并且构建机器应将所有内核名称列在其 KERNCONF
中,首先列出自己的内核。构建机器必须在其 /usr/src/sys/arch/conf 中有每台机器的内核配置文件。
在构建机器上,按照 从源代码更新 FreeBSD 中的描述构建内核和世界,但不要在构建机器上安装任何东西。相反,将构建好的内核安装到测试机器上。在测试机器上,通过 NFS 挂载 /usr/src 和 /usr/obj。然后,运行 shutdown now
进入单用户模式,安装新内核和世界,并像往常一样运行 etcupdate
。完成后,重启以返回正常的多用户操作模式。
在确认测试机器上的一切都正常后,使用相同的程序将新软件安装到构建集中的其它机器上。
相同的方法可以用于 Ports 树。第一步是通过 NFS 共享 /usr/ports 给构建集中的所有机器。要配置 /etc/make.conf 来共享 distfiles,将 DISTDIR
设置为一个所有 NFS 挂载用户(通常是 root)可写的共享目录。如果需要在本地构建 Port,可以设置每台机器的 WRKDIRPREFIX
为本地构建目录。或者,如果构建系统需要构建并分发包到构建集中的机器上,可以在构建系统上将 PACKAGES
设置为类似于 DISTDIR
的目录。
最后更新于
这有帮助吗?