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.