Universidade Federal de Minas Gerais Instituto de Ciˆencias Exatas
Departamento de Ciˆencia da Computa¸c˜ao 28 de mar¸co de 2005
1
Introdu¸c˜ao
Os reposit´orios Debian tradicionais ocupam cerca de 100GB para todas as arquiteturas e cerca de 10GB para a arquitetura x86. Em geral, os usu´arios preferem baixar os pacotes diretamente dos reposit´orios oficiais da Debian, por´em, em uma estrutura de rede muito grande, se cada m´aquina que for instalada utilizar o acesso a Internet para baixar os pacotes de instala¸c˜ao, haver´a desperdicio de recursos, pois a maioria dos pacotes ´e comum a todos os usu´arios.
No caso da Caixa Econˆomica Federal, cada agˆencia possui um link de acesso limitado a admi- nistra¸c˜ao central, sendo esse link compartilhado tamb´em para acesso a Internet. Como a Caixa possui um reposit´orio Debian pr´opio, ela pode utilizar ferramentas de espelhamento do reposit´orio em cada agˆencia para evitar o desperd´ıcio de recursos.
Existem duas formas tradicionais de se realizar o espelhamento do reposit´orio, fazendo uma c´opia completa ou fazendo a c´opia sob-demanda, como um servidor proxy. Ambas as formas possuem vantagens e desvantagens e ser˜ao abordadas neste texto.
Esse documento leva em considera¸c˜ao o espelhamento do reposit´orio Debian da Caixa. Esse reposit´orio possui os pacotes do Debian para x86 al´em dos pacotes de personaliza¸c˜ao da distribui¸c˜ao da Caixa.
2
Espelhamento
Como foi dito anteriormente, h´a duas formas b´asicas de se realizar o espelhamento. Nesta sess˜ao, detalharemos as vantagens e desvantagens desses dois modelos.
2.1 Espelhamento completo
O espelhamento completo copiar´a todos os arquivos do reposit´orio Debian fazendo um reposit´orio local idˆentico ao copiado. Para realizar este procedimento, ´e necess´ario possuir o espa¸co completo ocupado pelo reposit´orio na m´aquina onde ser´a feito o espelhamento.
O espelhamento completo, garante economia de utiliza¸c˜ao de banda no momento da instala¸c˜ao dos pacotes na agˆencia, pois a c´opia pode ser feita atrav´es de um meio f´ısico (outro disco r´ıgido,
DVD ou fitas transportadas para a agˆencia) ou pode ser feita em hor´arios alternativos que n˜ao atrapalham o funcionamento da agˆencia (por exemplo aos finais de semana).
As desvantagens do espelhamento completo s˜ao a utiliza¸c˜ao de um espa¸co em disco excessivo, pois muitos dos pacotes que est˜ao presentes no reposit´orio s˜ao instalados com um freq¨uˆencia muito pequena. H´a tamb´em um atraso (ou delay) entre a data em que um pacote ´e atualizado no servidor principal e a data em que ele ´e transferido para a agˆencia, pois essa transferˆencia n˜ao ´e feita automaticamente e sim, com datas pr´e-definidas.
Ap´os a primeira c´opia do reposit´orio completo, podem-se utilizar mecanismos que fazem a atualiza¸c˜ao parcial do reposit´orio, somente com as atualiza¸c˜oes dos pacotes que foram modificados. Alguns exemplos de aplicativos que fazem esse tipo de espelhamento s˜ao: debmirror, Dpartial- Mirror, apt-mirror e rsync.
2.2 Espelhamento sob-demanda
No espelhamento sob demanda, para instalar um determinado pacote, o usu´ario o solicita ao servidor (no qual o reposit´orio est´a armazenado). Se o pacote solicitado j´a estiver no servidor, ele o repassar´a para o usu´ario. Se n˜ao estiver, o servidor far´a uma c´opia do pacote de um reposit´orio central e ent˜ao o enviar´a para o usu´ario.
Esse procedimento garante que somente os pacotes que s˜ao muito instalados estejam presentes no servidor, causando uma economia de espa¸co e diminuindo o uso da rede (se compararmos a c´opia de um determinado pacote, 100KB, em rela¸c˜ao ao reposit´orio completo, 10GB). ´E importante ressaltar que esse tipo de espelhamento possui mecanismos que checam se um pacote foi atualizado no reposit´orio central antes de fazer a instala¸c˜ao da vers˜ao do pacote que se encontra no reposit´orio local, garantindo assim a instala¸c˜ao da ´ultima vers˜ao.
A desvantagem desse m´etodo ´e a utiliza¸c˜ao da banda de rede entre o reposit´orio central e o parcial sempre que um usu´ario precisa de instalar um pacote (mesmo que esse pacote esteja na sua ´ultima vers˜ao no reposit´orio local, h´a uma transferencia pequena de dados entre o reposit´orio central e o parcial para checar a vers˜ao do pacote).
Se houver uma grande quantidade de pacotes atualizados, este m´etodo pode causar sobrecarga na rede, com alta utiliza¸c˜ao de banda.
Alguns aplicativos que fazem este tipo de espelhamento s˜ao: apt-proxy, apt-cacher e aptcached.
3
Ferramentas
Para exemplificar os dois modelos de espelhamento, apresentaremos trˆes aplicativos. A solu¸c˜ao de espelhamento completo ser´a exemplificada pelo apt-mirror, a solu¸c˜ao de espelhamento sob- demanda ser´a exemplificada pelo apt-proxy e demonstraremos uma solu¸c˜ao h´ıbrida utilizando o rsync.
3.1 apt-mirror
O apt-mirror ´e uma ferramenta que permite o espelhamento de qualquer reposit´orio Debian de forma muito simples. Esse aplicativo pode funcionar em qualquer arquitetura que possua perl
e wget funcionando, al´em de garantir a consistˆencia dos dados mesmo durante o processo de espelhamento.
1. Para efetuar a instala¸c˜ao, ser´a necess´ario ter status de usu´ario administrador da m´aquina (root).
2. Edite o arquivo /etc/apt/sources.list colocando a seguinte linha:
deb http://apt-mirror.sourceforge.net/ apt-mirror/
3. Atualize a lista de reposit´orios Debian de sua m´aquina e execute a instala¸c˜ao do aplicativo com os seguintes comandos:
aptitude update
aptitude install apt-mirror
Se preferir, baixe o pacote diretamente do endere¸co:
http://apt-mirror.sourceforge.net/apt-mirror/apt-mirror_0.4.3-2_all.deb e instale-o.
4. Edite o arquivo /etc/apt/mirror.list e coloque a linha do seu reposit´orio. O arquivo ficar´a da seguinte forma, no caso do reposit´orio da caixa:
deb http://ENDERECO_DO_REPOSITORIO/libertasbr libertasbr main contrib non-free non-US 3270 caixa
5. Se desejar iniciar o espelhamento imediatamente, execute o seguinte comando: su - apt-mirror -c apt-mirror
6. Para configurar a atualiza¸c˜ao peri´odica dos pacotes, deve-se utilizar o cron. No caso desse pacote, edite o arquivo /etc/cron.d/apt-mirror. Ele deve ficar da seguinte forma:
#
# Regular cron jobs for the apt-mirror package #
0 0 * * 6 apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log
Assim, o comando ser´a executado todo s´abado as 00:00H. ´
E importante ressaltar que o cron usa 5 n´umeros para identificar o momento que o comando ´e executado. Se um desses n´umeros for substituido por *, o comando ser´a executado em todos os momentos indicados por esse n´umero, por exemplo:
0 4 2 4 1 apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log | | | | |->Segunda-feira | | | |->M^es de Abril | | |->Dia 2 | |->4 horas |->0 minutos
No caso do exemplo, as 04:00h do dia 2 do mˆes de abril que for segunda-feira, o comando ser´a executado. utilize o comando man 5 crontab para saber mais sobre esse tipo de indica¸c˜ao do momento de execu¸c˜ao do comando.
O programa criar´a o diret´orio /var/spool/apt-mirror contendo a c´opia do reposit´orio Debian; basta configurar o apache para disponibilizar esse reposit´orio para os outros usu´arios da agˆencia. Os dir´etorios para onde ser˜ao feitas as c´opias s˜ao:
/var/spool/apt-mirror/skel/10.33.240.225/libertasbr e /var/spool/apt-mirror/mirror/10.33.240.225/mirrors
3.2 apt-proxy
O apt-proxy ´e um aplicativo de espelhamento sob-demanda que funciona com reposit´orios Debian de qualquer natureza. Ele ´e ´util quando a conex˜ao de uma rede com o mundo externo ´e lenta e os computadores que fazem parte dessa rede utilizam pacotes Debian. Em casos como este, o aplicativo armazena os arquivos que foram solicitados pelos clientes para serem reaproveitados por outros clientes.
O apt-proxy ´e capaz de interpretar a estrutura de um reposit´orio Debian sendo, portanto, mais eficiente do que os proxies tradicionais. Ele ´e capaz de descartar pacotes de vers˜oes mais antigas de forma inteligente.
1. Para instal´a-lo, ´e necess´ario ter status de usu´ario administrador da m´aquina (root). 2. Edite o arquivo /etc/apt/sources.list colocando a seguinte linha:
deb http://apt-proxy.sourceforge.net/apt-proxy unstable/
3. Atualize a lista de reposit´orios Debian de sua m´aquina e execute a instala¸c˜ao do aplicativo com os seguintes comandos:
aptitude update
aptitude install apt-proxy
Se preferir, baixe o pacote diretamente de
http://apt-proxy.sourceforge.net/apt-proxy/unstable/apt-proxy_1.9.27_all.deb e instale-o.