Inzicht in de cache van de opslaggroep

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

Opslagruimten Direct, de basistechnologie voor opslagvirtualisatie achter Azure Stack HCI en Windows Server, beschikt 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 geen enkel handmatig beheer vereist. 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 opslag met lage latentie met hoge prestaties.
NVMe NVMe (Non-Volatile Memory Express) verwijst naar SSD-stations die rechtstreeks op de PCIe-bus zitten. Veelvoorkomende formulierfactoren zijn 2,5"U.2, PCIe Add-In-Card (AIC) en M.2. NVMe biedt een hogere IOPS- en I/O-doorvoer met een lagere latentie dan elk ander type station dat momenteel wordt ondersteund, behalve PMem.
SSD SSD verwijst naar SSD-schijven, die verbinding maken via conventionele SATA of SAS.
HDD HDD verwijst naar roterende, magnetische harde schijven, die een enorme opslagcapaciteit bieden tegen lage kosten.

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

Notitie

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

All-flash-implementatiemogelijkheden

All-flash-implementaties zijn gericht op het maximaliseren van opslagprestaties en bevatten geen HDD.

Diagram toont all-flash-implementaties, waaronder NVMe voor capaciteit, NVMe voor cache met SSD voor capaciteit en SSD voor capaciteit.

Hybride implementatiemogelijkheden

Hybride implementaties zijn gericht op een balans tussen prestaties en capaciteit of het maximaliseren van de capaciteit, en omvatten HDD.

Diagram toont hybride implementaties, waaronder NVMe voor cache met HDD voor capaciteit, SSD voor cache met HDD voor capaciteit en NVMe voor cache met HDD plus SSD voor capaciteit.

Notitie

Hybride implementatie wordt niet ondersteund in configuratie met één server. Alle platte configuraties voor één opslagtype (bijvoorbeeld all-NVMe of all-SSD) zijn 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' is, wordt bepaald op basis van de volgende hiërarchie.

Diagram toont schijftypen die sneller naar langzamer zijn gerangschikt in de volgorde NVMe, SSD, niet-gelabelde schijf die HDD vertegenwoordigt.

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

Als u SSD's en HDD's hebt, worden de HDD's opgeslagen in de cache van 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 opgeslagen zodra ze de fases ongedaan maken. Dit betekent dat de totale onbewerkte opslagcapaciteit van uw cluster de som is van uw capaciteitsstations.

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

Tip

In sommige gevallen heeft het gebruik van de cache van de opslaggroep geen zin. In nvme- of ssd-implementaties, met name op zeer kleine schaal, kan het gebruik van schijven in de cache bijvoorbeeld de efficiëntie van de opslag verbeteren en de prestaties maximaliseren. Op dezelfde manier kunnen kleine implementaties op afstand 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 het opslaan in cache voor flashstations (zoals NVMe-caching voor SSD's), worden alleen schrijfbewerkingen in de cache opgeslagen. Bij het opslaan in cache voor roterende schijfstations (zoals het opslaan van HDD's in de cache van SSD's), worden zowel lees- als schrijfbewerkingen in de cache opgeslagen.

Diagram waarin caching voor all-flash wordt vergeleken, waarbij schrijfbewerkingen in de cache worden opgeslagen en leesbewerkingen niet, met hybride, waarbij zowel lees- als schrijfbewerkingen in de cache worden opgeslagen.

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

Caching kan worden gebruikt in een all-flash-scenario, bijvoorbeeld met behulp van NVMe als cache om de prestaties van SSD's te versnellen. Bij het opslaan in de cache voor all-flash-implementaties worden alleen schrijfbewerkingen in de cache opgeslagen. Dit vermindert de slijtage van de capaciteitsstations, omdat veel schrijf- en herschrijfbewerkingen kunnen worden samengevoegd in de cache en vervolgens alleen indien nodig kunnen worden gedefaseerd, waardoor het cumulatieve verkeer naar de capaciteitsstations wordt verminderd en de levensduur ervan wordt verlengd. Daarom raden we u aan stations met een hogere levensduur en geoptimaliseerde schrijfbewerkingen voor de cache te selecteren. De capaciteitsstations hebben mogelijk een lagere schrijfduur.

Omdat leesbewerkingen geen aanzienlijke invloed hebben op de levensduur van flash en omdat SCHIJVEN universeel lage leeslatentie bieden, worden leesbewerkingen niet in de cache opgeslagen: ze worden rechtstreeks vanuit de capaciteitsstations verwerkt (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 wordt gemaximaliseerd.

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

Lezen/schrijven in cache opslaan voor hybride implementaties

Bij het opslaan in cache voor HDD worden zowel lees- als schrijfbewerkingen in de cache opgeslagen om flash-achtige latentie te bieden (vaak ~10x beter) voor beide. De leescache slaat recent en vaak gelezen gegevens 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 opgelopen door willekeurige toegang tot een HDD aanzienlijk.) Schrijfbewerkingen worden in de cache opgeslagen om bursts te absorberen en, net als voorheen, schrijf- en herschrijfbewerkingen samen te voegen en het cumulatieve verkeer naar de capaciteitsstations te minimaliseren.

Opslagruimten Direct implementeert een algoritme waarmee schrijfbewerkingen ongedaan worden gemaakt voordat ze worden gedefaseerd, om een I/O-patroon naar de schijf te emuleren dat sequentiële lijkt, zelfs wanneer de werkelijke I/O die afkomstig is van de workload (zoals virtuele machines) willekeurig is. Dit maximaliseert de IOPS en doorvoer naar de HDD's.

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 SSD'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, welke worden gebruikt voor capaciteit en wat het cachegedrag 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 en 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 door Windows software gedefinieerde opslagstack bevindt, is er geen kennis van concepten zoals Opslagruimten of fouttolerantie. U kunt het zien als het maken van 'hybride' stations (deels flash, deels schijf) die vervolgens aan het besturingssysteem worden gepresenteerd. Net als bij een echte hybride schijf is de realtime verplaatsing van warme en koude gegevens tussen de snellere en langzamere delen van de fysieke media bijna onzichtbaar voor de buitenkant.

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

Diagram vertegenwoordigt drie servers die zijn gekoppeld door een spiegeling in drie richtingen in een Opslagruimte-laag, die toegang heeft tot een cachelaag van NVMe-stations die toegang hebben tot niet-gelabelde capaciteitsstations.

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 worden gedefaseerd of niet, er zullen 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 onafhankelijk van elkaar cachestations of capaciteitsstations kunt toevoegen, wanneer u maar wilt.

Diagram met animatie toont twee NVMe-cachestations die dynamisch worden toegewezen aan eerst vier, vervolgens zes en vervolgens acht capaciteitsstations.

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

Fouten met cachestations verwerken

Wanneer een cachestation uitvalt, gaan schrijfbewerkingen die nog niet zijn gedefaseerd, verloren op de lokale server, wat betekent dat ze alleen aanwezig zijn op de andere kopieën (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 weergegeven. Zodra de cache opnieuw is gebinding (automatisch) en de gegevensherstel is voltooid (automatisch), worden ze weer weergegeven als in orde.

Dit scenario is de reden waarom er minimaal twee cachestations per server nodig zijn om de prestaties te behouden.

Diagram met animatie toont twee SSD-cachestations die zijn toegewezen aan zes capaciteitsstations totdat één cachestation uitvalt, waardoor alle zes stations worden toegewezen aan het resterende cachestation.

U kunt vervolgens het cachestation vervangen, net zoals elke andere schijfvervanging.

Notitie

Mogelijk moet u uitschakelen om nvme die is Add-In card (AIC) of M.2 formulierfactor veilig te vervangen.

Relatie met andere caches

Er zijn verschillende andere niet-gerelateerde caches in de door Windows software gedefinieerde opslagstack. Voorbeelden hiervan zijn de Opslagruimten write-back-cache en de leescache van csv (Cluster Shared Volume) in het geheugen.

Met Azure Stack HCI mag de Opslagruimten cache voor terugschrijven 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 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 in het geheugen van CSV gebruiken met Azure Stack HCI voor meer informatie.

Handmatige configuratie

Voor de meeste implementaties is handmatige configuratie niet vereist. Als u dit nodig hebt, raadpleegt u de volgende secties.

Als u na de installatie wijzigingen wilt aanbrengen in het model van het cacheapparaat, bewerkt u het document Ondersteuningsonderdelen van Health Service, zoals beschreven in Overzicht van Health Service.

Model van cachestation opgeven

In implementaties waarbij alle stations van hetzelfde type zijn, zoals implementaties van nvme of alle SSD's, is er geen cache geconfigureerd omdat Windows kenmerken zoals schrijfduur niet automatisch kan onderscheiden tussen stations van hetzelfde type.

Als u stations met een hoger weerstandsvermogen wilt gebruiken voor de cache voor stations met een lager weerstandsvermogen 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 het opslaan in de cache.

Tip

Zorg ervoor dat de modeltekenreeks exact overeenkomt 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, waarbij u het model voor het cacheapparaat opgeeft:

Enable-ClusterS2D -CacheDeviceModel "FABRIKAM NVME-1710"

U kunt controleren of de stations die u hebt bedoeld, worden gebruikt voor caching door Get-PhysicalDisk uit te voeren in PowerShell en te controleren of de eigenschap Gebruik'Logboek' bevat.

Mogelijkheden voor handmatige implementatie

Handmatige configuratie maakt de volgende implementatiemogelijkheden mogelijk:

Diagram met implementatiemogelijkheden, waaronder NVMe voor zowel cache als capaciteit, SSD voor zowel cache als capaciteit, en SSD voor cache en gemengde SSD en HDD voor capaciteit.

Cachegedrag instellen

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

Als u het gedrag wilt overschrijven, gebruikt u de cmdlet Set-ClusterStorageSpacesDirect en de bijbehorende parameters -CacheModeSSD en -CacheModeHDD . Met de parameter CacheModeSSD stelt u het cachegedrag in bij het opslaan in de 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 wijzigen

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

Dit is met name belangrijk bij hybride implementaties met harde schijven. Als de actieve werkset de grootte van de cache overschrijdt of als de actieve werkset te snel afdrijft, nemen het aantal ontbrekende leescaches toe en moeten schrijfbewerkingen agressiever 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. U kunt met name de Cache Miss Reads/sec van de teller Voor hybride schijf van clusteropslag vergelijken met de algehele lees-IOPS van uw implementatie. Elke hybride schijf komt overeen met één capaciteitsstation.

2 cachestations die zijn gebonden aan vier capaciteitsstations, resulteert bijvoorbeeld in 4 'Hybrid Disk'-objectexemplaren per server.

Prestatiemeter.

Er is geen universele regel, maar als er te veel leesbewerkingen ontbreken, is de cache 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 aanvullende kennis over opslag: