banco de dados virtual: uma nova abordagem para virtualizaÇÃo de banco de dados
DESCRIPTION
Virtualização de servidores implementa uma camada lógica sobre um sistema físico, de forma que todos os dispositivos possam ser acessados ou compartilhados por aplicações clientes hospedadas no ambiente virtual. O presente trabalho apresenta um levantamento do estado da arte sobre a utilização de sistemas de banco de dados virtualizados, mostrando as principais técnicas, vantagens e as desvantagens dessa utilização.TRANSCRIPT
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL
FACULDADE DE INFORMÁTICA
PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
BANCO DE DADOS VIRTUAL: UMA NOVA
ABORDAGEM PARA VIRTUALIZAÇÃO DE
BANCO DE DADOS
TIMOTEO ALBERTO PETERS LANGE
Monografia apresentada à Disciplina de
Introdução à Pesquisa, curso de
Mestrado em Ciência da Computação, Faculdade de Informática, Programa de
Pós-Graduação em Ciência da
Computação, Pontifícia Universidade
Católica do Rio Grande do Sul.
Orientador: Prof. César Augusto F. De Rose
Porto Alegre
2011
BANCO DE DADOS VIRTUAL: UMA NOVA ABORDAGEM PARA
VIRTUALIZAÇÃO DE BANCO DE DADOS
RESUMO
Virtualização de servidores implementa uma camada lógica sobre um sistema físico, de forma que todos os dispositivos possam ser acessados ou compartilhados por aplicações clientes hospedadas no ambiente virtual. O presente trabalho apresenta um levantamento do estado da arte sobre a utilização de sistemas de banco de dados
virtualizados, mostrando as principais técnicas, vantagens e as desvantagens dessa utilização.
Palavras-Chave: Banco de dados, Virtualização, Hardware, Migração, Hypervisor, Desempenho
ABSTRACT
Server virtualization implements a logical layer over a physical system, in a way that all devices can be accessed or shared by client applications, hosted in virtual environments. This work presents a review of state of the art about virtualized databases, showing the
main techniques, advantages and the disadvantages of using it.
Keywords: Database, Virtualization, Hardware, Migration, Hypervisor, Performance
SUMÁRIO
1. Introdução .................................................................................................... 5
2. Virtualização............................................................................................... 7
2.1 Definição de Virtualização ............................................................................. 7
2.2 Tipos de Virtualização .................................................................................. 8
2.2.1 Emulação de Hardware .......................................................................... 8
2.2.2 Virtualização Total ................................................................................. 8
2.2.3 Para-virtualização.................................................................................. 9
2.2.4 Virtualização do Sistema Operacional ..................................................... 10
2.3 Motivações para Virtualizar ......................................................................... 10
2.4 Recursos que podem ser Virtualizados ......................................................... 11
3. Banco de Dados ........................................................................................... 14
3.1 Definição de Banco de Dados ...................................................................... 14
3.2 Estrutura de Sistemas de Banco de Dados .................................................... 15
3.3 Banco de Dados em Ambientes Virtualizados ................................................ 17
4. Banco de Dados Virtualizados ..................................................................... 19
4.1 Desafios da Virtualização de Bancos de Dados .............................................. 19
4.2 Modelo do Banco de Dados Virtualizado ........................................................ 20
4.2.1 Alta Disponibilidade de Banco Virtualizados ........................................... 23
4.2.2 Consolidação de Servidores em Banco de Dados Virtualizados................... 24
4.3. Visão geral dos Bancos de Dados Atuais ...................................................... 24
4.3.1 Oracle Rac One Node ........................................................................... 24
4.3.2 IBM DB2 9.7 ....................................................................................... 25
4.3.3 Microsoft SQL Server ........................................................................... 25
4.4 Discussão sobre as comparações entre os banco de dados.............................. 26
5. Conclusões .................................................................................................. 28
6. Referências ................................................................................................. 29
5
1. Introdução
Atualmente, a virtualização de recursos computacionais vem sendo utilizada na
maioria dos recursos de TI (Tecnologia de Informação), tais como servidores, redes,
sistemas operacionais e aplicações. Entre eles, a virtualização de servidores é a mais
popular. A Virtualização de servidores implementa uma camada lógica sobre um sistema
físico, de forma que todos os dispositivos possam ser acessados ou compartilhados por
aplicações clientes hospedadas no ambiente virtual. [1]
As principais vantagens da utilização de tecnologias de virtualização são: o
fornecimento de forte isolamento, segurança e consolidação de servidores físicos. Além
disso, também podem ser exploradas novas possibilidades, tais como, a alta
disponibilidade e balanceamento de carga de trabalho. [2]
Nesse sentido, existe uma tendência natural em tentar explorar os benefícios da
virtualização também em sistema de banco de dados. De fato, pesquisas recentemente
avaliam o impacto da utilização de tecnologias de virtualização em banco de dados e
propõem soluções específicas para esse tipo de sistema [4, 5, 6, 7,8].
Os ambientes virtualizados atuais dão suporte ao banco de dados, porém
executando em Máquinas Virtuais (VM).
A abordagem mais natural para levar a virtualização para sistema de banco de
dados é aplicar o sistema em um servidor virtualizado. A principal vantagem de
executar um sistema de banco de dados em um ambiente virtualizado pode ser
considerada a consolidação de vários servidores virtuais em um único servidor físico,
reduzindo assim o custo de manutenção e consumo de energia. [2] Porém, alguns
problemas relevantes são apresentados, quais sejam, o problema de transparência da
localização do banco de dados para as aplicações clientes e a perda de desempenho [9]
[7].
Normalmente, o servidor de banco de dados possui recursos limitados para o
processamento e há uma constante demanda de mais recursos para a execução do
sistema. Além desta característica, existem outras propriedades interessantes que
devem ser levadas em consideração e que justificam a discussão sobre virtualização de
servidores de banco de dados.
Na nova abordagem, o banco de dados não é executado em uma máquina
virtual. Neste conceito somente a instância de banco de dados é virtualizado.
Neste contexto, o presente trabalho tem como objetivo apresentar um
levantamento do estado da arte sobre a utilização de sistemas de banco de dados em
6
ambientes virtualizados, mostrando as principais técnicas, vantagens e as desvantagens
dessa utilização.
O texto está organizado da seguinte maneira: primeiramente, o capítulo 2
apresenta as formas de virtualização; o capítulo 3 apresenta os conceitos dos sistemas
de banco de dados atualmente e as principais características; o capítulo 4 mostra os
sistemas de banco de dados em ambientes virtuais, apresentando conceitos de banco de
dados em ambientes virtualizados e banco de dados virtualizados; no capitulo 5
apresenta a discussão sobre os modelos e por fim, a seção 5 realiza as considerações
finais ressaltando os principais desafios dessa área.
7
2. Virtualização A virtualização de recursos adiciona uma camada intermediária de software entre as
aplicações e o hardware. Esta camada mapeia os recursos virtuais visíveis às aplicações
(Banco de Dados, no contexto deste trabalho) ligando com os recursos físicos
disponíveis no hardware hospedeiro. [7]
A camada de comunicação intermediária entre os recursos físicos e os recursos
virtuais possibilita o compartilhamento dos recursos e a realocação destes recursos
conforme necessário. Assim, em um servidor físico podem ser executadas múltiplas
aplicações (isoladas) compartilhando os mesmos recursos de hardware. [7]
O texto está organizado da seguinte forma. Primeiramente, é apresentado o
conceito de virtualização (seção 2.1). Na seqüência são apresentados os tipos de
virtualização (seção 2.2) e por último (seção 2.3) são apresentados exemplos de
recursos que podem ser virtualizados.
2.1 Definição de Virtualização A virtualização é amplamente definida como o ato de executar um software em
um ambiente virtual. Um ambiente virtual existe quando um sistema operacional é de
alguma maneira, emulado ou não é executado diretamente no hardware físico.
Segundo a definição apresentada por Eisen, a virtualização abstrai a estrutura
física subjacente de várias tecnologias. Virtualização, em computação, é a criação de
uma versão virtual de algo, como uma plataforma de hardware, sistema operacional,
um dispositivo de armazenamento ou recursos de rede. [10]
Outra definição de Virtualização dada por Campbell e adotada neste trabalho
define virtualização como processo de desassociaçao do hardware conhecido pelo
sistema operacional e a máquina física propriamente, comumente considerada uma
camada hardware em software. Simplificando, a virtualização é semelhante a um
computador dentro de um outro computador, implementado em software, criando a
ilusão de certos tipos de dispositivos, como placas de som, CPUs, memória e
armazenamento físico. [11]
Um sistema operacional sendo executado em um ambiente virtualizado é
conhecido como uma máquina virtual. A tecnologia de virtualização permite que várias
máquinas virtuais, com sistemas operacionais diferentes, executem lado a lado, isolados
na mesma máquina física, emulando um sistema completo de hardware, desde o
microprocessador até placa de rede. Cada máquina virtual pode compartilhar um
8
conjunto comum de hardware sem saber que este hardware também pode estar sendo
usado por outra máquina virtual ao mesmo tempo.
2.2 Tipos de Virtualização Em um ambiente virtualizado é possível verificar o impacto no desempenho do
hardware devido à camada intermediária entre o hardware e software. Neste trabalho
são abordados os principais modelos de virtualização [12].
2.2.1 Emulação de Hardware
A emulação de hardware é a utilização de uma arquitetura completamente
diferente da utilizada no hardware hospedeiro. Pode ser utilizada por diversos motivos,
como por exemplo, utilizar uma arquitetura atual com maior desempenho para emular
uma arquitetura de hardware antiga que não seja mais comercializada, sem que seja
necessário migrar os sistemas legados.
Analisando as desvantagens, se verifica que neste modelo cada instrução deve
ser mapeada de uma arquitetura para a outra, prejudicando assim o desempenho. [12]
Hardware
Hardware VM A Hardware VM B
SO ConvidadoSO Convidado
Aplicativos Aplicativos
SO Convidado
Aplicativos
Figura 1- Emulação de hardware
2.2.2 Virtualização Total
A virtualização total é uma camada de software que é utilizada para abstrair os
recursos físicos, porém diferentemente da anterior, o objetivo é fornecer ao sistema
operacional visitante uma réplica do hardware subjacente. Dessa forma, o sistema
operacional visitante é executado sem modificações sobre o monitor de máquina virtual
(VMM), 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. [11]
Esse tipo de virtualização é mais rápida que a emulação de hardware, porém o
desempenho ainda é pior do que a utilização direta, devido à mediação da camada
9
intermediária de software (Hypervisor). A camada hypervisor é responsável pela
segurança dos recursos de hardware e pelo controle do fluxo de informações entre VMs
e o hardware hospedeiro. [13]
Hardware
Hypervisor (VMM)
SO convidadoSO convidado
Aplicativos Aplicativos Aplicativos
SO convidado
Figura 2 - Virtualização Total
2.2.3 Para-virtualização
A para-virtualização também utiliza uma camada de software de controle, porém
nesta abordagem há alterações nos sistemas operacionais convidados para que estes
cooperem com o processo de virtualização. [11] Neste modelo são permitidos somente
sistemas operacionais que estejam aptos a estas alterações, o que limita a utilização,
porém, há um ganho significativo de desempenho se comparada aos modelos
anteriores, considerando que os sistemas operacionais convidados podem se beneficiar
do fato de conhecerem que estão em um ambiente virtual. [12]
Nessa abordagem, a desvantagem é que o sistema convidado é modificado para
acessar a VMM sempre que for executada uma instrução, porém, o teste por instrução
não é mais necessário aumentando o desempenho. [14]
Hardware
Hypervisor (VMM)
SO convidadoSO convidado
Aplicativos Aplicativos Aplicativos
SO convidado
Alteração SO Alteração SO Alteração SO
Figura 3 - Para-virtualização
10
2.2.4 Virtualização do Sistema Operacional
A virtualização do sistema operacional permite que um tipo de sistema
operacional conviva com diversas outras instâncias do mesmo sistema, compartilhando
os recursos físicos. A máquina virtual funciona como um processo do sistema anfitrião.
Neste método, o sistema operacional deve ter um suporte a este tipo de operação,
sendo a principal vantagem o desempenho, comparado à utilização nativa. A
desvantagem é que o usuário não pode fazer uso de outro sistema operacional na
máquina virtual no ambiente virtual. [12]
Hardware
Sistema Operacional
Instância do SOInstância do SO
Aplicativos Aplicativos
Instância do SO
Aplicativos
Figura 4 - Virtualização do Sistema Operacional
2.3 Motivações para Virtualizar Todos os métodos de virtualização apresentados são implementados através de
uma camada intermediária de software, responsável pela administração e
compartilhamento dos recursos físicos do hardware hospedeiro, implicando diretamente
no desempenho. Já há algum tempo os fabricantes de hardware, têm incluído instruções
específicas que auxiliam no processo de virtualização assessorando esta camada de
software a resolver certas dificuldades conhecidas, como por exemplo, a tradução de
endereços de memória e o desempenho. Também se podem citar problemas de
segurança, gerenciamento e dimensionamento. [14]
Considerando os diversos modelos de virtualização, o presente trabalho é focado
nos benefícios que um ambiente virtualizado pode trazer. Dentre as vantagens,
podemos citar:
Consolidação da infra-estrutura: menos equipamentos são necessários
para executarem a mesma quantidade de sistemas. Esta consolidação
11
significa redução do espaço necessário para a acomodação dos equipamentos
e 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). [15]
Maior eficiência na utilização dos recursos: Uma prática utilizada é
virtualizar um ambiente que tem um perfil de alta utilização no horário
comercial com um sistema de alta utilização no perfil noturno, de modo que
os recursos estejam sempre sendo utilizados e permaneçam a menor parte
do tempo ociosos. [11]
Aumento da disponibilidade: dada a facilidade de migrar sistemas virtuais
entre servidores físicos é possível manter um ambiente replicado para o caso
de falhas ou paradas programadas de manutenção. [15]
Melhoria no gerenciamento: considerando que os recursos são virtuais,
estes podem ser migrados, replicados ou redimensionados com maior
facilidade. Entre as práticas comuns, uma delas é conceder mais memória,
processamento, ou espaço em disco para uma instância quando necessário
sem que seja necessário alterar o hardware do servidor. [15]
Flexibilidade da infra-estrutura: diversos sistemas operacionais
heterogêneos podem ser executados no mesmo ambiente, além de executar
ambientes legados em recursos novos de hardware. [15]
Facilidade de execução de backup: é possível fazer uma cópia completa
da imagem (snapshot) do estado atual da VMM, incluindo toda sua
configuração. Algumas ferramentas ainda disponibilizam a execução do
backup durante a execução, eliminando a necessidade de parada. [7]
Redução do tempo de entrega de novos servidores: instâncias de novos
servidores podem ser criadas rapidamente sem necessidade de espera de
aquisição de hardware. Outra melhora é pelo fato destas instâncias serem
criadas a partir de templates já disponíveis no ambiente. [15]
2.4 Recursos que podem ser Virtualizados A abordagem de ambiente virtualizado conduz a um grupo de servidores
virtualizados. Além de virtualizar os servidores, existem outros recursos que também
podem ser virtualizados. [16]
12
Entre os principais recursos, este trabalho pode citar:
Virtualização de servidores: possibilita a criação de múltiplas máquinas virtuais
com seus respectivos sistemas operacionais, em uma única máquina física, ainda que
sejam logicamente distintas, porém com perfis de hardware consistente [16]
Esta modalidade muitas vezes pode tomar o lugar da prática onerosa
de consolidação de servidores manual, através da combinação de vários servidores
virtuais em um servidor lógico. O foco da virtualização de servidores está em
maximizar a eficiência do hardware do servidor, a fim de aumentar o retorno sobre o
investimento do hardware. [16]
Virtualização de aplicações: Para cada aplicação é criada é uma instância e de
acordo com a necessidade é distribuída de forma on-demand através de uma
rede. Esta estratégia de virtualização vai de mãos dadas com a iniciativa de
padronizar os serviços de internet que estão preocupando a indústria de TI atualmente.
[16]
Aplicativos virtualizados podem usar uma camada de abstração em comum que
define um protocolo permitindo a comunicação de um aplicativo com outro em um
formato de mensagem padrão. Assim, as aplicações podem chamar outro aplicativo, a
fim de executar as funções solicitadas. A aplicação virtualizada não só é capaz de
invocar remotamente os pedidos e retornar resultados, mas também garantir que o
estado do aplicativo e outros dados estejam disponíveis e com recursos consistentes em
todos os nós que executam a aplicação.
Virtualização de storage: permite que dispositivos de armazenamento
separados possam ser combinados e sejam acessados como uma única unidade. Essa
modalidade tenta maximizar a eficiência do hardware de armazenamento em uma
arquitetura virtual. [4]
Virtualização de rede: possibilita a criação de múltiplas redes virtuais que
podem ser combinadas em uma única rede física (pode ser suportado em um único
equipamento de rede) ou ainda, pode criar redes separadas logicamente em várias
partes no mesmo ambiente. Uma prática comum é criar LANs virtuais (Local Area
Network), ou VLANs (Virtual Area network), a fim de gerenciar de forma mais
eficaz uma rede. [16].
Virtualização de banco de dados: permite que os usuários acessem várias
fontes de dados localizados geograficamente em qualquer lugar sem a necessidade de
saber ou se importar onde os dados realmente residem. A virtualização de banco de
dados permite o uso de múltiplas instâncias de um SGBD (Sistema Gerenciado de banco
13
de Dados), ou plataformas diferentes DBMS (DataBase Management System),
simultaneamente e de forma transparente e independentemente da sua localização
física. Estas práticas podem ser empregadas em mineração de dados e sistemas
de armazenamento de dados. [7],[8],[16]
Banco de dados é uma classe de recursos que tem características específicas e
que devem ser consideradas antes de virtualizar. Nos próximos capítulos essas
características serão abordadas de forma mais detalhada.
14
3. Banco de Dados O banco de dados foi originalmente projetado com o objetivo de separar o
armazenamento físico dos dados da sua representação conceitual e prover com uma
fundamentação matemática para identificar o esforço necessário no processo de acesso
aos dados. Essa abordagem de implementação introduziu as linguagens de consulta de
alto nível, que são uma alternativa às interfaces para as linguagens de programação e
consequentemente, ficou mais rápido e fácil escrever novas consultas e obter o
resultado extraído do banco de dados. [17]
Logo, o banco de dados é uma classe de recurso que tem características bem
específicas e estas devem ser consideradas antes de virtualizar um servidor de banco de
dados. O objetivo deste capítulo é detalhar uma visão geral sobre a virtualização de
Banco de Dados Virtualizados.
O texto está organizado da seguinte forma: primeiramente, é apresentada a
definição de banco de dados. (seção 3.1). Na sequência é apresentada a estrutura de
um banco de dados (seção 3.2), e por último (seção 3.3) é abordada a virtualização de
banco de dados.
3.1 Definição de Banco de Dados Banco de dados é um recurso que pode ser interpretado como um sistema
computadorizado de armazenamento de registros. Este sistema não se resume apenas
ao armazenamento dos registros, oferece também a possibilidade de manipulação e
gerenciamento destes registros. A manipulação dos registros poderá acontecer sob a
forma de alterações, inserções e exclusões de dados. [18]
Neste trabalho será adotada a definição de Elmasri, que define um Banco de
Dados como uma coleção de dados relacionados. Os dados são fatos que podem ser
armazenados e que possuem um significado implícito. [17] Algumas das principais
características que um banco de dados pode possuir são apresentadas a seguir:
• Um banco de dados representa alguns aspectos do mundo real, sendo
chamado, às vezes, de minimundo. As mudanças no minimundo podem ser refletidas
em todo o banco de dados. [18]
• Um banco de dados é uma coleção lógica e coerente de dados com algum
significado inerente. Uma organização de dados ao acaso (randômica) não pode ser
corretamente interpretada como um banco de dados. [18]
15
• Um banco de dados é projetado, construído e povoado por dados, atendendo a
uma proposta específica. Possui um grupo de usuários definido e algumas aplicações
preconcebidas, de acordo com o interesse desse grupo de usuários. [18]
• O domínio de um banco de dados pode ser de qualquer tamanho e de
complexidade variável. [17]
• 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
domínio, e os registros se relacionam de diversas formas. Sistemas de banco de dados
corporativos consomem uma porção considerável dos recursos físicos do servidor
considerando o grande volume de transações executadas. [7]
Atualmente os Sistemas Gerenciadores de Banco de Dados (SGBD) devem ter a
premissa de possibilitar o acesso multiusuário: múltiplas conexões de acesso ao banco
de dados simultâneo. Isso é essencial se os dados para as várias aplicações estão
integrados e mantidos em um único banco de dados. O SGBD deve incluir um software
de controle de concorrência para garantir que em caso de muitos usuários tentarem
atualizar o mesmo dado, o faça de um modo controlado e ordenado, para assegurar que
os resultados das atualizações sejam corretos. Uma regra fundamental do software do
SGBD multiusuário é garantir que as transações concorrentes operem corretamente
[17]
3.2 Estrutura de Sistemas de Banco de Dados Um sistema de banco de dados é composto basicamente por dois componentes:
conjunto de programas responsáveis pelo gerenciamento do acesso aos dados e os
dados. O primeiro possui interfaces para a criação e manipulação dos dados, além de
outras funcionalidades, como o 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. [17]
Na implementação dos bancos de dados atuais, o SBGD são implementados o
conceito de “Esquema” e “Instância” de banco de dados. Esquema pode ser definido
como sendo a descrição do banco de dados no nível lógico. Já a instância é a
representação do banco de dados com seus respectivos dados em um determinado
momento. [18]
A definição de instância é muito importante para a correta compreensão deste
trabalho. Instancia é a estrutura de acesso aos registros armazenados nos arquivos de
16
dados pelos programas que formam o SGBD. Os valores dos parâmetros de uma
instância podem ser definidos no momento de criação. Esses parâmetros irão alocar a
quantidade de memória e recursos do sistema operacional que foi configurado e iniciar
os processos responsáveis por manipular o banco de dados. [6]
A coleção de dados que compõe um banco de dados precisa ser armazenada
fisicamente em algum sistema de armazenamento. Assim, os softwares SGBD podem
recuperar, atualizar e processar esses dados conforme necessário.
Sistema de Banco de Dados
SGBD
Definição do Banco de Dados (Esquema)
Acesso aos Dados Armazenados
Aplicação Consultas / Programas
Banco de Dados(Arquivos Físicos)
Processamento das Consultas / Programas
Usuários / Aplicações Clientes
Figura 5 - Estrutura de Sistemas de Banco de Dados
As mídias de armazenamento de computador formam uma hierarquia de
armazenamento que inclui duas categorias principais:
• Armazenamento primário: inclui os recursos de armazenamento que podem
ser acessados diretamente pela unidade central de processamento (CPU), como a
memória principal e a memórias cache que são em geral pequenas se comparada ao
volume de dados armazenado. A vantagem da utilização deste tipo de armazenamento é
a velocidade de acesso as informações, porém com uma capacidade reduzida. [17]
• Armazenamento secundário: são identificados como os recursos de discos
(e/ou storages). Esses dispositivos geralmente possuem maior capacidade combinado
com menor custo, porém proporcionam o acesso mais lento se comparado aos
dispositivos de armazenamento primário. Os dados de um armazenamento secundário
não podem ser processados diretamente pela CPU. [17]
17
SGBDs podem armazenar grandes volumes de dados e devem ser mantidos por
longos períodos de tempo. Os dados podem ser acessados e processados repetidamente
ao longo da sua existência e, em alguns casos, devem permanecer e estar disponíveis
permanentemente.
3.3 Banco de Dados em Ambientes Virtualizados Normalmente, a principal tarefa dos administradores de infra-estrutura das
empresas que tem um grande número de servidores que provêem serviços de banco de
dados é o gerenciamento desses recursos e a dificuldade de acomodar os serviços nos
servidores físicos (ou virtuais) evitando o esbanjamento ou falta de recursos.
Na infra-estrutura a virtualização pode ser a principal estratégia auxiliar na
atividade de administração dos recursos existentes. Assim, surgem dois desafios: o
problema de desempenho dos servidores virtuais em comparação aos recursos físicos e
o tempo de migração dos serviços de banco de dados de um servidor físico para outro
servidor físico.
Atualmente os bancos de dados são disponibilizados em um ambiente
virtualizado sobre uma máquina virtual. [19]
Uma das principais vantagens da execução de um servidor de banco de dados
em ambiente virtualizado pode ser a fácil migração de um servidor físico para outro,
aumentando assim o tempo de disponibilidade do serviço. [19]
Com a inclusão de virtualização em ambientes de banco de dados, a principal
preocupação é o tempo gasto de indisponibilidade durante o processo de migração de
um banco de dados. Como o banco de dados pode ser movido de um servidor sem
recursos para um servidor novo, a migração é a principal atividade de sobrecarga que
os administradores estão enfrentando atualmente. [8]
Hardware
Hypervisor (VMM)
SO ConvidadoSO Convidado
Banco de Dados Banco de Dados
Hardware
Hypervisor (VMM)
SO Convidado
Banco de Dados
Figura 6 – Banco de dados em ambientes Virtualizados
18
Nessa abordagem de migração, podem ser usadas 3 técnicas principais de
migração: [19]
Migração Offline/Online: A forma mais simples de migrar um servidor de
banco de dados é parar o serviço, mover para o novo servidor e iniciar o serviço no
novo ambiente. Embora sejam consideravelmente simples e segura, todos as conexões
e transações são perdidas durante a execução da migração.
Migração sob Demanda: Para diminuir o tempo de inatividade do serviço,
pode-se usar uma técnica de migração onde uma parada rápida do serviço é iniciada
uma nova cópia da instância de banco em um outro servidor que recebe todas as novas
conexões mantendo as antigas. Essa abordagem pode ser considerada mais eficiente
que a anterior, porém produz uma sobrecarga alta após a migração para manter a
sincronia entre origem e destino.
Migração em tempo Real: semelhante à técnica anterior. Para resolver o
problema de sobrecarga de sincronia essa técnica grava o estado do banco de dados (da
transações) recuperando o seu estado atual após a migração.
19
4. Banco de Dados Virtualizados
Atualmente, embora que a prática de execução de banco de dados em ambiente
virtual pode ser explorada, o principal desafio dessa prática ainda é o desempenho. Este
desafio pode ser motivado pela inserção da camada intermediária entre o SGBD e o
hardware, obrigando uma execução extra a tradução de endereços virtuais para
endereços físicos. [15]
O texto está organizado da seguinte forma: inicialmente são abordados os
desafios da virtualização de banco de dados (seção 4.1). Na sequência é apresentado o
modelo de virtualização (seção 4.2), e por último (seção 4.3) é abordada uma visão
geral sobre os bancos de dados atuais.
4.1 Desafios da Virtualização de Bancos de Dados Não bastasse o alto consumo de recursos, os sistemas de banco de dados
também são normalmente bastante complexos quanto à sua correta instalação,
configuração e otimização. Outro ponto que deve ser levado em consideração é o
desempenho, observada a grande desvantagem da utilização de virtualização em
servidores de banco de dados. Porém, de acordo com estudos realizados [17], 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 encontrada, não está
presente no espaço de endereçamento do processo corrente. [17]
Além do problema de paginação, outro problema que pode afetar o desempenho
de um banco de dados virtualizado são as camadas de software inseridas entre os
recursos, haja vista que elas podem comprometer os ciclos do processador, muitas
vezes até dois dígitos percentuais. [16]
Em um ambiente de máquinas virtuais, onde cada uma está
executando um SGBD independente, elas estão competindo pelos recursos físicos de
um servidor. A principal dificuldade é alocar os recursos conforme a necessidade de
cada SGBD. Considerando os diferentes tipos de recursos físicos, tais como memória,
capacidade de CPU ou velocidade de I/O, atribuídas às máquinas virtuais, a dificuldade
é alocar uma parte ou fração de cada recurso da máquina física para cada máquina
virtual. Desta forma, devem ser definidos os parâmetros de configuração dos recursos
das máquinas virtuais na hora de inicialização e cada máquina virtual deve ser
monitorada para identificar possíveis falhas ou gargalos. [17]
20
Ao criar uma máquina virtual para uma ou mais aplicações é importante configurar
corretamente a máquina virtual. Uma decisão importante que deve ser feita ao
configurar uma máquina virtual é decidir o quanto dos recursos físicos disponíveis serão
destinados a esta VM. Atualmente, há pesquisas [17] que propõem um sistema
automático para tomar esta decisão nas máquinas virtuais que hospedam os SGBD.
Ao considerar os pontos positivos mencionados anteriormente sobre virtualização,
podemos destacar além daqueles, a consolidação de banco de dados em ambiente
virtualizados. O aumento da demanda por dados ou recursos de banco de dados
pode ser facilmente resolvida através da gerência de SGBDs ou de infra-estrutura física
com ferramentas de virtualização. [16]
Dificilmente servidores de banco de dados são totalmente monitorados durante a
execução, independentemente do sistema operacional que está sendo utilizado. Para os
administradores de banco de dados, que são os responsáveis por manter cada servidor,
os servidores de banco de dados geram uma demanda particular no gerenciamento do
desempenho, podendo ser considerada um desafio.
Uma pesquisa realizada avaliou o desempenho um banco de dados em um
ambiente virtualizado e comparou com um ambiente não virtualizado. [1] A conclusão é
de que a carga de trabalho no modelo virtual tem uma utilização de CPU maior que os
modelos não-virtualizados.
Sabendo que o desempenho de um servidor de banco de dados em um ambiente
virtualizado é menor, o desafio agora é o aumento do desempenho, embora conforme
mencionado anteriormente, o desempenho pode ser limitado em particular por tradução
de endereços virtuais para a arquitetura física. Para aumentar o desempenho, é
possível desenvolver uma camada de aplicação utilizando a abstração entre o sistema
operacional e o hardware físico, comunicando em um formato padrão de mensagens,
tornado um protocolo de comunicação. Essa camada não é só capaz de atender aos
pedidos, mas também é capaz de confirmar o estado da aplicação SGBD e disponibilizar
os dados restantes sobre todos os recursos físicos. [20]
Essa nova abordagem de virtualização de banco de dados trás alguns benefícios
em comparação a abordagem atual.
4.2 Modelo do Banco de Dados Virtualizado
Nesta nova abordagem é proposta somente a virtualização da base de dados, o
que pode aumentar a flexibilidade através da arquitetura proposta [8]. A migração de
banco de dados entre máquinas virtuais pode ser executada facilmente. As bases de
21
dados podem ficar em localizações transparentes e ser realocadas em outros servidores
sem a necessidade de realizar modificações nas aplicações.
Diferentemente da utilização de banco de dados em uma máquina virtual, um
banco de dados virtualizado pode ser migrado de um ambiente para outro ambiente
sem a necessidade de parada dos serviços.
Hardware
Hypervisor (VMM)
Banco de Dados Banco de Dados Banco de Dados
Figura 7 - Banco de Dados Virtualizados
A migração é realizada em duas etapas:
1) Inicialização da nova instância do banco de dados no novo servidor;
2) Migração de todas as conexões existentes, transações e os estados de cada
transação. [6] Somente após a migração de todas as conexões e transações o
serviço original é finalizado.
Storage
Host 01 Host 02
Banco de Dados
Har
dw
are
+ SO
(H
yper
viso
r)V
irtu
aliç
ão
Banco de Dados
Banco de Dados
Figura 8 - Migração de banco de dados virtualizado
22
Sendo que neste tipo de migração é necessário migrar somente a instância e não
o banco de dados inteiro. Esse tipo de migração tem um desempenho superior em
relação à outra abordagem, pois os dados não são movimentados. [6]
Além disso, a camada intermediária entre o banco de dados e o hardware pode
ser menor, e assim pode aumentar o desempenho. Considerando que o sistema
operacional não é virtualizado, e que somente as instâncias do banco de dados são
virtualizadas, não é necessário traduzir cada instrução do SGDB para o sistema
operacional hospedeiro. Observado que o recurso de virtualização está no kernel do
hypervisor, as instruções podem ser executadas diretamente no hardware. Nesse
modelo, o hypervisor tem com uma de suas funções controlar os recursos disponíveis
para que todas as instâncias acessem os recursos conforme a configuração individual.
Os benefícios trazidos pela técnica de virtualização de banco de dados utilizando
uma camada de comunicação direta com o sistema operacional hospedeiro podem ser
listadas conforme segue: [8].
Acesso ao banco é feito em aplicações sem conhecimento da localização do
servidor;
O banco de dados virtualizado pode migrar imediatamente para outro local em
caso de falhas. Este conceito ajuda a controlar todos os bancos de dados com a
rápida realocação de instâncias de banco de dados em outros servidores.
Podem ser realizadas manutenções no ambiente físico sem causar impacto no
desempenho ou interromper os serviços;
As despesas com administração, licenciamento e hardware são reduzidos,
considerando a simplicidade do ambiente.
Segurança dos dados e recuperação em caso de desastres. Em caso de falha de
hardware, os dados podem ser restaurados em uma máquina com hardware de
configurações diferentes. A recuperação de desastres de vários bancos de dados
para um ambiente secundário pode ser realizada de forma simples e rápida,
bastando migrar somente as instâncias do banco de dados.
A camada de virtualização de banco de dados permite a gestão dos DBAs para
consolidar servidores. A migração pode ser feita em questão de segundos, sem
fechar as sessões de usuário ou perder as transações ativas do banco de
dados. [6]
A virtualização de banco de dados está em fase inicial de desenvolvimento,
embora muitas empresas já estejam desenvolvendo pesquisas neste campo. [8]
23
A administração das instâncias virtuais é um item muito importante na relação
do gerenciamento do banco de dados. Pode ser considerada uma vantagem, dada à
facilidade de se manusear instâncias virtuais, e pode também ser considerada 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, observada a facilidade desta
operação.
4.2.1 Alta Disponibilidade de Banco Virtualizados
Alta disponibilidade trata da disponibilidade dos sistemas reduzindo paradas
planejadas e não planejadas. Existem várias técnicas de alta disponibilidade para banco
de dados. Neste trabalho serão abordadas duas técnicas: a clusterização e a
virtualização.
Clusterização: O ambiente de cluster consiste no uso coordenado de vários
servidores (físicos ou virtuais), atuando como se fossem um único grande computador
(conceito de Grid Computing). Nos servidores interligados, há apenas o sistema
operacional e o software banco de dados instalados. O banco de dados fica armazenado
em uma área de armazenamento externa (storage) gerenciando e utilizando os recursos
(processadores e memória) de todos os servidores interligados. [6]
Em caso de parada não planejada de um dos servidores do Cluster, o próprio
serviço de banco de dados deverá detectar e transferir os usuários conectados do
serviço parado para o outro servidor automaticamente, sem interromper a
disponibilidade do ambiente. Se a necessidade for a de substituir, retirar ou acrescentar
servidores (nós) ao cluster, também não será necessário interromper a disponibilidade
do ambiente.
Neste modelo são necessários que todos os nós do cluster estejam com o banco
de dados ativo, gerando assim um ônus de monitoração entre as instâncias e sincronia
de dados. [6] [1]
Virtualização: a virtualização do banco de dados é mais vantajosa em relação à
técnica anterior porque que somente uma instância precisará ser migrada quando for
detectada a falha do banco de dados. [6]
Além de oferecer a capacidade de disponibilidade ininterrupta, o banco de dados
virtualizado pode oferecer a capacidade de aumentar os recursos verticalmente ou
horizontalmente, capacidades denominadas de Scale Up e Scale Out, respectivamente.
A primeira consiste em potencializar as especificações de hardware de um determinado
servidor. Isso geralmente é feito através do aumento do número dos processadores,
24
adição de mais RAM, e assim por diante, porém sempre é limitado ao limite dos
recursos que podem ser adicionados. A escalabilidade horizontal é o processo de
adicionar novos recursos de armazenamento de dados aumentando a capacidade do
banco de dados.
4.2.2 Consolidação de Servidores em Banco de Dados
Virtualizados
A consolidação pode ser definida como sendo o uso eficiente dos recursos
de hardware. A separação das camadas de hardware e sistema operacional da máquina
virtual possibilita o gerenciamento de recursos e a convivência de servidores
heterogêneos, permitindo um uso mais eficiente dos recursos de hardware. [2],
definição esta que será a adotada neste trabalho.
Em um ambiente de virtualização de banco de dados pode haver consolidação de
servidores. Conforme mencionado anteriormente, a consolidação de servidores
possibilita monitorar os recursos disponíveis de hardware, adicionando ou removendo
recursos ao banco de dados. Além de alocar os recursos conforme necessário é possível
suportar vários serviços de banco de dados em um único servidor físico.
4.3. Visão geral dos Bancos de Dados Atuais Para realizar a comparação entre as formas de virtualização, foram escolhidos os
seguintes banco de dados proprietários: Oracle 11G r2, IBM DB2 9.7 e Microsoft Sql
Server 2008. Tais bancos de dados foram escolhidos por possuírem documentações que
expressam a capacidade de alta disponibilidade e a possibilidade de executar em
ambiente virtualizado. Ao final deste capítulo, será apresentada uma tabela com as
principais características de cada banco de dados.
4.3.1 Oracle Rac One Node
Durante a execução do banco de dados é realizado um monitoramento sobre o
status, e se for detectado um problema no banco de dados afetado este pode ser
reiniciado no mesmo host ou em outro servidor. [6]
Se o servidor de banco de dados tem poucos recursos disponíveis, há a possibilidade
de migrar on-line para outro servidor com mais recursos disponíveis. Além disso, existe
a possibilidade de aumentar dinamicamente os recursos, possibilitando o Scale Up das
instâncias de banco de dados que foram configurados previamente.
O recurso de mover uma instancia de banco de dados de um servidor para outro
ainda é uma exclusividade deste banco estudado, haja vista que permite a
25
migração online sem a necessidade de parar o serviço, reduzindo significativamente o
tempo de downtime de uma aplicação.
Além da possibilidade de mover um banco de dados quando uma falha for detectada,
ainda é possível realizar o balanceamento de carga de trabalho realocando uma
instância de banco de dados em um servidor desocupado. [6]
4.3.2 IBM DB2 9.7
Pode ser executado em um ambiente virtualizado, porém não traz uma ferramenta
de migração de instância de banco de dados. Os parâmetros de ajuste automático e a
capacidade de alteração de forma dinâmica sem a necessidade de parar a instância de
banco de dados também é um recurso disponível.
Considerando que não é totalmente executado diretamente no hardware físico e
requer a camada de hypervisor (que consome ciclos de processamento), o custo de
desempenho está associado ao ambiente virtualizado. A quantidade de sobrecarga pode
variar dependendo da eficiência do hypervisor.
Uma das características deste banco de dados é a possibilidade de crescimento
horizontal. Esse recurso é baseado na tecnologia de disco compartilhado. Geralmente
ouve-se falar sobre o recursos no contexto de uma solução com base em uma
arquitetura de cluster. Este recurso de disco compartilhado possibilita que qualquer nó
do cluster possa ler ou gravar em qualquer parte do banco de dados. Se houver falha
em algum dos membros, o conjunto completo de dados ainda pode ser acessado a partir
dos demais membros ativos. [20]
O disco compartilhado permite que todos os hosts acessem o mesmo conjunto de
dados. Qualquer falha de host não impacta na disponibilidade do banco de dados. Além
disso, a capacidade adicional é incluída simplesmente colocando novos hosts no cluster
existente. [21]
4.3.3 Microsoft SQL Server
Essa solução oferece um banco de dados em uma máquina virtual. No entanto,
não é o banco de dados que irá migrar e sim a toda máquina virtual, através da
ferramenta que é uma tecnologia exclusiva que permite que um administrador de um
servidor mova uma máquina virtual em execução ou um aplicativo entre diferentes
máquinas físicas sem desconectar o cliente ou o aplicativo.
Nesta solução, as instâncias estão completamente isoladas umas das outras, de
forma que alterações em uma delas não afetam as outras instâncias localizadas no
mesmo computador.
26
Os discos rígidos de cada servidor virtual existem como arquivos no sistema
operacional hospedeiro o que os torna muito fáceis de fazer o backup, mover ou
implantar, além de fornecer o ambiente ideal para desenvolvimento e teste. [22]
A velocidade do processo é parcialmente dependente do hardware utilizado nos
computadores de origem e destino físico, bem como a capacidade da rede.
Tanto o sistema operacional convidado quanto o banco de dados da VM (virtual
machine) desconhece que a migração está acontecendo, assim, não havendo
necessidade de nenhuma configuração adicional para o sistema operacional convidado.
[22]
4.4 Discussão sobre as comparações entre os banco de
dados Existem trabalhos disponíveis na literatura comparando as abordagens de
virtualização banco de dados. [1] [4] Nos estudos analisados, a utilização de bancos de
dados virtualizados apresenta um melhor desempenho comparado com a execução de
banco de dados em ambientes virtualizados, principalmente pelo fato de que o
hypervisor da máquina virtual exige a tradução de cada instrução que está sendo
executada pelo SGBD no hardware. Porém existem outros fatores que também podem
influenciar no desempenho, tais como, o custo de migração entre uma máquina física e
a possibilidade de consolidação de servidores. [1]
Embora cada solução possua seus benefícios e limitações conforme discutido na
seção 4.3, um problema que é compartilhado por todas é o desempenho.
Comparando as três soluções apresentadas, a primeira implementa uma versão
de virtualização de banco de dados. Neste tipo de implementação, somente a instância
do banco de dados é virtualizado mediante o compartilhamento de recursos pelo
hypervisor. As duas soluções seguintes são a forma tradicional de virtualizar um
ambiente, porém o diferencial da segunda é que o banco de dados pode ser distribuído
reduzindo assim a perda de desempenho pela máquina virtual. A última solução faz o
mapeamento direto dos recursos da VM no hardware, porém para cada VM é adicionado
à camada de sistema operacional.
Segue abaixo a tabela com as principais características de cada banco de dados
abordado:
27
Tabela 1 – Comparação entre os principais bancos de dados proprietários.
[6][20][21][22]
Critério Oracle RAC
One Node
IBM
DB2 9.7
Microsoft Sql
Server 2008
Virtualização de instância Sim Não Não
Hypervisor nativo Sim Não Sim
Migração online Sim Sim Sim
Executa em ambiente Distribuído Não Sim Não
Migração é transparente para o
usuário
Sim Sim Sim
Possibilita reconfiguração sem
downtime
Sim Sim Sim
Executa Múltiplas instâncias do
mesmo banco de dados
Não Sim Não
28
5. Conclusões
Fabricantes de hardware/software estão incluindo cada vez mais
funcionalidades de virtualização em seus produtos. Entre elas, a virtualização de
servidores é a mais popular. A virtualização de servidores implementa uma camada
lógica sobre um sistema físico, de forma que todos os dispositivos possam ser
acessados ou compartilhados por aplicações clientes hospedadas no ambiente
virtual. [1]
Tornam-se cada vez mais escassos os argumentos para não utilizar a
virtualização em um sistema de banco de dados. Cada vez mais, novos produtos estão
sendo lançados visando à redução do impacto da virtualização de banco de dados.
Em um ambiente de banco de dados virtualizado todos os serviços são executados
em ambientes virtuais isolados. Um dos benefícios de um cenário virtualizado é que
múltiplas aplicações de banco de dados podem ser executadas simultaneamente em um
servidor com isolamento no nível do sistema operacional.
Tendo como principais vantagens da utilização de tecnologias de virtualização o
fornecimento de forte isolamento, segurança e consolidação de servidores físicos, [2]
pode ser inevitável a introdução da virtualização na pilha da arquitetura de
administração de servidores.
A virtualização do software de banco de dados pode ser implementada através
de dois modelos principais, quais sejam, através da execução em uma máquina virtual
(ambiente virtualizado) e através da virtualização da instância do banco de dados
(virtualização da instância do banco de dados). Na realização deste trabalho foram
comparados estes dois modelos, no qual o primeiro traz uma camada intermediária
entre o Hardware e o SGBD e o segundo faz um mapeamento direto dos recursos
acessados pelo do SGBD no hardware. Atualmente, a abordagem mais comum é o
suporte à banco de dados executados em máquinas virtuais. Porém, pesquisas mais
recentes indicam que a virtualização da instância de banco de dados é mais eficiente.
Neste contexto, uma possível continuação deste trabalho é o estudo das
ferramentas de monitoração de consumo de recursos e o autogerenciamento das
instâncias virtuais.
29
6. Referências
[1] Ahmadi, M. R.; Maleki, D.; ” Performance Evaluation of Server Virtualization in Data Center Applications”; 2010 5th International Symposium on Telecommunications. [2] Microsoft Corporation; “Virtualization from the Datacenter to the Desktop, Building a comprehensive, end-to-end virtualization strategy”; Capturado em www.microsoft.com/virtualization; (2010).
[3] Soror, A.; Aboulnaga, A.; Salem, K;”Database Virtualization: A New Frontier for Database Tuning and Physical Desing”. Capturado em http://www.cs.uwaterloo.ca/~ashraf/pubs/smdb07virt.pdf; (2007) [4] Aboulnaga, A. (s.d.); “Virtualization and Databases:State of the Art and Research Challenges”; Capturado em http://www.edbt.org/Proceedings/2008-Nantes/papers/p746-Aboulnaga.pdf; (2008). [5] Farooq, U. M., Yadav, J., Aboulnaga, A., Salem, K.; “Database Systems on Virtual Machines: How Much do You Lose?”; 2008 ICDE Workshop. [6] Oracle Corporation; “ORACLE RAC ONE NODE”.Capturado em
http://www.oracle.com/technetwork/database/clustering/overview/ds-rac-one-node-11gr2-185089.pdf; (2011) [7] Soror, A. A., Minhas, U. F., A. ,., Salem, K.; “Automatic Virtual Machine Configuration for Database Workloads”; 2008 Proceedings of the 2008 ACM SIGMOD international conference on Management of data;
[8] Tyagi, N. K.; “Virtualization of Data Base Layer (VDBL)”. 2009 Journal of Enterprise Information System. [9] Wada, Yuji; Watanabe , Yuta; Syoubu, Keisuke; “Virtual Database Technology for Distributed Database”; 2010 IEEE 24th International Conference on Advanced Information Networking and Applications Workshops. [10] Eisen, M. “Introduction to Virtualization”; 2011 The Long Island Chapter of the IEEE Circuits and Systems (CAS) Society. [11] Campbell, S.; Sean, J.; “An Introduction to virtualization”. Capturado em http://www.intel.com/intelpress/sum_vpio.htm; 2006.
[12] Jones, M. T.; “Virtual Linux An overview of virtualization methods, architectures, and implementations”. Capturado em http://www.ibm.com/developerworks/library/l-linuxvirt/index.html; 2006. [13] Payne, B. D., Sailer, R., Cáceres, R., Perez, R., & Lee, W.; “A Layered Approach to Simplified Access Control in Virtualized Systems”; 2007 Operating Systems Review.
30
[14] Carissimi, A; “Virtualização: da teoria a soluções”; 2008 26º Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos.
[15] Meier, S.; “IBM Systems Virtualization: Servers, Storage, and Software”; capturado em http://www.redbooks.ibm.com/redpapers/pdfs/redp4396.pdf, 2008. [16] Morgan, B.; “Virtualization, a technology which has many impacts” Capturado em http://www.windowsecurity.com/whitepapers/Virtualization.html, 2006. [17] Elmasri, R., & Navathe, S. B.; “Sistemas de banco de dados”. São Paulo, Editora Pearson, 6ª Edição. [18] DATE, J. C.;”Introdução a Sistemas de Bancos de Dados”; Rio de Janeiro, Editora Campus, 8ª Edição. [19] Das , S.; Nishimura, S.; Agrawal, D; Abbadi , A. E.; “Live Database Migration for
Elasticity in a Multitenant Database for Cloud Platforms”; 2010-9 UCSB Computer Science Technical Report. [20] Nomani, A., Mutyala, P., Rayanki, Y., Wu, A.; “Implemente o recurso DB2 pureScale no Linux”; Capturado em http://www.ibm.com/developerworks/br/data/library/techarticle/dm-1104purescale/index.html; 2011. [21] Cilimdzic, M., & Ogirala, S. K.; “Deploy IBM DB2 pureScale feature on IBM Power Systems.” Capturado em http://www.ibm.com/developerworks/data/library/techarticle/dm-1009purescaleonpower/index.html; 2010. [22] Allix, G., Malcolm, G. “Consolidação de Servidores com o SQL Server 2008”. Capturado em http://msdn.microsoft.com/pt-br/sqlserver/default.aspx?ocid=otc-c-br-jtc--wiki; 2007.