Informazioni sulla cache dei 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 fondamentale dietro Azure Stack HCI e Windows Server, offre una cache lato server predefinita per ottimizzare le prestazioni di archiviazione riducendo i costi. È una cache di lettura e scrittura in tempo reale di grandi dimensioni, persistente e in tempo reale configurata automaticamente durante la 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, un nuovo tipo di archiviazione a bassa latenza, ad alte prestazioni.
NVMe NVMe (Non Volatile Memory Express) fa riferimento alle unità a stato solido 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 più elevata con una latenza inferiore a qualsiasi altro tipo di unità supportata oggi, ad eccezione di PMem.
SSD SSD si riferisce a unità a stato solido, che si connettono tramite SATA o SAS convenzionali.
HDD HDD si riferisce a unità disco rigido magnetico di rotazione, che offrono una vasta capacità di archiviazione a basso costo.

Questi possono essere combinati in vari modi, che raggruppamo in due categorie: "all-flash" e "ibrido". Le distribuzioni con tutti gli 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 Comprendere e distribuire memoria persistente.

Possibilità di distribuzione 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 capacità e SSD per la capacità.

Possibilità di distribuzione ibrida

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

Il diagramma mostra le distribuzioni ibride, tra cui NVMe per cache con HDD per capacità, SSD per la cache con HDD per la capacità e NVMe per la cache con HDD più SSD per la capacità.

Nota

La distribuzione ibrida non è supportata nella configurazione del 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à, 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.

Il diagramma mostra i tipi di disco disposti più velocemente per rallentare nell'ordine NVMe, SSD, disco non etichettato che rappresenta 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 nel 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, soprattutto su larga scala, non avendo unità "spese" nella cache possono 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 memorizza nella cache per le unità flash (ad esempio la memorizzazione nella cache NVMe per gli SSD), vengono memorizzate nella cache solo le scritture. Quando si esegue la memorizzazione nella cache per le unità disco rotanti ,ad esempio la memorizzazione nella cache degli SSD per i dischi RIGIDI, le letture e le scritture vengono memorizzate nella cache.

Diagramma che confronta la memorizzazione nella cache per tutti i flash, in cui le scritture vengono memorizzate nella cache e le letture non sono memorizzate nella cache, con operazioni ibride, in cui vengono memorizzate nella cache sia le letture che le scritture.

Cache in sola scrittura per le distribuzioni all-flash

La memorizzazione nella cache può essere usata in uno scenario all-flash, ad esempio usando NVMe come cache per accelerare le prestazioni degli SSD. Quando si memorizza nella cache per le distribuzioni all-flash, vengono memorizzate nella cache solo le scritture. Ciò riduce l'utilizzo delle unità di capacità perché molte scritture e riscrizioni possono unire nella cache e quindi de-stage solo in base alle esigenze, riducendo il traffico cumulativo alle unità di capacità e estendendo 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é i dischi 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 è ancora stato de-staged). 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 memorizza nella cache per HDD, sia le letture che le scritture vengono memorizzate nella cache, per fornire la latenza simile a flash (spesso ~10x meglio) 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-casualizza 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.

Memorizzazione nella cache nelle distribuzioni con NVMe, SSD e HDD

Quando le unità di tutti e tre i tipi sono presenti, le unità NVMe forniscono la memorizzazione nella cache sia per gli SSD che per gli 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.

Diagramma rappresenta tre server aggiunti a un mirror a tre vie in un livello spazio di archiviazione, che accede a un livello cache di unità NVMe che accedono alle unità di capacità non etichettate.

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.

Il diagramma animato mostra due unità cache NVMe che esegue il mapping dinamico ai primi quattro, quindi sei, quindi otto unità di capacità.

È 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.

Diagramma animato mostra due unità cache SSD mappate a sei unità di capacità fino a un errore di un'unità cache, che causa il mapping di tutte e sei le unità all'unità cache rimanente.

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 della cache dopo l'installazione, modificare il documento 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 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.

Il diagramma mostra le possibilità di distribuzione, tra cui NVMe per cache e capacità, SSD sia per la cache che per la capacità e l'unità SSD mista per la capacità.

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

Per prima cosa, 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.

Monitoraggio prestazioni.

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: