Aumentando performance de disco para máquinas virtuais no Azure


Um dos pontos que há maior resistência e dúvida por parte dos clientes que movem bancos de dados para a nuvem é a questão de performance de disco. Muitos casos que demandam grande desempenho em bancos de dados SQL podem ser solucionados aumentando a taxa de IOPS (I/O per second). Neste artigo vou explorar técnicas simples e que ajudam muito este tipo de cenário. O objetivo é explorar o cenário de máquinas virtuais Windows Server 2012 R2 com SQL Server.

Ao utilizar máquinas virtuais no Azure é importante entender antes de mais nada como discos são organizados e apresentados para a VM. Basicamente toda VM possui 2 discos, um drive C: e um drive D:. Discos extras podem ser anexados na VM.

O drive C: possui um tamanho máximo de 127GB e deve ser utilizado para sistema operacional. Dados de aplicativos não devem ficar neste volume. O drive D: possui um label que condiz com a função (Temporary Disk). Este disco existe para uso de aplicações que necessitem de um volume para processar dados temporários. Os dados salvos neste disco são apagados ao reiniciar a VM.

O uso de máquinas virtuais é de IaaS (Infraestrutura como Serviço), portanto algumas questões como proteção contra falhas, energia, etc serão gerenciadas pelo provedor de serviço. Por padrão o disco possui 3 cópias automáticas para fins de alta disponibilidade, igual ao que você faria normalmente com um RAID-5 com a diferença de que neste caso não precisa se preocupar com isso.

Cada VM do Azure pode ter discos de dados anexados à VM. Cada disco pode ter até 1TB de capacidade. Entretanto de acordo com o tamanho da VM existe um limite de quantidade de discos que podem ser anexados. O cálculo é feito baseado na quantidade de núcleos da VM: multiplique por 2 cada núcleo e você terá a quantidade de discos que podem ser anexados na VM, exceto para a instância A0 (somente 1 disco).

Cada disco de dados anexado pode atingir até 500 IOPS e este é o ponto de atenção deste artigo. Esta regra vale para as instâncias de máquinas virtuais da serie A. A série D utiliza máquinas virtuais com discos SSD e portanto valores maiores de IOPS. Uma outra opção para discos envolve a utilização do recurso de Azure Premium Storage Disk e você pode ter mais informações a respeito no final deste artigo.

Vamos voltar nosso foco aos discos das máquinas virtuais da série A. Se cada disco anexado à VM possui até 500 IOPS então a princípio aumentando a quantidade de discos (e distribuindo a leitura e gravação entre os discos) aumenta a quantidade de IOPS. Neste caso o Windows Server 2012 possui o recurso de Storage Spaces, que permite criar volumes suportando vários recursos como:

– Deduplicação

– Thin Provisioning

– RAID

– etc

Um dos recursos interessantes é a capacidade de pegar vários discos e agregar em um grupo (Storage Pool). A partir do Storage Pool você pode criar vaáios discos virtuais (Virtual Disks), sempre respeitando o tamanho máximo fornecido pelo Storage Pool. Uma vez criado um disco virtual (que pode suportar por exemplo Thin Provisioning) é possivel criar volumes para acomodar dados. Representando de forma bem simples o fluxo de criação seria isso:

Ao adicionar um disco em um Storage Pool você pode informar o nível de proteção de dados. Você pode escolher um Mirror (espelhamento) , Stripe (paridade) ou você pode selecionar a opção de usar um Stripe sem paridade (Raid 0). Desta forma os dados serão gravados distribuídos entre os discos.

Na prática significa que, usando este método de Storage Pool dentro da VM, é possível atingir altas taxas de IOPS em um disco. Este mesmo disco pode ser utilizado para armazenar um banco de dados, log transacional, etc.

 

Links adicionais:


Autor: Microsoft Tech