Comportamento, ciência, tecnologia, direito, política, religião, cinema e televisão, alguma controvérsia, algum bom senso, e um pouquinho de besteira, para dar um gostinho...

7 de out. de 2014

Virtualização, Linux e o futuro da Informática

Essa semana um projeto engavetado por muito tempo saiu da gaveta. Temos um pequeno servidor que roda, entre outras coisas, um serviço de HTTP. Esse servidor é na verdade um notebook antigo (Pentium 4, 512 MB de RAM, 40GB de HD) que estava "encostado" alguns anos atrás. Foi "ressucitado" instalando nele o Linux (utilizei o Gentoo) e funcionou muito bem, por alguns anos, até que resolveu começar a encrencar.

Esse tipo de hardware antigo é sucetível a problemas físicos (calor principalmente), e ele ficava ligado literalmente 24/7, então o problema é exacerbado pelo constante funcionamento das ventoinhas, que acumulam poeiras nos dutos, o que faz com que os heatpipes não conduzam tão bem o calor para fora do notebook. O acúmulo de calor, o desgaste de componentes físicos como o HD e o fato de ficar largado em um canto fazem com que, eventualmente, essa máquina padeça de uma lentidão crônica, e quando isso afeta os serviços prestados por ela, a irritação do administrador de sistemas começa a crescer.

o hardware onde tudo rodava tinha seus 8 anos. Já era velho quando começou a ser usado para este fim, e agora, mais 3 anos depois, deu o que tinha que dar. Não é preciso ser um gênio para saber que um computador moderno modesto leva vantagem de 30 para 1 numa comparação de poder computacional. Em resumo, estou usando um servidor que tem 1/30 da capacidade de processamento do meu computador.

A solução para quem analisa isso é óbvia. Virtualização. Desde que as máquinas começaram a acumular tanto poder computacional que os outros gargalos dominaram as razões de um sistema ser lento (entrada e saída, disco, memória, rede), a virtualização faz com que possamos utilizar um hardware físico para rodar vários hardwares virtuais. Com servidores é mais útil, pois é possível rodar vários serviços completamente separados, gerenciar via software. Atualizações, backups e segurança são mais robustas em ambientes virtualizados. A gama de usos é incrível e cresce a cada nova versão dos hypervisors e hosts. A possibilidade de rodar um sistema operacional inteiro faz com que problemas de compatibilidade sejam resolvidos e provê alternativas ao refactory e a manutenção de versões obsoletas e/ou com problemas.

Resolvi então "migrar" esse servidor para uma máquina virtual. Nessa hora o fato do SO ser Linux no servidor ajuda muito. O host é Windows e a ferramenta escolhida foi o VMWare Player (gratuito e facílimo de usar para o básico).

Criei um disco virtual de 120GB e com o auxílio de uma imagem ISO virtualizada como CDROM contendo um programa de cópia de dados (DiskCopy) e um conversor IDE->USB ligado ao HD original do notebook transferi todos os dados do disco do notebook diretamente para o disco virtual. A virtualização moderna é tão impressionante que disponibiliza o hardware conectado ao host (discos removíveis, impressoras, rede) ao guest sob demanda. Tentei bootar o sistema. Kernel panic. O problema é que virtualizadores modernos assumem padrões modernos como standard, e a máquina onde rodava aquilo ali era para lá de antiga. Ele criou o disco virtual como SCSI (nem SATA, SCSI mesmo), enquanto o disco original era IDE. Depois de trocada a opção, o sistema bootou e os serviços funcionaram. Uma olhada no kernel para mudar alguns drivers necessários e o sistema estava completamente funcionando.

Adeus lag, o sistema guest teve uma melhora de performance na ordem dos 300% e a possibilidade de se guardar o estado do sistema e restaurá-lo a vontade é simplesmente fenomenal. Isso ilustra o abismo, a disparidade monumental entre hardwares com poucos anos de diferença. Também ilustra a flexibilidade do Linux, que num ambiente completamente diferente, se comportou muito bem e precisou mínima intervenção para ficar completamente operacional.

Uma ótima experiência e mais conhecimento adquirido.

Nenhum comentário: