Partilhar via


Compreender e implantar memória persistente

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

Importante

O Azure Stack HCI agora faz parte do Azure Local. A renomeação da documentação do produto está em andamento. No entanto, as versões mais antigas do Azure Stack HCI, por exemplo 22H2, continuarão a fazer referência ao Azure Stack HCI e não refletirão a alteração de nome. Mais informações.

A memória persistente (ou PMem) é um novo tipo de tecnologia de memória que retém seu conteúdo através de ciclos de energia e pode ser usada como armazenamento de nível superior, e é por isso que você pode ouvir as pessoas se referirem ao PMem como "memória de classe de armazenamento" ou SCM. Este artigo fornece informações básicas sobre a memória persistente e explica como implantá-la como a camada de armazenamento superior no Azure Stack HCI e no Windows Server.

O que é memória persistente?

A memória persistente é um tipo de mídia não volátil que se encaixa em um slot DIMM (memória) padrão. É mais lento do que o DRAM, mas oferece uma taxa de transferência mais alta do que SSD e NVMe. Em comparação com o DRAM, os módulos de memória persistente vêm em capacidades muito maiores e são menos caros por GB, no entanto, ainda são mais caros do que o NVMe. O conteúdo da memória permanece mesmo quando a energia do sistema cai no caso de uma perda de energia inesperada, desligamento iniciado pelo usuário ou falha do sistema. Isso significa que você pode usar módulos de memória persistente como armazenamento ultrarrápido e persistente.

O Azure Stack HCI e o Windows Server 2019 dão suporte ao uso de memória persistente como cache ou unidade de capacidade. No entanto, dado o modelo de preços, a memória persistente fornece o maior valor como um cache ou como uma pequena quantidade de armazenamento dedicado para dados de mapeamento de memória. Na maioria dos casos, as unidades de memória persistente serão usadas automaticamente como unidades de cache, e qualquer coisa mais lenta será usada como unidades de capacidade. Para obter mais informações sobre como configurar unidades de cache e capacidade, consulte Noções básicas sobre o cache do pool de armazenamento e Planejar volumes.

Conceitos de memória persistente

Esta seção descreve os conceitos básicos que você precisará entender para implantar memória persistente em ambientes HCI do Windows Server e do Azure Stack para reduzir gargalos de E/S e melhorar o desempenho.

Métodos de acesso

Há dois métodos para acessar a memória persistente. Eles são:

  • Bloqueie o acesso, que funciona como armazenamento para compatibilidade de aplicativos. Nessa configuração, os dados fluem pelo sistema de arquivos e pilhas de armazenamento normalmente. Você pode usar essa configuração em combinação com NTFS e ReFS, e ela é recomendada para a maioria dos casos de uso.
  • Acesso direto (DAX), que funciona como memória para obter a menor latência. Você só pode usar o DAX em combinação com NTFS. Se você não usar o DAX corretamente, há potencial para perda de dados. É altamente recomendável que você use o DAX com a tabela de conversão de blocos (BTT) ativada para reduzir o risco de gravações rasgadas. Para saber mais, consulte Compreender e configurar o DAX.

Aviso

O DAX não é suportado em ambientes HCI do Azure Stack. O Azure Stack HCI suporta apenas o acesso a blocos, com o BTT ativado.

Regiões

Uma região é um conjunto de um ou mais módulos de memória persistente. As regiões geralmente são criadas como conjuntos intercalados nos quais vários módulos de memória persistente aparecem como um único espaço de endereçamento virtual lógico para aumentar a taxa de transferência. Para aumentar a largura de banda disponível, os endereços virtuais adjacentes são distribuídos por vários módulos de memória persistente. Normalmente, as regiões podem ser criadas no BIOS de uma plataforma de servidor.

PmemDisks

Para usar a memória persistente como armazenamento, você deve definir pelo menos um PmemDisk, que é um disco rígido virtual (VHD) no host que enumera como um PmemDisk dentro de uma máquina virtual (VM). Um PmemDisk é um intervalo de memória não volátil endereçado de forma contígua que você pode pensar como uma partição de disco rígido ou LUN. Você pode criar vários PmemDisks usando cmdlets do Windows PowerShell para dividir a capacidade bruta disponível. Cada módulo de memória persistente contém uma área de armazenamento de rótulos (LSA) que armazena os metadados de configuração.

Tabela de tradução de blocos

Ao contrário das unidades de estado sólido, os módulos de memória persistente não protegem contra "gravações rasgadas" que podem ocorrer no caso de uma falha de energia ou interrupção do sistema, colocando os dados em risco. O BTT reduz esse risco fornecendo semântica de atualização do setor atômico para dispositivos de memória persistente, essencialmente permitindo gravações de setor semelhantes a blocos para que os aplicativos possam evitar misturar dados antigos e novos em um cenário de falha. Recomendamos vivamente que ative o BTT em quase todos os casos. Como o BTT é uma propriedade do PmemDisk, ele deve ser ativado quando o PmemDisk é criado.

No modo de acesso de bloco, recomendamos o uso de BTT porque todos os dados usarão semântica de bloco. O BTT também é útil no modo DAX porque as operações de metadados ainda usam semântica de bloco, mesmo que as operações de dados do aplicativo não usem. Mesmo que todas as operações do aplicativo estejam usando arquivos mapeados na memória com semântica DAX, gravações rasgadas ainda podem acontecer para as operações de metadados; portanto, ligar o BTT ainda é valioso.

Hardware suportado

A tabela a seguir mostra o hardware de memória persistente com suporte para o Azure Stack HCI e o Windows Server. A memória persistente é totalmente suportada no Windows Server 2019, incluindo Espaços de Armazenamento Diretos.

Tecnologia de memória persistente Windows Server 2016 Azure Stack HCI v20H2/Windows Server 2019
NVDIMM-N em modo persistente Suportado Suportado
Memória persistente Intel Optane™ DC no modo App Direct Não suportado Suportado
Memória persistente Intel Optane™ DC no modo de memória Suportado Suportado

A memória persistente Intel Optane DC suporta os modos de operação Memória (volátil) e App Direct (persistente). Para usar módulos de memória persistente como armazenamento, que é o principal caso de uso para cargas de trabalho do servidor, você deve usar o modo App Direct. O modo de memória usa essencialmente a memória persistente como RAM mais lenta, que geralmente não atende aos requisitos de desempenho das cargas de trabalho do servidor. O modo de memória é distinto do DAX, que é um volume de armazenamento persistente que pode ser acessado usando semântica semelhante à memória.

O modo de funcionamento é frequentemente pré-configurado pelo fabricante original do dispositivo.

Nota

Quando você reiniciar um sistema que tem vários módulos de memória persistente Intel® Optane™ no modo App Direct que são divididos em vários PmemDisks, você pode perder o acesso a alguns ou todos os discos de armazenamento lógico relacionados. Esse problema ocorre em versões do Windows Server 2019 que são mais antigas do que a versão 1903.

Essa perda de acesso ocorre porque um módulo de memória persistente não é treinado ou falha quando o sistema é iniciado. Nesse caso, todos os PmemDisks em qualquer módulo de memória persistente no sistema falham, incluindo aqueles que não mapeiam fisicamente para o módulo com falha.

Para restaurar o acesso a todos os PmemDisks, substitua o módulo com falha.

Se um módulo falhar no Windows Server 2019 versão 1903 ou versões mais recentes, você perderá o acesso apenas aos PmemDisks que mapeiam fisicamente para o módulo afetado; outros não são afetados.

Configurar memória persistente

Se você estiver usando a memória persistente Intel Optane, siga as instruções aqui. Se você estiver usando módulos de memória persistente de outro fornecedor, consulte a documentação deles.

Para criar um PmemDisk que suporte BTT, use o New-VHD cmdlet:

New-VHD E:\pmemtest.vhdpmem -Fixed -SizeBytes 1GB -AddressAbstractionType BTT

A extensão VHD deve ser "vhdpmem".

Você também pode converter um VHD que não tem o BTT habilitado em um que o faça (e vice-versa) usando o Convert-VHD cmdlet:

Convert-VHD .\pmemtest_nobtt.vhdpmem -AddressAbstractionType BTT -DestinationPath pmemtest_btt.vhdpmem

Após a conversão, o novo VHD terá o mesmo GUID de namespace que o original. Isso pode levar a problemas, especialmente se ambos estiverem conectados à mesma VM. Para criar um novo UUID de namespace para o VHD convertido, use o Set-VHD cmdlet:

Set-VHD -ResetDiskIdentifier .\pmemtest_btt.vhdpmem

Compreender os conjuntos intercalados

Os conjuntos intercalados geralmente podem ser criados no BIOS de uma plataforma de servidor para fazer com que vários dispositivos de memória persistente apareçam como um único disco para o sistema operacional host, aumentando a taxa de transferência desse disco.

Nota

O Windows Server 2016 não suporta conjuntos intercalados de módulos de memória persistente.

Lembre-se de que um módulo de memória persistente reside em um slot DIMM (memória) padrão, que coloca os dados mais próximos do processador. Essa configuração reduz a latência e melhora o desempenho de busca. Para aumentar ainda mais a taxa de transferência, dois ou mais módulos de memória persistente criam um conjunto intercalado n-way para distribuir operações de leitura/gravação. As configurações mais comuns são a intercalação bidirecional ou quadridirecional.

Você pode usar o Get-PmemDisk cmdlet do PowerShell para revisar a configuração desses discos lógicos, da seguinte maneira:

Get-PmemDisk

DiskNumber Size   HealthStatus AtomicityType CanBeRemoved PhysicalDeviceIds UnsafeShutdownCount
---------- ----   ------------ ------------- ------------ ----------------- -------------------
2          252 GB Healthy      None          True         {20, 120}         0
3          252 GB Healthy      None          True         {1020, 1120}      0

Podemos ver que o disco PMem lógico 2 usa os dispositivos físicos Id20 e Id120, e o disco lógico PMem 3 usa os dispositivos físicos Id1020 e Id1120.

Para obter mais informações sobre o conjunto intercalado usado por uma unidade lógica, execute o Get-PmemPhysicalDevice cmdlet:

(Get-PmemDisk)[0] | Get-PmemPhysicalDevice

DeviceId DeviceType           HealthStatus OperationalStatus PhysicalLocation FirmwareRevision Persistent memory size Volatile memory size
-------- ----------           ------------ ----------------- ---------------- ---------------- ---------------------- --------------------
20       Intel INVDIMM device Healthy      {Ok}              CPU1_DIMM_C1     102005310        126 GB                 0 GB
120      Intel INVDIMM device Healthy      {Ok}              CPU1_DIMM_F1     102005310        126 GB                 0 GB

Configurar conjuntos intercalados

Para configurar um conjunto intercalado, execute o Get-PmemUnusedRegion cmdlet para examinar todas as regiões de memória persistente que não estão atribuídas a um disco de memória persistente lógica no sistema:

Get-PmemUnusedRegion

RegionId TotalSizeInBytes DeviceId
-------- ---------------- --------
       1     270582939648 {20, 120}
       3     270582939648 {1020, 1120}

Para ver todas as informações do dispositivo PMem no sistema, incluindo tipo de dispositivo, local, integridade e status operacional, e assim por diante, execute o Get-PmemPhysicalDevice cmdlet:

Get-PmemPhysicalDevice

DeviceId DeviceType           HealthStatus OperationalStatus PhysicalLocation FirmwareRevision Persistent memory size Volatile
                                                                                                                      memory size
-------- ----------           ------------ ----------------- ---------------- ---------------- ---------------------- --------------
1020     Intel INVDIMM device Healthy      {Ok}              CPU2_DIMM_C1     102005310        126 GB                 0 GB
1120     Intel INVDIMM device Healthy      {Ok}              CPU2_DIMM_F1     102005310        126 GB                 0 GB
120      Intel INVDIMM device Healthy      {Ok}              CPU1_DIMM_F1     102005310        126 GB                 0 GB
20       Intel INVDIMM device Healthy      {Ok}              CPU1_DIMM_C1     102005310        126 GB                 0 GB

Como temos uma região PMem não utilizada disponível, podemos criar novos discos de memória persistente. Podemos usar a região não utilizada para criar vários discos de memória persistente executando os seguintes cmdlets:

Get-PmemUnusedRegion | New-PmemDisk
Creating new persistent memory disk. This may take a few moments.

Depois disso, podemos ver os resultados executando:

Get-PmemDisk

DiskNumber Size   HealthStatus AtomicityType CanBeRemoved PhysicalDeviceIds UnsafeShutdownCount
---------- ----   ------------ ------------- ------------ ----------------- -------------------
2          252 GB Healthy      None          True         {20, 120}         0
3          252 GB Healthy      None          True         {1020, 1120}      0

Vale a pena notar que podemos correr Get-PhysicalDisk | Where MediaType -eq SCM em vez de Get-PmemDisk obter os mesmos resultados. O disco de memória persistente recém-criado corresponde um a um com unidades que aparecem no PowerShell e no Windows Admin Center.

Substitua a memória persistente

Se você tiver que substituir um módulo com falha, será necessário reprovisionar o disco PMem (consulte as etapas descritas anteriormente).

Quando resolver problemas, poderá ter de utilizar Remove-PmemDisko . Este cmdlet remove um disco de memória persistente específico. Podemos remover todos os discos de memória persistente atuais executando os seguintes cmdlets:

Get-PmemDisk | Remove-PmemDisk

cmdlet Remove-PmemDisk at command pipeline position 1
Supply values for the following parameters:
DiskNumber: 2

This will remove the persistent memory disk(s) from the system and will result in data loss.
Remove the persistent memory disk(s)?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y
Removing the persistent memory disk. This may take a few moments.

Importante

A remoção de um disco de memória persistente causa perda de dados nesse disco.

Outro cmdlet que você pode precisar é Initialize-PmemPhysicalDevice. Este cmdlet inicializa as áreas de armazenamento de etiquetas nos dispositivos de memória persistente física e pode limpar informações de armazenamento de etiquetas corrompidas nos dispositivos.

Get-PmemPhysicalDevice | Initialize-PmemPhysicalDevice

This will initialize the label storage area on the physical persistent memory device(s) and will result in data loss.
Initializes the physical persistent memory device(s)?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): A
Initializing the physical persistent memory device. This may take a few moments.
Initializing the physical persistent memory device. This may take a few moments.
Initializing the physical persistent memory device. This may take a few moments.
Initializing the physical persistent memory device. This may take a few moments.

Importante

Initialize-PmemPhysicalDevice Causa perda de dados na memória persistente. Use-o apenas como último recurso para corrigir problemas persistentes relacionados à memória.

Memória persistente em ação no Microsoft Ignite 2018

Para ver alguns dos benefícios da memória persistente, vamos olhar para este vídeo do Microsoft Ignite 2018.

Qualquer sistema de armazenamento que ofereça tolerância a falhas necessariamente faz cópias distribuídas de gravações. Tais operações devem atravessar a rede e amplificar o tráfego de gravação de back-end. Por esse motivo, os maiores números absolutos de benchmark de IOPS geralmente são alcançados medindo somente leituras, especialmente se o sistema de armazenamento tiver otimizações de bom senso para ler a partir da cópia local sempre que possível. O Storage Spaces Direct é otimizado para isso.

Quando medido usando apenas operações de leitura, o cluster entregou 13.798.674 IOPS.

Se você assistir ao vídeo de perto, notará que o que é ainda mais impressionante é a latência. Mesmo com mais de 13,7 M IOPS, o sistema de arquivos no Windows está relatando latência consistentemente inferior a 40 μs! (Esse é o símbolo para microssegundos, um milionésimo de segundo.) Essa velocidade é uma ordem de grandeza mais rápida do que os fornecedores típicos de todos os flash orgulhosamente anunciam hoje.

Juntos, os Espaços de Armazenamento Diretos no Windows Server 2019 e a memória persistente Intel® Optane™ DC proporcionaram um desempenho inovador. Este benchmark HCI de mais de 13,7 milhões de IOPS, acompanhado por latência previsível e extremamente baixa, é mais do dobro do nosso benchmark anterior líder do setor de 6,7 milhões de IOPS. Além disso, desta vez precisávamos de apenas 12 nós de servidor — 25% menos do que antes.

O hardware de teste foi um cluster de 12 servidores que foi configurado para usar espelhamento de três vias e volumes ReFS delimitados, 12 x Intel® S2600WFT, 384 GiB de memória, 2 x 28 núcleos "CascadeLake", 1,5 TB de memória persistente Intel® Optane™ DC como cache, 32 TB NVMe (4 x 8 TB Intel® DC P4510) como capacidade, 2 x Mellanox ConnectX-4 25 Gbps.

A tabela a seguir mostra os números completos de desempenho.

Referência Desempenho
4K 100% leitura aleatória 13,8 milhões de IOPS
4K 90/10% leitura/gravação aleatória 9,45 milhões de IOPS
2 MB de leitura sequencial Taxa de transferência de 549 GB/s

Próximos passos

Para obter informações relacionadas, consulte também: