De todos os cenários de virtualização podemos considerar que banco de dados sempre foi uma barreira muito difícil de ultrapassar. Administradores de banco de dados mais experientes sempre tiveram ressalvas no que se refere ao desempenho destes cenários em ambiente virtualizado, principalmente ao que se refere a virtualização em si: criar uma camada sobre outra camada. Na concepção de virtualização de servidores é factível afirmar que a máquina virtualizada é executada sobre um hardware virtual, gerenciado por um virtualizador, e executado sob um hardware apropriado. Em contrapartida não é possível ignorar que a virtualização é uma tendência predominante nas empresas, portanto foi essencial que o mercado de fabricantes de hardware e software criassem tecnologias que viabilizassem bancos de dados (e outras aplicações críticas) em ambientes virtualizados. O Windows Server 2012 e novas tecnologias de hardware ajudam a eliminar de vez estas barreiras e viabilizar a virtualização de grandes bancos de dados. A seguir analisaremos cada um dos pontos questionados e apresentaremos os argumentos técnicos para viabilizar cada um dos mesmos.
Administradores de bancos de dados que possuem experiência em cenários de alto desempenho são obrigados a entender a fundo determinadas tecnologias de hardware, de forma a obter o máximo possível de desempenho para os bancos de dados. As minhas melhores discussões de hardware são com os meus amigos que trabalham com bancos de dados. Bom, entretanto vamos analisar quais seriam os fatores de bloqueio defendidos pelos DBAs para virtualizar bancos de dados: Necessariamente os pontos listados não estão ordenados por prioridade, mas para facilitar a análise vamos manter nesta ordem. Existem outros aspectos adicionais mas estes pontos costumam ser os principais.
Um banco de dados precisa de muito acesso a disco, e dependendo do cenário pode utilizar vários discos com diferentes finalidades (disco dedicado para paginação, dados temporários, etc). Quando surgiu a virtualização em ambientes Microsoft com Hyper-V (Windows Server 2008) haviam as seguintes opções de armazenamento para maquinas virtuais:
A divisão de máquinas virtuais, pelo tipo de acesso ao disco, pode ser classificada desta forma: O Windows Server 2012 trouxe pontos que ajudam a eliminar esta barreira no que se refere aos discos para uso em servidores de banco de dados.
O Windows Server 2012 introduz um novo formato de disco virtual que permite uma série de vantagens:
Bancos de dados que exigem grande desempenho demandam muito acesso a memória. Em um ambiente virtualizado por padrão a máquina virtual tem acesso a uma representação da memória física (Guest Physical Address). Os mapeamentos feitos nesta área de memória são chamados de Shadow Page Tables, e possuem um limite de entradas em cada array. Manter uma camada extra entre a memória da máquina virtual e a memória física do servidor de virtualização pode causar um processamento extra, e com servidores de banco de dados exigindo acesso intensivo na memória pode ser um ponto de atenção importante. Além disso os virtualizadores de mercado implementam tecnologias para dimensionamento dinâmico de memória. O objetivo é fornecer mais memória caso a máquina virtual necessite, sem que a mesma seja desligada para reconfiguração. Existem várias técnicas no mercado disponíveis nos virtualizadores para obter tal recurso:
Estas são excelentes técnicas, porém independente do fabricante, não devem ser utilizadas em servidores que demandem acesso muito alto de memória (como por exemplo banco de dados). Neste artigo estamos abordando servidores de bancos de dados, mas o problema afeta em geral outras aplicações críticas de uso intensivo de memória. As recomendações que devem ser seguidas para bancos de dados de grande desempenho de memória são: O suporte ao SLAT (Second Level Address Translation)existem em processadores Intel (através do recurso EPT – Extended Page Table) e AMD (através do recurso NPT – Nested Page Table). Este é um dos investimentos e requisitos OBRIGATÓRIOS se você quer virtualizar um banco de dados que exija memória de forma intensiva. O motivo é que o SLAT elimina a camada entre a memória física do servidor de virtualização e a memória da máquina virtual. Na prática é o mesmo que afirmar que a máquina virtual acessa diretamente a memória física do servidor. Caso não saiba se o seu processador existente suporta ou não SLAT verifique na documentação do mesmo ou utilize a ferramenta MSINFO32.EXE (ferramenta nativa do Windows).
Um dos fatores do Windows Server 2012 para a memória é a capacidade da máquina virtual. No Windows Server 2008 R2 você pode criar maquinas virtuais com máximo de 64GB de memória e noWindows Server 2012 você pode criar com até 1TB de memória. Isto representa aumentar em até 16X a quantidade de memória suportada. Além disso o servidor de virtualização com Windows Server 2012 Hyper-V pode gerenciar até 4TBde memória física (o Windows Server 2008 R2 Hyper-V gerencia até 1TB de memória).
O surgimento de processadores com muitos núcleos no mercado tem intrigado alguns profissionais de TI quanto a sua eficiência. Se você está questionando se é mais importante tem um processador com muitos núcleos do que ter vários processadores físicos então deve levar em conta que a utilização de cada um deles depende do cenário. Em termos de desempenho não dá para comparar um servidor com 2 processadores físicos do que outro servidor com 1 processador físico e 2 núcleos. Entretanto não é apenas a quantidade de processadores físicos, mas a velocidade (Clock) e cache são essenciais para o desempenho. Servidores de bancos de dados que exijam grande volume de processamento demandam muitos processadores. Neste aspecto o Windows Server 2012 resolveu um dos limites existentes no Windows Server 2008 R2 Hyper-V. Agora você pode criar maquinas virtuais com até 64 Processadores Virtuais (No Windows Server 2008 R2 Hyper-V o limite era de até 4 Processadores Virtuais, representando um melhoramento de até 16X). Um dos termos comuns que estão utilizando para ambientes virtualizados refere-se às maquinas virtuais com grandes quantidades de processadores e memória, chamados de “Monster VMs”. Bancos de dados são sérios candidatos para esta categoria, entretanto existe um aspecto físico (independente do fabricante de virtualização) que afeta a criação das Monster VMs, chamado de Topologia NUMA. O Non-Uniform Memory Access (NUMA) é uma topologia de hardware que permite escalar vários processadores e bancos de memória em um hardware. Em um servidor com muitos processadores e grandes bancos de memória é preciso criar um mecanismo de acesso eficiente entre eles. Ao invés de criar um único grupo com muitos processadores e bancos de memória é muito mais eficiente dividir o hardware em vários grupos, contendo quantidade delimitadas de processadores e memórias. Estes grupos são chamados de Nodes (nós) e contém processadores e bancos de memória com canal rápido entre si. Em uma topologia NUMA o acesso do processador e a memória de um mesmo grupo possuem maior eficiência de comunicação. Entretanto isto não significa que um processador de um Nó NUMA X acesso a memória de um No NUMA Y. Este efeito é chamado de NUMA SPANNING, e em cenários de Monster VMs pode afetar o desempenho. O acesso remoto de u processador de um Node X com a memória de um Node Y é de nanossegundos, entretanto em acessos frequentes impacta no desempenho das mesmas. Em resumo: nem sempre uma VM com muitos processadores e muita memória tem desempenho melhor que uma VM com poucos processadores virtuais e/ou quantidade menor de memória. O Windows Server 2012 implementa um recurso novo chamado de Virtual NUMA, e significa que mesmo que você crie “Monster VMs” (e consequentemente esteja sob NUMA Spanning) o desempenho não seja afetado para a máquina virtual. O Virtual NUMA no Windows Server 2012 permite virtualizar a topologia NUMA e repassar a informação para a máquina virtual. Aplicações que são compatíveis com NUMA (como por exemplo SQL Server e IIS) podem tomar decisões de gerenciamento de seus processos internos de forma a melhor se adaptar com a topologia NUMA existente. Na prática imagine uma máquina virtual com 64 Processadores Virtuais e 1TB de RAM. Se esta VM estiver utilizando 8 Nós NUMA (cada Nó NUMA com 8 processadores e 128GB de RAM, por exemplo) e estiver executando o SQL Server, então significa que o SQL analisará a topologia NUMA existente e fará a divisão de processos, threads, etc. de forma a obter melhor desempenho. Se você planeja virtualizar o SQL e pretende alocar muitos processadores e grandes quantidades de memória então considere o Windows Server 2012 como solução de virtualização.
Assumindo que você planeje um banco de dados de alto desempenho significa que você também esteja preocupado com a rede do mesmo. O Windows Server 2012 trouxe melhoramentos de rede que tornam atrativos para os DBAs que estão planejando virtualizar, como por exemplo:
Outro cenário importante é a utilização de rede para acesso à storage. Em geral é feito usando iSCSI (SCSI over IP) e permite utilizar uma infraestrutura Ethernet para trafegar comandos e dados SCSI sobre a mesma. O Windows Server 2012 possui integrado o iSCSI Target (servidor de iSCSI, permitindo que iSCSI Initiators conectem ao mesmo) de forma que pode ser utilizado como Storage. Se você possui um servidor com ótimo desempenho de disco e quiser transformá-lo em Storage então esta pode ser uma boa oportunidade. Neste cenário é possível ter uma máquina virtual de banco de dados acessando seus dados em uma storage iSCSI, tudo sob Windows Server 2012. Outra particularidade importante: O SQL Server 2012 pode utilizar um compartilhamento de arquivo para armazenar dados. Um dos aspectos que torna possível tal fato é que as versões do Windows Server sofreram melhoramentos permitindo que aplicações com grande acesso a dados pudessem trabalhar utilizando compartilhamentos. Abaixo estão listados as versões do Windows Server e os melhoramentos para SMB (Server Message Blocks): Com estes recursos em vista torna-se mais interessante o uso de SMB File Share para bancos de dados e o Windows Server 2012 é o componente fundamental.
Virtualizar bancos de dados é possível, e o Windows Server 2012 (em conjunto demais tecnologias de hardware) pode viabilizar tais cenários. Muitos gestores de TI que já possuem ambientes virtualizados mas nunca conseguiram virtualizar bancos de dados críticos agora podem planejar suas migrações de ambiente, do físico para o virtual. Entretanto poder virtualizar não significa que o mesmo seja suportado pelo fabricante. Portanto verifique com o fabricante que a sua solução pode ser virtualizada, de acordo com as necessidades da sua empresa. Para os DBAs já podem começar a planejar suas migrações de ambiente, sem a preocupação que o desempenho seja afetado pelo fator virtualização. Obviamente o cenário apresentado neste artigo pode ser aplicado para outros ambientes, como aplicações críticas de negócio e que demandem desempenho excepcional.
You must be logged in to post a comment.
3:11:51 pm
Artigo matador!!!
A técnica de NUMA é equivalente ao Resource Pool da VMWARE?