Explicar como otimizar o armazenamento do Azure para máquinas virtuais do SQL Server
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 eficaz e segura projetada para atender às diversas necessidades de vários aplicativos. Ele oferece uma grande variedade de soluções escalonáveis, garantindo que todos os tipos de armazenamento ofereçam suporte à criptografia em repouso. Os usuários podem escolher entre uma chave de criptografia gerenciada pela Microsoft ou uma chave de criptografia definida pelo usuário para adicionar segurança.
Armazenamento de Blobs – O Armazenamento de Blobs é o que é conhecido como armazenamento baseado em objeto e inclui camadas de armazenamento frias, quentes e de arquivamento. 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 arquivos que pode ser montado dentro de uma máquina virtual, sem a 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 como 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 nas máquinas virtuais usa 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 migrando de um ambiente local, é importante capturar métricas como média de segundos de disco/leitura e média de segundos de disco/escrita 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 o SQL Server: Contadores de IO/s de leitura e gravação em disco das estatísticas do pool de recursos, que mostram a você quantos IOPs o SQL Server está atendendo no seu auge. É importante entender suas cargas de trabalho. Você quer projetar seu armazenamento e máquina virtual para atender às necessidades desses picos de carga de trabalho sem incorrer em latência significativa. 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 Padrão – Os SSDs Standard são projetados 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 Standard – HDDs standard são adequados para backups e armazenamento de arquivos que são acessados com pouca frequência.
Normalmente, as cargas de trabalho do SQL Server de produção usam disco Ultra ou SSD Premium ou alguma combinação dos dois. Normalmente, os discos Ultra são usados quando se procura uma latência inferior a um milésimo de segundo 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 independentemente em um único disco. No entanto, com o SSDs Premium, pode ser benéfico dimensionar o volume de armazenamento e a IOPS. Para distribuir discos em faixas no Windows, adicione o número de discos de sua preferência à VM e crie um pool usando os 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 cache no volume do arquivo de log
- Planeje mais 20% 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) nos 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 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
- Quanto às cargas de trabalho que exigem latência de armazenamento abaixo de 1 milissegundo, considere o uso do disco Ultra pelo SSD Premium.
Provedor de recursos de máquina virtual do Azure
Uma maneira de reduzir a complexidade da criação de armazenamento no SQL Server em uma Máquina Virtual do Azure é usar os modelos do SQL Server no Azure Marketplace, que permitem que você configure o armazenamento como parte da implantação. Você pode configurar os IOPs conforme for necessário e o modelo executa o trabalho de criação dos seus pools de espaços de armazenamento no Windows.
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.