Noções básicas sobre o cache nos Espaços de Armazenamento DiretosUnderstanding the cache in Storage Spaces Direct

Aplica-se a: Windows Server 2019, Windows Server 2016Applies to: Windows Server 2019, Windows Server 2016

Espaços de Armazenamento Diretos contam com um cache do servidor interno para maximizar o desempenho de armazenamento.Storage Spaces Direct features a built-in server-side cache to maximize storage performance. Trata-se de um cache de leitura e gravação grande, persistente e em tempo real.It is a large, persistent, real-time read and write cache. O cache é configurado automaticamente quando os Espaços de Armazenamento Diretos estão habilitados.The cache is configured automatically when Storage Spaces Direct is enabled. Na maioria dos casos, nenhum tipo de gerenciamento manual é necessário.In most cases, no manual management whatsoever is required. A maneira como o cache funciona depende dos tipos de unidades presentes.How the cache works depends on the types of drives present.

O vídeo a seguir entra em detalhes sobre como o cache funciona para Espaços de Armazenamento Diretos, assim como outras considerações de design.The following video goes into details on how caching works for Storage Spaces Direct, as well as other design considerations.

Considerações de design de Espaços de Armazenamento DiretosStorage Spaces Direct design considerations
(20 minutos)(20 minutes)

Tipos de unidade e opções de implantaçãoDrive types and deployment options

Os Espaços de Armazenamento Diretos atualmente funcionam com três tipos de dispositivos de armazenamento:Storage Spaces Direct currently works with three types of storage devices:

NVMe (Non-Volatile Memory Express)NVMe (Non-Volatile Memory Express)
SATA/SAS SSD (unidade de estado sólido)SATA/SAS SSD (Solid-State Drive)
HDD (unidade de disco rígido)HDD (Hard Disk Drive)

Eles podem ser combinados de seis maneiras, que podemos agrupar em duas categorias: "tudo flash" e "híbridos".These can be combined in six ways, which we group into two categories: "all-flash" and "hybrid".

Possibilidades de implantação tudo flashAll-flash deployment possibilities

As implantações tudo flash pretendem maximizar o desempenho de armazenamento e não incluem unidades de disco rígido (HDD) rotacionais.All-flash deployments aim to maximize storage performance and do not include rotational hard disk drives (HDD).

All-Flash-Deployment-Possibilities

Possibilidades de implantação híbridaHybrid deployment possibilities

As implantações híbridas pretendem equilibrar desempenho e capacidade ou maximizar a capacidade e incluem unidades de disco rígido (HDD) rotacionais.Hybrid deployments aim to balance performance and capacity or to maximize capacity and do include rotational hard disk drives (HDD).

Hybrid-Deployment-Possibilities

Unidades de cache são selecionadas automaticamenteCache drives are selected automatically

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.In deployments with multiple types of drives, Storage Spaces Direct automatically uses all drives of the "fastest" type for caching. As unidades restantes são usadas para capacidade.The remaining drives are used for capacity.

O tipo "mais rápido" é determinado de acordo com a hierarquia a seguir.Which type is "fastest" is determined according to the following hierarchy.

Drive-Type-Hierarchy

Por exemplo, se você tiver NVMe e SSDs, o NVMe armazenará em cache para as SSDs.For example, if you have NVMe and SSDs, the NVMe will cache for the SSDs.

Se você tiver SSDs e HDDs, as SSDs armazenarão em cache para as HDDs.If you have SSDs and HDDs, the SSDs will cache for the HDDs.

Observação

As unidades de cache não contribuem para a capacidade de armazenamento utilizável.Cache drives do not contribute usable storage capacity. Todos os dados armazenados no cache também são armazenados em outro lugar, ou serão assim que forem despreparados.All data stored in the cache is also stored elsewhere, or will be once it de-stages. Isso significa que a capacidade de armazenamento bruta total da implantação é apenas a soma das unidades de capacidade.This means the total raw storage capacity of your deployment is the sum of your capacity drives only.

Quando todas as unidades são do mesmo tipo, nenhum cache é configurado automaticamente.When all drives are of the same type, no cache is configured automatically. Você tem a opção de configurar manualmente unidades de mais resistência para armazenar em cache para unidades de menos resistência do mesmo tipo – consulte a seção Configuração manual para aprender como.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.

Dica

Em implantações com tudo NVMe ou SSD, especialmente em escala muito pequena, não "gastar" unidades em cache pode aumentar consideravelmente a eficiência de armazenamento.In all-NVMe or all-SSD deployments, especially at very small scale, having no drives "spent" on cache can improve storage efficiency meaningfully.

Comportamento do cache é definido automaticamenteCache behavior is set automatically

O comportamento do cache é determinado automaticamente com base nos tipos de unidades que estão sendo usadas no armazenamento em cache.The behavior of the cache is determined automatically based on the type(s) of drives that are being cached for. Durante o armazenamento em cache para unidades de estado sólido (como armazenamento em cache NVMe para SSDS), apenas as gravações são armazenadas em cache.When caching for solid-state drives (such as NVMe caching for SSDs), only writes are cached. Durante o armazenamento em cache para unidades de disco rígido (por exemplo, armazenamento em cache SSDs para HDDs), as leituras e as gravações são armazenadas em cache.When caching for hard disk drives (such as SSDs caching for HDDs), both reads and writes are cached.

Cache-Read-Write-Behavior

Armazenamento em cache somente leitura para implantações tudo em flashWrite-only caching for all-flash deployments

Durante o armazenamento em cache para unidades de estado sólido (NVMe ou SSDs), apenas as gravações são armazenadas em cache.When caching for solid-state drives (NVMe or SSDs), only writes are cached. Isso reduz o desgaste da capacidade das unidades porque muitas gravações e regravações podem se unir no cache e só serem despreparadas conforme necessário, o que reduz o tráfego cumulativo para as unidades de capacidade e prolonga a vida útil.This reduces wear on the capacity drives because many writes and re-writes can coalesce in the cache and then de-stage only as needed, reducing the cumulative traffic to the capacity drives and extending their lifetime. Por esse motivo, recomendamos selecionar unidades de mais resistência, otimizadas para gravação para o cache.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.The capacity drives may reasonably have lower write endurance.

Isso porque as leituras não afetam significativamente o tempo de vida do flash e, como unidades de estado sólido universalmente oferecem baixa latência de leitura, as leituras não são armazenada em cache: elas são fornecidas diretamente pelas unidades de capacidade (exceto quando os dados foram gravados tão recentemente a ponto de ainda não terem sido despreparados).Because reads do not significantly affect the lifespan of flash, and because solid-state drives universally offer low read latency, reads are not cached: they are served directly from the capacity drives (except when the data was written so recently that it has not yet been de-staged). Isso permite que o cache seja inteiramente dedicado a gravações, o que maximiza a eficácia.This allows the cache to be dedicated entirely to writes, maximizing its effectiveness.

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.This results in write characteristics, such as write latency, being dictated by the cache drives, while read characteristics are dictated by the capacity drives. Ambas são consistentes, previsíveis e uniformes.Both are consistent, predictable, and uniform.

Armazenamento em cache de leitura/gravação para implantações híbridasRead/write caching for hybrid deployments

