Informazioni sulla cache del pool di archiviazione

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

Spazi di archiviazione diretta, la tecnologia di virtualizzazione di archiviazione di base dietro Azure Stack HCI e Windows Server, offre una cache lato server predefinita per ottimizzare le prestazioni di archiviazione riducendo al contempo i costi. Si tratta di una cache di lettura e scrittura di grandi dimensioni, persistente e in tempo reale configurata automaticamente al momento della distribuzione. Nella maggior parte dei casi non è richiesta alcuna gestione manuale. Il funzionamento della cache dipende dai tipi di unità presenti.

Tipi di unità e opzioni di distribuzione

Spazi di archiviazione diretta attualmente funziona con quattro tipi di unità:

Tipo di unità Descrizione
PMem PMem fa riferimento alla memoria persistente, a un nuovo tipo di archiviazione a bassa latenza e a prestazioni elevate.
NVMe NVMe (Non-Volatile Memory Express) si riferisce alle unità ssd che si trovano direttamente sul bus PCIe. I fattori di forma più comuni sono U.2 da 2,5 pollici, Add-In-Card (AIC) PCIe ed M.2. NVMe offre una velocità effettiva di I/O e I/O più elevata con una latenza inferiore rispetto a qualsiasi altro tipo di unità attualmente supportata, ad eccezione di PMem.
SSD SSD si riferisce alle unità ssd, che si connettono tramite SATA o SAS convenzionali.
HDD HDD si riferisce alle unità disco rigido magnetiche di rotazione, che offrono una vasta capacità di archiviazione a un costo basso.

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

Nota

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 distribuzione all-flash

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

Diagram shows all-flash deployments, including NVMe for capacity, NVMe for cache with SSD for capacity, and SSD for capacity.

Possibilità di distribuzione ibrida

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

Diagram shows hybrid deployments, including NVMe for cache with HDD for capacity, SSD for cache with HDD for capacity, and NVMe for cache with HDD plus SSD for capacity.

Nota

La distribuzione ibrida non è supportata nella configurazione a server singolo. Tutte le configurazioni flat del tipo di archiviazione singolo (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à, Spazi di archiviazione diretta usa automaticamente tutte le unità del tipo più veloce per la memorizzazione nella cache. Le unità rimanenti vengono usate per la capacità.

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

Diagram shows disk types arranged faster to slower in the order NVMe, SSD, unlabeled disk representing HDD.

Ad esempio, se si dispone di unità NVMe e SSD, le unità NVMe fungeranno da cache per le unità SSD.

Se si dispone di unità SSD e di unità disco rigido, le prime fungeranno da cache per le unità disco rigido.

Nota

Le unità cache non contribuiscono alla capacità di archiviazione utilizzabile per il cluster. Tutti i dati archiviati nella cache vengono archiviati anche altrove o lo saranno nel momento in cui vengono rimossi dalla cache. Ciò significa che la capacità totale di archiviazione non elaborata del cluster è solo la somma delle unità di capacità.

Se tutte le unità sono dello stesso tipo, nessuna cache viene configurata automaticamente. È disponibile l'opzione per configurare manualmente unità a maggiore resistenza in modo che fungano da cache per le unità a minore resistenza dello stesso tipo. Per scoprire come, vedere la sezione Configurazione manuale.

Suggerimento

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 su scala molto ridotta, la presenza di unità "spese" nella cache può migliorare l'efficienza di archiviazione e ottimizzare le prestazioni. Analogamente, le distribuzioni remote o succursali di piccole dimensioni possono avere spazio limitato per le unità cache.

Il comportamento della cache viene impostato automaticamente

Il comportamento della cache è determinato automaticamente in base ai tipi di unità che vengono utilizzati per fungere da cache. Quando si memorizzano nella cache per le unità flash ,ad esempio la memorizzazione nella cache NVMe per le unità SSD, vengono memorizzate nella cache solo le scritture. Durante la memorizzazione nella cache per la rotazione delle unità disco ,ad esempio la memorizzazione nella cache delle unità SSD per i dischi RIGIDI, le letture e le scritture vengono memorizzate nella cache.

Diagram comparing caching for all-flash, where writes are cached and reads are not, with hybrid, where both reads and writes are cached.

Cache in sola scrittura per le distribuzioni all-flash

Caching può essere usato in uno scenario all-flash, ad esempio usando NVMe come cache per accelerare le prestazioni delle unità SSD. Durante la memorizzazione nella cache per le distribuzioni all-flash, vengono memorizzate nella cache solo le scritture. In questo modo si riduce l'usura delle unità di capacità perché molte scritture e scritture possono essere uniti nella cache e quindi de-stage solo in base alle esigenze, riducendo il traffico cumulativo verso le unità di capacità e estendendone la durata. Per questa ragione, è consigliabile selezionare unità a maggiore resistenza, ottimizzate per la scrittura per la cache. Le unità di capacità possono ragionevolmente disporre di una minore resistenza in scrittura.

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 gestite direttamente dalle unità di capacità (tranne quando i dati sono stati scritti così di recente che non sono ancora stati de-stagingd). Ciò consente di dedicare la cache interamente alle scritture, ottimizzandone l'efficienza.

Di conseguenza, le caratteristiche di scrittura quali la latenza, sono determinate dalle unità cache, mentre le caratteristiche di lettura sono determinate dalle unità di capacità. Entrambe sono coerenti, prevedibili e uniformi.

Memorizzazione nella cache di lettura/scrittura per le distribuzioni ibride

Quando si esegue la memorizzazione nella cache per HDD, le letture e le scritture vengono memorizzate nella cache, per offrire una latenza simile a flash (spesso ~10 volte migliore) per entrambi. All'interno della cache di lettura vengono memorizzati i dati letti di recente e frequentemente, per l'accesso rapido e per ridurre al minimo il traffico casuale alle unità disco rigido (a causa dei ritardi rotazionali, la latenza e il tempo perso correlati all'accesso casuale a un'unità disco rigido sono significativi). Le scritture vengono memorizzate nella cache per assorbire i picchi e, come in precedenza, per unire scritture e riscritture e ridurre al minimo il traffico cumulativo alle unità di capacità.

Spazi di archiviazione diretta implementa un algoritmo che de-randomizza le scritture prima di eseguirne la de-staging, per emulare un modello di I/O su disco che sembra sequenziale anche quando l'I/O effettivo proveniente dal carico di lavoro (ad esempio le macchine virtuali) è casuale. In tal modo IOPS e velocità effettiva alle unità disco rigido vengono ottimizzate.

Caching 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 i dischi HDD. Il comportamento è quello descritto in precedenza: per le unità SSD solo le scritture vengono memorizzate nella cache, mentre per le unità disco rigido vengono memorizzate sia le letture che le scritture. L'onere della memorizzazione nella cache per le unità disco rigido viene distribuito in modo equo tra le unità della cache.

Riepilogo

Questa tabella riepiloga le unità utilizzate per la memorizzazione nella cache, quelle utilizzate per la capacità e il comportamento di memorizzazione nella cache relativo a ciascuna possibilità di distribuzione.

Distribuzione Unità della cache Unità di capacità Comportamento della cache (predefinito)
Tutte unità NVMe Nessuna (facoltativo: configurare manualmente) NVMe Solo scrittura (se configurata)
Tutte unità SSD Nessuna (facoltativo: configurare manualmente) SSD Solo scrittura (se configurata)
Unità NVMe + SSD NVMe SSD Sola scrittura
Unità NVMe + HDD NVMe HDD Lettura + scrittura
Unità SSD + unità disco rigido SSD HDD Lettura + scrittura
Unità NVMe + SSD + HDD NVMe Unità SSD + unità disco rigido Lettura + scrittura per unità disco rigido, sola scrittura per unità SSD

Architettura lato server

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

Poiché la cache si trova al di sotto del restante stack dell'archiviazione definita da software di Windows, non riconosce né ha necessità di riconoscere concetti quali Spazi di archiviazione o tolleranza di errore. È possibile pensarlo come creare unità "ibride" (part flash, part disk) che vengono quindi presentate al sistema operativo. Come accade con un'unità ibrida effettiva, lo spostamento in tempo reale dei dati ad accesso frequente e di quelli ad accesso sporadico tra le parti più rapide e quelle più lente dei supporti fisici è pressoché invisibile dall'esterno.

Dato che la resilienza in Spazi di archiviazione diretta è almeno a livello server (per cui le copie dei dati vengono scritte su server diversi; almeno una copia per server), i dati nella cache usufruiscono della stessa resilienza dei dati che non si trovano nella cache.

Diagram represents three servers joined by a three-way mirror in a Storage Space layer, which accesses a cache layer of NVMe drives which access unlabeled capacity drives.

Ad esempio, quando si utilizza il mirroring a tre vie, tre copie di tutti i dati vengono scritte su server diversi, all'interno della cache. A prescindere dall'eventualità che vengano rimossi o meno dalla cache successivamente, esisteranno sempre tre copie.

Le associazioni di dati sono dinamiche

Il rapporto tra unità cache e unità di capacità nell'ambito dell'associazione può variare da 1:1 fino a 1:12 e oltre. Tale rapporto si regola dinamicamente ogni volta che si aggiungono o si rimuovono le unità, ad esempio durante un aumento o dopo i guasti. Ciò significa che è possibile aggiungere unità cache o unità di capacità in modo indipendente, ogni volta che si desidera.

Animated diagram shows two NVMe cache drives dynamically mapping to first four, then six, then eight capacity drives.

È consigliabile che il numero delle unità di capacità sia un multiplo del numero delle unità cache, per simmetria. Ad esempio, con quattro unità cache, le prestazioni risulteranno più uniformi con otto unità di capacità (rapporto 1:2) che con 7 o 9.

Gestione degli errori delle unità cache

In caso di errore di un'unità cache, le scritture non ancora rimosse dalla cache vengono perse nel server locale, pertanto esistono solo nelle altre copie (negli altri server). Come accade dopo qualsiasi altro errore di unità, Spazi di archiviazione può eseguire il ripristino automatico, consultando le copie sopravvissute, ed è proprio questa l'operazione che viene eseguita.

Per un breve periodo, le unità di capacità associate all'unità cache persa appariranno non integre. Una volta eseguita la riassociazione della cache (operazione automatica) e completata la riparazione dei dati (operazione automatica), torneranno a essere visualizzate come integre.

Questo scenario spiega il motivo per cui per preservare le prestazioni, per ogni server sono necessarie almeno due unità cache.

Animated diagram shows two SSD cache drives mapped to six capacity drives until one cache drive fails, which causes all six drives to be mapped to the remaining cache drive.

L'unità cache può essere sostituita come qualsiasi altra unità.

Nota

Per sostituire in sicurezza NVMe con fattore di forma Add-In Card (AIC) o M.2 potrebbe essere necessario spegnere il computer.

Rapporti con le altre cache

Nello stack dell'archiviazione definita da software di Windows sono presenti varie altre cache non correlate. Gli esempi includono la cache di scrittura di Spazi di archiviazione e la cache di lettura in memoria del volume condiviso del cluster.

Con Azure Stack HCI, la cache di write-back Spazi di archiviazione non deve essere modificata dal comportamento predefinito. Ad esempio, parametri quali -WriteCacheSize nel cmdlet New-Volume non devono essere utilizzati.

Se lo si desidera, è possibile scegliere di utilizzare la cache Volume condiviso cluster. È attivo per impostazione predefinita in Azure Stack HCI, ma non è in conflitto con la cache descritta in questo argomento in alcun modo. In determinati scenari, può fornire preziosi guadagni in termini di prestazioni. Per altre informazioni, vedere Usare la cache di lettura in memoria CSV con Azure Stack HCI.

Configurazione manuale

Per la maggior parte delle implementazioni non è richiesta la configurazione manuale. In caso di necessità, vedere le sezioni seguenti.

Se è necessario apportare modifiche al modello di dispositivo cache dopo l'installazione, modificare il documento componenti di supporto di Servizio integrità, come descritto in panoramica Servizio integrità.

Specificare il modello di unità cache

Nelle distribuzioni in cui tutte le unità sono dello stesso tipo, ad esempio tutte NVMe o tutte SSD, non viene configurata alcuna cache, in quanto Windows non è in grado di distinguere automaticamente caratteristiche quali la resistenza in scrittura tra unità dello stesso tipo.

Per utilizzare le unità a maggiore resistenza come cache per le unità a minore resistenza dello stesso tipo, è possibile specificare quale modello di unità utilizzare con il parametro -CacheDeviceModel del cmdlet Enable-ClusterS2D. Tutte le unità di tale modello verranno usate per la memorizzazione nella cache.

Suggerimento

Accertarsi di utilizzare la stessa stringa di modello che appare nell'output di Get-PhysicalDisk.

Esempio

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"

È possibile verificare che per la memorizzazione nella cache siano utilizzate le unità desiderate eseguendo Get-PhysicalDisk in PowerShell e verificando che il valore della proprietà Usage sia "Journal".

Possibilità di distribuzione manuale

La configurazione manuale consente le seguenti possibilità di distribuzione.

Diagram shows deployment possibilities, including NVMe for both cache and capacity, SSD for both cache and capacity, and SSD for cache and mixed SSD and HDD for capacity.

Impostare il comportamento della cache

È possibile eseguire l'override del comportamento predefinito della cache. Ad esempio, è possibile impostarlo in modo che la cache effettui le letture persino nella distribuzione all-flash. Non è consigliabile modificare il comportamento se non si è certi che l'impostazione predefinita non sia indicata per il proprio carico di lavoro.

Per eseguire l'override del comportamento, usare il cmdlet Set-ClusterStorageSpacesDirect e il relativo parametro -CacheModeSSD e -CacheModeHDD. Il parametro CacheModeSSD imposta il comportamento della cache durante la memorizzazione nella cache per SSD. Il parametro CacheModeHDD imposta il comportamento della cache durante la memorizzazione nella cache per HDD.

È possibile usare Get-ClusterStorageSpacesDirect per verificare che il comportamento sia impostato.

Esempio

Prima di tutto, ottenere 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

Le dimensioni della cache dovrebbero essere tali da accogliere il working set (i dati che vengono letti o scritti attivamente in ogni dato 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 devia troppo rapidamente, i mancati riscontri della cache di lettura aumenteranno e le scritture dovranno essere rimosse dalla cache con maggiore determinazione, compromettendo le prestazioni complessive.

Per esaminare la frequenza dei mancati riscontri della cache, è possibile avvalersi dell'utilità Performance Monitor (PerfMon.exe) integrata in Windows. In modo specifico, è possibile confrontare il valore Cache Miss Reads/sec dell'insieme di contatori Cluster Storage Hybrid Disk impostato, con il numero di IOPS di lettura complessivo della distribuzione. Ciascun "Hybrid Disk" corrisponde a un'unità di capacità.

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

Performance-Monitor

Non esiste una regola universale, tuttavia, se il numero di mancati riscontri della cache è eccessivo, le dimensioni potrebbero essere insufficienti e sarà necessario prendere in considerazione l'aggiunta di unità cache per espandere la cache. È possibile aggiungere unità cache o unità di capacità in modo indipendente, ogni volta che si desidera.

Passaggi successivi

Per altre informazioni di archiviazione, vedere anche: