Os Dez Mandamentos do Rei da Virtualização

Propaganda
Os Dez Mandamentos
do Rei da
Virtualização
Santos, Gustavo Lopes de Oliveira
Os Dez Mandamentos do Rei da Virtualização / Gustavo
Lopes de Oliveira Santos. Cuiabá – MT: 2013.
1. Ciência da computação – virtualização. I. Título.
Gustavo Lopes de O. Santos
MBA, LPIC-1, ITIL, Cobit, CAPM
Os Dez Mandamentos
do Rei da
Virtualização
Uma breve conversa sobre o que é, como
funciona e qual o futuro da virtualização
Sumário
Prólogo.................................................................................................. 7
Mandamento 1. Saiba o que é virtualização.......................................9
Instrução e processamento............................................................9
Na vida real....................................................................................12
Como o problema foi resolvido?..................................................15
O custo da virtualização................................................................17
A virtualização sai de moda..........................................................19
A volta da virtualização primordialmente como mecanismo de
isolamento entre sistemas operacionais.....................................20
Mandamento 2. Entenda os diferentes tipos de virtualização.........25
Virtualização de guest...................................................................25
Mandamento 3. Conheça as soluções disponíveis
Mandamento 4. Mostre algum conhecimento sobre KVM
Mandamento 5. Mostre algum conhecimento sobre Xen
Mandamento 6. Mostre algum conhecimento sobre Hyper-V
Mandamento 7. Mostre algum conhecimento sobre OpenVZ
Mandamento 8. Mostre algum conhecimento sobre VmWare
Mandamento 9. Conheça os principais avanços na área de virtualização
Mandamento 10. Saiba o que a virtualização não pode fazer por
você
Epílogo
Prólogo
Talvez, algum grande gênio da Tecnologia da Informação
que tenha ficado congelado por quarenta anos, e acabou de acordar, definisse virtualização como o ato de multiplexar máquinas
computacionais em um único Hardware.
E talvez, um gestor de tecnologia da Informação contemporâneo, que queira simplesmente economizar o dinheiro da organização, tivesse o cérebro imediatamente ejetado ao escutar esse
enigmático corolário.
Virtualização, humanamente falando, é o fato de você fazer
com que um computador funcione como vários computadores. É o
fato de você fazer um sistema operacional funcionar como vários
sistemas operacionais. Simples? Sim. Acabou o livro. Vá para sua
empresa e mostre para a gestão estratégica quem é que manda.
Na verdade, há mais mistérios entre o software e o hardware do que nossa vã filosofia. Ao longo do tempo – e põe tempo nisso! – técnicas foram criadas para melhorar o desempenho de computadores (ou sistemas operacionais) “virtuais”. A popularização de
tais técnicas é recente, porém suas primeiras palavras foram pronunciadas quando a microcomputação ainda engatinhava. Precoce
ela.
O objetivo deste livro é trazer o histórico, os conceitos, as
técnicas, o funcionamento, as soluções de virtualização para você,
leitor, de uma maneira direta e descontraída. Não é um trabalho
acadêmico. Não é um tratado internacional. É apenas um conjunto
de textos feitos para serem interessantes, com alguns diagramas
para facilitar ainda mais seu entendimento.
Muito se tem dito sobre virtualização. Tem empresas por aí
que, inclusive, denominam de virtualização o mero mapeamento de
pastas compartilhadas na rede! Esse tipo de marketing tem dificultado, um pouco, algumas pessoas no esforço de obterem um significado pontual para esse conceito. Será que virtualização é tudo?
8 - Os Dez Mandamentos do Rei da Virtualização
Tudo é virtualização? Será que eu sou virtual? O céu não é azul? Eu
existo? Calma. Virtualização não é tudo. E é isso que vamos explicar
neste pequeno livro.
Começaremos com o básico: o que é virtualização, no primeiro capítulo. Após, discutiremos o que é um hipervisor, e os tipos
de hipervisores que existem – não tenha medo dos termos, chegaremos lá aos poucos, e você certamente irá dominá-los. A seguir,
revelaremos algumas das principais soluções disponíveis no mercado. Uma visão de alto nível, claro.
Do capítulo quatro ao capítulo oito, as coisas esquentam.
Você será capaz de entender qualquer assunto que for falado sobre
virtualização, pois o mundo inteiro usa essas soluções. Tais soluções tanto podem ser proprietárias (VmWare, Hyper-V), como não
(Xen, KVM, OpenVZ). Existem outras, derivadas dessas.
No penúltimo capítulo, faremos um tour sobre o que o mercado está preparando para o futuro da virtualização, seja em nível
de hardware, ou em nível de software, e finalmente terminaremos
este pequeno livro com uma discussão sobre o que a virtualização
não é, e o que ela de fato não pode fazer por uma empresa. Como
acontece com muitos assuntos que despertam interesse, existe
muita falácia sobre virtualização. Desmistificaremo-as.
Espero que você goste. Estou à disposição para ouvir críticas ou sugestões.
Novembro de 2013,
Autor.
Mandamento 1.
Saiba o que é virtualização
Neste capítulo introdutório, discutiremos sobre o conceito
de virtualização. É uma discussão de alto nível, sem entrar em muitos detalhes técnicos que fariam a leitura ficar um pouco massante.
Este capítulo é prerrequisito para os demais.
Iniciaremos com uma explicação sobre a compatibilidade
que deve existir entre a instrução e o processador, e a seguir, em
forma de histórico, apontaremos a solução encontrada para a resolução do problema da incompatibilidade de sistemas escritos para
uma arquitetura diversa daquela que o processador executa.
Instrução e processamento
Formato da
instrução da
arquitetura X
Formato da
instrução da
arquitetura Y
Figura 1: Formatos de diferentes
tipos de instrução
O principal “ator” responsável por executar os programas
no computador é o microprocessador, ou, simplesmente, proces-
10 - Os Dez Mandamentos do Rei da Virtualização
sador, como usaremos neste livro. E cada processador, ou melhor,
cada categoria de processador fala uma linguagem específica. Imagine que os tipos de instruções podem ser representados da forma
gráfica indicada: instruções da arquitetura X como um triângulo e
instruções da arquitetura Y como um hexágono. Para facilitar as
coisas, considere a Figura 1.
Sistema
operacional feito
para a arquitetura
X
✔
Instruções de
arquitetura X
Hardware da
arquitetura X
Sistema
operacional feito
para a arquitetura
Y
✔
Instruções de
arquitetura Y
Hardware da
arquitetura Y
Figura 2: Envio de instrução ao processador
Saiba o que é virtualização - 11
Quando dizemos arquitetura, estamos nos referindo ao
formato da instrução. Um processador só entende instruções que
sejam do mesmo formato, ou seja, a instrução deve ser compatível
com a arquitetura do computador. Por que sistemas operacionais
funcionam? Por que a forma executável dos sistemas operacionais
usam instruções da mesma arquitetura do processador, conforme
ilustrado nas figuras 2. Um processador fornece um conjunto de
instruções que devem ser usadas pelo software; softwares são meramente “sequências de instruções que dizem ao computador o
que fazer”1.
!
Sistema
operacional feito
para a arquitetura
Y
!
Erro de
compatibilidade
Hardware da
arquitetura X
Figura 3: Falha na execução
Um processador, portanto, não executará software (como
um sistema operacional) que emita instruções diversas do tipo do
processador. Um sistema operacional da arquitetura Y de forma alguma, a princípio, será executado em um processador de arquitetura X, conforme ilustrado na figura 3.
1
CARTER, Nicholas, Arquitetura de Computadores, págs. 44. Bookman, São Paulo,
2003
12 - Os Dez Mandamentos do Rei da Virtualização
Na vida real
É bom saber que hoje em dia existem diferentes arquitetu-
Sistema Operacional
x86-64
Sistema Operacional
x86-64
i1
i1
i2
✔
i3
✔
✔
Hardware
X86-64
Sistema Operacional
ARM
i1
i2
✔
✔
i3
!
!
!
Hardware
ARM
S. Operacional
ARM
i3
Hardware
ARM
i2
i1
✔
!
i2
✔
S.O.
x86-64
!
i3
✔
!
Hardware
ARM
Figura 4: Quatro situações
ras de computadores. Destacamos algumas:
•
x86: é a arquitetura clássica dos processadores de uso pessoal. Foi usado durante muito tempo pela grande maioria
dos sistemas operacionais. A principal limitação desta arquitetura é não conseguir reconhecer mais que 4GB de memória RAM, o que é um problema crescente, tendo em vista
Saiba o que é virtualização - 13
que os sistemas operacionais demandam, a cada dia, mais
recursos computacionais, e essa limitação está se tornando
um gargalo.
•
ia64: arquitetura de 64 bits introduzida pela Intel em 2001 2.
Suporta endereçamento de memória superior aos 4GB, porém não é compatível com as instruções da popular arquitetura x86. Significa que sistemas escritos para x86 não rodam nesta arquitetura, e precisam ser reescritos (recompilados).
•
x86-64: também conhecida como AMD64, pois foi introduzida no mercado em 2002, pela AMD. Possui os mesmos benefícios da arquitetura IA64, e, além disso, é compatível
com instruções da arquitetura x86. Isso significa que é possível executar softwares, incluindo sistemas operacionais,
da arquitetura x86 nesta arquitetura, sem precisar reescrevê-los3.
•
ARM: famosa arquitetura usada principalmente em sistemas embarcados, caracterizada pelo bom desempenho na
execução de instruções e baixo consumo de energia.
Existem muitas outras arquiteturas, como por exemplo
PowerPC, usada nos antigos computadores da Apple. Hoje, porém,
os sistemas Mac Os X são compilados com instruções x86-644.
Tomemos como exemplo um Linux qualquer. Sabe-se que
existem algumas distribuições, como o Fedora, que possuem tanto
versões para x86-64 quando para ARM. Temos então algumas situações possíveis que, neste ponto, você sabe quais são.
Na figura 4, as quatro situações são:
1. Um sistema x86-64 sendo executado sobre um hardware
compatível.
2
3
4
ALBARELLO, Renato, Arquiteturas VLIW, pág. 4. Instituto de computação, Universidade Estadual de Campinas - UNICAMP.
AMD64 Architecture Programmer's Manual, Volume 1: Application Programming, pág. 1. AMD, 2013.
“Apple to Use Intel Microprocessors Beginning in 2006”, disponível em
http://www.apple.com/pr/library/2005/06/06Apple-to-Use-Intel-Microprocessors-Beginning-in-2006.html. Acesso: 20/11/2013, 14:03.
14 - Os Dez Mandamentos do Rei da Virtualização
2. Um sistema x86-64 não sendo executado em um processador ARM, por não ser compatível – em tese, sequer seria
possível instalar este sistema neste computador.
Aplicação 1
Aplicação 2
Máquina
virtual
Sistema operacional escrito
para o computador legado
Hardware virtualizado de
um computador legado
VM/370 (Sistema Operacional)
Máquina
real
Hardware do System/370
Figura 5: Máquina virtual dentro de uma máquina real
3. Um sistema ARM sendo executado sobre um hardware
compatível.
4. Um computador com dois sistemas operacionais, provavelmente em duas partições de disco. O sistema é que compatível com a arquitetura ARM será executado. Já o outro sistema, não, pois não é compatível.
☞
A priori, não é possível executar um software escrito
para uma determinada arquitetura, em outra.
Saiba o que é virtualização - 15
Como o problema foi resolvido?
No passado, houve muita dor de cabeça com a questão
apresentada anteriormente, a respeito da incompatibilidade entre
arquiteturas. Cada novo fabricante de computadores introduzia no
mercado sua arquitetura proprietária. Às vezes acontecia de um fabricante fornecer compatibilidade com equipamentos anteriores;
porém, quando era necessário romper com a família anterior para
avançar tecnologicamente, não era fornecida compatibilidade 5. A
grande questão para os gerentes empresariais era escolher entre
manter suas aplicações em sistemas ultrapassados, cada dia ficando mais lentos (pois a demanda crescia), ou migrar para um novo
computador com vários novos recursos, porém totalmente incompatível com as aplicações já existentes. Algumas vezes, quando não
acontecia falência das empresas, escolhia-se gastar alguma quantia
pornográfica de dólares reescrevendo os softwares (inclusive de
baixo nível, como o sistema operacional) para a nova arquitetura. E
isso se repetia com novas empresas lançando novas arquiteturas.
Então, em 1972, a IBM introduziu no mercado uma das
mais bombásticas soluções para a época: o conceito de máquina
virtual: o sistema operacional VM/370 para os computadores System/3706 - que, embora não fosse o primeiro de sua espécie, foi o
mais popular. Era um computador, de determinada arquitetura,
que simplesmente “fingia” ser outro computador, de outra arquitetura (legada). E era essa arquitetura “virtual” que era apresentada a
um software mais antigo que, de outra forma, não seria executado
na presente arquitetura7.
5
6
7
STALLINGS, William. Arquitetura e organização dos computadores, pág. 24. 8ª
edição. São Paulo. Pearson Pratice Hall, 2010.
CREASY, R. J., The Origin of the VM/370 Time-sharing System, em IBM Journal Research Development, vol. 25, nº 5, Setembro 1981, pág. 485. Este artigo mostra
o aspecto de isolamento das máquinas virtuais em detrimento à compatibilidade com arquiteturas anteriores.
TAKEMURA, Chris; CRAWFORD, Luke S., The Book of Xen – A practical guideline
for the system administrator, pág. XX. No starch press, San Francisco, 2010.
16 - Os Dez Mandamentos do Rei da Virtualização
Apl. 1
Apl. 2
Apl. 3
Apl. 4
S.O. legado
S.O. 370
Hardware virtual
legado
Hardware virtual
System/370
VM/370 (Sistema Operacional)
Máquinas
virtuais
Máquina
real
Hardware do System/370
Figura 6: Várias máquinas sendo virtualizadas
Parecia magia, mas era tecnologia! Um computador emulando uma arquitetura diferente da sua própria! O mais interessante era que seria possível virtualizar várias arquiteturas ao mesmo
tempo, significando que não seria necessário desligar uma máquina virtual para rodar outra.
☞
Virtualização consiste na instituição de alguma camada
de abstração entre o hardware real e o software alvo, de
forma a possibilitar a execução de tal software, que foi escrito para
uma arquitetura incompatível com a arquitetura em que está se
pretendendo executar.
Saiba o que é virtualização - 17
Você pode ter ficado empolgado com a ideia. E realmente, é
empolgante. Mas a solução também trouxe seus próprios proble-
Sistema
operacional
feito para a
arquitetura Y
✔
Tradução de
instruções
Hardware
virtual da
arquitetura Y
✔
✔
Hardware
real da
arquitetura
X
Figura 7: Tradução de instruções
mas intrínsecos.
18 - Os Dez Mandamentos do Rei da Virtualização
O custo da virtualização
Virtualizar é caro. Não, não estamos falando apenas no sentido financeiro, mas também no sentido tecnológico. Observe bem
a figura 7, e veja o que acontece quando qualquer instrução é emitida.
Tradução, boa palavra! Esse tipo de tradução chama-se tradução binária, ou virtualização total (Full Virtualization). Cada instrução emitida pelo software à máquina virtual é convertida, isto é,
traduzida, para uma instrução da máquina de destino – uma instrução que o processador real entenda8. Como existem arquiteturas
discrepantes entre si, pode acontecer – e, de fato, geralmente ocorre - de uma instrução virtual ser traduzida para múltiplas instruções
de máquina real. Ou várias instruções virtuais para uma só instrução real.
No mínimo, é necessário que a máquina virtual recepcione
inteiramente a instrução virtual, traduza-a e envie a instrução para
o processador real. Há um tempo de espera aí, que não aconteceria
em um ambiente não virtualizado. Observe que, na vida real, não
há uma instrução isolada: existem milhares, até mesmo milhões de
instruções por segundo, e, no esquema de tradução binária, cada
uma das milhões de instruções precisa ser convertida. Uma por
uma. E cada tradução leva um tempo. Pode ser até ínfimo, mas
pense neste ínfimo multiplicado por milhões…
Há um outro custo inerente: a complexidade do hardware.
Observe que, nesse esquema, o hardware da máquina juntamente
com o software responsável por oferecer a virtualização devem resolver os seguintes conflitos:
1. Fornecer várias máquinas virtuais ao mesmo tempo.
2. Conhecer todo o conjunto de instruções, e implementá-lo
em hardware, para cada um dos tipos de máquina virtual
suportável (isto é, virtualizável).
3. Proteger (isolar) os recursos de cada máquina virtual, como
8
AHUJA, Sanjay P., Full and Paravirtualization, pág. 4. Disponível em
http://www.unf.edu/~sahuja/cloudcourse/Fullandparavirtualization.pdf. Acessado em: 20/11/2013, 15:18.
Saiba o que é virtualização - 19
memória, acesso ao disco, e assim por diante. Pois cada
software rodando sobre as máquinas virtuais pensará que o
sistema é exclusivo. Cabe ao hardware solucionar estes
conflitos.
A solução de virtualização funcionou, e muito! Salvou a pátria na época. Mas havia os custos citados. O progresso das máquinas virtuais continuou por algum tempo. Gestores empresariais ficaram aliviados ao saberem que não seria mais necessário reescrever todas as suas aplicações quando da aquisição de um novo computador.
A virtualização sai de moda
A necessidade de virtualizar diminuiu quando houve alguma padronização, no mercado, do conjunto de instruções de processadores: os fabricantes lançavam computadores compatíveis
com suas versões anteriores e com de outros fabricantes. A arquitetura do conjunto de instruções muitas vezes era a mesma 9. Além
disso, a respeito dos sistemas operacionais: o Unix entrou em cena,
e muitas organizações passaram a usá-lo. Foram introduzidas no
mundo linguagens de programação de alto nível, como o C, que
eram capazes de compilar (isto é, transformar um programa escrito
em C em instruções de máquina) para muitas das arquiteturas existentes. Em suma: tudo ficou mais simples, e, com essa simplicidade
introduzida, tornou-se mais barato – tanto em termos de custos financeiros quanto em termos de complexidade – usar ambientes
não virtualizados.
A ideia de virtualização permaneceu em sono profundo até
acordar nos anos 2000.
9
STALLINGS, William. Arquitetura e organização dos computadores, pág. 24. 8ª
edição. São Paulo. Pearson Pratice Hall, 2010.
20 - Os Dez Mandamentos do Rei da Virtualização
A volta da virtualização primordialmente como
mecanismo de isolamento entre sistemas operacionais
Nos últimos anos 10 anos mais ou menos, a virtualização
voltou com tudo, e ao que parece veio para ficar. Porém, o objetivo
principal não é mais meramente fornecer compatibilidade (embora
a virtualização ainda seja usada para isso), e sim, capacitar que vários sistemas operacionais, que originalmente são compatíveis com
o processador real, dividam um mesmo computador físico, dando
Servidor de Banco
de Dados
Servidor de Aplicação
i1
i1
✔
✔
Sistema Operacional
Linux x86-64
i2
i3
✔
Hardware
X86-64
Sistema Operacional
openBSD x86-64
i2
✔
i3
✔
✔
Hardware
X86-64
Figura 8: Dois servidores com requisitos diferentes
aos sistemas virtualizados a impressão de que possuem uma má-
Saiba o que é virtualização - 21
quina exclusiva.
Não entendeu? Vamos detalhar a explicação.
Suponha que uma organização queira executar um servidor
de banco de dados que roda melhor sobre Linux. Além disso, a empresa também quer rodar um servidor de aplicações web que roda
de maneira mais segura sobre um outro sistema, digamos, um
openBSD.
Servidor de Banco
de Dados
i1
Servidor de Aplicação
✔
i2
Sistema Operacional
Linux x86-64
i3
✔
i4
✔
Sistema Operacional
openBSD x86-64
✔
i5
Hardware virtual
X86-64
✔
i6
✔
Hardware virtual
X86-64
Árbitro
i3
✔
i4
✔
i5
✔
i6
✔
Hardware físico
X86-64
Figura 9: Virtualizando um hardware do mesmo tipo que o
real
Originalmente, conforme por ser visto na figura 8, esses
servidores foram escritos com instruções x86-64 e obviamente são
compatíveis com os processadores x86-64. Considere que, embora
22 - Os Dez Mandamentos do Rei da Virtualização
a aplicação de banco de dados seja compatível com o processador,
ela também precisa ser compatível com o sistema operacional, o
que impede que ela execute, por exemplo, no openBSD.
A princípio, não é possível executar dois sistemas operacionais ao mesmo tempo sobre um mesmo processador. Porém, como
foi dito a respeito do IBM VM/370, é possível virtualizar vários processadores e entregá-los aos sistemas virtuais, dando aos sistemas
virtualizados a impressão de que possuem o computador exclusivamente para si mesmos.
Não é questão de vaidade, é questão de princípios: um sistema operacional, diferente de um programa comum, precisa ter
acesso ao hardware do computador. E o hardware precisa estar disponível somente para o sistema operacional. O que a solução de
virtualização faz é entregar “um hardware” para o sistema ficar feliz.
Não sabe o sistema que o hardware não é real, mas isso pouco importa. O objetivo último (que é executar o servidor de banco de dados, por exemplo) foi alcançado.
É necessário que você atente para os seguintes fatos ao
olhar para a figura 9:
1. Observe que o hardware virtual entregue para os sistemas
operacionais virtuais é do mesmo tipo, da mesma arquitetura, do hardware real. Então, podemos dizer que esse
computador está virtualizando a si próprio.
2. Os sistemas operacionais são originalmente compatíveis
com o hardware real. A virtualização, aqui, não é prerrequisito para o funcionamento dos sistemas virtuais.
3. Nem sempre as instruções precisam ser traduzidas. Observe as instruções i3, i4, i5 e i6. Elas não foram traduzidas:
foram tão-somente repassadas para o processador real.
Isso é lógico: não há tradução binária onde não há necessidade de tradução. Certo? Tente entender este ponto
antes de passar para o próximo.
4. Esse tipo de virtualização é mais rápida do que a tradução
binária.
Saiba o que é virtualização - 23
5. Embora não haja tradução binária, é necessário algum tipo
de controle, para que os hardwares virtuais não queiram
enviar instruções ao hardware físico exatamente ao mesmo
tempo. Também é necessária a arbitragem para impedir
múltiplo acesso a um mesmo dispositivo de entrada/saída
(disco rígido, rede, impressora). Observe, portanto, que entre os hardwares virtuais e o hardware real, há um árbitro
que serve exatamente para isso. Esse árbitro, como veremos no próximo capítulo, pode ser implementado tanto no
hardware real do computador, como em firmware ou
software.
Hoje em dia, portanto, a virtualização está tornando-se popular e está sendo usada nas organizações mais para tornar possível o cenário da figura 9, do que propriamente fornecer compatibilidade. A virtualização hoje é usada principalmente para fornecer isolamento entre múltiplos sistemas operacionais rodando simultaneamente sobre um mesmo hardware físico. Em vez de comprar vários computadores físicos para rodar diferentes aplicações, pode-se
comprar um único computador físico com potência suficiente, e virtualizar os sistemas para nele serem executados.
Enfim, o árbitro tem um nome oficial. Chama-se hipervisor,
ou, no inglês, hypervisor. Esse é o assunto do próximo capítulo.
Mandamento 2.
Entenda os diferentes tipos de
virtualização
Você já deve ter percebido que não existe um único tipo de
virtualização. Pelo menos, existem dois tipos: aquele criado pela
IBM há quarenta anos, que virtualizava uma máquina inteira, e usava a tradução binária, e a virtualização atual, que está mais comprometida com o isolamento entre sistemas operacionais, e pode ou
não executar a tradução binária.
Nos dias de hoje, é possível classificar os ambientes da seguinte forma:
•
Virtualização do tipo hipervisor, ou tipo 1, ou bare-metal.
•
Virtualização do tipo convidado (ou guest), ou tipo 2..
•
Virtualização do tipo híbrido.
Virtualização do tipo hipervisor, ou tipo 1, ou
bare-metal
Download