Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: Azure Stack HCI, versões 22H2 e 21H2; Windows Server 2022, Windows Server 2019
O Storage Spaces Direct, 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, ao mesmo tempo, reduzir os custos. É um cache de leitura e gravação persistente, grande e em tempo real que é configurado automaticamente após a implantação. Na maioria dos casos, não é necessária qualquer gestão manual. O funcionamento do cache depende dos tipos de unidades presentes.
Tipos de unidade e opções de implantação
Atualmente, o Storage Spaces Direct funciona com quatro tipos de unidades:
Tipo de acionamento | Descrição |
---|---|
![]() |
PMem refere-se à memória persistente, um novo tipo de armazenamento de baixa latência e alto desempenho. |
![]() |
NVMe (Non-Volatile Memory Express) refere-se a unidades de estado sólido que ficam diretamente no barramento PCIe. Os fatores de forma comuns são U.2 de 2,5",In-Card de adição PCIe (AIC) e M.2. O NVMe oferece IOPS e taxa de transferência de E/S mais altas com latência mais baixa do que qualquer outro tipo de unidade que suportamos atualmente, exceto PMem. |
![]() |
SSD refere-se a unidades de estado sólido, que se conectam via SATA ou SAS convencional. |
![]() |
HDD refere-se a unidades de disco rígido rotativas e magnéticas, que oferecem uma 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 HDDs.
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 Compreender e implantar a memória persistente.
Possibilidades de implementação totalmente flash
As implementações totalmente flash visam maximizar o desempenho do armazenamento e não incluem HDD.
Possibilidades de implantação híbrida
As implementações híbridas visam equilibrar o desempenho e a capacidade ou maximizar a capacidade, e incluem HDD.
Observação
A implantação híbrida não é suportada na configuração de servidor único. Todas as configurações de tipo de armazenamento único plano (por exemplo, all-NVMe ou all-SSD) é o único tipo de armazenamento suportado para um único servidor.
As unidades de cache são selecionadas automaticamente
Em implantações com vários tipos de unidades, o Storage Spaces Direct usa automaticamente todas as unidades do tipo mais rápido para cache. As unidades restantes são usadas para aumentar a capacidade.
O tipo "mais rápido" é determinado de acordo com a seguinte hierarquia.
Por exemplo, se tiveres NVMe e SSDs, usa o cache NVMe para os SSDs.
Se tiver SSDs e HDDs, os SSDs fornecem 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 total de armazenamento bruto do seu cluster é somente a soma dos discos de capacidade.
Quando todas as unidades são do mesmo tipo, nenhum sistema de 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.
Sugestão
Em alguns casos, usar o cache do pool de armazenamento não faz sentido. Por exemplo, em implantações totalmente NVMe ou SSD, especialmente em escala muito pequena, não usar unidades "para" cache pode melhorar a eficiência do armazenamento e maximizar o desempenho. Da mesma forma, pequenas implantações remotas ou 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 o cache NVMe para SSDs), somente as gravações são armazenadas em cache. Ao armazenar em cache unidades de disco rotativas (como SSDs que armazenam em cache para HDDs), tanto as leituras quanto as gravações são armazenadas em cache.
Cache só de escrita para implementações de flash total
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, apenas as gravações são armazenadas em cache. Isso reduz o desgaste das unidades de capacidade, pois muitas gravações e regravações podem se aglomerar em cache e, em seguida, serem transferidas apenas quando necessário, reduzindo o tráfego cumulativo para as unidades de capacidade e estendendo a sua vida útil. Por esse motivo, recomendamos selecionar unidades de maior resistência e otimizadas para gravação para o cache. Os discos de capacidade podem ter menos resistência à escrita.
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 servidas diretamente das unidades de capacidade (exceto quando os dados foram gravados tão recentemente que ainda não foram destaged). Isso permite que o cache seja inteiramente dedicado às 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 tal como as gravações são armazenadas em cache, para fornecer latência semelhante à do flash (muitas vezes ~10x melhor) para ambos. A cache de leitura armazena dados lidos recentemente e com frequência para acesso rápido e para minimizar o tráfego aleatório para as HDD. (Devido a atrasos de busca e rotação, a latência e o tempo perdido que ocorrem devido ao acesso aleatório a um disco rígido são significativos.) As escritas são armazenadas em cache para absorver picos e, como antes, aglutinar escritas e reescritas e minimizar o tráfego cumulativo para as unidades de armazenamento de alta capacidade.
O Storage Spaces Direct implementa um algoritmo que desrandomiza gravações antes de desprepará-las, para emular um padrão de E/S no 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 estão presentes unidades dos três tipos, as unidades NVMe fornecem armazenamento em cache tanto para as SSD como para as HDD. O comportamento é o descrito acima: apenas as gravações são armazenadas em cache para os SSDs, e tanto as leituras quanto as gravações são armazenadas em cache para os HDDs. A carga de 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 opção de implementação.
Implantação | Unidades de cache | Drives de capacidade | Comportamento do cache (padrão) |
---|---|---|---|
Todos os NVMe | Nenhum (Opcional: configurar manualmente) | NVMe | Somente gravação (se configurado) |
Todos os SSD | Nenhum (Opcional: configurar manualmente) | Disco de estado sólido | Somente gravação (se configurado) |
NVMe + SSD | NVMe | Disco de estado sólido | Somente gravação |
NVMe + HDD | NVMe | HDD (Disco Rígido) | Ler + Escrever |
SSD + HDD | Disco de estado sólido | HDD (Disco Rígido) | Ler + Escrever |
NVMe + SSD + HDD | NVMe | SSD + HDD | Ler + Escrever para HDD, Apenas escrita para SSD |
Arquitetura do lado do servidor
O cache é implementado no nível da unidade: unidades de cache individuais dentro de um servidor são vinculadas 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 ter, 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, a transferência 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.
Dado que a resiliência no Storage Spaces Direct é, pelo menos, ao 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 na cache beneficiam da mesma resiliência que os dados que não estão na cache.
Por exemplo, ao usar o espelhamento de três vias, três cópias de quaisquer dados são gravadas em servidores diferentes, onde são armazenadas em cache. Independentemente de serem posteriormente descartadas ou não, três cópias sempre existem.
As ligações de disco são dinâmicas
A ligação entre unidades de cache e de capacidade pode ter qualquer proporção, de 1:1 até 1:12 ou mais. Ajusta-se 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.
Recomendamos, por motivos de simetria, 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, experimentará um desempenho mais uniforme com 8 unidades de capacidade (proporção 1:2) do que com 7 ou 9.
Lidando com falhas da unidade de cache
Quando uma unidade de cache falha, quaisquer gravações que ainda não tenham sido transferidas são perdidas no servidor local, o que significa que elas existem apenas nas outras cópias (em outros servidores). Assim como após qualquer outra falha de unidade, os Espaços de Armazenamento podem recuperar-se automaticamente consultando as cópias sobreviventes.
Por um breve período, as unidades de capacidade que estavam vinculadas à unidade de cache perdida parecem não estar íntegras. Uma vez que a religação de cache tenha ocorrido (automática) e o reparo de dados tenha sido concluído (automático), eles continuarão a aparecer como íntegros.
Esse cenário é o motivo pelo qual pelo menos duas unidades de cache são necessárias por servidor para preservar o desempenho.
Em seguida, você pode substituir a unidade de cache como qualquer outra substituição de unidade.
Observação
Pode ser necessário desligar o sistema para substituir com segurança um NVMe, seja um Cartão Add-In (AIC) ou em formato M.2.
Relação com outras caches
Existem vários outros caches não relacionados na pilha de armazenamento definida por software do Windows. Os exemplos incluem o cache write-back dos Espaços de Armazenamento e o cache de leitura na memória do Volume Compartilhado do Cluster (CSV).
Com o Azure Stack HCI, o cache de write-back dos Espaços de Armazenamento não deve ser modificado em relação ao 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, depende de 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, pode proporcionar ganhos de desempenho valiosos. Para obter mais informações, consulte Usar o cache de leitura CSV na memória com o Azure Stack HCI.
Configuração manual
Para a maioria das implantações, a configuração manual não é necessária. Caso necessite, consulte as secções seguintes.
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 modelo de unidade de cache
Em implantações em que todas as unidades são do mesmo tipo, como implantações totalmente NVMe ou SSD, nenhum cache é configurado porque o Windows não consegue 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 utilizadas para armazenamento em cache.
Sugestão
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
Aqui estão alguns exemplos do resultado:
Count Name
----- ----
8 FABRIKAM NVME-1710
16 CONTOSO NVME-1520
Em seguida, digite 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 armazenamento em cache executando Get-PhysicalDisk no PowerShell e verificando se sua propriedade Usage diz "Journal".
Possibilidades de implantação manual
A configuração manual permite as seguintes possibilidades de implantação:
Definir o comportamento do cache
É possível substituir o comportamento padrão do cache. Por exemplo, pode-se configurá-lo para armazenar em cache as leituras, mesmo numa implementação totalmente baseada em flash. Desencorajamos a modificação do 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 cache ao realizar cache em SSD. O parâmetro CacheModeHDD define o comportamento da cache durante a colocação em cache para HDD.
Você pode usar Get-ClusterStorageSpacesDirect para verificar se o comportamento está definido.
Exemplo
Primeiro, obtenha as configurações do Storage Spaces Direct:
Get-ClusterStorageSpacesDirect
Aqui estão alguns exemplos do resultado:
CacheModeHDD : ReadWrite
CacheModeSSD : WriteOnly
Em seguida, faça o seguinte:
Set-ClusterStorageSpacesDirect -CacheModeSSD ReadWrite
Get-ClusterS2D
Aqui estão alguns exemplos do resultado:
CacheModeHDD : ReadWrite
CacheModeSSD : ReadWrite
Dimensionamento do cache
O cache deve ser dimensionado para acomodar o conjunto de trabalho (os dados 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, aumentam as falhas de leitura em cache e as gravações precisam ser descarregadas de uma 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 falhas de cache. Especificamente, você pode comparar as leituras perdidas de cache/s do contador de disco híbrido de armazenamento em cluster definido com as IOPS de leitura gerais de sua implantação. Cada "Disco híbrido" corresponde a uma unidade de armazenamento.
Por exemplo, 2 unidades de cache vinculadas a 4 unidades de capacidade resultam em 4 instâncias de objeto "Disco híbrido" por servidor.
Não há uma regra universal, mas se faltar muitas leituras no cache, ele pode estar subdimensionado e você deve considerar a adição de unidades de cache para expandir o cache. Você pode adicionar unidades de cache ou unidades de capacidade de forma independente sempre que quiser.
Próximos passos
Para obter conhecimento adicional sobre armazenamento, consulte também: