Banco de Dados

Ξ 1 comentário

Virtualizando bancos de dados de alto desempenho

publicado por Fabio Hara

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.

ENTENDENDO OS DBAS

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.

DISCO / STORAGE

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:

  • Pass through
    • Um volume (ou uma LUN) é acessada exclusivamente pela máquina virtual, fazendo com que o servidor de virtualização não tenha acesso a esta área. Esta é a opção com maior desempenho, pois não há uma “camada” para acesso a dados entre a máquina virtual e o volume. Entretanto existem outros pontos que não são possíveis de se obter com esta configuração (ex: snapshots de dados e discos diferenciais)
  • VHD de tamanho fixo
    • A segunda opção em questão de performance, mas muito próximo do Pass Through. Neste cenário o arquivo VHD é representado como um disco físico para a máquina virtual. A grande diferença em relação ao disco dinâmico é o desempenho: o disco fixo VHD ao ser criado já aloca todo o espaço do disco para a máquina virtual, enquanto que o disco dinâmico só aloca os dados na medida em que forem ocupando espaço.
  • VHD de tamanho dinâmico
    • Como o próprio nome já diz, a alocação de dados ocorre de forma dinâmica. Neste ponto, mesmo que o disco dinâmico criado seja de 100GB e o espaço ocupado seja de apenas 10GB, entã0 o arquivo só terá este tamanho (10GB).

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.

Novo formato de disco – VHDX

O Windows Server 2012 introduz um novo formato de disco virtual que permite uma série de vantagens:

  • Discos com até 64 TB de dados
    • Apesar do Windows Server 2012 trabalhar com discos VHD e VHDX, é importante que seja utilizado o novo formato. O VHD está limitado ao tamanho de 2TB, e o VHDX atinge até 64TB.
  • Discos mais seguros
    • Trabalhando com um log para as transações internas na estrutura de metadados permite que em caso de queda de energia os dados não sejam corrompidos
  • Alinhamento de disco melhorado
    • Até o Windows Server 2003 é necessário fazer o processo de Disk Alignment (alinhamento de disco) em volumes que contenham bancos de dados. A partir do Windows Server 2008 o alinhamento é criado automaticamente durante o processo de criação de volumes. Com o surgimento de novos discos com grandes setores de discos é necessário um alinhamento especial para estes tipos de discos, e o VHDX foi preparado para este cenário.

Suporte para Virtual Fibre CHannel

  • Agora é possível anexar uma controladora Fibre Channel diretamente na máquina virtual, permitindo que a mesma possa se conectar a uma LUN em uma SAN. Cada máquina virtual pode ter até 04 virtual HBAs, e a SAN deve suportar NPIV (N_Port ID virtualization).
  • Esta é uma das principais novidades do Windows Server 2012 que deixam DBAs entusiasmados, pois um cenário de servidores que demandem grande acesso à storage este novo recurso equivale ao mesmo que um servidor físico também conectado na storage.

Suporte para discos 4-KB

  • O padrão mais comum de tamanho de setor de disco está em 512 bytes. Entretanto a indústria de fabricantes de disco está começando a produzir discos utilizando um novo formato (4KB ou 512e), permitindo uma série de vantagens como controle ECC, volumes maiores, etc.

Offload Data Transfer (ODX)

  • Muitas storages fabricadas de 2 anos atrás para os dias atuais suportam o protocolo ODX, que permitem que uma storage faça transferência de dados entre outra storage (que utilize mesmo protocolo) sem penalizar em processamento extra o servidor ao qual está conectada (desde que o sistema operacional suporte). Em procedimentos de movimentação de dados entre storages este recurso ajuda a minimizar o gerenciamento da cópia a partir de um servidor que esteja conectado.

 

MEMÓRIA

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:

  • Transparent Page Sharing (TPS)
  • Ballooning
  • Second Level Paging
  • Memory Compression

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).

Exemplo do comando MSINFO32

      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).

PROCESSADOR

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.

REDE

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:

  • SR-IOV
    • Placas de rede que suportam SR-IOV permitem que a mesma seja apresentada exclusivamente para a máquina virtual. Desta forma se você tiver um banco de dados que demande muito acesso via rede e quer ter acesso exclusivo para a mesma então considere o uso de SR-IOV. O Windows Server 2012 suporta nativamente placas de rede com este recurso.
  • VMq
    • Placas de rede que suportam VMq permitem que a placa de rede da máquina virtual tenha acesso ao DMA da placa de rede VMq, aumentando em até 25% a mais de desempenho (segundo dados fornecidos pela Intel© com placas VMq a 10gbps). O Windows Server 2008 R2 e o Windows Server 2012 suportam VMq, entretanto este tipo de placa é mais comum entre adaptadores de 10gbps.
  • TCP Offload (TOE)
    • O recurso de TOE permite que o processamento de pacotes TCP seja feito pela placa de rede ao invés do processador físico, aumentando drasticamente o desempenho. Desde versões anteriores ao Windows Server 2012 este recurso é suportado, e é importante em cenários de grande desempenho de rede.
  • QoS por adaptador virtual
    • O Windows Server 2012 permite que seja feito o controle de banda (QoS) por placa de rede da máquina virtual. Você pode definir banda de rede mínima e máxima, desta forma é possível garantir que uma determinada VM com banco de dados tenha garantido uma banda de rede mínima quando compartilhado a placa de rede com outras VMs.
  • IPSec Task-Offload
    • O SQL Server permite criptografar as conexões de rede, de forma a proteger a integridade e/ou confidencialidade dos dados transmitidos pela rede. O próprio Windows possui um mecanismo chamado de IPSec, que permite criptografar e/ou garantir autenticidade de pacotes de rede, independente se a aplicação suporte ou não criptografia de rede. Entretanto isto impacta em processamento extra e em um ambiente com intenso tráfego de rede pode significar uma preocupação. O recurso de IPSec Task-Offload no Windows Server 2012 permite que o processamento do IPsec seja feito pela placa (caso a placa suporte tal recurso) ao invés do processador da máquina, evitando gargalos de desempenho.
  • NIC Teaming
    • O Windows server 2012 permite fazer Teaming (agregação de placas de rede) com qualquer placa de rede, permitindo novas funcionalidades. Este cenário é interessante para servidores de virtualização que tenham placas de rede sem suporte nativo ao Teaming, pois você pode aproveitar placas existentes para criar Teamings, sem depender de um driver específico e/ou placa específica). Você pode criar Teaming no servidor físico ou na máquina virtual, usando Failover ou Load Balance. Em um cenário com uma máquina virtual com banco de dados você poderá agregar uma placa de rede a um Teaming existente para atender uma demanda crescente de rede. Sim, você pode criar até 32 placas de rede por Teaming, e pode incluir/remover placas de rede neste Teaming sem a necessidade de refazer o Teaming.

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.

CONCLUSÃO

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.

Autor

Um dos primeiros MVPs (Most Valuable Professional) de infraestrutura do Brasil, além de MCTS, MCITP, MCSA, MCSE, MCITP e MCT, com mais de 14 anos de experiência no mercado de infraestrutura de redes Microsoft. Atuou em muitos cases da Microsoft e hoje ocupa a posição de Especialista em Infraestrutura e Virtualização no time de Comunidades Técnicas da Microsoft Brasil. Sua missão é contribuir com os profissionais e comunidades de IT Pros a explorar as funcionalidades e recursos da plataforma Microsoft. Bom, este é o mini-cv formal do Fabio Hara. O mini-cv “informal” do Hara-san (como é mais conhecido) seria: Hara-san costuma jogar partidas lendárias de Gears of War, Call of Duty MW2, Halo:Reach, etc, nas horas de folga com seus amigos. Além disso curte bastante jogar tênis (apesar de jogar mal) e escutar um bom rock anos 80/90. Grande apreciador do Home-brewing, graças aos conhecimentos que foram aprendidos com o Dalai Lama dos Portais Colaborativos Sagrados(Roberval Ranches – mesa). Tambem gosta de treinar Aikidô, e sempre que possível costuma treinar regularmente. Certa vez me perguntaram: “Hara, o que você faz na Microsoft?”. Na epoca eu disse que divulgava novas tecnologias, produtos, etc. Hoje eu posso dizer que não é bem isso. Minha resposta hoje é: “Eu ajudo você com informações e conteúdos que te ajudem a ganhar dinheiro, ser reconhecido e voltar mais cedo para casa para ficar com a sua familia” Site: http://www.fabiohara.com.br/ Twitter: http://Twitter.com/fabiohara Bom, o Hara tambem fez uns videos bacanas no Youtube. Segue alguns deles: Fabio Hara usando Surface – parte 1 Fabio Hara usando o Surface – parte 2 Fabio Hara usando o Surface – parte 3 Fabio Hara usando o Surface – parte 4 final Container do Azure – via Fabio Hara / parte 1 Container do Azure – via Fabio Hara / parte 2

Fabio Hara

Comentários

1 Comment

  • Artigo matador!!!
    A técnica de NUMA é equivalente ao Resource Pool da VMWARE?

You must be logged in to post a comment.

Busca

Patrocínio

Publicidade



Siga-nos!

Newsletter: Inscreva-se

Para se inscrever em nossa newsletter preencha o formulário.

Artigos Recentes