Informazioni sulla cache dei pool di archiviazione
Si applica a: Azure Stack HCI, versioni 22H2 e 21H2; Windows Server 2022, Windows Server 2019
Importante
Azure Stack HCI is now part of Azure Local. La ridenominazione della documentazione del prodotto è in corso. Tuttavia, le versioni precedenti di Azure Stack HCI, ad esempio 22H2 continueranno a fare riferimento ad Azure Stack HCI e non rifletteranno la modifica del nome. Altre informazioni.
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. Si tratta di 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 è necessaria 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 si riferisce alla memoria persistente, a un nuovo tipo di archiviazione a bassa latenza e ad alte prestazioni. | |
NVMe (Non-Volatile Memory Express) si riferisce alle unità ssd che si trovano direttamente sul bus PCIe. I fattori di forma comuni sono 2,5" U.2, PCIe Add-In-Card (AIC) e M.2. NVMe offre una velocità effettiva di I/O al secondo e I/O superiore con una latenza inferiore rispetto a qualsiasi altro tipo di unità attualmente supportata, ad eccezione di PMem. | |
SSD si riferisce a unità ssd, che si connettono tramite SATA o SAS convenzionali. | |
HDD si riferisce a unità disco rigido magnetiche e rotazionali, che offrono una grande capacità di archiviazione a un costo basso. |
Questi possono essere combinati in vari modi, che si raggruppano 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.
Possibilità di distribuzione ibrida
Le distribuzioni ibride mirano a bilanciare le prestazioni e la capacità o a massimizzare la capacità e includere HDD.
Nota
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à, Spazi di archiviazione diretta usa automaticamente tutte le unità del tipo più veloce per la memorizzazione nella cache. Le unità rimanenti vengono utilizzate per la capacità.
Il tipo "più veloce" viene determinato in base alla gerarchia seguente.
Ad esempio, se si dispone di UNITÀ SSD e NVMe, la cache NVMe verrà memorizzata nella cache per le unità SSD.
Se si dispone di unità SSD e HDD, le unità SSD verranno memorizzate nella cache per le unità HDD.
Nota
Le unità cache non contribuiscono alla capacità di archiviazione utilizzabile nel cluster. Tutti i dati archiviati nella cache vengono archiviati anche altrove o saranno una volta de-fasi. Ciò significa che la capacità totale di archiviazione non elaborata del cluster è solo la somma delle unità di capacità.
Quando tutte le unità sono dello stesso tipo, non viene configurata automaticamente alcuna cache. È possibile configurare manualmente le unità di livello superiore per memorizzare nella cache le unità con resistenza inferiore dello stesso tipo. Per informazioni su 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, non avendo unità "spese" nella 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 memorizzano nella cache per le unità flash(ad esempio la memorizzazione nella cache NVMe per unità 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 delle unità SSD per le unità DISCO, le letture e le scritture vengono memorizzate nella cache.
Memorizzazione nella cache di sola scrittura per 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 delle unità SSD. Quando si memorizza nella cache per le distribuzioni all-flash, vengono memorizzate nella cache solo le scritture. Ciò riduce l'usura delle unità di capacità perché molte scritture e scritture possono unire 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 questo motivo, è consigliabile selezionare unità ottimizzate per la scrittura più elevate per la cache. Le unità di capacità possono ragionevolmente avere 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 de-staging). 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.
Memorizzazione nella cache di lettura/scrittura per le distribuzioni ibride
Quando la memorizzazione nella cache per HDD, sia le letture che le scritture vengono memorizzate nella cache, per fornire una latenza simile a flash (spesso ~10x migliore) per entrambi. La cache di lettura archivia i dati di recente e di frequente per l'accesso rapido e ridurre al minimo il traffico casuale verso i dischi RIGIDI. 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 picchi e, come in precedenza, per unire scritture e riscrizioni e ridurre al minimo il traffico cumulativo verso le 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 questo modo si ottimizzano le operazioni di I/O al secondo 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.
Riepilogo
Questa tabella riepiloga le unità usate per la memorizzazione nella cache, usate per la capacità e il comportamento di memorizzazione nella cache per ogni possibilità di distribuzione.
Distribuzione | Unità di cache | Unità di capacità | Comportamento della cache (impostazione predefinita) |
---|---|---|---|
Tutti i file NVMe | Nessuno (facoltativo: configurazione manuale) | NVMe | Sola scrittura (se configurata) |
Tutte le unità SSD | Nessuno (facoltativo: configurazione manuale) | SSD | Sola scrittura (se configurata) |
NVMe + SSD | NVMe | SSD | Sola scrittura |
NVMe + HDD | NVMe | HDD | Lettura + scrittura |
SSD + HDD | SSD | HDD | Lettura + scrittura |
NVMe + SSD + HDD | NVMe | SSD + HDD | Lettura e scrittura per HDD, solo scrittura per SSD |
Architettura lato server
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 software-defined di Windows, non ha né ha bisogno di alcuna conoscenza dei concetti, ad esempio Spazi di archiviazione o tolleranza di errore. È 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 ad accesso frequente e freddo tra le parti più veloci e lente dei supporti fisici è quasi invisibile all'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.
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 siano successivamente de-staged o meno, saranno sempre presenti tre copie.
Le associazioni di unità sono dinamiche
L'associazione tra unità cache e capacità può avere qualsiasi rapporto, da 1:1 a 1:12 e versioni successive. Regola in modo dinamico ogni volta che le unità vengono aggiunte o rimosse, ad esempio quando si aumentano o si verificano errori. Ciò significa che è possibile aggiungere unità cache o unità di capacità in modo indipendente, ogni volta che si desidera.
È consigliabile rendere il numero di unità di capacità un multiplo del numero di unità della cache, per la simmetria. Ad esempio, se si dispone di 4 unità cache, si avranno prestazioni più elevate con 8 unità di capacità (rapporto 1:2) rispetto a 7 o 9.
Gestione degli errori delle unità della cache
Quando un'unità cache ha esito negativo, tutte le scritture che non sono ancora state de-staging vengono perse nel server locale, vale a dire che esistono solo nelle altre copie (in altri server). Proprio come dopo qualsiasi altro guasto dell'unità, Spazi di archiviazione può e esegue automaticamente il recupero consultando le copie sopravvissute.
Per un breve periodo, le unità di capacità associate all'unità cache persa appariranno non integre. Dopo aver eseguito il riassociamento della cache (automatico) e il ripristino dei dati è stato completato (automatico), riprenderanno a essere visualizzati come integri.
Questo scenario è il motivo per cui sono necessarie almeno due unità cache per ogni server per mantenere le prestazioni.
È quindi possibile sostituire l'unità cache esattamente come qualsiasi altra sostituzione dell'unità.
Nota
Potrebbe essere necessario spegnere per sostituire in modo sicuro NVMe che è componente aggiuntivo (AIC) o fattore di forma 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 writeback Spazi di archiviazione e la cache in lettura in memoria del volume condiviso del cluster.
Con Azure Stack HCI, la cache writeback Spazi di archiviazione non deve essere modificata dal comportamento predefinito. Ad esempio, i parametri come -WriteCacheSize nel cmdlet New-Volume non devono essere usati.
È 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.
Configurazione manuale
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, modificare il documento dei componenti di supporto di Servizio integrità, come descritto in Servizio integrità panoramica.
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 può distinguere automaticamente caratteristiche come la resistenza di scrittura tra le unità dello stesso tipo.
Per usare le unità di resistenza più elevate per memorizzare nella cache le unità di durata inferiore dello stesso tipo, è possibile specificare il modello di unità da usare con il parametro -CacheDeviceModel del cmdlet Enable-ClusterS2D . Tutte le unità del modello verranno usate per la memorizzazione nella cache.
Suggerimento
Assicurarsi di corrispondere esattamente alla stringa del modello come 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 le unità desiderate vengano usate per la memorizzazione nella cache eseguendo Get-PhysicalDisk in PowerShell e verificando che la relativa proprietà Usage indichi "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 impostarla per memorizzare nella cache le letture anche in una distribuzione all-flash. È consigliabile modificare il comportamento a meno che non si sia certi che l'impostazione predefinita non sia adatta al carico di lavoro.
Per eseguire l'override del comportamento, usare il cmdlet Set-ClusterStorageSpacesDirect e i relativi parametri -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
Ottenere prima di tutto 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 de-staging in modo più aggressivo, danneggiando le prestazioni complessive.
È possibile usare l'utilità Monitor prestazioni predefinita (PerfMon.exe) in Windows per controllare la frequenza di mancati riscontri nella cache. In particolare, è possibile confrontare le letture di mancati riscontri nella cache/sec dal contatore Del disco ibrido di Archiviazione cluster impostato sulle operazioni di I/O al secondo di lettura 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.
Non esiste alcuna regola universale, ma se mancano troppe letture, potrebbe essere 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.
Passaggi successivi
Per altre informazioni di archiviazione, vedere anche: