Condividi tramite


Comprendere la cache del pool di archiviazione

Si applica a: Azure Stack HCI, versioni 22H2 e 21H2; Windows Server 2022, Windows Server 2019

Spazi di archiviazione diretta, la tecnologia di virtualizzazione dell'archiviazione di base dietro Azure Stack HCI e Windows Server, offre una cache sul lato server predefinita per ottimizzare le prestazioni di archiviazione riducendo al contempo i costi. It's a large, persistent, real-time read and write cache that is configured automatically upon deployment. Nella maggior parte dei casi non è necessaria alcuna gestione manuale. Il funzionamento della cache dipende dai tipi di unità presenti.

Tipi di drive e opzioni di distribuzione

Storage Spaces Direct attualmente funziona con quattro tipi di unità:

Tipo di unità 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. I fattori di forma comuni sono 2,5" U.2, PCIe Add-In-Card (AIC) e M.2. NVMe offre una maggiore velocità di IOPS e throughput di I/O con una latenza inferiore rispetto a qualsiasi altro tipo di unità che supportiamo attualmente, ad eccezione di 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.

Questi possono essere combinati in vari modi, che si raggruppano in due categorie: "all-flash" e "ibridi". Le distribuzioni con tutte le unità HDD non sono supportate.

Note

Questo articolo illustra le configurazioni della cache con NVMe, SSD e HDD. Per informazioni sull'uso della memoria persistente come cache, vedere Informazioni e distribuzione della memoria persistente.

Possibilità di implementazione all-flash

Le distribuzioni all-flash puntano a ottimizzare le prestazioni di archiviazione e non includono HDD.

Il diagramma mostra le distribuzioni all-flash, tra cui NVMe per la capacità, NVMe per la cache con SSD per la capacità e SSD per la capacità.

Possibilità di distribuzione ibrida

Le distribuzioni ibride mirano a bilanciare le prestazioni e la capacità o a massimizzare la capacità e includere HDD.

Diagramma che mostra le distribuzioni ibride, tra cui NVMe per la cache con unità disco rigido per la capacità, SSD per la cache con unità DISCO rigido per la capacità e NVMe per la cache con HDD più SSD per la capacità.

Note

La distribuzione ibrida non è supportata nella configurazione a server singolo. Tutte le configurazioni di tipo di archiviazione singolo flat (ad esempio all-NVMe o all-SSD) sono l'unico tipo di archiviazione supportato per un singolo server.

Le unità cache vengono selezionate automaticamente

Nelle distribuzioni con più tipi di unità, Storage Spaces Direct utilizza automaticamente tutte le unità del tipo più veloce per la cache. Le unità rimanenti vengono utilizzate per aumentare la capacità di archiviazione.

Il tipo "più veloce" viene determinato in base alla gerarchia seguente.

Il diagramma mostra i tipi di disco disposti più velocemente per rallentare nell'ordine NVMe, SSD, disco senza etichetta che rappresenta hdd.

Ad esempio, se si dispone di NVMe e SSD, utilizzare NVMe come cache per gli SSD.

Se si dispone di unità SSD e HDD, le unità SSD fungono da cache per i dischi rigidi.

Note

Le unità cache non contribuiscono alla capacità di archiviazione utilizzabile nel cluster. Tutti i dati archiviati nella cache vengono archiviati anche in un'altra posizione o lo saranno una volta trasferiti. Ciò significa che la capacità totale di archiviazione grezza del cluster è la somma dei soli dischi di capacità.

Quando tutte le unità sono dello stesso tipo, non viene configurata automaticamente alcuna cache. 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

In alcuni casi, l'uso della cache del pool di archiviazione non ha senso. Ad esempio, nelle distribuzioni all-NVMe o all-SSD, in particolare a una scala molto ridotta, avere unità non dedicate alla cache può migliorare l'efficienza di archiviazione e ottimizzare le prestazioni. Analogamente, piccole distribuzioni remote o succursali possono avere spazio limitato per le unità cache.

Il comportamento della cache viene impostato automaticamente

Il comportamento della cache viene determinato automaticamente in base ai tipi di unità memorizzate nella cache. Quando si effettua la cache per i flash drive (come la cache NVMe per gli SSD), vengono memorizzate solo le operazioni di scrittura. Quando si esegue la memorizzazione nella cache per le unità disco rotanti (come gli SSD per le HDD), sia le letture che le scritture vengono memorizzate nella cache.

Diagramma che confronta la memorizzazione nella cache per all-flash, in cui le scritture vengono memorizzate nella cache e le letture non sono, con ibrido, in cui vengono memorizzate nella cache sia le letture che le scritture.

Memorizzazione nella cache con scrittura esclusiva per implementazioni completamente flash

La memorizzazione nella cache può essere usata in uno scenario all-flash, ad esempio usando NVMe come cache per accelerare le prestazioni delle unità SSD. Nelle distribuzioni all-flash, nella cache vengono salvate solo le scritture. Ciò riduce l'usura delle unità di capacità perché molte operazioni di scrittura e riscrittura possono essere unite nella cache e quindi rilasciate solo secondo le necessità, riducendo il traffico cumulativo verso le unità di capacità ed estenderne la durata. For this reason, we recommend selecting higher-endurance, write-optimized drives for the cache. Le unità di archiviazione a grande capacità possono avere ragionevolmente una resistenza di scrittura inferiore.

Poiché le letture non influiscono significativamente sulla durata del flash e poiché le unità SSD offrono universalmente bassa latenza di lettura, le letture non vengono memorizzate nella cache: vengono servite direttamente dalle unità di capacità (tranne quando i dati sono stati scritti così di recente che non sono ancora stati destagati). In questo modo la cache può essere interamente dedicata alle scritture, ottimizzandone l'efficacia.

Ciò comporta caratteristiche di scrittura, ad esempio la latenza di scrittura, dettate dalle unità della cache, mentre le caratteristiche di lettura sono dettate dalle unità di capacità. Entrambi sono coerenti, prevedibili e uniformi.

Funzionalità di cache di lettura/scrittura per le implementazioni ibride

When caching for HDD, both reads and writes are cached, to provide flash-like latency (often ~10x better) for both. La cache di lettura archivia i dati letti recentemente e con frequenza per consentire un accesso rapido e per ridurre al minimo il traffico casuale verso gli HDD. A causa di ritardi di ricerca e rotazione, la latenza e il tempo perso causati dall'accesso casuale a un hdd sono significativi. Le scritture vengono memorizzate nella cache per assorbire i picchi e, come in precedenza, per unire le scritture e riscrivere e ridurre al minimo il traffico cumulativo verso le unità di capacità.

Storage Spaces Direct implementa un algoritmo che derandomizza le scritture prima di eseguirne il de-staging, per emulare un modello di I/O su disco che sembra sequenziale anche quando lo I/O effettivo proveniente dal carico di lavoro (ad esempio le macchine virtuali) è casuale. In questo modo si massimizzano gli IOPS e la velocità effettiva per i dischi rigidi.

Memorizzazione nella cache nelle distribuzioni con NVMe, SSD e HDD

Quando sono presenti unità di tutti e tre i tipi, le unità NVMe forniscono la memorizzazione nella cache sia per le unità SSD che per le unità HDD. Il comportamento è quello descritto in precedenza: solo le scritture vengono memorizzate nella cache per le unità SSD e le letture e le scritture vengono memorizzate nella cache per i dischi RIGIDI. Il carico di memorizzazione nella cache per i dischi RIGIDI viene distribuito uniformemente tra le unità della cache.

Summary

Questa tabella riepiloga quali unità sono utilizzate per la memorizzazione nella cache, quali per la capacità e qual è il comportamento della cache per ciascuna possibile configurazione di distribuzione.

Deployment Cache drives Capacity drives Comportamento della cache (impostazione predefinita)
All NVMe Nessuno (facoltativo: configurare manualmente) NVMe Solo scrittura (se configurata)
All SSD Nessuno (facoltativo: configurare manualmente) SSD Solo scrittura (se configurata)
NVMe + SSD NVMe SSD Write-only
NVMe + HDD NVMe HDD Lettura e scrittura
SSD + HDD SSD HDD Lettura e scrittura
NVMe + SSD + HDD NVMe SSD + HDD Lettura e scrittura per HDD, solo scrittura per SSD

Server-side architecture

La cache viene implementata a livello di unità: le singole unità cache all'interno di un server sono associate a una o più unità di capacità all'interno dello stesso server.

Poiché la cache è al di sotto del resto dello stack di archiviazione definito dal software di Windows, non ha né necessita di alcuna consapevolezza di concetti come Spazi di Archiviazione o tolleranza agli errori. È possibile considerarlo come la creazione di unità "ibride" (parte flash, parte del disco) che vengono quindi presentate al sistema operativo. Come con un'unità ibrida effettiva, lo spostamento in tempo reale dei dati frequenti e rari tra le parti più veloci e lente dei supporti fisici risulta quasi invisibile dall'esterno.

Dato che la resilienza in Spazi di archiviazione diretta è almeno a livello di server (ovvero le copie dei dati vengono sempre scritte in server diversi; al massimo una copia per server), i dati nella cache traggono vantaggio dalla stessa resilienza dei dati non presenti nella cache.

Il diagramma rappresenta tre server uniti tramite un mirroring a tre vie nel livello dello spazio di archiviazione, che accede a un livello cache di unità NVMe, le quali accedono alle unità di capacità non etichettate.

Ad esempio, quando si usa il mirroring a tre vie, tre copie di tutti i dati vengono scritte in server diversi, in cui vengono inseriti nella cache. Indipendentemente dal fatto che vengano successivamente rimosse o meno, esistono sempre tre copie.

Le associazioni delle unità di archiviazione sono dinamiche

L'associazione tra unità di cache e unità di capacità può avere qualsiasi rapporto, da 1:1 a 1:12 e oltre. Regola in modo dinamico ogni volta che le unità vengono aggiunte o rimosse, ad esempio quando si esegue un upgrade o dopo guasti. Ciò significa che è possibile aggiungere unità cache o unità di capacità in modo indipendente, ogni volta che si desidera.

Il diagramma animato mostra due unità cache NVMe mappate dinamicamente ai primi quattro, quindi sei, quindi otto unità di capacità.

È consigliabile rendere il numero di unità di capacità un multiplo del numero di unità della cache, per ottenere simmetria. Ad esempio, se si dispone di 4 unità cache, si riscontrano prestazioni maggiori con 8 unità di capacità (rapporto 1:2) rispetto a 7 o 9.

Gestione dei guasti delle unità di cache

Quando un'unità cache ha esito negativo, tutte le scritture che non sono ancora state destagate vengono perse nel server locale, vale a dire che esistono solo nelle altre copie (in altri server). Proprio come dopo qualsiasi altro guasto di unità, Spazi di archiviazione può e effettua automaticamente il ripristino consultando le copie sopravvissute.

Per un breve periodo, le unità di capacità associate all'unità cache persa appaiono non integre. Dopo l'esecuzione del riassociamento automatico della cache e il completamento automatico del ripristino dei dati, riprendono a essere visualizzati come integri.

Questo scenario è il motivo per cui sono necessarie almeno due unità cache per ogni server per mantenere le prestazioni.

Il diagramma animato mostra due unità cache SSD mappate su sei unità di capacità fino a quando una delle unità cache non viene meno, causando la mappatura di tutte e sei le unità sull'unità cache rimanente.

È quindi possibile sostituire l'unità cache esattamente come qualsiasi altra sostituzione dell'unità.

Note

Potrebbe essere necessario spegnere per sostituire in modo sicuro l'NVMe che è la scheda Add-In (AIC) o la scheda M.2.

Relazione con altre cache

Esistono diverse altre cache non correlate nello stack di archiviazione software-defined di Windows. Gli esempi includono la cache di write-back di Spazi di archiviazione e la cache di lettura in memoria del Volume Condiviso del Cluster (CSV).

