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 fa riferimento alla memoria persistente, un nuovo tipo di archiviazione a bassa latenza, ad alte prestazioni. | |
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 si riferisce a unità a stato solido, che si connettono tramite SATA o SAS convenzionali. | |
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.
Possibilità di distribuzione ibrida
Le distribuzioni ibride mirano a bilanciare le prestazioni e la capacità o a ottimizzare la capacità e includere HDD.
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.
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.
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.
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.
È 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.
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.
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.
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: