Compartilhar via


Noções básicas sobre o cache do conjunto de armazenamentos

Aplica-se a: Azure Stack HCI, versões 22H2 e 21H2; Windows Server 2022, Windows Server 2019

Espaços de Armazenamento Diretos, a tecnologia de virtualização de armazenamento fundamental por trás do Azure Stack HCI e do Windows Server, apresenta um cache interno do lado do servidor para maximizar o desempenho do armazenamento e reduzir os custos. É um cache de leitura e gravação grande, persistente e em tempo real que é configurado automaticamente na implantação. Na maioria dos casos, nenhum gerenciamento manual é necessário. O funcionamento do cache depende dos tipos de unidades presentes.

Tipos de unidade e opções de implantação

Atualmente, os Espaços de Armazenamento Diretos funcionam com quatro tipos de unidades:

Tipo de unidade Descrição
PMem PMem refere-se à memória persistente, um novo tipo de armazenamento de baixa latência e alto desempenho.
NVMe NVMe (Non-Volatile Memory Express) refere-se a unidades de estado sólido que se conectam diretamente ao barramento PCIe. Os formatos comuns são 2.5" U.2, PCIe Add-In-Card (AIC) e M.2. O NVMe oferece maior taxa de transferência de IOPS e E/S com menor latência do que qualquer outro tipo de unidade que suportamos hoje, exceto o PMem.
SSD O SSD refere-se a unidades de estado sólido, que se conectam por meio de SATA ou SAS convencionais.
Disco rígido HDD refere-se a unidades de disco rígido magnéticas rotacionais, que oferecem vasta capacidade de armazenamento a um baixo custo.

Estes podem ser combinados de várias maneiras, que agrupamos em duas categorias: "all-flash" e "híbrido". Não há suporte para implantações com todos os HDD.

Observação

Este artigo aborda as configurações de cache com NVMe, SSD e HDD. Para obter informações sobre como usar a memória persistente como cache, consulte Entender e implantar memória persistente.

Possibilidades de implantação totalmente flash

As implantações totalmente flash visam maximizar o desempenho do armazenamento e não incluem HDD.

O diagrama mostra implantações totalmente flash, incluindo NVMe para capacidade, NVMe para cache com SSD para capacidade e SSD para capacidade.

Possibilidades de implantação híbrida

As implantações híbridas visam equilibrar desempenho e capacidade ou maximizar a capacidade e incluem HDD.

O diagrama mostra implantações híbridas, incluindo NVMe para cache com HDD para capacidade, SSD para cache com HDD para capacidade e NVMe para cache com HDD mais SSD para capacidade.

Observação

Não há suporte para a implantação híbrida na configuração de servidor único. Todas as configurações simples de tipo de armazenamento único (por exemplo, all-NVMe ou all-SSD) são o único tipo de armazenamento com suporte para um único servidor.

As unidades de cache são selecionadas automaticamente

Em implantações com vários tipos de unidades, os Espaços de Armazenamento Diretos usam automaticamente todas as unidades do tipo mais rápido para cache. As unidades restantes são usadas para a capacidade.

O tipo "mais rápido" é determinado de acordo com a hierarquia a seguir.

O diagrama mostra os tipos de disco organizados de forma mais rápida a mais lenta na ordem NVMe, SSD, disco não rotulado representando HDD.

Por exemplo, se você tiver NVMe e SSDs, o cache NVMe para os SSDs.

Se você tiver SSDs e HDDs, os SSDs serão armazenados em cache para os HDDs.

Observação

As unidades de cache não contribuem com capacidade de armazenamento utilizável para o cluster. Todos os dados armazenados no cache também são armazenados em outro lugar ou serão assim que forem desativados. Isso significa que a capacidade bruta total de armazenamento do cluster é apenas a soma das unidades de capacidade.

Quando todas as unidades são do mesmo tipo, nenhum cache é configurado automaticamente. Você tem a opção de configurar manualmente unidades de maior resistência para armazenar em cache unidades de menor resistência do mesmo tipo – consulte a seção Configuração manual para saber como.

Dica

Em alguns casos, usar o cache do pool de armazenamento não faz sentido. Por exemplo, em implantações totalmente NVMe ou totalmente SSD, especialmente em escala muito pequena, não ter unidades "gastas" em cache pode melhorar a eficiência do armazenamento e maximizar o desempenho. Da mesma forma, pequenas implantações remotas ou de filiais podem ter espaço limitado para unidades de cache.

O comportamento do cache é definido automaticamente

O comportamento do cache é determinado automaticamente com base no(s) tipo(s) de unidades que estão sendo armazenadas em cache. Ao armazenar em cache unidades flash (como cache NVMe para SSDs), somente as gravações são armazenadas em cache. Ao armazenar em cache unidades de disco rotativas (como SSDs em cache para HDDs), as leituras e gravações são armazenadas em cache.

Diagrama comparando o cache para all-flash, em que as gravações são armazenadas em cache e as leituras não, com híbrido, em que as leituras e as gravações são armazenadas em cache.

Cache somente gravação para implantações totalmente flash

O cache pode ser usado em um cenário totalmente flash, por exemplo, usando NVMe como cache para acelerar o desempenho de SSDs. Ao armazenar em cache para implantações totalmente flash, somente as gravações são armazenadas em cache. Isso reduz o desgaste das unidades de capacidade porque muitas gravações e regravações podem se unir no cache e, em seguida, descartá-las apenas quando necessário, reduzindo o tráfego cumulativo para as unidades de capacidade e estendendo sua vida útil. Por esse motivo, recomendamos selecionar unidades de maior resistência e otimizadas para gravação para o cache. As unidades de capacidade podem ter uma resistência de gravação razoavelmente menor.

Como as leituras não afetam significativamente a vida útil do flash e como os SSDs oferecem universalmente baixa latência de leitura, as leituras não são armazenadas em cache: elas são atendidas diretamente das unidades de capacidade (exceto quando os dados foram gravados tão recentemente que ainda não foram desclassificados). Isso permite que o cache seja dedicado inteiramente a gravações, maximizando sua eficácia.

Isso resulta em características de gravação, como latência de gravação, sendo ditadas pelas unidades de cache, enquanto as características de leitura são ditadas pelas unidades de capacidade. Ambos são consistentes, previsíveis e uniformes.

Cache de leitura/gravação para implantações híbridas

Ao armazenar em cache para HDD, tanto as leituras quanto as gravações são armazenadas em cache, para fornecer latência semelhante ao flash (geralmente ~ 10x melhor) para ambos. O cache de leitura armazena dados lidos recentemente e com frequência para acesso rápido e para minimizar o tráfego aleatório para os HDDs. (Devido a atrasos de busca e rotação, a latência e o tempo perdido incorridos pelo acesso aleatório a um HDD são significativos.) As gravações são armazenadas em cache para absorver intermitências e, como antes, para unir gravações e regravações e minimizar o tráfego cumulativo para as unidades de capacidade.

Espaços de Armazenamento Diretos implementa um algoritmo que desrandomiza as gravações antes de desorganizá-las, para emular um padrão de E/S para o disco que parece sequencial mesmo quando a E/S real proveniente da carga de trabalho (como máquinas virtuais) é aleatória. Isso maximiza o IOPS e a taxa de transferência para os HDDs.

Armazenamento em cache em implantações com NVMe, SSD e HDD

Quando as unidades de todos os três tipos estão presentes, as unidades NVMe fornecem cache para os SSDs e os HDDs. O comportamento é o descrito acima: somente as gravações são armazenadas em cache para os SSDs e as leituras e gravações são armazenadas em cache para os HDDs. A carga de armazenamento em cache para os HDDs é distribuída uniformemente entre as unidades de cache.

Resumo

Esta tabela resume quais unidades são usadas para cache, quais são usadas para capacidade e qual é o comportamento de cache para cada possibilidade de implantação.

Implantação Unidades de cache Acionamentos de capacidade Comportamento do cache (padrão)
Todos os NVMe Nenhum (Opcional: configurar manualmente) NVMe Somente gravação (se configurado)
Todos os SSDs Nenhum (Opcional: configurar manualmente) Unidade de Estado Sólido (SSD) Somente gravação (se configurado)
NVMe + SSD NVMe Unidade de Estado Sólido (SSD) Somente gravação
NVMe + HDD NVMe Disco Rígido (HDD) Leitura + Gravação
SSD + HDD Unidade de Estado Sólido (SSD) Disco Rígido (HDD) Leitura + Gravação
NVMe + SSD + HDD NVMe SSD + HDD Leitura + Gravação para HDD, Somente gravação para SSD

Arquitetura do lado do servidor

O cache é implementado no nível da unidade: unidades de cache individuais em um servidor estão vinculadas a uma ou várias unidades de capacidade no mesmo servidor.

Como o cache está abaixo do restante da pilha de armazenamento definida por software do Windows, ele não tem nem precisa de nenhum conhecimento de conceitos como Espaços de Armazenamento ou tolerância a falhas. Você pode pensar nisso como a criação de unidades "híbridas" (parte flash, parte disco) que são então apresentadas ao sistema operacional. Tal como acontece com uma unidade híbrida real, o movimento em tempo real de dados quentes e frios entre as partes mais rápidas e mais lentas da mídia física é quase invisível para o exterior.

Considerando que a resiliência em Espaços de Armazenamento Diretos é pelo menos no nível do servidor (o que significa que as cópias de dados são sempre gravadas em servidores diferentes; no máximo uma cópia por servidor), os dados no cache se beneficiam da mesma resiliência que os dados que não estão no cache.

O diagrama representa três servidores unidos por um espelho de três vias em uma camada de Espaço de Armazenamento, que acessa uma camada de cache de unidades NVMe que acessam unidades de capacidade não rotuladas.

Por exemplo, ao usar o espelhamento de três vias, três cópias de quaisquer dados são gravadas em servidores diferentes, onde chegam ao cache. Independentemente de serem posteriormente destagados ou não, sempre existem três cópias.

As ligações de unidade são dinâmicas

A associação entre unidades de cache e capacidade pode ter qualquer proporção, de 1:1 a 1:12 e além. Ele se ajusta dinamicamente sempre que as unidades são adicionadas ou removidas, como ao aumentar a escala ou após falhas. Isso significa que você pode adicionar unidades de cache ou unidades de capacidade de forma independente, sempre que quiser.

O diagrama animado mostra duas unidades de cache NVMe mapeadas dinamicamente para as primeiras quatro, depois seis e depois oito unidades de capacidade.

Recomendamos tornar o número de unidades de capacidade um múltiplo do número de unidades de cache, para simetria. Por exemplo, se você tiver 4 unidades de cache, terá um desempenho mais uniforme com 8 unidades de capacidade (proporção de 1:2) do que com 7 ou 9.

Manipulando falhas de unidade de cache

Quando uma unidade de cache falha, todas as gravações que ainda não foram removidas são perdidas para o servidor local, o que significa que existem apenas nas outras cópias (em outros servidores). Assim como após qualquer outra falha de unidade, os Espaços de Armazenamento podem e se recuperam automaticamente consultando as cópias sobreviventes.

Por um breve período, as unidades de capacidade que foram vinculadas à unidade de cache perdida parecem não íntegras. Depois que a religação do cache ocorre (automática) e o reparo de dados é concluído (automático), eles voltam a ser exibidos como íntegros.

Esse cenário é o motivo pelo qual são necessárias no mínimo duas unidades de cache por servidor para preservar o desempenho.

O diagrama animado mostra duas unidades de cache SSD mapeadas para seis unidades de capacidade até que uma unidade de cache falhe, o que faz com que todas as seis unidades sejam mapeadas para a unidade de cache restante.

Você pode então substituir a unidade de cache como qualquer outra substituição de unidade.

Observação

Pode ser necessário desligar para substituir com segurança o NVMe que é Add-In Card (AIC) ou fator de forma M.2.

Relação com outros caches

Há vários outros caches não relacionados na pilha de armazenamento definido por software do Windows. Os exemplos incluem o cache de write-back de Espaços de Armazenamento e o cache de leitura na memória CSV (Volume Compartilhado Clusterizado).

Com o Azure Stack HCI, o cache de write-back de Espaços de Armazenamento não deve ser modificado de seu comportamento padrão. Por exemplo, parâmetros como -WriteCacheSize no cmdlet New-Volume não devem ser usados.

Você pode optar por usar o cache CSV ou não – você decide. Ele está ativado por padrão no Azure Stack HCI, mas não entra em conflito com o cache descrito neste tópico de forma alguma. Em certos cenários, pode fornecer ganhos valiosos de desempenho. Para obter mais informações, consulte Usar o cache de leitura na memória CSV com o Azure Stack HCI.

Configuração manual

Para a maioria das implantações, a configuração manual não é necessária. Caso você precise, consulte as seções a seguir.

Se você precisar fazer alterações no modelo do dispositivo de cache após a instalação, edite o Documento de Componentes de Suporte do Serviço de Integridade, conforme descrito em Visão geral do Serviço de Integridade.

Especificar o modelo da unidade de cache

Em implantações em que todas as unidades são do mesmo tipo, como implantações totalmente NVMe ou totalmente SSD, nenhum cache é configurado porque Windows não pode distinguir características como resistência de gravação automaticamente entre unidades do mesmo tipo.

Para usar unidades de maior resistência para armazenar em cache unidades de menor resistência do mesmo tipo, você pode especificar qual modelo de unidade usar com o parâmetro -CacheDeviceModel do cmdlet Enable-ClusterS2D . Todas as unidades desse modelo são usadas para armazenamento em cache.

Dica

Certifique-se de corresponder à cadeia de caracteres do modelo exatamente como ela aparece na saída de Get-PhysicalDisk.

Exemplo

Primeiro, obtenha uma lista de discos físicos:

Get-PhysicalDisk | Group Model -NoElement

Veja a seguir um exemplo de saída:

Count Name
----- ----
    8 FABRIKAM NVME-1710
   16 CONTOSO NVME-1520

Em seguida, insira o seguinte comando, especificando o modelo do dispositivo de cache:

Enable-ClusterS2D -CacheDeviceModel "FABRIKAM NVME-1710"

Você pode verificar se as unidades pretendidas estão sendo usadas para cache executando Get-PhysicalDisk no PowerShell e verificando se a propriedade Usage diz "Journal".

Possibilidades de implantação manual

A configuração manual permite as seguintes possibilidades de implantação:

O diagrama mostra as possibilidades de implantação, incluindo NVMe para cache e capacidade, SSD para cache e capacidade e SSD para cache e SSD e HDD mistos para capacidade.

Definir comportamento de cache

É possível substituir o comportamento padrão do cache. Por exemplo, você pode configurá-lo para leituras de cache mesmo em uma implantação totalmente flash. Não recomendamos modificar o comportamento, a menos que você tenha certeza de que o padrão não se adequa à sua carga de trabalho.

Para substituir o comportamento, use o cmdlet Set-ClusterStorageSpacesDirect e seus parâmetros -CacheModeSSD e -CacheModeHDD . O parâmetro CacheModeSSD define o comportamento do cache ao armazenar em cache o SSD. O parâmetro CacheModeHDD define o comportamento do cache ao armazenar em cache para HDD.

Você pode usar Get-ClusterStorageSpacesDirect para verificar se o comportamento está definido.

Exemplo

Primeiro, obtenha as configurações de Espaços de Armazenamento Diretos:

Get-ClusterStorageSpacesDirect

Veja a seguir um exemplo de saída:

CacheModeHDD : ReadWrite
CacheModeSSD : WriteOnly

Em seguida, faça o seguinte:

Set-ClusterStorageSpacesDirect -CacheModeSSD ReadWrite

Get-ClusterS2D

Veja a seguir um exemplo de saída:

CacheModeHDD : ReadWrite
CacheModeSSD : ReadWrite

Dimensionando o cache

O cache deve ser dimensionado para acomodar o conjunto de trabalho (os dados que estão sendo lidos ou gravados ativamente a qualquer momento) de seus aplicativos e cargas de trabalho.

Isso é especialmente importante em implantações híbridas com unidades de disco rígido. Se o conjunto de trabalho ativo exceder o tamanho do cache ou se o conjunto de trabalho ativo se desviar muito rapidamente, as falhas de cache de leitura aumentarão e as gravações precisarão ser desmarcadas de forma mais agressiva, prejudicando o desempenho geral.

Você pode usar o utilitário interno Monitor de Desempenho (PerfMon.exe) no Windows para inspecionar a taxa de erros de cache. Especificamente, você pode comparar as leituras perdidas de cache/s do contador de disco híbrido de armazenamento de cluster definido com o IOPS de leitura geral de sua implantação. Cada "Disco Híbrido" corresponde a uma unidade de capacidade.

Por exemplo, 2 unidades de cache associadas a 4 unidades de capacidade resultam em 4 instâncias de objeto "Disco Híbrido" por servidor.

Monitor de desempenho.

Não existe uma regra universal, mas se muitas leituras não tiverem o cache, ele pode estar subdimensionado e você deve considerar adicionar unidades de cache para expandir seu cache. Você pode adicionar unidades de cache ou unidades de capacidade de forma independente sempre que quiser.

Próximas etapas

Para obter conhecimento adicional sobre armazenamento, consulte também: