Inzicht in de cache van de opslaggroep

Van toepassing op: Azure Stack HCI, versies 21H2 en 20H2; Windows Server 2022, Windows Server 2019

Opslagruimten Direct beschikt de basistechnologie voor opslagvirtualisatie achter Azure Stack HCI en Windows Server over een ingebouwde cache aan de serverzijde om de opslagprestaties te maximaliseren en tegelijkertijd de kosten te verlagen. Het is een grote, permanente, realtime lees- en schrijfcache die automatisch wordt geconfigureerd bij de implementatie. In de meeste gevallen is er geen handmatig beheer nodig. Hoe de cache werkt, is afhankelijk van de typen stations die aanwezig zijn.

Stationstypen en implementatieopties

Opslagruimten Direct werkt momenteel met vier typen stations:

Type station Description
PMem PMem verwijst naar permanent geheugen, een nieuw type lage latentie, opslag met hoge prestaties.
NVMe NVMe (Non-Volatile Memory Express) verwijst naar solid-state drives die rechtstreeks op de PCIe-bus zitten. Veelvoorkomende formulierfactoren zijn 2,5" U.2, PCIe-invoegtoepassingskaart (AIC) en M.2. NVMe biedt een hogere IOPS- en I/O-doorvoer met lagere latentie dan elk ander type station dat momenteel wordt ondersteund, behalve PMem.
SSD SSD verwijst naar solid-state drives, die verbinding maken via conventionele SATA of SAS.
HDD HDD verwijst naar roterende, magnetische harde schijfstations, die een enorme opslagcapaciteit bieden tegen lage kosten.

Deze kunnen op verschillende manieren worden gecombineerd, die we groeperen in twee categorieën: 'all-flash' en 'hybride'. Implementaties met alle HDD's worden niet ondersteund.

Notitie

In dit artikel worden cacheconfiguraties beschreven met NVMe, SSD en HDD. Zie Permanente geheugen begrijpen en implementeren voor meer informatie over het gebruik van permanent geheugen als cache.

All-flash implementatiemogelijkheden

All-flash-implementaties zijn bedoeld om de opslagprestaties te maximaliseren en bevatten geen HDD.

Diagram shows all-flash deployments, including NVMe for capacity, NVMe for cache with SSD for capacity, and SSD for capacity.

Hybride implementatiemogelijkheden

Hybride implementaties zijn bedoeld om de prestaties en capaciteit te verdelen of om de capaciteit te maximaliseren, en omvatten hdd's.

Diagram shows hybrid deployments, including NVMe for cache with HDD for capacity, SSD for cache with HDD for capacity, and NVMe for cache with HDD plus SSD for capacity.

Notitie

Hybride implementatie wordt niet ondersteund in de configuratie van één server. Alle configuraties van één opslagtype (bijvoorbeeld all-NVMe of all-SSD) is het enige ondersteunde opslagtype voor één server.

Cachestations worden automatisch geselecteerd

In implementaties met meerdere typen stations gebruikt Opslagruimten Direct automatisch alle stations van het snelste type voor caching. De overige schijven worden gebruikt voor opslagcapaciteit.

Welk type 'snelste' wordt bepaald volgens de volgende hiërarchie.

Diagram shows disk types arranged faster to slower in the order NVMe, SSD, unlabeled disk representing HDD.

Als u bijvoorbeeld NVMe en HD's hebt, wordt de NVMe in de cache opgeslagen voor de HD's.

Als u HDD's en HDD's hebt, worden de HDD's in de cache opgeslagen voor de HDD's.

Notitie

Cachestations dragen geen bruikbare opslagcapaciteit bij aan het cluster. Alle gegevens die in de cache zijn opgeslagen, worden ook elders opgeslagen of worden eenmaal gedefaseerd. Dit betekent dat de totale onbewerkte opslagcapaciteit van uw cluster alleen de som is van uw capaciteitsstations.

Wanneer alle stations van hetzelfde type zijn, wordt er geen cache automatisch geconfigureerd. U hebt de mogelijkheid om stations met een hoger uithoudingsvermogen handmatig te configureren voor cache voor stations met een lager uithoudingsvermogen van hetzelfde type. Zie de sectie Handmatige configuratie voor meer informatie.

Tip

In sommige gevallen is het gebruik van de cache van de opslaggroep niet zinvol. Zo kunnen in all-NVMe- of all-SSD-implementaties, met name op zeer kleine schaal, geen stations 'besteed' aan de cache de opslagefficiëntie verbeteren en de prestaties maximaliseren. Op dezelfde manier kunnen kleine implementaties van externe of filialen beperkte ruimte hebben voor cachestations.

Cachegedrag wordt automatisch ingesteld

Het gedrag van de cache wordt automatisch bepaald op basis van de typen stations waarvoor de cache wordt opgeslagen. Bij caching voor flashstations (zoals NVMe-caching voor SSD's), worden alleen schrijfbewerkingen in de cache opgeslagen. Bij caching voor draaiende schijfstations (zoals HDD's in cache opslaan voor HDD's), worden zowel lees- als schrijfbewerkingen in de cache opgeslagen.

Diagram comparing caching for all-flash, where writes are cached and reads are not, with hybrid, where both reads and writes are cached.

Alleen-schrijven opslaan in cache voor all-flash-implementaties

Caching kan worden gebruikt in een all-flash-scenario, bijvoorbeeld het gebruik van NVMe als cache om de prestaties van INVOEGTOEPASSINGen te versnellen. Bij caching voor all-flash-implementaties worden alleen schrijfbewerkingen in de cache opgeslagen. Dit vermindert de slijtage op de capaciteitsstations omdat veel schrijf- en herschrijfbewerkingen in de cache kunnen worden samengevoegd en vervolgens alleen indien nodig de fase kunnen worden gedefaseerd, waardoor het cumulatieve verkeer naar de capaciteitsstations wordt verminderd en de levensduur ervan wordt verlengd. Daarom raden we u aan om stations met een hoger uithoudingsvermogen te selecteren die zijn geoptimaliseerd voor schrijfbewerkingen voor de cache. De capaciteitsstations kunnen redelijkerwijs een lagere schrijfduur hebben.

Omdat leesbewerkingen de levensduur van flash niet aanzienlijk beïnvloeden en omdat SSD's universeel een lage leeslatentie bieden, worden leesbewerkingen niet in de cache opgeslagen: ze worden rechtstreeks vanaf de capaciteitsstations geleverd (behalve wanneer de gegevens zo recent zijn geschreven dat deze nog niet zijn gedefaseerd). Hierdoor kan de cache volledig worden toegewezen aan schrijfbewerkingen, waardoor de effectiviteit ervan wordt gemaximaliseerd.

Dit resulteert in schrijfkenmerken, zoals schrijflatentie, die worden bepaald door de cachestations, terwijl leeskenmerken worden bepaald door de capaciteitsstations. Beide zijn consistent, voorspelbaar en uniform.

Lees-/schrijfcaching voor hybride implementaties

Bij caching voor HDD worden zowel lees- als schrijfbewerkingen in de cache opgeslagen, om flashachtige latentie (vaak ~10x beter) voor beide te bieden. De leescache slaat onlangs en regelmatig leesgegevens op voor snelle toegang en om willekeurig verkeer naar de HDD's te minimaliseren. (Vanwege zoek- en rotatievertragingen is de latentie en verloren tijd die wordt gemaakt door willekeurige toegang tot een HDD aanzienlijk.) Schrijfbewerkingen worden in de cache opgeslagen om bursts op te nemen en, zoals voorheen, om schrijf- en herschrijfbewerkingen samen te voegen en het cumulatieve verkeer naar de capaciteitsstations te minimaliseren.

Opslagruimten Direct implementeert een algoritme dat schrijfbewerkingen deselecteert voordat ze worden gedefaseerd, om een I/O-patroon naar schijf te emuleren dat sequentieel lijkt, zelfs wanneer de werkelijke I/O afkomstig is van de workload (zoals virtuele machines) willekeurig is. Hierdoor worden de IOPS en doorvoer naar de HDD's gemaximaliseerd.

Caching in implementaties met NVMe, SSD en HDD

Wanneer stations van alle drie de typen aanwezig zijn, bieden de NVMe-stations caching voor zowel de HDD's als de HDD's. Het gedrag is zoals hierboven beschreven: alleen schrijfbewerkingen worden in de cache opgeslagen voor de HDD's, en zowel lees- als schrijfbewerkingen worden opgeslagen in de cache voor de HDD's. De belasting van caching voor de HDD's wordt gelijkmatig verdeeld over de cachestations.

Samenvatting

Deze tabel bevat een overzicht van de stations die worden gebruikt voor caching, die worden gebruikt voor capaciteit en wat het cachinggedrag is voor elke implementatiemogelijkheid.

Implementatie Cachestations Capaciteitsstations Cachegedrag (standaard)
Alle NVMe Geen (optioneel: handmatig configureren) NVMe Alleen-schrijven (indien geconfigureerd)
Alle SSD's Geen (optioneel: handmatig configureren) SSD Alleen-schrijven (indien geconfigureerd)
NVMe + SSD NVMe SSD Alleen-schrijven
NVMe + HDD NVMe HDD Lezen en schrijven
SSD + HDD SSD HDD Lezen en schrijven
NVMe + SSD + HDD NVMe SSD + HDD Lezen + schrijven voor HDD, alleen schrijven voor SSD

Architectuur aan serverzijde

De cache wordt geïmplementeerd op stationsniveau: afzonderlijke cachestations binnen één server zijn gebonden aan een of meer capaciteitsstations binnen dezelfde server.

Omdat de cache zich onder de rest van de Windows door software gedefinieerde opslagstack bevindt, heeft deze geen kennis nodig van concepten zoals Opslagruimten of fouttolerantie. U kunt het zien als het maken van 'hybride' stations (onderdeel flash, deelschijf) die vervolgens worden gepresenteerd aan het besturingssysteem. Net als bij een echte hybride schijf is de realtime verplaatsing van dynamische en koude gegevens tussen de snellere en langzamere delen van de fysieke media bijna onzichtbaar voor de buitenkant.

Gezien de tolerantie in Opslagruimten Direct ten minste serverniveau is (wat betekent dat gegevenskopieën altijd naar verschillende servers worden geschreven; ten hoogste één kopie per server), profiteren gegevens in de cache van dezelfde tolerantie als gegevens die niet in de cache staan.

Diagram represents three servers joined by a three-way mirror in a Storage Space layer, which accesses a cache layer of NVMe drives which access unlabeled capacity drives.

Wanneer u bijvoorbeeld spiegeling in drie richtingen gebruikt, worden drie kopieën van gegevens naar verschillende servers geschreven, waar ze in de cache terechtkomen. Ongeacht of ze later zijn gedefaseerd of niet, zullen er altijd drie kopieën bestaan.

Stationsbindingen zijn dynamisch

De binding tussen cache- en capaciteitsstations kan elke verhouding hebben, van 1:1 tot 1:12 en hoger. Het wordt dynamisch aangepast wanneer stations worden toegevoegd of verwijderd, zoals bij het omhoog schalen of na fouten. Dit betekent dat u op elk gewenst moment onafhankelijk cachestations of capaciteitsstations kunt toevoegen.

Animated diagram shows two NVMe cache drives dynamically mapping to first four, then six, then eight capacity drives.

We raden u aan om het aantal capaciteitsstations een veelvoud van het aantal cachestations te maken voor symmetrie. Als u bijvoorbeeld 4 cachestations hebt, zult u meer prestaties ervaren met 8 capaciteitsstations (verhouding 1:2) dan met 7 of 9.

Fouten met cachestations afhandelen

Wanneer een cachestation uitvalt, gaan schrijfbewerkingen die nog niet zijn gedefaseerd verloren aan de lokale server, wat betekent dat ze alleen op de andere kopieën bestaan (op andere servers). Net als na elke andere schijffout kan Opslagruimten automatisch herstellen door de overlevende kopieën te raadplegen.

Gedurende een korte periode worden de capaciteitsstations die zijn gebonden aan het verloren cachestation, beschadigd. Zodra de cacheherbinding is opgetreden (automatisch) en het herstellen van gegevens is voltooid (automatisch), worden ze weer weergegeven als in orde.

In dit scenario zijn ten minste twee cachestations per server vereist om de prestaties te behouden.

Animated diagram shows two SSD cache drives mapped to six capacity drives until one cache drive fails, which causes all six drives to be mapped to the remaining cache drive.

Vervolgens kunt u het cachestation vervangen, net als elke andere schijfvervanging.

Notitie

Mogelijk moet u de NVMe die is Add-In Card (AIC) of M.2-formulierfactor veilig vervangen.

Relatie met andere caches

Er zijn verschillende andere niet-gerelateerde caches in de Windows software-gedefinieerde opslagstack. Voorbeelden hiervan zijn de Opslagruimten write-back-cache en de leescache cluster shared volume (CSV).

Met Azure Stack HCI mag de Opslagruimten cache voor write-back niet worden gewijzigd op basis van het standaardgedrag. Parameters zoals -WriteCacheSize op de cmdlet New-Volume mogen bijvoorbeeld niet worden gebruikt.

U kunt ervoor kiezen om de CSV-cache te gebruiken of niet. Dit is aan u. Deze is standaard ingeschakeld in Azure Stack HCI, maar het conflicteert op geen enkele manier met de cache die in dit onderwerp wordt beschreven. In bepaalde scenario's kan dit waardevolle prestatieverbeteringen opleveren. Zie De leescache van csv in het geheugen gebruiken met Azure Stack HCI voor meer informatie.

Handmatige configuratie

Voor de meeste implementaties is handmatige configuratie niet vereist. Zie de volgende secties voor het geval u dit nodig hebt.

Als u na de installatie wijzigingen wilt aanbrengen in het cacheapparaatmodel, bewerkt u het document ondersteuningsonderdelen van de Health Service, zoals beschreven in Health Service overzicht.

Cachestationmodel opgeven

In implementaties waarbij alle stations van hetzelfde type zijn, zoals all-NVMe- of all-SSD-implementaties, wordt er geen cache geconfigureerd omdat Windows geen kenmerken zoals schrijfduur automatisch kan onderscheiden tussen stations van hetzelfde type.

Als u stations met een hoger uithoudingsvermogen wilt gebruiken om te cachen voor stations met een lager uithoudingsvermogen van hetzelfde type, kunt u opgeven welk stationsmodel moet worden gebruikt met de parameter -CacheDeviceModel van de cmdlet Enable-ClusterS2D . Alle stations van dat model worden gebruikt voor caching.

Tip

Zorg ervoor dat deze exact overeenkomt met de modeltekenreeks zoals deze wordt weergegeven in de uitvoer van Get-PhysicalDisk.

Voorbeeld

Haal eerst een lijst met fysieke schijven op:

Get-PhysicalDisk | Group Model -NoElement

Hier volgt een voorbeeld van uitvoer:

Count Name
----- ----
    8 FABRIKAM NVME-1710
   16 CONTOSO NVME-1520

Voer vervolgens de volgende opdracht in en geef het cacheapparaatmodel op:

Enable-ClusterS2D -CacheDeviceModel "FABRIKAM NVME-1710"

U kunt controleren of de stations die u bedoelde, worden gebruikt voor caching door Get-PhysicalDisk uit te voeren in PowerShell en te controleren of hun gebruikseigenschap'Logboek' bevat.

Handmatige implementatiemogelijkheden

Handmatige configuratie maakt de volgende implementatiemogelijkheden mogelijk:

Diagram shows deployment possibilities, including NVMe for both cache and capacity, SSD for both cache and capacity, and SSD for cache and mixed SSD and HDD for capacity.

Cachegedrag instellen

Het is mogelijk om het standaardgedrag van de cache te overschrijven. U kunt deze bijvoorbeeld instellen op leesbewerkingen in de cache, zelfs in een all-flash-implementatie. We raden u af het gedrag te wijzigen, tenzij u zeker weet dat de standaardinstelling niet past bij uw workload.

Gebruik de cmdlet Set-ClusterStorageSpacesDirect en de parameters -CacheModeSSD en -CacheModeHDD om het gedrag te overschrijven. De parameter CacheModeSSD stelt het cachegedrag in bij het opslaan in cache voor SSD. Met de parameter CacheModeHDD wordt cachegedrag ingesteld bij het opslaan in cache voor HDD.

U kunt Get-ClusterStorageSpacesDirect gebruiken om te controleren of het gedrag is ingesteld.

Voorbeeld

Haal eerst de Opslagruimten Direct-instellingen op:

Get-ClusterStorageSpacesDirect

Hier volgt een voorbeeld van uitvoer:

CacheModeHDD : ReadWrite
CacheModeSSD : WriteOnly

Ga als volgt verder:

Set-ClusterStorageSpacesDirect -CacheModeSSD ReadWrite

Get-ClusterS2D

Hier volgt een voorbeeld van uitvoer:

CacheModeHDD : ReadWrite
CacheModeSSD : ReadWrite

De grootte van de cache aanpassen

De cache moet worden aangepast aan de werkset (de gegevens die op elk gewenst moment actief worden gelezen of geschreven) van uw toepassingen en workloads.

Dit is vooral belangrijk bij hybride implementaties met harde schijven. Als de actieve werkset groter is dan de grootte van de cache of als de actieve werkset te snel afdrijdt, nemen leescachemissers toe en moeten schrijfbewerkingen agressief worden gedefaseerd, wat de algehele prestaties nadelig beïnvloedt.

U kunt het ingebouwde hulpprogramma Prestatiemeter (PerfMon.exe) in Windows gebruiken om de snelheid van cachemissers te controleren. In het bijzonder kunt u de Cache Miss Reads/sec vergelijken van het cluster Storage Hybrid Disk-teller ingesteld op de algemene lees-IOPS van uw implementatie. Elke hybride schijf komt overeen met één capaciteitsstation.

Twee cachestations die zijn gebonden aan 4 capaciteitsstations, resulteert bijvoorbeeld in 4 exemplaren van hybride schijven per server.

Performance-Monitor

Er is geen universele regel, maar als er te veel leesbewerkingen ontbreken in de cache, is deze mogelijk te klein en kunt u overwegen om cachestations toe te voegen om uw cache uit te breiden. U kunt op elk gewenst moment afzonderlijk cachestations of capaciteitsstations toevoegen.

Volgende stappen

Zie ook voor meer informatie over opslag: