23.6. Atualização de várias máquinas
Anterior | Capítulo 23. Atualização e Upgrade do FreeBSD | Próxima

## 23.6. Atualização de várias máquinas

Contribuído por Mike Meyer.

Quando várias máquinas precisam rastrear a mesma árvore de código-fonte, é um desperdício de espaço em disco, largura de banda de rede e ciclos de CPU se cada sistema tiver que baixar o código-fonte e recompilar tudo. A solução é ter uma máquina fazendo a maior parte do trabalho, enquanto o resto das máquinas montam esse trabalho via NFS. Esta seção descreve um método para fazer isso. Para maiores informações sobre o uso de NFS, consulte Seção 29.3, “Network File System (NFS)”.

Primeiro, identifique um conjunto de máquinas que executará o mesmo conjunto de binários, conhecido como conjunto de compilação. Cada máquina pode ter um kernel customizado, mas executará os mesmos binários do userland. A partir desse conjunto, escolha uma máquina para ser a máquina de compilação em que o sistema base e o kernel serão compilados. Idealmente, esta deverá ser uma máquina rápida que tenha CPU suficiente disponível para executar o `make buildworld` e o `make buildkernel`.

Selecione uma máquina para ser a máquina de teste, que testará as atualizações de software antes de serem colocadas em produção. Esta deve ser uma máquina que você possa se dar ao luxo de ficar inativa por um longo período de tempo. Pode ser a máquina de compilação, mas não precisa ser.

Todas as máquinas neste conjunto de compilação precisam montar o `/usr/obj` e o `/usr/src` da máquina de compilação através do NFS. Para vários conjuntos de compilação, o `/usr/src` deve ser um sistema de arquivos local na máquina de compilação e um sistema montado por NFS nas demais.

Certifique-se de que o `/etc/make.conf` e o `/etc/src.conf` em todas as máquinas no conjunto de compilação concordem com a máquina de compilação. Isso significa que a máquina de compilação deve compilar todas as partes do sistema base que qualquer máquina no conjunto de compilação irá instalar. Além disso, cada máquina de compilação deve ter seu nome de kernel definido com `KERNCONF` em `/etc/make.conf`, e a máquina de compilação deve listá-los todos em seu `KERNCONF`, listando seu próprio kernel primeiro. A máquina de compilação deve ter os arquivos de configuração do kernel para cada máquina em seu `/usr/src/sys/`arch`/conf`.

Na máquina de compilação, compile o kernel e o mundo conforme descrito em Seção 23.5, “Atualizando o FreeBSD a partir do código fonte”, mas não instale nada na máquina de compilação. Em vez disso, instale o kernel compilado na máquina de teste. Na máquina de teste, monte `/usr/src` e o `/usr/obj` via NFS. Em seguida, execute `shutdown now` para ir para o modo de usuário único para instalar o novo kernel e o restante do sistema base e execute o `mergemaster` como de costume. Quando terminar, reinicialize para retornar às operações multiusuário normais.

Depois de verificar se tudo na máquina de teste está funcionando corretamente, use o mesmo procedimento para instalar o novo software em cada uma das outras máquinas no conjunto de compilação.

A mesma metodologia pode ser usada para a árvore de ports. O primeiro passo é compartilhar o `/usr/ports` via NFS para todas as máquinas no conjunto de compilação. Para configurar o `/etc/make.conf` para compartilhar os distfiles, configure o `DISTDIR` para um diretório compartilhado que possa ser escrito por qualquer usuário `root` mapeado pela montagem NFS. Cada máquina deve definir o `WRKDIRPREFIX` para um diretório de compilação local, se os ports precisarem ser compilados localmente. Como alternativa, se o sistema de compilação tiver que compilar e distribuir pacotes para as máquinas no conjunto de compilação, configure o `PACKAGES` no sistema de compilação para um diretório semelhante ao `DISTDIR`.

Anterior | Acima | Próxima
23.5. Atualizando o FreeBSD a partir do código fonte | Principal | Capítulo 24. DTrace

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.