Explicar como otimizar o armazenamento do Azure para máquinas virtuais do SQL Server

Concluído

O desempenho do armazenamento é um componente crítico de um aplicativo com uso intenso de E/S como um mecanismo de banco de dados. O Azure oferece uma ampla gama de opções de armazenamento e pode até mesmo criar sua solução de armazenamento para atender aos seus requisitos de carga de trabalho.

O Armazenamento do Azure é uma plataforma de armazenamento seguro e altamente escalonável que oferece uma variedade de soluções para atender às necessidades de muitos aplicativos. Como o foco deste curso são os bancos de dados, você aprenderá sobre os aspectos do Armazenamento de Blobs que são aplicáveis a cargas de trabalho do SQL Server, que são disco, arquivo e Armazenamento de Blobs. Observe que todos os tipos de armazenamento acima dão suporte à criptografia em repouso com uma chave de criptografia gerenciada pela Microsoft ou definida pelo usuário.

Armazenamento de Blobs – o armazenamento de blobs é o que é conhecido como armazenamento baseado em objeto e inclui camadas de armazenamento frio, quente e de arquivos. Em um ambiente do SQL Server, o Armazenamento de Blobs normalmente será usado para backups de banco de dados com a funcionalidade de backup para URL do SQL Server.

Armazenamento de arquivos – o armazenamento de arquivos é efetivamente um compartilhamento de arquivo que pode ser montado dentro de uma máquina virtual sem necessidade de configurar nenhum hardware. O SQL Server pode usar o armazenamento de arquivos como um destino de armazenamento para uma instância de cluster de failover.

Armazenamento em Disco – os discos gerenciados do Azure oferecem armazenamento em bloco que é apresentado a uma máquina virtual. Esses discos são gerenciados da mesma forma que um disco físico em um servidor local, exceto por serem virtualizados. Há vários níveis de desempenho em discos gerenciados, dependendo de sua carga de trabalho. Esse tipo de armazenamento é o tipo mais comumente usado para dados do SQL Server e arquivos de log de transações.

Discos gerenciados do Azure

Os discos gerenciados do Azure são volumes de armazenamento em nível de bloco apresentados para Máquinas Virtuais do Azure. O armazenamento em nível de bloco refere-se a volumes brutos de armazenamento que são criados e podem ser tratados como um disco rígido individual. Esses dispositivos de bloco podem ser gerenciados no sistema operacional e a camada de armazenamento não está ciente do conteúdo do disco. A alternativa ao armazenamento em bloco é o armazenamento de objetos, em que os arquivos e seus metadados são armazenados no sistema de armazenamento subjacente. O Armazenamento de Blobs do Azure é um exemplo de um modelo de armazenamento de objetos. Embora o armazenamento de objetos funcione bem para muitas soluções de desenvolvimento modernas, a maioria das cargas de trabalho em execução em máquinas virtuais usará o armazenamento em bloco.

A configuração dos discos gerenciados é importante para o desempenho de suas cargas de trabalho do SQL Server. Se você estiver mudando de um ambiente local, é importante capturar métricas como média de segundos de disco/leitura e média de segundos de disco/gravação do Monitor de Desempenho, conforme já detalhado. Outra métrica a ser capturada são as operações de E/S por segundo, que podem ser capturadas usando os contadores SQL Server: Estatísticas do Pool de Recursos ES/s de Leitura e Gravação de Disco, que mostram quantas IOPS o SQL Server estão atendendo em seu pico. É importante entender suas cargas de trabalho. Você desejará projetar seu armazenamento e a máquina virtual para atender às necessidades desses picos de carga de trabalho sem incorrer em latência significativa. Observe que cada tipo de Máquina Virtual do Azure tem um limite de IOPS.

Há quatro tipos de discos gerenciados do Azure:

Disco Ultra – os discos Ultra dão suporte a cargas de trabalho de alta E/S para bancos de dados de missão crítica com baixa latência.

SSD Premium – os discos SSD Premium são de alta taxa de transferência e baixa latência e podem atender às necessidades da maioria das cargas de trabalho de banco de dados em execução na nuvem.

SSD Standard – SSDs Standard são projetados para cargas de trabalho de desenvolvimento/teste usadas de modo leve ou servidores Web que fazem uma pequena quantidade de E/S e exigem latência previsível.

HDD Standard – os HDDs Standard são adequados para backups e armazenamento de arquivos raramente acessado.

Normalmente, as cargas de trabalho do SQL Server de produção usarão o Disco Ultra, o SSD Premium ou alguma combinação dos dois. Os discos Ultra geralmente são usados quando você busca latência de inferior a um milissegundo no tempo de resposta. Os SSDs Premium normalmente têm tempo de resposta de milissegundos de dígito único, mas tem custos menores e mais flexibilidade no design. Os SSDs Premium também dão suporte ao cache de leitura, que pode beneficiar cargas de trabalho de banco de dados com alta leitura, reduzindo o número de viagens para o disco. O cache de leitura é armazenado no SSD local (a unidade D:\ no Windows ou /dev/sdb1/ no Linux), o que pode ajudar a reduzir o número de viagens de ida e volta para o disco real.

Como distribuir discos para obter a taxa de transferência máxima

Uma das maneiras de obter mais desempenho e volume fora dos discos do Azure é distribuir seus dados em vários discos. Essa técnica não se aplica ao Disco Ultra, pois você pode dimensionar IOPS, taxa de transferência e tamanho máximo de modo independente em um só disco. No entanto, com o SSDs Premium, pode ser benéfico dimensionar o volume de armazenamento e a IOPS. Para distribuir discos no Windows, basta adicionar o número de discos que você deseja à VM e criar um pool usando Espaços de Armazenamento no Windows. Não configure nenhuma redundância para o pool (o que limitaria o desempenho), pois a redundância é fornecida pela estrutura do Azure, que mantém três cópias de todos os discos na replicação síncrona para proteção contra uma falha de disco. Quando você cria um pool, ele tem a soma de IOPS e do volume de todos os discos no pool. Por exemplo, se você usasse 10 discos P30 com 1 TB cada e 5.000 IOPS por disco, teria um volume de 10 TB com 50.000 IOPS disponíveis.

Melhores práticas de configuração de armazenamento do SQL Server

Há melhores práticas recomendadas para SQL Server em VMs do Azure e sua configuração de armazenamento:

  • Criar um volume separado para arquivos de log de dados e de transações

  • Habilitar cache de leitura no volume do arquivo de dados

  • Não habilite nenhum armazenamento em cache no volume do arquivo de log

  • Planejar 20% adicionais de IOPS e taxa de transferência ao criar seu armazenamento para sua VM para lidar com picos de carga de trabalho

  • Use a unidade D: (o SSD anexado localmente) para arquivos TempDB, pois o TempDB é recriado após a reinicialização do servidor, portanto, não há risco de perda de dados

  • Habilite a inicialização instantânea de arquivo para reduzir o impacto das atividades de crescimento de arquivo.

  • Mover arquivos de rastreamento e diretórios de log de erros para discos de dados

  • Para cargas de trabalho que exigem latência de armazenamento em um milissegundo, considere usar o Disco Ultra ao SSD Premium.

Provedor de recursos de máquina virtual do Azure

Uma forma de reduzir a complexidade da criação de armazenamento para seu SQL Server em uma Máquina Virtual do Azure é usar os modelos do SQL Server no Azure Marketplace, que permitem que você configure seu armazenamento como parte da implantação, conforme mostrado abaixo. Você pode configurar a IOPS conforme necessário e o modelo executará o trabalho de criação de seus pools de espaços de armazenamento no Windows.

Configuração de Disco de VM do SQL Server

Esse provedor de recursos também dá suporte à adição de TempDB à unidade SSD local e cria uma tarefa agendada para criar a pasta na inicialização.