Parità accelerata con mirroring
Spazi di archiviazione può fornire la tolleranza di errore per i dati usando due tecniche fondamentali: mirror e parità. In Spazi di archiviazione diretta, ReFS introduce la parità accelerata con mirroring, che consente di creare volumi che usano resilienza sia mirror che parità. La parità accelerata con mirroring offre spazio di archiviazione economico ed efficiente senza sacrificare le prestazioni.
Background
Gli schemi di resilienza mirror e parità hanno caratteristiche di archiviazione e prestazioni sostanzialmente diverse:
- La resilienza mirror consente agli utenti di ottenere prestazioni di scrittura veloci, ma la replica dei dati per ogni copia non è efficiente in termini di spazio.
- La parità, d'altra parte, deve ricalcare la parità di calcolo per ogni scrittura, causando prestazioni di scrittura casuali a risentire. La parità, tuttavia, consente agli utenti di archiviare i dati con maggiore efficienza nello spazio. Per altre informazioni, vedere Tolleranza di errore di Spazi di archiviazione.
Di conseguenza, il mirror è predisposto per offrire spazio di archiviazione sensibile alle prestazioni, mentre la parità offre un miglioramento dell'utilizzo della capacità di archiviazione. Nella parità accelerata con mirroring ReFS sfrutta i vantaggi di ogni tipo di resilienza per offrire spazio di archiviazione efficiente e sensibile alle prestazioni combinando entrambi gli schemi di resilienza all'interno di un singolo volume.
Rotazione dei dati sulla parità accelerata con mirroring
ReFS ruota attivamente i dati tra mirror e parità, in tempo reale. In questo modo le scritture in ingresso devono essere scritte rapidamente nel mirror e quindi ruotate in parità per essere archiviate in modo efficiente. In questo modo, le operazioni di I/O in ingresso vengono gestite rapidamente nel mirroring, mentre i dati ad accesso sporadico vengono archiviati in modo efficiente in parità, offrendo prestazioni ottimali e archiviazione con costi persi all'interno dello stesso volume.
Per ruotare i dati tra mirror e parità, ReFS divide logicamente il volume in aree di 64 MiB, ovvero l'unità di rotazione. L'immagine seguente illustra un volume di parità accelerato con mirroring diviso in aree.
ReFS inizia a ruotare le aree complete dal mirror alla parità dopo che il livello mirror ha raggiunto un livello di capacità specificato. Invece di spostare immediatamente i dati dal mirror alla parità, ReFS attende e mantiene i dati nel mirror il più a lungo possibile, consentendo a ReFS di continuare a offrire prestazioni ottimali per i dati (vedere le "prestazioni di I/O" di seguito).
Quando i dati vengono spostati dal mirror alla parità, vengono letti, vengono calcolate le codifiche di parità e quindi i dati vengono scritti in parità. L'animazione seguente illustra l'uso di un'area con mirroring a tre vie che viene convertita in un'area codificata con cancellazione durante la rotazione:
I/O sulla parità accelerata con mirroring
Comportamento di I/O
Scritture: ReFS esegue le scritture in ingresso in tre modi distinti:
Scrittura nel mirror:
- 1a. Se la scrittura in ingresso modifica i dati esistenti nel mirroring, ReFS modificherà i dati sul posto.
- 1b. Se la scrittura in ingresso è una nuova scrittura e ReFS riesce a trovare spazio libero sufficiente nel mirror per gestire questa scrittura, ReFS scriverà nel mirroring.
Scrittura nel mirror, riallocata da parità:
Se la scrittura in ingresso modifica i dati in parità e ReFS riesce a trovare spazio libero sufficiente nel mirror per gestire la scrittura in ingresso, ReFS invaliderà prima i dati precedenti in parità e quindi scriverà nel mirror. Questa invalidazione è un'operazione di metadati rapida e conveniente che consente di migliorare significativamente le prestazioni di scrittura apportate alla parità.
Scrittura in parità:
Se ReFS non riesce a trovare spazio libero sufficiente nel mirroring, ReFS scriverà nuovi dati in parità o modificherà direttamente i dati esistenti in parità. La sezione "Ottimizzazioni delle prestazioni" seguente fornisce indicazioni che consentono di ridurre al minimo le scritture nella parità.
Letture: ReFS leggerà direttamente dal livello contenente i dati pertinenti. Se la parità viene costruita con unità HDD, la cache in Spazi di archiviazione diretta memorizza questi dati per accelerare le letture future.
Nota
Le letture non causano mai la rotazione dei dati nel livello mirror.
Prestazioni di I/O
Scritture: ogni tipo di scrittura descritto in precedenza presenta caratteristiche di prestazioni specifiche. A grandi linee, le scritture nel livello mirror sono molto più veloci delle scritture riallocate e le scritture riallocate sono notevolmente più veloci rispetto alle scritture eseguite direttamente nel livello di parità. Questa relazione è illustrata dalla disuguaglianza seguente:
- Livello mirror > Scritture riallocate >> Livello di parità
Letture: non esiste alcun impatto significativo e negativo sulle prestazioni durante la lettura dalla parità:
- Se mirror e parità vengono costruiti con lo stesso tipo di supporto, le prestazioni di lettura saranno equivalenti.
- Se mirror e parità vengono costruiti con diversi tipi di supporti (unità SSD con mirroring o unità disco rigido con parità, ad esempio), la cache in Spazi di archiviazione diretta consentirà di memorizzare i dati ad accesso frequente per accelerare le letture dalla parità.
Compattazione ReFS
La compattazione per ReFS è disponibile con Windows Server 2019 e versioni successive, migliorando notevolmente le prestazioni per i volumi di parità con accelerazione mirror che sono completi al 90%.
Background: in precedenza, poiché i volumi di parità con accelerazione mirror si riempivano, le prestazioni di questi volumi potevano peggiorare. Le prestazioni diminuiscono perché i dati ad accesso frequente e sporadico vengono mescolati nel volume nel corso del tempo. Ciò significa che è possibile archiviare meno dati ad accesso frequente nel mirror perché i dati ad accesso sporadico occupano spazio nel mirror che altrimenti potrebbero essere usati dai dati ad accesso frequente. L'archiviazione dei dati ad accesso frequente nel mirror è fondamentale per mantenere prestazioni elevate perché le scritture dirette nel mirror sono molto più veloci rispetto alle scritture riallocate e agli ordini di grandezza rispetto alle scritture dirette nella parità. Di conseguenza, la presenza di dati ad accesso sporadico nel mirror è negativa per le prestazioni, in quanto riduce la probabilità che ReFS possa eseguire operazioni di scrittura direttamente nel mirroring.
La compattazione ReFS risolve questi problemi di prestazioni liberando spazio nel mirroring per i dati ad accesso frequente. La compattazione consolida prima tutti i dati, sia dal mirror che dalla parità, in parità. Ciò riduce la frammentazione all'interno del volume e aumenta la quantità di spazio indirizzabile nel mirroring. Ancora più importante, questo processo consente a ReFS di consolidare i dati ad accesso frequente nel mirror:
- Quando arrivano nuove scritture, verranno gestite nel mirror. Di conseguenza, i dati ad accesso frequente appena scritti risiedono nel mirroring.
- Quando viene eseguita una scrittura di modifica ai dati in parità, ReFS esegue una scrittura riallocata, quindi questa scrittura viene eseguita anche nel mirror. Di conseguenza, i dati ad accesso frequente spostati in parità durante la compattazione verranno riallocati nel mirror.
Ottimizzazioni delle prestazioni
Importante
È consigliabile inserire dischi rigidi virtuali con intensa attività di scrittura in sottodirectory diverse. Questo avviene perché ReFS scrive le modifiche ai metadati a livello di una directory e dei relativi file. Pertanto, se si distribuiscono file con intensa attività di scrittura tra directory, le operazioni sui metadati sono più piccole ed eseguite in parallelo, riducendo la latenza per le app.
Contatori delle prestazioni
ReFS gestisce i contatori delle prestazioni per valutare le prestazioni della parità accelerata con mirroring.
Come descritto in precedenza nella sezione Scrittura in parità, ReFS scriverà direttamente in parità quando non riesce a trovare spazio libero nel mirror. In genere, ciò si verifica quando il livello con mirroring si riempie più velocemente rispetto a ReFS può ruotare i dati in parità. In altre parole, la rotazione ReFS non è in grado di tenere il passo con la velocità di inserimento. I contatori delle prestazioni seguenti identificano quando ReFS scrive direttamente in parità:
# Windows Server 2016 ReFS\Data allocations slow tier/sec ReFS\Metadata allocations slow tier/sec # Windows Server 2019 ReFS\Allocation of Data Clusters on Slow Tier/sec ReFS\Allocation of Metadata Clusters on Slow Tier/sec
Se questi contatori sono diversi da zero, questo indica che ReFS non ruota i dati abbastanza velocemente fuori dal mirror. Per alleviare questo problema, è possibile modificare l'aggressività della rotazione o aumentare le dimensioni del livello con mirroring.
Aggressività di rotazione
ReFS inizia a ruotare i dati dopo che il mirror ha raggiunto una soglia di capacità specificata.
- I valori più elevati di questa soglia di rotazione causano la conservazione dei dati nel livello mirror più a lungo. Lasciare i dati ad accesso frequente nel livello mirror è ottimale per le prestazioni, ma ReFS non sarà in grado di gestire in modo efficace grandi quantità di operazioni di I/O in ingresso.
- I valori inferiori consentono a ReFS di smaltire in modo proattivo i dati e di inserire meglio I/O in ingresso. Ciò è applicabile ai carichi di lavoro con un numero elevato di inserimenti, ad esempio l'archiviazione. Valori inferiori, tuttavia, potrebbero compromettere le prestazioni per i carichi di lavoro per utilizzo generico. La rotazione inutile dei dati dal livello mirror comporta una riduzione delle prestazioni.
ReFS introduce un parametro ottimizzabile per regolare questa soglia, configurabile tramite una chiave del Registro di sistema. Questa chiave del Registro di sistema deve essere configurata in ogni nodo in una distribuzione di Spazi di archiviazione diretta e, per rendere effettive le modifiche, è necessario un riavvio.
- Key: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Policies
- ValueName (DWORD): DataDestageSsdFillRatioThreshold
- ValueType: Percentage
Se questa chiave del Registro di sistema non è impostata, ReFS userà un valore predefinito pari all'85%. Questo valore predefinito è consigliato per la maggior parte delle distribuzioni e i valori inferiori al 50% non sono consigliati. Il comando di PowerShell seguente illustra come impostare questa chiave del Registro di sistema con un valore pari al 75%:
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Policies -Name DataDestageSsdFillRatioThreshold -Value 75
Per configurare questa chiave del Registro di sistema in ogni nodo in una distribuzione di Spazi di archiviazione diretta, è possibile usare il comando di PowerShell seguente:
$Nodes = 'S2D-01', 'S2D-02', 'S2D-03', 'S2D-04'
Invoke-Command $Nodes {Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Policies -Name DataDestageSsdFillRatioThreshold -Value 75}
Aumento delle dimensioni del livello con mirroring
L'aumento delle dimensioni del livello con mirroring consente a ReFS di mantenere una parte più grande del working set nel mirror. Ciò migliora la probabilità che ReFS possa scrivere direttamente nel mirror, che consentirà di ottenere prestazioni migliori. I cmdlet di PowerShell seguenti illustrano come aumentare le dimensioni del livello con mirroring:
Resize-StorageTier -FriendlyName "Performance" -Size 20GB
Resize-StorageTier -InputObject (Get-StorageTier -FriendlyName "Performance") -Size 20GB
Suggerimento
Assicurarsi di ridimensionare Partizione e Volume dopo aver ridimensionato StorageTier. Per altre informazioni ed esempi, vedere Estendere i volumi.
Creazione di un volume di parità con accelerazione mirror
Il cmdlet di PowerShell seguente crea un volume di parità con accelerazione mirror con un rapporto Mirror:Parity di 20:80, che è la configurazione consigliata per la maggior parte dei carichi di lavoro. Per altre informazioni ed esempi, vedere Creazione di volumi in Spazi di archiviazione diretta.
New-Volume -FriendlyName "TestVolume" -FileSystem CSVFS_ReFS -StoragePoolFriendlyName "StoragePoolName" -StorageTierFriendlyNames Performance, Capacity -StorageTierSizes 200GB, 800GB