2. Requisitos para espelhar o FreeBSD

2.1. Espaço em disco

Espaço em disco é um dos requisitos mais importantes. Dependendo do conjunto de releases, de arquiteturas e do grau de cobertura que você deseja que seu site espelho tenha, uma enorme quantia de espaço em disco pode ser consumida. Também tenha em mente que os sites oficiais provavelmente precisam estar completos. O repositório CVS e as páginas web devem ser sempre espelhados de forma completa. Também observe que os números mencionados neste artigo estão refletindo o estado atual (9.3-RELEASE/10.0-RELEASE). Desenvolvimentos futuros e novas releases apenas irão aumentar o espaço requerido. Certifique-se de manter algum espaço extra (entre 10 e 20%) disponível, em relação as estimativas abaixo, apenas por segurança. Aqui estão algumas estimativas aproximadas:

  • Distribuição FTP completa: 1.0 TB

  • Repositório CVS: 5.4 GB

  • Deltas CTM: 3.2 GB

  • Páginas Web: 463 MB

O uso atual de espaço em disco pela distribuição FTP pode ser encontrada em ftp://ftp.FreeBSD.org/pub/FreeBSD/dir.sizes.

2.2. Conectividade de rede e largura de banda

É claro que você precisa estar conectado à Internet. A largura de banda que será necessária dependerá do uso previsto para o seu site espelho. Se você só quer espelhar algumas partes do FreeBSD para uso local no seu Site/Intranet, a demanda pode ser muito menor do que se você quiser tornar os arquivos disponíveis publicamente. Se você pretende se tornar um site espelho oficial, a largura de banda necessária será ainda maior. Desta forma, nós só podemos dar estimativas grosseiras em relação a este item:

  • Site local, sem acesso público: basicamente nenhum, mas um link menor que 2 Mbps pode tornar o processo de sincronismo muito lento.

  • Site público não oficial: um link de 34 Mbps é provavelmente um bom ponto de partida.

  • Site oficial: recomenda-se um link de no mínimo 100 Mbps, e o seu servidor deverá estar conectado o mais próximo possível do seu roteador de borda.

2.3. Requisitos de sistema, CPU e Memória RAM

O dimensionamento destes itens depende do número esperado de clientes simultâneos, o que é determinado pela política de uso do servidor. Estes requisitos também são afetados pelo tipo de serviço que você deseja oferecer. Serviços básicos de FTP ou HTTP podem não necessitar de uma grande quantidade de recursos. Mas fique atento se você for disponibilizar os serviços de CVSup, rsync ou mesmo de AnonCVS. Estes serviços podem ter um enorme impacto nos requisitos de CPU e de memória. Especialmente o rsync, o qual é considerado um devorador de memória, e o CVSup certamente consome um pouco da CPU. No caso do AnonCVS pode ser interessante configurar um sistemas de arquivos residente em memória (MFS) de no mínimo 300 MB, desta forma você precisa considerar este consumo quando avaliar a quantidade de memória requerida. A seguir você irá encontrar alguns exemplos, os quais visam apenas lhe dar uma idéia por alto das necessidades.

Para um site de visitação moderada o qual ofereça o serviço de Rsync, você pode considerar uma CPU entre 800 MHz e 1 GHz, e pelo menos 512 MB de memória RAM. Esta é provavelmente a configuração mínima para um site espelho oficial.

Para um site de visitação frequente, você definitivamente vai precisar de mais memória RAM (considere 2 GB como um bom ponto de partida) e possivelmente de mais poder de processamento (CPU), o que pode significar que você precisará ir para um sistema multiprocessado (SMP).

Você também pode considerar o uso de um subsistema de discos rápidos. As operações em um repositório CVS necessitam de um subsistema de discos rápido (o uso de RAID é altamente desejável). Uma controladora SCSI que possua cache dedicado também pode melhorar a velocidade uma vez que a maioria destes serviços incorre na realização de um grande número de pequenas modificações no disco.

2.4. Serviços para oferecer

Todo site espelho é obrigado a disponibilizar um conjunto de serviços básicos. Em adição a estes serviços obrigatórios, existe um grande número de serviços opcionais os quais o administrador do servidor pode optar por oferecer. Esta sessão irá detalhar quais serviços você pode oferecer, bem como implementá-los.

2.4.1. FTP (necessário para o conjunto de arquivos do FTP)

Este é um dos serviços mais básicos, e ele é requerido em todos os sites espelhos que oferecem acesso público às distribuições via FTP. O acesso ao FTP deve ser anônimo, e não é permitido o uso de nenhum controle nas taxas de upload/download (o que seria uma coisa ridícula de qualquer maneira). Não é necessário ter o upload de arquivos habilitado (e isso nunca deve ser permitido na área onde os arquivos do FreeBSD são mantidos). Os arquivos do FreeBSD devem ficar disponíveis sob o caminho /pub/FreeBSD.

Existem diversos softwares disponíveis os quais podem ser configurados para operar como um servidor de FTP anônimo. Por exemplo (em ordem alfabética).

  • /usr/libexec/ftpd: Este é o servidor de FTP nativo do FreeBSD. Certifique-se de ler o ftpd(8).

  • ftp/ncftpd: Um pacote comercial, gratuito para uso com fins educacionais.

  • ftp/oftpd: Um servidor de FTP desenvolvido tendo a segurança como seu foco principal.

  • ftp/proftpd: Um servidor FTP modular e muito flexível.

  • ftp/pure-ftpd: Outro servidor de FTP desenvolvido tendo a segurança em mente.

  • ftp/twoftpd: Mais um servidor desenvolvido com foco em segurança.

  • ftp/vsftpd: Um ftpd muito seguro.

  • ftp/wu-ftpd: O ftpd da universidade de Washington. Ele se tornou impopular, por causa da enorme quantidade de problemas de segurança que foram descobertos nele. Se você optar por utilizar este software, certifique-se de mantê-lo atualizado.

O ftpd nativo do FreeBSD, o proftpd, o wu-ftpd e talvez o ncftpd são alguns dos servidores de FTP mais comumente utilizados. Os demais não possuem uma grande base de usuários entre os sites espelhos. Um item a ser considerado é que você pode precisar de flexibilidade para controlar quantas conexões simultâneas serão permitidas no servidor, limitando desta forma o consumo do seu link IP e dos demais recursos do sistema.

2.4.2. Rsync (opcional para o conjunto de arquivos do FTP)

O Rsync é muitas vezes oferecido para acesso ao conteúdo da área de FTP de um site espelho do FreeBSD, desta forma outros sites espelhos podem utilizar o seu sistema como fonte para se espelhar. O protocolo do rsync é diferente do FTP em muitos aspectos. Ele é muito mais amigável em relação ao consumo de banda IP, uma vez que quando um arquivo é alterado ao invés de transferí-lo por completo novamente, ele transfere apenas as diferenças entre as duas versões do arquivo. O Rsync requer uma grande quantidade de memória para cada instância. A quantidade de memória alocada depende do tamanho do modulo sincronizado em termos do número de diretórios e de arquivos. O Rsync pode utilizar o rsh e o ssh (que agora é padrão) para transporte dos dados, ou então utilizar o seu próprio protocolo para acesso stand-alone (este é o método preferido para um servidor público de Rsync). Obrigatoriedade de autenticação, limites ao número de conexões simultâneas e outras restrições podem ser aplicadas. Há apenas um pacote de software disponível para se implementar um servidor de Rsync:

2.4.3. HTTP (necessário para as páginas web, opcional para o conjunto de arquivos do FTP)

Se você deseja disponibilizar as páginas web do FreeBSD, você vai precisar instalar um servidor web. Opcionalmente você poderá oferecer acesso a sua árvore de FTP via HTTP. A escolha do software do servidor web é uma escolha do administrador do site espelho. As opções mais populares são:

  • www/apache22: O Apache é o servidor web mais amplamente utilizado na internet. Ele é usado extensivamente pelo projeto FreeBSD.

  • www/thttpd: Se você for servir uma grande quantidade de conteúdo estático, você pode constatar que o uso de uma aplicação como o thttpd é mais eficiente do que o uso do Apache. Ele está otimizado para operar sob a máxima performance no FreeBSD.

  • www/boa: O Boa é uma outra alternativa ao thttpd e ao Apache. Ele deve prover uma performance consideravelmente melhor que a do Apache para conteúdos puramente estáticos. Ele não possui, pelo menos até o momento em que esse artigo está sendo escrito, o mesmo conjunto de otimizações para o ambiente FreeBSD que encontramos disponíveis no thttpd.

2.4.4. CVSup (desejado para repositórios CVS)

