O Hypervisor

17 05 2009

Hypervisor, ou Monitor de Máquina Virtual (VMM) é uma camada de software entre o hardware e o sistema operacional, que permite executar múltiplos sistemas operacionais em um mesmo equipamento ao mesmo tempo. O VMM controla o acesso dos sistemas hóspedes aos dispositivos de hardware e dá a cada máquina virtual a ilusão de que ela está sendo executada em um hardware próprio.

É interessante notar que o hypervisor não executa em modo usuário, pois é ele que deve executar, ou simular a execução, das instruções privilegiadas requisitadas pelo sistema operacional visitante.

Existem basicamente dois tipos de hypervisors: O primeiro é o que roda diretamente sobre o hardware, a expressão usada é “on bare metal”, ou “direto no metal”.

O segundo é um software que roda dentro do ambiente do sistema operacional.

Também existe um tipo híbrido, que roda diretamente sobre o hardware mas executa cada máquina virtual como um processo no sistema hospedeiro.

O trabalho do hypervisor é alocar recursos para os hosts hóspedes, isola-los uns dos outros, fornecer interfaces de dispositivos portáteis e limpas, ou seja, fornecer máquinas virtuais que possam ser utilizadas de forma eficiente. Para fazer tudo isso ele deve ocupar uma posição privilegiada no sistema.

Em um sistema tradicional, não virtualizado, o sistema operacional ocupa uma posição privilegiada em relação aos aplicativos que rodam no nível de usuário. Para permitir isso, na maioria das arquiteturas de processadores, existem pelo menos dois níveis de privilégio. O sistema operacional então executa em um nível de prioridade maior do que o dos aplicativos dos usuários, forçando assim que estes aplicativos a “seguir regras”, ou a “respeitar a hierarquia”.

No caso de ambientes virtualizados, o hypervisor trabalha neste nível alto de prioridade.





Virtualização – Um pouco de história

29 04 2009

Apesar da tecnologia de virtualização de servidores receber tanta atenção atualmente, seu conceito não é novo. Na verdade a idéia surgiu na metade dos anos 1960, quando os gigantes e caros computadores da época atingiram uma grande velocidade de processamento mas se mostravam ineficientes em aproveitar seu caro tempo de cálculo, devido ao gerenciamento de processos ser feito manualmente pelo operador. Viu-se então que para tirar o melhor proveito do caríssimo processamento computacional era necessário executar vários processos paralelamente. Com isso surgiu o conceito de tempo compartilhado (time sharing), que culminou com a idéia de virtualização.

Time Sharing: Este conceito significa compartilhamento de tempo, ou seja, o tempo ocioso entre os processos são compartilhados com outros processos para dinamizar o sistema. Múltiplos job são executados simultaneamente, sendo que a CPU atende cada job por um pequeno tempo, um a um em seqüência. Os tempos dedicados para cada job são pequenos o suficiente para que os usuários consigam interagir com cada programa sem que percebam que existem outros programas rodando.

Em 1972, um cientista da computação americano, Robert P. Goldberg, lançou a base teórica da arquitetura para sistemas computacionais virtuais em sua dissertação na universidade de Harvard. No mesmo ano a IBM lançou um mainframe capaz de executar simultaneamente diferentes sistemas operacionais sob a supervisão de um programa de controle – hypervisor.

O sistema 370 da IBM foi o primeiro computador comercial inteiramente projetado para virtualização, que com o sistema operacional CP/CMS, permitia executar múltiplas instâncias simultaneamente. Este foi seguido pelo IBM z/VM, que se aproveitava da virtualização via hardware de forma mais completa, onde todas duas interfaces de hardware eram virtualizadas. O VM/CMS é muito bem conceituado e amplamente distribuído na indústria e em ambientes acadêmicos. Várias abordagens modernas de virtualização devem muito às implementações originais para computadores de grande porte da IBM.

Com o passar dos anos a virtualização começou a cair no esquecimento devido a criação de novas aplicações client/servidor e ao declínio da plataforma mainframe que perdeu força frente a ascensão da plataforma x86. De acordo com a VMWare, a ampla adoção do Windows e Linux como sistema operacional em servidores na década de 1990 acabaram por estabelecer a arquitetura x86 como padrão da indústria.

Devido ao alto custo para aquisição de um mainframe, empresas  passaram a adquirir servidores de plataforma x86 de acordo com a demanda, processo este chamado de low-end (várias máquinas pequenas fazendo o trabalho de um grande servidor). Neste cenário, ao invés de ter um alto custo inicial com a aquisição de um mainframe, optava-se por adquirir servidores menores de acordo com a necessidade.

O impacto dessa nova estratégia foi que para garantir uma boa margem de folga contra problemas de dimensionamento de hardware, grande parte destes servidores eram usados para uma única aplicação. Assim, de acordo com a International Data  Corporation, em cada implementação de algum  servidor x86 típico, o teto de uso das CPUs ficava entre 10 a 15% da capacidade total deste servidor.
Os servidores eram superdimensionados para a aplicação que iriam executar, e por conseqüência, acabavam por sofrer do mesmo problema dos mainframes da década de 1960, isto é, não se aproveitava toda sua capacidade computacional, eram subutilizados.

Então, em 1999, a VMWare Inc. introduziu o conceito de virtualização na plataforma x86 como uma maneira mais eficiente para utilizar o equipamento desta  plataforma, aproveitando servidores x86 para fornecer uma estrutura computacional que possibilitasse o total aproveitamento dos recursos computacionais destes servidores.

A partir de 2005 fabricantes de processadores como Intel e AMD deram mais atenção a necessidade de melhorar o suporte via hardware em seus produtos. A Intel com sua tecnologia Intel VT e a AMD com a AMD-V. Estes hardwares contém funcionalidades explícitas que permitem que hypervisores melhorados sejam utilizados com a técnica de virtualização completa (full virtualization), que tornam mais fácil a implementação e potencializam a melhora de performance.





Blog + TCC

29 04 2009

Pessoal, este é meu último semestre da facul e tenho que fazer o TCC. Como já é de imaginar vou falar sobre virtualização e Xen. Daí eu tava pensando:

Ando sem tempo de escrever no meu blog, ele tá meio caído… e estou lendo muito pra fazer o TCC, então porque não unir os dois?

Então vou começar a postar vários textos referentes as pesquisas que estou fazendo para o meu trabalho.

Espero que gostem :D





Ferramenta para o usuário trocar a senha do e-mail

1 04 2009

No ambiente de e-mails que administro, utilizo o Postfix autenticando usuários virtuais em uma base MySQL. Essa semana surgiu a necessidade de fornecer uma ferramenta para que o próprio usuário pudesse alterar sua senha, sem a necessidade de solicitar ao administrador.

Procurei rapidamente na interntet alguma coisa já pronta que fizesse isso, mas não encontrei. Daí arregacei as mangas, abri o vi e fui fazer em PHP.

Optei por verificar a a senha atual autenticando uma conexão imap (pode ser pop tbm), abstraindo toda a frescurada de comparar hashes md5, crypts, etc…

O resultado foi  o programinha que disponibilizo agora para quem tiver a mesma necessidade que eu.

altera_senha3

Clique aqui para ver o fonte

have fun!





Xen around the world

23 01 2009

Hi all!

Xen Around the World é uma iniciativa da comunidade Xen.org para mapear geograficamente a utilização do Xen por país.  Eles fazem este levantamento para definir quais continentes entrarão no circuito mundial de eventos. Para isto é utilizado o Google Maps.

xen around the world

xen around the world

Recentemente recebemos na lista brasileira de discussão o seguinte e-mail do Marco Sinhoreli:

Estamos reunindo esforços para que seja possivel realizar em 2010 um
Xen Summit Latin America aqui no Brasil. Para isso precisamos ter
ideia da real geografia de uso do Xen em nosso continente para que os
patrocinadores coloquem a America Latina no circuito mundial de
eventos. O Xen.org tem um projeto utilizando o maps do google para
levantar esta geografia. Para que está utilizando Xen e que possa
deixar publica esta informação, peço que coloque no mapa elaborado
pelo Xen.org a localização geográfica do uso do Xen.

O projeto está na lista do proprio site do Xen.org em [1] sendo o
penultimo item da lista de projetos. O link direto para o maps é: [2]

[1] http://www.xen.org/community/projects.html
[2] http://maps.google.com/maps/ms?ie=UTF8&hl=en&oe=UTF8&msa=0&msid=103032227175318047199.0004512063c9e38e0e54a&ll=39.203307,-40.017068&spn=90.171154,149.414063&z=2&source=embed

Então a chamada está feita!





SSH sem senha – easy way

29 12 2008

Seguinte… existe uma forma mais prática de se configurar ssh sem senha com chave pública/privada. Descobri isso quando tive que reconfigurar as rotinas de backup com o rsync em 7 máquinas virtuais que migrei recentemente.

É fácil, simples e rápido:
Primeiro, vamos gerar as chaves no servidor onde partirá o acesso:
ssh-keygen -b 4096 -t rsa

onde:
-b informa o tamanho da chave em bits (1024, 2048, 4096)
-t informa o tipo da chave (RSA/DSA)
Será questionado o diretório onde a chave será armazenada. Aceite o padrão. Quando solicitar a senha, deixe em branco.

Agora é só exportar para o servidor destino, com o comando:
ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@maquina_remota

Agora sobra mais tempo para postar no twitter! hueuehe





Virtualizando Windows com Stub Domains no Xen

11 12 2008
modelo stub domains

modelo stub domains

Salve salve!

Acabou de ser publicado no site do xen-br o howto que fiz sobre SutbDomais.

Link: xen-br.org





Arrumando a casa

14 11 2008

arrumacao

É isso mesmo! estou dando uma reorganizada no blog. Tenho notado que os posts mais técnicos, como howtos não estão ficando com uma “cara” muito agradável, e acho que é por causa do layout do site. Então resolvi migrar todos os tutoriais e howtos para uma wiki, que sem encaixa muito melhor neste propósito. Deu um baaaaaita trabalhão jogar tudo pra lá, mas foi! rssrss

Então a partir de agora os novos tutoriais serão publicados no meu wiki: http://hbueno.klabs.com.br. É uma forma muito melhor de organizar todo o material que tenho.

Assim vou dedicar mais espaço no blog para assunto não técnicos… vou dar uma espairecida (ficou meio gay isso…).

Estou terminando de testar um howto para servidor de e-mails completaço, com postfix, mysql, dovecot, clamav, spamassassin, apolicy, greylist, spf, etc…. Provavelmente vou postar na segunda.

Espero que gostem da novidade! se não gostarem tbm, não tem problema, o site é meu e faço o que quiser com ele :p





Saindo um pouco da bitolagem…

12 11 2008

Este post é em homenagem à dot. Já chegou fazendo boas amizades… rss

gatinha dot e tux

dot e tux





adicionando repositórios Centos no RedHat

16 10 2008

Caso sua assinatura do RedHat tenha vencido e você precise atualizar o sistema, ou mesmo instalar um novo programas, você pode utilziar os repositórios do Centos. Também existe o rpmforge, onde você consegue encontrar aqueles programas que geralmente não tem nos repositórios da distro… tsc tsc… como não é debian neh…. rssrss

Para adicionar os repositórios Centos  faça:

Crie um arquivo chamado Centos.repo no diretório /etc/yum.repos.d com o conteúdo:

[CentOS5 base]
name=CentOS-5-Base
mirrorlist=http://mirrorlist.centos.org/?release=5&arch=$basearch&repo=os
gpgcheck=0
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

[CentOS5 updates]
name=CentOS-5-Updates
mirrorlist=http://mirrorlist.centos.org/?release=5&arch=$basearch&repo=updates
gpgcheck=0
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

[CentOS5plus]
name=CentOS-5-Plus
mirrorlist=http://mirrorlist.centos.org/?release=5&arch=$basearch&repo=centosplus
gpgcheck=0
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

Para adicionar os repositórios do rpmForge faça:
crie o arquivo mirrors-rpmforge dentro de /etc/yum.repos.d com o conteúdo:

http://apt.sw.be/redhat/el5/en/$ARCH/dag
http://archive.cs.uu.nl/mirror/dag.wieers/redhat/el5/en/$ARCH/dag
http://ftp2.lcpe.uni-sofia.bg/freshrpms/pub/dag/redhat/el5/en/$ARCH/dag
#http://ftp.heanet.ie/pub/freshrpms/pub/dag/redhat/el5/en/$ARCH/dag
http://ftp-stud.fht-esslingen.de/dag/redhat/el5/en/$ARCH/dag
http://mirror.cpsc.ucalgary.ca/mirror/dag/redhat/el5/en/$ARCH/dag
http://mirrors.ircam.fr/pub/dag/redhat/el5/en/$ARCH/dag
http://rh-mirror.linux.iastate.edu/pub/dag/redhat/el5/en/$ARCH/dag
http://rpmfind.net/linux/dag/redhat/el5/en/$ARCH/dag
http://wftp.tu-chemnitz.de/pub/linux/dag/redhat/el5/en/$ARCH/dag
http://www.mirrorservice.org/sites/apt.sw.be/redhat/el5/en/$ARCH/dag

e crie o arquivo rpmforge.repo assim:

[rpmforge]
name = Red Hat Enterprise $releasever - RPMforge.net - dag
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 0

Daí execute:
yum clean all
yum check-update