Durante o armazenamento em cache para unidades de disco rígido (HDDs), leituras e gravações são armazenadas em cache, para oferecer latência semelhante a flash (normalmente, cerca de 10 vezes melhor) para ambas.When caching for hard disk drives (HDDs), 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 HDDs.The read cache stores recently and frequently read data for fast access and to minimize random traffic to the HDDs. (Devido a atrasos de busca e rotação, a latência e o tempo perdido incorrido 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 fazer a União gravar e reescrever e minimizar o tráfego cumulativo para as unidades de capacidade.(Because of seek and rotational delays, the latency and lost time incurred by random access to an HDD is significant.) Writes are cached to absorb bursts and, as before, to coalesce writes and re-writes and minimize the cumulative traffic to the capacity drives.

Espaços de Armazenamento Diretos implementam um algoritmo que cancela a reprodução aleatória de gravações antes da preparação delas a fim de emular um padrão de E/S para disco aparentemente sequencial, mesmo quando a E/S real proveniente da carga de trabalho (como máquinas virtuais) é aleatória.Storage Spaces Direct implements an algorithm that de-randomizes writes before de-staging them, to emulate an IO pattern to disk that seems sequential even when the actual IO coming from the workload (such as virtual machines) is random. Isso maximiza o IOPS e a taxa de transferência para as HDDs.This maximizes the IOPS and throughput to the HDDs.

Armazenando em cache implantações com unidades de todos os três tiposCaching in deployments with drives of all three types

Quando unidades de todos os três tipos estão presentes, as unidades NVMe oferecem armazenamento em cache para as SSDs e as HDDs.When drives of all three types are present, the NVMe drives provides caching for both the SSDs and the HDDs. 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 HDDs.The behavior is as described above: only writes are cached for the SSDs, and both reads and writes are cached for the HDDs. O custo indireto do armazenamento em cache para as HDDs é distribuído por igual entre as unidades de cache.The burden of caching for the HDDs is distributed evenly among the cache drives.

ResumoSummary

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.This table summarizes which drives are used for caching, which are used for capacity, and what the caching behavior is for each deployment possibility.

ImplantaçãoDeployment Unidades de cacheCache drives Unidades de capacidadeCapacity drives Comportamento de cache (padrão)Cache behavior (default)
Tudo NVMeAll NVMe Nenhum (opcional: configurar manualmente)None (Optional: configure manually) NVMeNVMe Somente gravação (se configurada)Write-only (if configured)
Todas as SSDsAll SSD Nenhum (opcional: configurar manualmente)None (Optional: configure manually) SSDSSD Somente gravação (se configurada)Write-only (if configured)
NVMe + SSDNVMe + SSD NVMeNVMe SSDSSD Somente gravaçãoWrite-only
NVMe + HDDNVMe + HDD NVMeNVMe HDDHDD Leitura + gravaçãoRead + Write
SSD + HDDSSD + HDD SSDSSD HDDHDD Leitura + gravaçãoRead + Write
NVMe + SSD + HDDNVMe + SSD + HDD NVMeNVMe SSD + HDDSSD + HDD Leitura + gravação para HDD, somente gravação para SSDRead + Write for HDD, Write-only for SSD

Arquitetura do servidorServer-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.The cache is implemented at the drive level: individual cache drives within one server are bound to one or many capacity drives within the same server.

Como está abaixo do restante da pilha de armazenamento definido pelo software Windows, o cache não tem nem precisa ter percepção de conceitos como espaços de armazenamento ou tolerância a falhas.Because the cache is below the rest of the Windows software-defined storage stack, it does not have nor need any awareness of concepts such as Storage Spaces or fault tolerance. Você pode ver isso como criar unidades "híbridas" (meio flash, meio disco) que acabam sendo apresentadas para o Windows.You can think of it as creating "hybrid" (part flash, part disk) drives which are then presented to Windows. 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.As with an actual hybrid drive, the real-time movement of hot and cold data between the faster and slower portions of the physical media is nearly invisible to the outside.

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.Given that resiliency in Storage Spaces Direct is at least server-level (meaning data copies are always written to different servers; at most one copy per server), data in the cache benefits from the same resiliency as data not in the cache.

Cache-Server-Side-Architecture

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.For example, when using three-way mirroring, three copies of any data are written to different servers, where they land in cache. Independentemente de serem despreparados ou não depois, sempre haverá três cópias.Regardless of whether they are later de-staged or not, three copies will always exist.

Associações de unidade são dinâmicasDrive bindings are dynamic

A associação entre as unidades de cache e capacidade podem ter qualquer proporção, de 1:1 a 1:12 e além.The binding between cache and capacity drives can have any ratio, from 1:1 up to 1:12 and beyond. Ela é ajustada dinamicamente sempre que as unidades são adicionadas ou removidas, como acontece durante escalas verticais ou depois de falhas.It adjusts dynamically whenever drives are added or removed, such as when scaling up or after failures. Isso significa que você pode adicionar unidades de cache ou de capacidade de maneira independente, sempre que quiser.This means you can add cache drives or capacity drives independently, whenever you want.

Dynamic-Binding

Por simetria, recomendamos que o número de unidades de capacidade seja um múltiplo do número de unidades de cache.We recommend making the number of capacity drives a multiple of the number of cache drives, for symmetry. Por exemplo, se você tiver 4 unidades de cache, terá um desempenho mais uniforme com 8 unidades de capacidade (proporção 1:2) do que com 7 ou 9.For example, if you have 4 cache drives, you will experience more even performance with 8 capacity drives (1:2 ratio) than with 7 or 9.

Identificando falhas na unidade de cacheHandling cache drive failures

Quando ocorre uma falha em uma unidade de cache, todas as gravações que ainda não foram despreparadas são perdidas para o servidor local, o que significa que existem apenas nas outras cópias (em outros servidores).When a cache drive fails, any writes which have not yet been de-staged are lost to the local server, meaning they exist only on the other copies (in other servers). 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.Just like after any other drive failure, Storage Spaces can and does automatically recover by consulting the surviving copies.

Por um breve período, as unidades de capacidade que estavam associadas à unidade de cache perdido surgirão não íntegras.For a brief period, the capacity drives which were bound to the lost cache drive will appear unhealthy. Depois que a reassociação de cache tiver ocorrido (automática) e o reparo de dados tiver sido concluído (automático), elas voltarão a ser mostradas como íntegras.Once the cache rebinding has occurred (automatic) and the data repair has completed (automatic), they will resume showing as healthy.

É por causa desse cenário que pelo menos duas unidades de cache são necessárias por servidor para preservar o desempenho.This scenario is why at minimum two cache drives are required per server to preserve performance.

Handling-Failure

É possível acabar substituindo a unidade de cache assim como qualquer outra troca de unidade.You can then replace the cache drive just like any other drive replacement.

Observação

Você precisa desligar para substituir com segurança o NVMe, um fator forma de cartão suplementar (AIC) ou M.2.You may need to power down to safely replace NVMe that is Add-In Card (AIC) or M.2 form factor.

Relação com outros cachesRelationship to other caches

Existem diversos outros caches não relacionados na pilha de armazenamento definido pelo software do Windows.There are several other unrelated caches in the Windows software-defined storage stack. 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).Examples include the Storage Spaces write-back cache and the Cluster Shared Volume (CSV) in-memory read cache.

Com Espaços de Armazenamento Diretos, o cache com write-back de Espaços de Armazenamento não deve ter o comportamento padrão modificado.With Storage Spaces Direct, the Storage Spaces write-back cache should not be modified from its default behavior. Por exemplo, parâmetros como - WriteCacheSize no cmdlet New-Volume não devem ser usados.For example, parameters such as -WriteCacheSize on the New-Volume cmdlet should not be used.

Você pode optar por usar o cache CSV, ou não – cabe a você.You may choose to use the CSV cache, or not – it's up to you. Ele permanece desativado por padrão em Espaços de Armazenamento Diretos, mas não entra em conflito com o novo cache descrito neste tópico de maneira alguma.It is off by default in Storage Spaces Direct, but it does not conflict with the new cache described in this topic in any way. Em determinados cenários, ele pode proporcionar ganhos de desempenho importantes.In certain scenarios it can provide valuable performance gains. Para obter mais informações, consulte How to Enable CSV Cache.For more information, see How to Enable CSV Cache.

Configuração manualManual configuration

Para a maioria das implantações, a configuração manual não é necessária.For most deployments, manual configuration is not required. Caso você precise dele, consulte as seções a seguir.In case you do need it, see the following sections.

Se você precisar 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 serviço de integridade visão geral.If you need to make changes to the cache device model after setup, edit the Health Service's Support Components Document, as described in Health Service overview.

Especificar o modelo da unidade de cacheSpecify cache drive model

Em implantações nas quais todas as unidades sejam do mesmo tipo, como implantações tudo NVMe ou SSD, nenhum cache é configurado porque o Windows não consegue diferenciar automaticamente características como resistência a gravações entre unidades do mesmo tipo.In deployments where all drives are of the same type, such as all-NVMe or all-SSD deployments, no cache is configured because Windows cannot distinguish characteristics like write endurance automatically among drives of the same type.

Para usar unidades de mais resistência no armazenamento em cache para unidades de menos resistência, é possível especificar qual modelo de unidade usar com o parâmetro -CacheDeviceModel do cmdlet Enable-ClusterS2D.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. Assim que Espaços de Armazenamento Diretos for habilitado, todas as unidades desse modelo serão usadas no armazenamento em cache.Once Storage Spaces Direct is enabled, all drives of that model will be used for caching.

Dica

Certifique-se de comparar a cadeia de caracteres do modelo exatamente como ela é exibida na saída de Get-PhysicalDisk.Be sure to match the model string exactly as it appears in the output of Get-PhysicalDisk.

ExemploExample

Primeiro, obtenha uma lista de discos físicos:First, get a list of physical disks:

Get-PhysicalDisk | Group Model -NoElement

Veja a seguir um exemplo de saída:Here's some example output:

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

Em seguida, digite o seguinte comando, especificando o modelo de dispositivo de cache:Then enter the following command, specifying the cache device model:

Enable-ClusterS2D -CacheDeviceModel "FABRIKAM NVME-1710"

Você pode verificar se as unidades desejadas estão sendo usadas no armazenamento em cache executando Get-PhysicalDisk no PowerShell e verificando se a propriedade Usage diz "Journal" .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 manualManual deployment possibilities

A configuração manual permite as seguintes possibilidades de implantação:Manual configuration enables the following deployment possibilities:

Exotic-Deployment-Possibilities

Definir comportamento do cacheSet cache behavior

É possível substituir o comportamento padrão do cache.It is possible to override the default behavior of the cache. Por exemplo, é possível defini-lo para leituras de cache, mesmo em uma implantação tudo flash.For example, you can set it to cache reads even in an all-flash deployment. Não incentivamos a modificação do comportamento, a menos que você tenha a certeza de que o padrão não atende à carga de trabalho.We discourage modifying the behavior unless you are certain the default does not suit your workload.

Para substituir o comportamento, use o cmdlet set-ClusterStorageSpacesDirect e seus parâmetros -CacheModeSSD e -CacheModeHDD .To override the behavior, use Set-ClusterStorageSpacesDirect cmdlet and its -CacheModeSSD and -CacheModeHDD parameters. O parâmetro CacheModeSSD define o comportamento do cache durante o armazenar em cache para unidades de estado sólido.The CacheModeSSD parameter sets the cache behavior when caching for solid-state drives. O parâmetro CacheModeHDD define o comportamento do cache durante o armazenamento em cache para unidades de disco rígido.The CacheModeHDD parameter sets cache behavior when caching for hard disk drives. Isso poderá ser feito a qualquer momento depois que Espaços de Armazenamento Diretos forem habilitados.This can be done at any time after Storage Spaces Direct is enabled.

Você pode usar Get-ClusterStorageSpacesDirect para verificar se o comportamento está definido.You can use Get-ClusterStorageSpacesDirect to verify the behavior is set.

ExemploExample

Primeiro, obtenha as configurações de Espaços de Armazenamento Diretos:First, get the Storage Spaces Direct settings:

Get-ClusterStorageSpacesDirect

Veja a seguir um exemplo de saída:Here's some example output:

CacheModeHDD : ReadWrite
CacheModeSSD : WriteOnly

Em seguida, faça o seguinte:Then, do the following:

Set-ClusterStorageSpacesDirect -CacheModeSSD ReadWrite

Get-ClusterS2D

Veja a seguir um exemplo de saída:Here's some example output:

CacheModeHDD : ReadWrite
CacheModeSSD : ReadWrite

Dimensionando o cacheSizing the 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.The cache should be sized to accommodate the working set (the data being actively read or written at any given time) of your applications and workloads.

Isso é especialmente importante em implantações híbridas com unidades de disco rígido.This is especially important in hybrid deployments with hard disk drives. Se o conjunto de trabalho ativo exceder o tamanho do cache, ou se o conjunto de trabalho ativo aumentar muito rapidamente, as perdas no cache de leitura aumentarão, e as gravações precisarão ser despreparadas de maneira mais agressiva, prejudicando o desempenho geral.If the active working set exceeds the size of the cache, or if the active working set drifts too quickly, read cache misses will increase and writes will need to be de-staged more aggressively, hurting overall performance.

É possível usar o utilitário Monitor de Desempenho (PerfMon.exe) interno do Windows para inspecionar a taxa de perdas no cache.You can use the built-in Performance Monitor (PerfMon.exe) utility in Windows to inspect the rate of cache misses. 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.Specifically, you can compare the Cache Miss Reads/sec from the Cluster Storage Hybrid Disk counter set to the overall read IOPS of your deployment. Cada "Disco Híbrido" corresponde a uma unidade de capacidade.Each "Hybrid Disk" corresponds to one capacity drive.

Por exemplo, 2 unidades de cache associadas a 4 unidades de capacidade resulta em 4 instâncias de objeto "Disco Híbrido" por servidor.For example, 2 cache drives bound to 4 capacity drives results in 4 "Hybrid Disk" object instances per server.

Performance-Monitor

Não há regra universal, mas se houver muitas perdas de leitura no cache, isso poderá ser subdimensionado e você deverá levar em consideração a adição de unidades de cache para expandir o cache.There is no universal rule, but if too many reads are missing the cache, it may be undersized and you should consider adding cache drives to expand your cache. É possível adicionar unidades de cache ou de capacidade de maneira independente, sempre que você quiser.You can add cache drives or capacity drives independently whenever you want.

Consulte tambémSee also