virtualização em servidores de banco de dados

Propaganda
VIRTUALIZAÇÃO EM SERVIDORES DE BANCO DE DADOS
Igor Lucas Coelho Santos 1
Iremar Nunes de Lima 2
Resumo: A estratégia de virtualização de servidores de banco de dados é uma tendência
recente em Tecnologia da Informação devido às inúmeras vantagens que este processo
traz para as organizações. Este artigo discute as vantagens e desvantagens do processo
de virtualização de servidores de banco de dados, além de descrever os principais
problemas e soluções disponíveis nesta área.
Palavras-chave: Banco de Dados, Virtualização.
1
2
Especialista em Banco de Dados e Business Intelligence ([email protected]).
Mestre em Informática e professor do Centro Universitário Newton Paiva ([email protected]).
2
1. INTRODUÇÃO
Virtualização é a capacidade de desacoplar uma camada de software dos
recursos de hardware necessários pela mesma, de modo que esta passe a depender de
outra camada de software para prover os recursos necessários para seu perfeito
funcionamento. Neste contexto, a virtualização de máquina é a inserção de uma camada
de software entre o sistema operacional e o hardware físico. Esta camada de software
conhecida como Hypervisor, ou VMM (Virtual Machine Monitor) se estiver rodando
sobre um sistema operacional hospedeiro, intercepta toda comunicação vinda do sistema
operacional e as traduz em instruções que serão executadas no hardware propriamente
dito (CAMPBELL, 2006).
A virtualização traz como principal benefício a consolidação da infraestrutura de Tecnologia da Informação numa organização, pois diversas aplicações e
sistemas podem ser reunidos sobre uma única máquina, compartilhando assim os
recursos físicos existentes. Esta consolidação leva à redução de custos diretos, como a
aquisição de novos hardwares e custos de manutenção, e indiretos, como espaço físico
para alocação do parque tecnológico e consumo de energia tanto para funcionamento
como para resfriamento. Outro benefício importante é a melhor utilização da capacidade
de recursos existentes como memória e processamento, evitando ociosidade da infraestrutura e diminuição dos custos.
A virtualização também traz alguns malefícios, sendo o principal deles a
degradação do desempenho gerada pela inclusão de uma camada de software entre o
sistema operacional e o hardware físico. Outro problema importante é que a indireção
criada pela camada de software de controle prejudica certas aplicações que tomam
decisões baseadas nas características físicas do hardware, como por exemplo, Sistemas
Gerenciadores de Banco de Dados (SGBD) (ABOULNAGA, 2008).
3
Este artigo tem como objetivo apresentar os problemas e soluções na
implementação de SGBDs em ambientes virtualizados. É descrito as vantagens e as
desvantagens da utilização de SGBDs em ambientes virtualizados.
O restante deste trabalho está organizado da seguinte forma: a seção 2
aborda os tipos de virtualização existentes no mercado e as vantagens e desvantagens
gerais da virtualização; a seção 3 amplia a discussão sobre virtualização com o foco em
sistemas de banco de dados; na seção 4 será apresentada a conclusão deste trabalho.
2. VIRTUALIZAÇÃO
Para reduzir o impacto do desempenho criado pela camada de software
responsável pela abstração dos recursos físicos, vários tipos de virtualização foram
propostos e implementados por diversos sistemas. Estes basicamente se dividem em
quatro grupos (JONES, 2006):
• Emulação de Hardware, ou “Hardware emulation”;
• Virtualização Total, ou “Full virtualization”;
• Para-Virtualização;
• Virtualização de Sistema Operacional
Na emulação de hardware, uma arquitetura completamente diferente da
utilizada no hardware hospedeiro poderia ser simulada por diversos motivos, como, por
exemplo, utilizar uma plataforma de maior desempenho para emular uma arquitetura de
hardware antiga que não seja mais comercializada sem que seja necessário migrar os
sistemas legados. A desvantagem deste método é que cada instrução deve ser mapeada
de uma arquitetura para a outra, o que prejudica bastante o desempenho (JONES, 2006).
4
Na virtualização total, assim como na emulação de hardware, uma camada
de software é utilizada para abstrair os recursos físicos, porém diferentemente desta
apenas o hardware do sistema hospedeiro é emulado de forma que os sistemas
operacionais instalados sobre a camada de controle devem ser compatíveis com esta
arquitetura. Segundo JONES (2006), “a virtualização total é mais rápida que a emulação
de hardware, porém a performance é pior do que a utilização direta por causa da
mediação do Hypervisor”.
Ainda na virtualização total, dois métodos são propostos. O primeiro é
identificado pela utilização do VMM (Virtual Machine Monitor) que é o software de
controle da máquina virtual instalado sobre o sistema operacional do hospedeiro. O
segundo é feito através da utilização do Hypervisor, que se diferencia do VMM
basicamente pelo fato de que este é instalado diretamente sobre o hardware do
hospedeiro (CAMPBELL, 2006).
A para-virtualização também utiliza de uma camada de software de
controle, porém neste método alterações são inseridas nos sistemas operacionais
convidados para que estes cooperem com o processo de virtualização (JONES, 2006).
Obviamente somente sistemas operacionais que estejam aptos a estas alterações podem
ser utilizados, o que limita sua utilização, porém há um ganho significativo de
performance comparada a virtualização total pois neste caso os sistemas operacionais
convidados se beneficiam do fato de saberem que estão em um ambiente virtual.
Um outro tipo de para-virtualização é conhecido como Tradução Binária, ou
“Binary Translation”. Neste caso, a camada de software de controle realiza
modificações no sistema operacional convidado no momento em que o mesmo é
carregado. Este método permite que um maior número de tipos de sistemas operacionais
5
sejam utilizados, porém com prejuízo de performance e de dificuldade de
implementação (CAMPBELL, 2006).
Tanto o método de virtualização total quanto o de para-virtualização
permitem que sistemas operacionais diversos sejam instalados sobre a camada de
controle. Porém, no método de Virtualização de Sistema Operacional somente um tipo
de sistema operacional convive com diversas instâncias que compartilham os recursos
físicos. Neste método, o sistema operacional deve ter suporte a este tipo de operação e a
vantagem é que o desempenho é comparado à utilização nativa (JONES, 2006).
Todos estes métodos de virtualização se baseiam de alguma forma em uma
camada de software de controle responsável pelo gerenciamento dos recursos físicos e
de seu compartilhamento entre as diversas instâncias existentes. Recentemente, os
fabricantes de processadores, de olho na crescente demanda, têm incluído instruções
que auxiliam o processo de virtualização auxiliando esta camada de software de
controle a resolver certos gargalos já conhecidos, como, por exemplo, a tradução de
endereços de memória.
Os esforços se convergem para a solução do principal malefício da
virtualização, que é o desempenho, porém outros pontos negativos devem ser
considerados. Entre eles podem-se citar problemas de segurança, gerenciamento e
dimensionamento.
No quesito de segurança deve-se levar em conta tanto a física quanto a
virtual. A segurança física diz respeito integridade do sistema computacional, pois como
se está concentrando diversas aplicações críticas em um mesmo equipamento, um
acidente ou um ato planejado teria proporções muito maiores que se cada sistema
estivesse isolado em seu servidor. Na segurança virtual, uma brecha de segurança em
6
uma das instâncias virtuais poderia levar ao comprometimento das demais instâncias,
caso não haja mecanismos suficientes para evitar este problema.
Com relação ao gerenciamento, quesito que hora pode ser considerado uma
vantagem dada a facilidade de se manusear instâncias virtuais, pode também ser
considerado um problema caso não se tenha ferramentas adequadas para o controle das
instâncias ou até mesmo que se crie um número excessivo destas dada a facilidade desta
operação. Ainda relacionado ao gerenciamento deve-se considerar a complexidade de se
manter backup de todas as instâncias criadas e o espaço de armazenamento necessário
para esta operação.
Outro problema a ser citado é relacionado ao efetivo dimensionamento de
cada uma das instâncias que irão compartilhar o mesmo recurso físico. Dimensionar um
ambiente computacional já é uma tarefa bastante complexa ainda mais ter que levar em
conta que os recursos estarão sendo compartilhados. Uma das instâncias pode ter um
pico de utilização de recursos que pode degradar o desempenho das demais instâncias, o
que para o usuário final poderia significar uma piora na qualidade de serviço.
Em contrapartida a estes pontos negativos, a virtualização traz uma gama
enorme de vantagens. Nem todas estas vantagens são fáceis de serem alcançadas e
algumas delas requerem ferramentas especiais para certas operações. As principais
vantagens da utilização de virtualização são:
• Consolidação da infra-estrutura, de modo que menos equipamentos são
necessários para executarem a mesma quantidade de sistemas (MEIER, 2008). Esta
consolidação significa redução do espaço necessário para a acomodação dos
equipamentos, a redução de custos com energia, tanto para funcionamento como para
resfriamento e redução de custos para aquisição e manutenção dos equipamentos.
7
• Maior eficiência na utilização dos recursos, evitando ociosidade dos
equipamentos (CAMPBELL, 2006). Por exemplo, consolidar um sistema que tem um
perfil de alta utilização no horário comercial com um sistema de perfil noturno, a
exemplo de rotinas de backup e análise.
• Aumento da disponibilidade, dada a facilidade de migrar sistemas
virtuais entre servidores físicos (MEIER, 2008). Assim seria possível manter um
ambiente espelhado para o caso de imprevistos ou paradas programadas para
manutenção, e facilmente mover os sistemas de produção entre os servidores, reduzindo
o tempo de parada, conseqüentemente reduzindo custos.
• Melhoria no gerenciamento, pois como estamos lidando com recursos
virtuais estes podem ser migrados, replicados ou redimensionados com maior facilidade
(CAMPBELL, 2006). Uma grande vantagem é, por exemplo, conceder mais memória,
processamento, ou espaço em disco para uma instância sem que seja necessário reiniciar
o servidor.
• Flexibilidade da infra-estrutura, de modo que diversos sistemas
operacionais diferentes podem ser executados ao mesmo tempo, além de poder executar
sistemas antigos em ambientes mais novos sem grande esforço (MEIER, 2008).
• Diminuição do tempo de entrega, pois novas instâncias podem ser criadas
rapidamente sem necessidade de espera para a aquisição de novos hardwares e também
pelo fato destas instâncias serem criadas a partir de imagens previamente configuradas e
testadas (MEIER, 2008).
• Simplificação das rotinas de backup. Com uma instância virtual é
possível fazer um backup completo do sistema, incluindo toda sua configuração. Além
disso, dependendo das ferramentas disponíveis, é possível fazer o backup do sistema
8
enquanto o mesmo estiver sendo utilizado, diminuindo assim o tempo de parada para
backup (SOROR, 2007).
3. VIRTUALIZAÇÃO EM SERVIDORES DE BANCO DE DADOS
Um sistema de banco de dados é composto por duas partes. A primeira é
um conjunto de programas responsáveis pelo gerenciamento do acesso aos dados. Este
possui interfaces para a criação e manipulação dos dados, além de outras
funcionalidades como controle de segurança e integridade. Este conjunto de programas
é chamado de Sistema Gerenciador de Banco de Dados (SGBD). A segunda parte de um
sistema de banco de dados são os dados propriamente ditos, que normalmente estão
dispostos em um ou mais arquivos seguindo uma estrutura física proprietária do SGDB
em questão.
Uma base de dados pode conter de centenas até milhões de registros, de
variados formatos e complexidades. Normalmente os dados estão relacionados a um
tema central, e os registros se relacionam de diversas formas. Sistemas de banco de
dados corporativos normalmente trabalham na ordem de centenas de milhões de
registros, por este motivo são grandes consumidores de recursos físicos.
Não bastasse o alto consumo de recursos, sistemas de banco de dados
também são normalmente bastante complexos quanto a sua correta instalação,
configuração e otimização. Dadas estas características, de todas as vantagens da
utilização de virtualização de servidores descritas anteriormente, duas merecerem
destaque quando é utilizada em servidores de banco de dados:
• A possibilidade de copiar e migrar uma máquina virtual completa com a
mesma estando em execução (SOROR, 2007). Dependendo da ferramenta utilizada para
gerenciar as máquinas virtuais é possível copiar uma imagem inteira do servidor mesmo
9
este estando ativo, o que facilita e agiliza o processo de backup. Além disso, a
funcionalidade de migrar uma imagem entre servidores físicos diferentes nos traz a
possibilidade de implementar sistemas de alta disponibilidade com maior facilidade.
• A possibilidade de salvar uma imagem de uma máquina virtual
previamente configurada e utilizá-la como base para a criação de novos servidores de
banco de dados. Este modelo, que em inglês é chamado de Appliance, reduz o esforço
de criação e configuração de ambientes de banco de dados, simplificando o processo de
entrega de novos ambientes (SOROR, 2007).
Justamente por ser um grande consumidor de recursos físicos, o
desempenho é a grande desvantagem da utilização de virtualização em servidores de
banco de dados. Porém, de acordo com FAROOQ (2008), a perda de desempenho é em
média menor que 10% e é devido em grande parte às falhas de paginação, ou Page
Fault. Uma falha de paginação é ocasionada quando uma página de dados necessária
não se encontra na memória principal, ou se encontra, não está presente no espaço de
endereçamento do processo corrente (FAROOQ, 2008).
Portanto, o tratamento de uma falha de paginação é significativamente
mais lento em um ambiente virtualizado, porém quando comparado ao tempo de espera
para as interrupções de entrada e saída para a leitura dos dados em disco, esta lentidão
se torna apenas uma pequena fração do tempo total de execução das consultas ao banco
de dados. Isso nos leva ao valor médio de menos de 10% detectado por FAROOQ
(2008).
Esta informação é de extrema importância, pois significa que o
percentual de acerto do cache de páginas é fator crucial para o bom desempenho do
sistema de banco de dados. Ou seja, ter um cache grande o suficiente para comportar
10
uma boa quantidade de dados irá influenciar significativamente na performance das
consultas à base de dados, assim como ocorre com ambientes não virtualizados.
4. CONCLUSÃO
Diversas são as vantagens e desvantagens da utilização de virtualização
em servidores de banco de dados. Para ter sucesso em um projeto de virtualização devese contar com um hardware de primeira linha, principalmente aqueles que provêem
algum suporte à virtualização; um conjunto de ferramentas adequadas às necessidades
do projeto; e de um estudo detalhado do comportamento do sistema de banco de dados
anterior à virtualização para que sua configuração no ambiente virtual seja feita da
melhor maneira possível.
Flexibilidade de gerenciamento, melhoria da disponibilidade e maior
eficiência na utilização dos recursos são apenas exemplos de benefícios que se adquire
com a virtualização de servidores de banco de dados a um preço não tão alto em termos
de perda de desempenho, obviamente considerando um projeto de virtualização bem
executado.
11
REFERÊNCIAS BIBLIOGRÁFICAS
ABOULNAGA, Asharaf; AMZA, Cristiana; SALEM, Kenneth. Virtualization and
Databases: State of the Art and Research Challenges. [s.n.]. Nantes, mar. 2008.
Disponível em: <http://www.cs.uwaterloo.ca/~ashraf/pubs/edbt08dbvirtTutorial.pdf>.
Acesso em: 1 out. 2008.
BARHAM, Paul. et. al. Xen and the Art of Virtualization. [S.l.: s.n.] out. 2003.
Disponível em <http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.5.9887>.
Acesso em: 20 out. 2008.
CAMPBELL, Sean; JERONIMO, Michael. An Introduction to Virtualization. [S.l.:
s.n.] 2006. Disponível em:
<http://softwarecommunity.intel.com/isn/downloads/virtualization/pdfs/An_Introductio
n_to_Virtualization.pdf>. Acesso em: 1 out. 2008.
FAROOQ, Umar. et.al. Database Systems on Virtual Machines: How Much do You
Lose. [s.n.]. Cancun, abr. 2008. Disponível em:
<http://www.cs.uwaterloo.ca/~ashraf/pubs/smdb08overhead.pdf>. Acesso em: 1 out.
2008.
JONES, M. Tim. Virtual Linux: An overview of virtualization methods, architectures,
and implementations. [S.l.: s.n.] dez. 2006. Disponível em
<http://www.ibm.com/developerworks/library/l-linuxvirt/index.html>. Acesso em: 5
out. 2008.
MEIER, Shannon. IBM Systems Virtualization: Servers, Storage, and Software. [S.l.:
s.n.] abr. 2008. Disponível em
<http://www.redbooks.ibm.com/redpapers/pdfs/redp4396.pdf>. Acesso em: 7 out. 2008.
SOROR, Ahmed; ABOULNAGA, Asharaf; SALEM, Kenneth. Database
Virtualization: A New Frontier for Database Tuning and Physical Design. [s.n.].
Istambul, abr. 2007. Disponível em:
<http://www.cs.uwaterloo.ca/~ashraf/pubs/smdb07virt.pdf>. Acesso em: 1 out. 2008.
SOROR, Ahmed. et. al. Automatic Virtual Machine Configuration for Database
Workloads. [s.n.]. Vancouver, jun. 2008. Disponível em:
<http://www.cs.uwaterloo.ca/~ashraf/pubs/sigmod08vmconf.pdf>. Acesso em: 15 out.
2008.
Download