O CVSup é um meio muito eficiente de distribuição de arquivos. Ele trabalha de forma semelhante ao rsync, mas foi especialmente projetado para uso com repositórios CVS. Se você deseja disponibilizar o repositório CVS do FreeBSD, você deve considerar seriamente fazê-lo via CVSup. É possível oferecer acesso a um repositório CVS via AnonCVS, FTP, rsync ou HTTP, mas as pessoas vão se beneficiar muito mais de um acesso via CVSup. O CVSup foi desenvolvido pelo John Polstra. É um pouco complicado instalá-lo em uma plataforma diferente do FreeBSD, uma vez que ele foi escrito em Modula-3 e consequentemente necessita de um ambiente Modula-3 disponível. O John Polstra preparou uma versão simplificada do M3 a qual é suficiente para executar o CVSup, e que pode ser facilmente instalada. Consulte Ezm3 para maiores detalhes. Os ports relacionados são:

  • net/cvsup: O port nativo do CVSup (cliente e servidor) o qual requer a instalalação do lang/ezm3.

  • net/cvsup-mirror: O kit de espelhamento do CVSup, o qual requer o net/cvsup-without-gui, e que o configura para atuar no espelhamento dos serviços. Alguns administradores podem preferir utilizar uma forma diferente de configurar um site espelho.

Existem alguns outros, como o net/cvsup-without-gui o qual você pode desejar olhar. Se você preferir um pacote binário, compilado estaticamente, de uma olhada aqui. Esta página continua mencionando o erro SG1, o qual esteve presente no CVSup. Talvez o John venha a criar no futuro um site genérico para download de binários estáticos para várias plataformas.

É possível utilizar o CVSup para disponibilizar qualquer tipo de arquivo, e não apenas repositórios CVS, mas a configuração pode ser complexa. O CVSup é conhecido por consumir um pouco de CPU tanto no servidor quanto no cliente, uma vez que ele precisa comparar muitos arquivos.

2.4.5. AnonCVS (Opcional para reposittórios CVS)

Se você possui o repositório CVS, você pode desejar disponibilizá-lo via cvs anônimo. Um pequeno aviso antes: Não existe muita demanda para este tipo de acesso, ele requer alguma experiência, e você precisa saber o que está fazendo.

Geralmente há duas formas de se acessar um repositório CVS remotamente: via pserver ou via ssh (nós não consideramos o rsh). Para acesso anônimo, o uso do pserver é bastante adequado, mas alguns optam por também oferecer acesso via ssh. Existe um wrapper customizado no repositório CVS, para ser utilizado como shell para uma conta anônima de ssh. Ele faz um chroot, e portanto requer que o repositório CVS esteja disponível no diretório home do usuário anônimo. Isto pode não ser possível para todos os sites. Se você for oferecer apenas acesso via pserver, esta restrição não se aplica, mas você pode ficar sujeito a um risco maior de segurança. Você não precisa instalar nenhum software especial, uma vez que o cvs(1) vem por padrão na instalação básica do FreeBSD. Você precisa habilitar o acesso através do inetd, para isto basta adicionar uma entrada ao seu /etc/inetd.conf semelhante a esta:

cvspserver stream tcp nowait root /usr/bin/cvs cvs -f -l -R -T /anoncvstmp --allow-root=/home/ncvs pserver
          

Consulte o manual para detalhes das opções. Consulte também a página de info do CVS sobre formas adicionais de certificar-se de que o acesso ao repositório está configurado apenas para leitura. Recomenda-se que você crie uma conta não privilegiada, preferencialmente chamada anoncvs. Você também precisa criar um arquivo passwd no seu /home/ncvs/CVSROOT e atribuir um password (em branco ou anoncvs) para acesso deste usuário ao CVS. O diretório /anoncvstmp é um sistema de arquivo baseado em memória que tem um propósito especial. Ele não é obrigatório mas seu uso é recomendado, uma vez que o cvs(1) cria uma estrutura de diretórios ocultos no seu /tmp a qual não é utilizada depois da operação, mas que deixa as coisas dramaticamente lentas se forem necessárias operações reais de escrita e leitura para o disco. Aqui está um exemplo de configuração no /etc/fstab, de como configurar um MFS:

/dev/da0s1b /anoncvstmp mfs rw,-s=786432,-b=4096,-f=512,-i=560,-c=3,-m=0,nosuid 0 0
          

Esta é (naturalmente) uma sintaxe otimizada ao máximo, e foi sugerida pelo John Polstra.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.

Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.