GRACO :: Gestores da Rede Acadêmica de Computação

login

LTSP - Linux Terminal Server Project - Explicações básicas

O Linux Terminal Server Project (LTSP) é um projeto para o GNU/Linux sob licença GPL, isto é, software livre que possibilita o uso de um computador por vários terminais de acesso. Há um servidor principal (geralmente um micro de melhor performance, no qual está instalado o LTSP) e vários clientes conectados via rede a este servidor. Estes clientes somente são a saída do processamento do servidor, por isso, não necessitam do uso de discos rígidos, uma imagem do sistema operacional é carregado via rede.

O LTSP é usado como solução para performance de computadores antigos e para implementação de uma rede de baixo custo. Motivo este a qual é usado em escolas e telecentros por todo mundo. A idéia central do LTSP é reunir tudo que existe de bom para GNU/Linux e ser um servidor completo de terminais, com alto nível de gerenciamento. Com um servidor não muito grande (ex: 3 Ghz e 2 GB RAM) podemos ter, por exemplo, trinta 486s "pendurados", rodando softwares de última geração. ltsp_diagram.gif

Existem vários casos de sucesso de implementação de LTSP no Brasil. Inclusive muitos governos estão profundamente estudando essa alternativa. Podemos destacar aqui as prefeituras de São Paulo e Porto Alegre, que estão fazendo projetos pilotos de LTSP nos seus Tele-centros.

Em alguns casos, LTSP tem sido utilizado inclusive com estações mais novas apenas para facilitar o gerenciamento da rede. Como as máquinas não precisam de disco rígido e todos os dados ficam em um servidor (ou mais, se for preciso), isso facilita muito a manutenção.

Entendendo o LTSP

LTSP é na verdade uma espécie de distribuição Linux destinada a ser carregada pelos terminais. Ele é composto por um conjunto de pacotes, que criam um sistema de arquivos dentro da pasta "/opt/ltsp/i386/", que é compartilhada com a rede e acessada via NFS (Network File System) pelos clientes como se fosse uma partição local.

Dentro do diretório vai um sistema simplificado, destinado apenas a detectar o hardware do cliente e permitir que ele abra uma seção do X (modo gráfico do GNU/Linux). Terminado o boot, o cliente obtém a tela de login do servidor via XDMCP (Protocolo de login remoto utilizado por gerenciadores gráficos de login). A partir daí, o servidor roda os aplicativos e o cliente apenas mostra as imagens geradas na tela, atuando como uma espécie de terminal burro.

Veja que o LTSP é carregado nos clientes usando uma série de serviços. Tudo começa com o cliente dando boot usando a imagem de boot gravada no chip de boot, disquete ou CD-ROM. Esta imagem contém um software muito simples, que ativa a placa de rede e envia um pacote de broadcast, pedindo a configuração da rede.

Um servidor DHCP instalado no servidor LTSP é configurado para responder ao chamado, enviando a configuração da rede, juntamente com informações do Kernel, que o cliente deve carregar via TFTP (Trivial File Transfer Protocol), e a pasta no servidor com a instalação do LTSP, que deve ser acessada via NFS.

O TFTP é um protocolo bem simples de transferência de arquivos dentro de redes locais. Tão simples que a imagem de boot, com seus poucos kbytes, é grande o suficiente para incluir um cliente TFTP, usado na etapa inicial do boot.

Depois que o Kernel é carregado via TFTP, começa o boot "real" da estação. O TFTP é substituído então por um cliente NFS (um protocolo muito mais robusto), que é usado para montar a pasta "/opt/ltsp/i386" do servidor (em modo somente leitura) como diretório raiz. A estação pode então carregar o sistema do LTSP, que se encarrega de detectar o hardware da estação e abrir o X. Todos os arquivos de configuração e alterações gerados nesta fase são salvos num ramdisk, já que a estação não tem permissão para alterar os arquivos do servidor.

Opcionalmente é possível especificar também uma configuração específica para cada estação, especificando o tipo de mouse e a resolução de tela, por exemplo. Esta configuração fica armazenada num arquivo de configuração central, o "/opt/ltsp/i386/etc/lts.conf" (armazenado no servidor), que é lido pelas estações durante o processo de boot.

Ou seja, além do LTSP propriamente dito, é necessário ter instado um conjunto de serviços, cuidadosamente configurados, para que tudo funcione em conjunto. Isto faz com que o LTSP seja um sistema um pouco trabalhoso de instalar, onde é necessário prestar muita atenção em cada passo da configuração, já que qualquer erro pode fazer com que tudo deixe de funcionar.

O LTSP inclui dois utilitários de configuração: o ltspadmin, que automatiza partes da instalação e configuração inicial do sistema, e o ltspcfg, que é utilizado para alterar a configuração depois de instalado.

O Servidor

Num servidor LTSP, os aplicativos usados por todos os clientes rodam no mesmo servidor, o que garante o compartilhamento de recursos.

Num desktop tradicional, o processador fica ocioso na grande maioria do tempo. É justamente isso que os processadores da maioria dos desktops do mundo ficam fazendo na maior parte do tempo: nada. Num servidor de terminais, a utilização média do processador em geral continua sendo baixa, mesmo com 20 ou 30 terminais pendurados nele, já que temos uma máquina relativamente rápida e muitos dos usuários conectados fica fazendo tarefas simples, como ler e-mails ou escrever textos.

Isso faz com que quase sempre que um usuário precisa executar um programa, ou realizar uma tarefa intensiva, encontra o processador livre, como se ele estivesse sozinho no servidor. O desempenho (subjetivo) ao utilizar um terminal ligado a um servidor com um processador de 3.0 GHz, compartilhado entre 20 terminais, é quase sempre melhor que utilizar um desktop com um processador de 2.0 GHz.

A memória RAM também é compartilhada de uma maneira bastante interessante. Os aplicativos são carregados na memória do servidor apenas uma vez, independentemente do número de usuários que o utilizarem simultaneamente. O sistema carrega o aplicativo uma vez, e depois passa a abrir diferentes seções do mesmo programa (como ao abrir uma segunda janela do navegador, por exemplo), o que faz com que o carregamento passe a ser mais rápido (afinal o aplicativo já está carregado) e o uso de memória seja otimizado.

Um servidor com 1 GB de memória RAM, dividido entre 20 terminais, executa em geral os aplicativos com um desempenho muito melhor que um desktop com 256 MB usado por uma única pessoa.

A configuração mínima para atender a 10 terminais seria um Intel Pentium IV ou AMD Athlon com 768 MB de RAM. Mas, como o servidor é um só, é recomendável investir um pouco nele, principalmente hoje em dia, onde os preços dos pentes de memória estão cada vez mais baixos. O ideal é começar com um processador razoavelmente rápido (cerca de 3Ghz) e 1 GB de RAM.

Um servidor dual (com dois processadores físicos) oferece uma grande vantagem ao utilizar muitos terminais, pois ele pode executar aplicativos separados em cada processador, executando mais tarefas simultaneamente e eliminando o gargalo em momentos em que vários usuários resolvem utilizar aplicativos pesados simultaneamente. Entretanto os custos de implementação de um servidor dual ainda são demasiadamente altos.

Ao contrário de um desktop regular, onde em geral apenas um aplicativo pesado é executado por vez, fazendo com que o segundo processador seja pouco usado, um servidor de terminais está sempre executando muitos aplicativos diferentes e fazendo muitas coisas ao mesmo tempo. Isso faz com que realmente exista uma divisão de trabalho entre os dois processadores, fazendo com que o desempenho ao utilizar dois processadores seja em muitos casos próximo do dobro de utilizar apenas um. Numa rede com muitos terminais, um servidor com dois processadores de 2.0 GHz apresenta quase sempre um desempenho melhor do que um com um único processador de 3.0 GHz.

A terceira característica mais importante, rivalizando com o desempenho do processador, é o desempenho e capacidade dos HDs. Lembre-se de que o servidor será quem armazenará todos os arquivos, por isso é importante que o HD tenha muito espaço livre. Um sistema RAID IDE (seja usando uma controladora dedicada, seja via software) é uma opção interessante, pois permite combinar vários HDs de forma a criar um único disco lógico com a capacidade e desempenho somados (RAID 0). Isso acaba sendo muito mais interessante do que simplesmente adicionar vários HDs separados.

O desempenho do RAID fará com que os aplicativos carreguem mais rapidamente e as operações de cópias de arquivo sejam concluídas muito mais depressa, evitando a saturação do servidor em momentos de pico. Em contrapartida, ao usar RAID 0, o risco de perda de dados é maior do que ao utilizar um único HD, pois uma pena de hardware em qualquer um dos discos faz com que todos os dados sejam perdidos. Por isso, um sistema de backup é essencial.

Os terminais

A configuração mínima para os terminais é um 486 com 8 MB, e a configuração ideal é um Pentium 100 com 16 MB. Em teoria, você pode utilizar até mesmo um 386 como terminal, mas neste caso você vai começar a sentir uma certa demora na atualização da tela.

O servidor fica com o grosso do trabalho, que é executar os programas e armazenar todos os dados. Ele envia para os clientes apenas instruções para montar as janelas que serão exibidas, e estes enviam de volta os movimentos do mouse e as teclas digitadas no teclado.

O ping numa rede local, mesmo que seja uma rede de 10 megabits, é muito baixo, em torno de 10 milessegundos, na pior das hipóteses. Ou seja, o tempo necessário para um click do mouse ir da estação até o servidor e este enviar de volta a resposta é mínimo, quase imperceptível. Apesar disso, a estação precisa rodar uma versão compacta do Linux com um servidor X e tem o trabalho de montar as janelas baseado nas instruções recebidas do servidor, daí a necessidade de um mínimo de poder de processamento.

Se o processador for muito lento, a estação tem dificuldades para fazer a atualização de tela e as respostas começam a ficar muito lentas. Um 486 DX-100 demora cerca de 0.5 segundo para redimensionar uma janela (usando o Xfree ou X.org padrão do LTSP), o que é ainda relativamente rápido. Mas, um 386 demoraria 2 ou 3 segundos para fazer a mesma tarefa, o que já seria bastante incômodo.

O ideal é utilizar no mínimo micros 486 DX-100 com uma placa de vídeo PCI. Se você utilizar micros um pouco mais rápidos, a partir de um Pentium 100, a atualização de tela já passará a ser instantânea, como se os aplicativos estivessem rodando localmente.

O próximo gargalo é a velocidade da rede, que precisa transportar as informações destinadas a todas as estações. Graças à eficiência do protocolo utilizado pelo X (se comparado a sistema como o VNC - Virtual Network Computing), é possível pendurar 20 ou até mesmo 30 terminais numa rede de 100 megabits, antes que a velocidade da rede comece a tornar-se um gargalo. Entretanto para um melhor desempenho, recomenda-se a adoção de placas com barramento gigabit (10/100/1000Mbps) visto que os custos atuais destas placas são relativamente pequenos.

Referências:

http://www.guiadohardware.net/guias/01/index6.php

http://en.wikipedia.org/wiki/VNC

http://twiki.im.ufba.br/bin/view/GAVRI/ConfiguracaoLTSPv41

InstalacaoDesempenhoLTSP5

-- HumbertoGaliza - 17 May 2007