Con Azure Stack HCI, la cache writeback di Spazi di archiviazione non deve essere modificata dal comportamento predefinito. For example, parameters such as -WriteCacheSize on the New-Volume cmdlet shouldn't be used.

È possibile scegliere di usare o meno la cache CSV. È attivata per impostazione predefinita in Azure Stack HCI, ma non è in conflitto con la cache descritta in questo argomento in alcun modo. In alcuni scenari può offrire utili miglioramenti in termini di prestazioni. Per altre informazioni, vedere Usare la cache di lettura in memoria CSV con Azure Stack HCI.

Manual configuration

Per la maggior parte delle distribuzioni, la configurazione manuale non è necessaria. Se necessario, vedere le sezioni seguenti.

Se è necessario apportare modifiche al modello di dispositivo della cache dopo l'installazione, modifica la documentazione dei componenti di supporto del Servizio Integrità, come descritto in Panoramica del Servizio Integrità.

Specificare il modello di unità cache

Nelle distribuzioni in cui tutte le unità sono dello stesso tipo, ad esempio tutte le distribuzioni NVMe o all-SSD, non viene configurata alcuna cache perché Windows non è in grado di distinguere automaticamente le caratteristiche come la resistenza di scrittura tra le unità dello stesso 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. Tutti i dischi di quel modello sono utilizzati per la cache.

Tip

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

Example

Prima di tutto, ottenere un elenco di dischi fisici:

Get-PhysicalDisk | Group Model -NoElement

Ecco un esempio di output:

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

Immettere quindi il comando seguente, specificando il modello di dispositivo della 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".

Possibilità di distribuzione manuale

La configurazione manuale consente le seguenti possibilità di distribuzione:

Il diagramma mostra le possibilità di distribuzione, incluse NVMe sia per cache che per capacità, SSD per cache e capacità, e SSD per cache e un mix di SSD e HDD per capacità.

Impostare il comportamento della cache

È possibile eseguire l'override del comportamento predefinito della cache. Ad esempio, è possibile impostarla per mantenere in cache le letture anche in una distribuzione all-flash. Sconsigliamo di modificare il comportamento a meno che non si sia certi che l'impostazione predefinita non sia adatta al carico di lavoro.

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

Prima di tutto, ottieni le impostazioni di Spazi di archiviazione diretta.

Get-ClusterStorageSpacesDirect

Ecco un esempio di output:

CacheModeHDD : ReadWrite
CacheModeSSD : WriteOnly

Procedere quindi come segue:

Set-ClusterStorageSpacesDirect -CacheModeSSD ReadWrite

Get-ClusterS2D

Ecco un esempio di output:

CacheModeHDD : ReadWrite
CacheModeSSD : ReadWrite

Ridimensionamento della cache

La cache deve essere ridimensionata in modo da contenere il working set (i dati che vengono letti o scritti attivamente in qualsiasi momento) delle applicazioni e dei carichi di lavoro.

Ciò è particolarmente importante nelle distribuzioni ibride con unità disco rigido. Se il working set attivo supera le dimensioni della cache o se il working set attivo si allontana troppo rapidamente, i mancati riscontri nella cache di lettura aumentano e le scritture devono essere destagate in modo più aggressivo, danneggiando le prestazioni complessive.

È possibile usare l'utilità predefinita Performance Monitor (PerfMon.exe) in Windows per controllare la frequenza di mancati riscontri nella cache. In particolare, è possibile confrontare le cache miss al secondo dal contatore del Disco Ibrido di Archiviazione Cluster rispetto alle operazioni di lettura IOPS complessive della distribuzione. Ogni "disco ibrido" corrisponde a un'unità di capacità.

Ad esempio, 2 unità cache associate a 4 unità di capacità generano 4 istanze di oggetti "Disco ibrido" per server.

Performance-Monitor.

Non esiste una regola universale, ma se mancano troppe letture, è possibile che la cache sia sottodimensionata ed è consigliabile aggiungere unità cache per espandere la cache. È possibile aggiungere unità cache o unità di capacità in modo indipendente ogni volta che si desidera.

Next steps

Per altre informazioni di archiviazione, vedere anche: