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 pesado de E/S, como um mecanismo de banco de dados. O Azure oferece uma ampla variedade de opções de armazenamento e pode até criar sua solução de armazenamento para atender aos seus requisitos de carga de trabalho.

O Armazenamento do Azure é uma plataforma de armazenamento altamente escalável e segura 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 aspetos do armazenamento de blob aplicáveis às cargas de trabalho do SQL Server, que são armazenamento de disco, arquivo e blob. Observe que todos os tipos de armazenamento acima suportam criptografia em repouso com uma chave de criptografia gerenciada pela Microsoft ou definida pelo usuário.

Armazenamento de Blob - O armazenamento de Blob é o que é conhecido como armazenamento baseado em objeto e inclui níveis de armazenamento frio, quente e de arquivamento. Em um ambiente do SQL Server, o armazenamento de blob normalmente será usado para backups de banco de dados, usando a funcionalidade de backup para URL do SQL Server.

Armazenamento de arquivos - O armazenamento de arquivos é efetivamente um compartilhamento de arquivos que pode ser montado dentro de uma máquina virtual, sem a necessidade de configurar qualquer 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 como um disco físico em um servidor local, exceto que eles são virtualizados. Há várias camadas de desempenho em discos gerenciados, dependendo da 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 que são apresentados às 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 dentro do 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, onde 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á armazenamento em bloco.

A configuração dos discos gerenciados é importante para o desempenho das cargas de trabalho do SQL Server. Se você estiver mudando de um ambiente local, é importante capturar métricas como média de segundos/leitura de disco e segundos médios de disco/gravação do Monitor de Desempenho, conforme detalhado anteriormente. 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: Resource Pool Stats Disk Read and Write IO/sec , que mostram quantas IOPs o SQL Server está servindo em seu pico. É importante entender suas cargas de trabalho. Você desejará projetar seu armazenamento e sua 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.

Os discos gerenciados do Azure são fornecidos em quatro tipos:

Ultra disco - Os discos Ultra suportam 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 padrão - As SSD padrão são projetadas para cargas de trabalho de desenvolvimento/teste levemente usadas ou servidores Web que fazem uma pequena quantidade de E/S e exigem latência previsível.

HDD padrão - Os HDDs padrão são adequados para backups e armazenamento de arquivos que são acessados com pouca frequência.

Normalmente, as cargas de trabalho de produção do SQL Server usarão disco Ultra ou SSD Premium ou alguma combinação dos dois. Os discos Ultra são normalmente usados quando você está procurando latência de submilissegundos no tempo de resposta. As SSD Premium normalmente têm um tempo de resposta de milissegundos de um dígito, mas têm custos mais baixos e mais flexibilidade no design. Os SSDs Premium também suportam cache de leitura, o que pode beneficiar cargas de trabalho de banco de dados com muita leitura, reduzindo o número de viagens ao 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.

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

Uma das maneiras de obter mais desempenho e volume 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 independentemente em um único disco. No entanto, com SSDs Premium, pode ser benéfico dimensionar IOPs e volume de armazenamento. Para distribuir discos no Windows, basta adicionar o número de discos desejado à VM e, em seguida, criar um pool usando Espaços de Armazenamento no Windows. Não configure nenhuma redundância para seu pool (o que limitaria seu 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 proteger contra uma falha de disco. Quando você cria um pool, ele tem a soma dos IOPs e a soma do volume de todos os discos do pool. Por exemplo, se você usou 10 discos P30 com um TB cada e 5000 IOPs por disco, você teria um volume de 10 TB com 50.000 IOPs disponíveis.

Práticas recomendadas de configuração de armazenamento do SQL Server

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

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

  • Habilitar o cache de leitura no volume do arquivo de dados

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

  • Planeje 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 conectado localmente) para arquivos TempDB porque 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 arquivos para reduzir o impacto das atividades de crescimento de arquivos.

  • 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 inferior a um milissegundo, considere o uso de disco Ultra sobre SSD Premium.

Provedor de recursos da Máquina Virtual do Azure

Uma maneira 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 configurar seu armazenamento como parte de sua implantação, conforme mostrado abaixo. Você pode configurar as IOPs conforme necessário e o modelo executará o trabalho de criação de seus pools de espaços de armazenamento no Windows.

SQL Server VM Disk Configuration

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