Compartilhar via


Noções básicas sobre o cache do pool de armazenamento

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 a performance do armazenamento e reduzir os custos. It's a large, persistent, real-time read and write cache that is configured automatically upon deployment. Na maioria dos casos, nenhum tipo de gerenciamento manual é necessário. A maneira como o cache funciona depende dos tipos de unidades presentes.

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

Os Espaços de Armazenamento Diretos atualmente funcionam com quatro tipos de unidades:

Tipo de unidade Description
PMem PMem refers to persistent memory, a new type of low latency, high performance storage.
NVMe NVMe (Non-Volatile Memory Express) refers to solid-state drives that sit directly on the PCIe bus. Os formatos comuns são 2.5" U.2, PCIe Add-In-Card (AIC) e M.2. O NVMe oferece maior IOPS e taxa de transferência de E/S com baixa latência do que qualquer outro tipo de unidade que suportamos atualmente, exceto o PMem.
SSD SSD refers to solid-state drives, which connect via conventional SATA or SAS.
HDD HDD refers to rotational, magnetic hard disk drives, which offer vast storage capacity at a low cost.

Eles podem ser combinados de várias maneiras, que podemos agrupar em duas categorias: "tudo flash" e "híbridos". Não há suporte para implantações com todos os HD.

Note

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

Possibilidades de implantação tudo flash

As implantações totalmente flash têm como objetivo maximizar a performance do armazenamento e não incluem o HD.

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 performance e capacidade ou maximizar a capacidade e incluem HD.

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

Note

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.

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ápida para armazenar em 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 HD.

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

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

Note

As unidades de cache não contribuem com capacidade de armazenamento utilizável para o cluster. Todos os dados armazenados em cache também são armazenados em outro lugar ou serão assim que forem desalocados. 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. You have the option to manually configure higher-endurance drives to cache for lower-endurance drives of the same type – see the Manual configuration section to learn how.

Tip

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 a performance. Da mesma forma, pequenas implantações remotas ou de ramificações podem ter espaço limitado para unidades de cache.

Comportamento do cache é definido automaticamente

O comportamento do cache é determinado automaticamente com base nos tipos de unidades que estão sendo usadas no armazenamento 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 HDs), as leituras e gravações são armazenadas em cache.

Diagrama comparando o cache para totalmente 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.

Armazenamento em cache somente leitura para implantações tudo em flash

O cache pode ser usado em um cenário totalmente flash, por exemplo, usando NVMe como cache para acelerar a performance 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, desalocá-las apenas quando necessário, reduzindo o tráfego cumulativo para as unidades de capacidade e estendendo sua vida útil. For this reason, we recommend selecting higher-endurance, write-optimized drives for the cache. Naturalmente, as unidades de capacidade podem ter menos resistência à gravação.

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 desalocados). Isso permite que o cache seja inteiramente dedicado a gravações, o que maximiza a eficácia.

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

Armazenamento em cache de leitura/gravação para implantações híbridas

When caching for HDD, both reads and writes are cached, to provide flash-like latency (often ~10x better) for both. O cache de leitura armazena dados de leitura recentes e frequentes para acesso rápido e minimização de tráfego aleatório para as HDs. (Devido a atrasos de busca e rotação, a latência e o tempo perdido incorridos pelo acesso aleatório a um HD 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 implementam um algoritmo que "desrandomiza" as gravações antes de desalocá-las, para emular um padrão de E/S para o disco que parece sequencial mesmo quando o E/S real proveniente do workload (como máquinas virtuais) é aleatória. Isso maximiza o IOPS e a taxa de transferência para as HDs.

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

Quando as unidades de todos os três tipos estão presentes, as unidades NVMe fornecem cache para os SSDs e os HDs. O comportamento é o descrito acima: somente gravações são armazenadas em cache para as SSDs, e leituras e gravações são armazenadas em cache para as HDs. O custo indireto do armazenamento em cache para as HDs é distribuído por igual entre as unidades de cache.

Summary

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

Deployment Cache drives Capacity drives Comportamento de cache (padrão)
All NVMe Nenhum (opcional: configurar manualmente) NVMe Somente gravação (se configurada)
All SSD Nenhum (opcional: configurar manualmente) SSD Somente gravação (se configurada)
NVMe + SSD NVMe SSD Write-only
NVMe + HD NVMe HD Leitura + gravação
SSD + HD SSD HD Leitura + gravação
NVMe + SSD + HD NVMe SSD + HD Leitura + gravação para HD, somente gravação para SSD

Server-side architecture

O cache é implementado no nível da unidade: unidades de cache individuais dentro de um servidor são associadas a uma ou várias unidades de capacidade dentro do 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. Assim como acontece com uma unidade híbrida real, a movimentação em tempo real de dados quentes e frios entre as partes mais rápidas e mais lentas da mídia física é praticamente invisível por fora.

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

O diagrama representa três servidores unidos por um espelhamento 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, durante o uso do espelhamento triplo, três cópias de todos os dados são gravadas em servidores diferentes, onde eles chegam ao cache. Independentemente de serem posteriormente desalocados ou não, sempre existem três cópias.

Associações de unidade são dinâmicas

A associação entre as unidades de cache e capacidade podem ter qualquer proporção, de 1:1 a 1:12 e além. Ela é ajustada dinamicamente sempre que as unidades são adicionadas ou removidas, como acontece durante escalas verticais ou depois de falhas. Isso significa que você pode adicionar unidades de cache ou de capacidade de maneira 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.

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

Identificando falhas na unidade de cache

Quando uma unidade de cache falha, todas as gravações que ainda não foram desalocadas são perdidas para o servidor local, o que significa que existem apenas nas outras cópias (em outros servidores). Assim como acontece após qualquer outra falha na 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 reassociação do cache ocorre (automática) e o reparo de dados é concluído (automático), eles voltam a ser exibidos como íntegros.

É por causa desse cenário que pelo menos duas unidades de cache são necessárias 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.

É possível acabar substituindo a unidade de cache assim como qualquer outra troca de unidade.

Note

Você precisa desligar para substituir com segurança o NVMe, um fator forma de cartão suplementar (AIC) ou M.2.

Relação com outros caches

Existem diversos outros caches não relacionados na pilha de armazenamento definido pelo software do Windows. Entre os exemplos estão o cache com write-back de Espaços de Armazenamento e o cache de leitura na memória Volume Compartilhado Clusterizado (CSV).

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. For example, parameters such as -WriteCacheSize on the New-Volume cmdlet shouldn't be used.

Você pode optar por usar o cache CSV, ou não – cabe a você. 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 determinados cenários, ele pode proporcionar ganhos de desempenho importantes. Para obter mais informações, consulte Usar o cache de leitura na memória CSV com o Azure Stack HCI.

Manual configuration

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

Caso precise fazer alterações no modelo de 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 o Windows não pode distinguir características como resistência de gravação automaticamente entre unidades do mesmo tipo.

To use higher-endurance drives to cache for lower-endurance drives of the same type, you can specify which drive model to use with the -CacheDeviceModel parameter of the Enable-ClusterS2D cmdlet. Todas as unidades desse modelo são usadas para armazenamento em cache.

Tip

Be sure to match the model string exactly as it appears in the output of Get-PhysicalDisk.

Example

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"

You can verify that the drives you intended are being used for caching by running Get-PhysicalDisk in PowerShell and verifying that their Usage property says "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 HD mistos para capacidade.

Definir comportamento do cache

É possível substituir o comportamento padrão do cache. Por exemplo, é possível defini-lo para leituras de cache, mesmo em uma implantação tudo flash. Não recomendamos modificar o comportamento, a menos que você tenha certeza de que o padrão não se adequa ao seu workload.

To override the behavior, use Set-ClusterStorageSpacesDirect cmdlet and its -CacheModeSSD and -CacheModeHDD parameters. The CacheModeSSD parameter sets the cache behavior when caching for SSD. The CacheModeHDD parameter sets cache behavior when caching for HDD.

You can use Get-ClusterStorageSpacesDirect to verify the behavior is set.

Example

Primeiro, obtenha as configurações dos 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 em leitura ou gravação ativa a qualquer momento) dos 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 desalocadas de forma mais agressiva, prejudicando a performance geral.

É possível usar o utilitário Monitor de Desempenho (PerfMon.exe) interno do Windows para inspecionar a taxa de perdas no cache. Mais especificamente, é possível comparar o Cache Miss Reads/sec do contador Cluster Storage Hybrid Disk definido como o IOPS de leitura geral da implantação. Cada "Disco Híbrido" corresponde a uma unidade de capacidade.

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

Performance-Monitor.

Não há uma regra universal, mas se muitas leituras não estiverem sendo feitas no cache, ele pode estar subdimensionado e você deve considerar adicionar unidades de cache para expandi-lo. É possível adicionar unidades de cache ou de capacidade de maneira independente, sempre que você quiser.

Next steps

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