Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A memória persistente (ou PMem) é um novo tipo de tecnologia de memória que retém seu conteúdo por meio de ciclos de energia e pode ser usada como armazenamento de camada superior, razão pela qual você pode ouvir pessoas se referirem ao PMem como "memória de classe de armazenamento" ou SCM. Este artigo fornece plano de fundo sobre memória persistente e explica como implantá-la como a camada de armazenamento superior no Azure Local 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 que o DRAM, mas fornece uma taxa de transferência maior 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 fica inoperante 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 persistente e ultra-rápido.
O Azure Local e o Windows Server 2019 dão suporte ao uso de memória persistente como um cache ou uma 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 persistentes são usadas automaticamente como unidades de cache e qualquer coisa mais lenta é usada como unidades de capacidade. Para obter mais informações sobre como configurar unidades de cache e capacidade, consulte Compreender 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 locais do Windows Server e do Azure 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:
- Bloquear 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 é recomendável para a maioria dos casos de uso.
- Acesso direto (DAX), que opera como memória para obter a latência mais baixa. Você só pode usar o DAX em combinação com o NTFS. Se você não usar o DAX corretamente, poderá ocorrer perda de dados. Recomendamos fortemente usar o DAX com a Tabela de conversão de blocos (BTT) ativada para mitigar o risco de gravações parciais. Para saber mais, confira Entender e configurar o DAX.
Aviso
O DAX não tem suporte em ambientes locais do Azure. O Azure Local dá suporte apenas ao 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ço 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 em vários módulos de memória persistente. As regiões geralmente podem ser criadas no BIOS de uma plataforma de servidor.
PmemDisks
Para usar memória persistente como armazenamento, você deve definir pelo menos um PmemDisk, que é um VHD (disco rígido virtual) no host que enumera como um PmemDisk dentro de uma VM (máquina virtual). Um PmemDisk é um intervalo abordado de forma contígua de memória não volátil que você pode considerar 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 LSA (Área de Armazenamento de Rótulos) 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. A BTT atenua esse risco fornecendo semântica de atualização do setor atômico para dispositivos de memória persistente, essencialmente habilitando gravações de setor no estilo bloco para que os aplicativos consigam evitar a mistura de dados antigos e novos em um cenário de falha. É altamente recomendável ativar o BTT em quase todos os casos. Como BTT é uma propriedade do PmemDisk, ele deve ser ativado quando o PmemDisk é criado.
No modo de acesso de bloco, é recomendável usar BTT porque todos os dados usam semântica de bloco. O BTT também é útil no modo DAX, pois as operações de metadados continuam a utilizar a semântica de bloco, ainda que as operações de dados do aplicativo não o façam. Mesmo que todas as operações do aplicativo estejam usando arquivos mapeados em memória com semântica DAX, escritas interrompidas ainda poderão acontecer para as operações de metadados; portanto, ativar o BTT ainda é benéfico.
Hardware com suporte
A tabela a seguir mostra o hardware de memória persistente com suporte para o Azure Local e o Windows Server. A memória persistente tem suporte total no Windows Server 2019, incluindo espaços de armazenamento diretos.
| Tecnologia de memória persistente | Windows Server 2016 | Azure Local 2311.2 e posterior /Windows Server 2019 e posterior |
|---|---|---|
| NVDIMM-N no modo persistente | Suportado | Suportado |
| Intel Optane™ DC Persistent Memory em App Direct Mode | Sem suporte | Suportado |
| Intel Optane™ DC Persistent Memory em Memory Mode | Suportado | Suportado |
A Memória Persistente intel Optane DC dá suporte aos modos operacionais Memory (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 Direto do Aplicativo. O modo de memória essencialmente usa 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 operação geralmente é pré-configurado pelo fabricante do dispositivo original.
Observação
Quando você reinicia um sistema que tem vários módulos de memória persistente Intel® Optane™ no modo App Direct divididos em vários PmemDisks, você pode perder o acesso a alguns ou a todos os discos de armazenamento lógico relacionados. Esse problema ocorre em versões do Windows Server 2019 anteriores à versão 1903.
Essa perda de acesso ocorre porque um módulo de memória persistente não está preparado ou apresenta falhas quando o sistema é iniciado. Nesse caso, ocorre falha em todos os PmemDisks de qualquer módulo de memória persistente no sistema, incluindo aqueles que não são mapeados 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 somente aos PmemDisks que são mapeados 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 compatível com 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 tenha a BTT habilitada em um que faça (e vice-versa) usando o cmdlet Convert-VHD:
Convert-VHD .\pmemtest_nobtt.vhdpmem -AddressAbstractionType BTT -DestinationPath pmemtest_btt.vhdpmem
Após a conversão, o novo VHD tem o mesmo namespace GUID que o original. Isso pode levar a problemas, especialmente se ambos estiverem anexados à mesma VM. Para criar um novo namespace UUID para o VHD convertido, use o cmdlet Set-VHD:
Set-VHD -ResetDiskIdentifier .\pmemtest_btt.vhdpmem
Entender os conjuntos intercalados
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 para esse disco.
Observação
O Windows Server 2016 não dá suporte a 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, 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 vias para organizar operações de leitura/gravação. As configurações mais comuns são a intercalação bidirecional ou de quatro vias.
Você pode usar o cmdlet do Get-PmemDisk PowerShell para examinar 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 2 lógico usa os dispositivos físicos Id20 e Id120, e o disco PMem 3 lógico usa os dispositivos físicos Id1020 e Id1120.
Para recuperar mais informações sobre o conjunto intercalado usado por uma unidade lógica, execute o cmdlet Get-PmemPhysicalDevice:
(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 os 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 são atribuídas a um disco de memória persistente lógico 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 utilizado 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 persistentes executando os seguintes cmdlets:
Get-PmemUnusedRegion | New-PmemDisk
Creating new persistent memory disk. This may take a few moments.
Depois que isso for feito, poderemos 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 observar que podemos executar 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 individualmente às unidades que aparecem no PowerShell e no Windows Admin Center.
Substituir a memória persistente
Se você precisar substituir um módulo com falha, será necessário reprovisionar o disco PMem (consulte as etapas descritas anteriormente).
Ao solucionar problemas, talvez seja necessário usar Remove-PmemDisk. Esse 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 talvez seja necessário é Initialize-PmemPhysicalDevice. Esse cmdlet inicializa as áreas de armazenamento de rótulo nos dispositivos de memória persistente física e pode limpar informações de armazenamento de rótulo 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 examinar este vídeo do Microsoft Ignite 2018.
Qualquer sistema de armazenamento que forneça tolerância a falhas necessariamente faz cópias distribuídas de gravações. Essas operações devem percorrer a rede e amplificar o tráfego de gravação de back-end. Por esse motivo, os maiores números de parâmetro de comparação de IOPS são normalmente obtidos medindo somente leituras, especialmente se o sistema de armazenamento tiver otimizações de senso comum para ler da cópia local sempre que possível. Os Espaços de Armazenamento Diretos são otimizados para fazer isso.
Quando medido usando apenas operações de leitura, o cluster entregou 13.798.674 IOPS.
Se você assistir ao vídeo atentamente, perceberá 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 que é consistentemente menor que 40 μs! (Este é o símbolo para microssegundos, um milionésimo de segundo.) Essa velocidade é ordens de grandeza mais rápida do que aquilo que os fornecedores de armazenamento flash típicos anunciam orgulhosamente hoje.
Juntos, os Espaços de Armazenamento Diretos no Windows Server 2019 e na memória persistente intel® Optane™ DC apresentaram um desempenho inovador. Esse parâmetro de comparação de mais de 13,7 Milhões de IOPS, acompanhado de latência previsível e extremamente baixa, é mais do que o dobro do nosso benchmark líder do setor anterior de IOPS de 6,7 milhões. Além disso, desta vez, precisávamos de apenas 12 nós de servidor – 25% a menos do que antes.
O hardware de teste era um cluster de 12 servidores que foi configurado para usar espelhamento de três vias e volumes ReFS delimitados, 12 x Intel® S2600WFT, memória de 384 GiB , "CascadeLake" de 2 x 28 núcleos, memória persistente Intel® Optane™ DC de 1,5 TB como cache, NVMe de 32 TB (Intel® DC P4510 de 4 x 8 TB) como capacidade, 2 x Mellanox ConnectX-4 25 Gbps.
A tabela a seguir mostra os números de desempenho completos.
| Parâmetro de comparação | Desempenho |
|---|---|
| Leitura aleatória de 100% de 4 K | 13,8 milhões de IOPS |
| Leitura/gravação aleatória 4K 90/10% | 9,45 milhões de IOPS |
| Leitura sequencial de 2 MB | Taxa de transferência de 549 GB/s |
Próximas etapas
Para obter informações relacionadas, consulte também: