Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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. Si tratta di una grande cache persistente di lettura e scrittura in tempo reale, configurata automaticamente al momento del deploy. 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à | 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 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 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 "ibridi". Le distribuzioni con tutte le unità HDD non sono supportate.
Annotazioni
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.
Possibilità di distribuzione ibrida
Le distribuzioni ibride mirano a bilanciare le prestazioni e la capacità o a massimizzare la capacità e includere HDD.
Annotazioni
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.
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.
Annotazioni
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. È possibile configurare manualmente le unità con maggiore resistenza per cachare le unità con resistenza inferiore dello stesso tipo. Per sapere 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 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.
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. Per questo motivo, è consigliabile selezionare unità di memoria a maggiore resistenza, ottimizzate per la scrittura per la 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
Quando si utilizza la cache per HDD, sia per le letture che per le scritture vengono utilizzate per fornire una latenza paragonabile a quella dei dispositivi flash (spesso 10 volte migliore) per entrambi. 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.
Riassunto
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.
Distribuzione | Unità cache | Unità di memorizzazione ad alta capacità | Comportamento della cache (impostazione predefinita) |
---|---|---|---|
Tutti gli NVMe | Nessuno (facoltativo: configurare manualmente) | NVMe | Solo scrittura (se configurata) |
Tutte le unità SSD | Nessuno (facoltativo: configurare manualmente) | SSD (unità a stato solido) | Solo scrittura (se configurata) |
NVMe + SSD | NVMe | SSD (unità a stato solido) | Solo scrittura |
NVMe + HDD | NVMe | disco rigido | Lettura e scrittura |
SSD + HDD | SSD (unità a stato solido) | disco rigido | Lettura e 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 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.
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.
È 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.
È quindi possibile sostituire l'unità cache esattamente come qualsiasi altra sostituzione dell'unità.
Annotazioni
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. 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, 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.
Per utilizzare unità ad alta resistenza per memorizzare nella cache unità a durata inferiore dello stesso tipo, è possibile specificare il modello di unità da utilizzare con il parametro -CacheDeviceModel del cmdlet Enable-ClusterS2D. Tutti i dischi di quel modello sono utilizzati per la cache.
Suggerimento
Assicurati che la stringa del modello corrisponda esattamente 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 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.
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
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.
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.
Passaggi successivi
Per altre informazioni di archiviazione, vedere anche:
- Tolleranza di errore ed efficienza di archiviazione
- Quorum di cluster e pool