Inzicht in de cache van de opslaggroep
Van toepassing op: Azure Stack HCI, versies 22H2 en 21H2; Windows Server 2022, Windows Server 2019
Belangrijk
Azure Stack HCI maakt nu deel uit van Azure Local. De naam van productdocumentatie wordt nog steeds bijgewerkt. Oudere versies van Azure Stack HCI, bijvoorbeeld 22H2, blijven verwijzen naar Azure Stack HCI en geven de naamwijziging niet weer. Meer informatie.
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 geen 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 | Beschrijving |
---|---|
PMem verwijst naar permanent geheugen, een nieuw type lage latentie, opslag met hoge prestaties. | |
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 hogere IOPS- en I/O-doorvoer met lagere latentie dan elk ander type station dat we vandaag ondersteunen, behalve PMem. | |
SSD verwijst naar solid-state drives, die verbinding maken via conventionele SATA of SAS. | |
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 behandeld met NVMe, SSD en HDD. Zie Permanent geheugen begrijpen en implementeren voor informatie over het gebruik van permanent geheugen als cache.
All-flash implementatiemogelijkheden
All-flash-implementaties zijn gericht op het maximaliseren van de opslagprestaties en bevatten geen HDD.
Mogelijkheden voor hybride implementatie
Hybride implementaties streven ernaar om de prestaties en capaciteit te verdelen of om de capaciteit te maximaliseren, en omvatten HDD.
Notitie
Hybride implementatie wordt niet ondersteund in de configuratie van één server. Alle configuraties van éé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 resterende stations worden gebruikt voor capaciteit.
Welk type 'snelste' wordt bepaald volgens de volgende hiërarchie.
Als u bijvoorbeeld NVMe en SSD'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 ergens anders 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 logisch. In all-NVMe- of all-SSD-implementaties, met name op zeer kleine schaal, kan het gebruik van schijven in de cache de opslagefficiëntie verbeteren en de prestaties maximaliseren. Op dezelfde manier kunnen kleine externe implementaties 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 SSD's opslaan in cache voor HDD's), worden zowel lees- als schrijfbewerkingen in de cache opgeslagen.
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 SSD's te versnellen. Bij caching voor all-flash-implementaties worden alleen schrijfbewerkingen in de cache opgeslagen. Dit vermindert de slijtage van de capaciteitsstations omdat veel schrijf- en schrijfbewerkingen 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 schijven met een hoger uithoudingsvermogen, geoptimaliseerd voor schrijfbewerkingen voor de cache te selecteren. De capaciteitsstations kunnen redelijkerwijs een lagere schrijfduur hebben.
Omdat leesbewerkingen de levensduur van flash niet aanzienlijk beïnvloeden en omdat SSD's universeel 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 ze 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.
Cache voor lezen/schrijven 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 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 gemaakt door willekeurige toegang tot een HDD aanzienlijk.) Schrijfbewerkingen worden in de cache opgeslagen om bursts te absorberen 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 IO-patroon naar de schijf te emuleren, zelfs wanneer de werkelijke I/O die afkomstig is van de werkbelasting (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 in de cache opgeslagen 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 cachegedrag is voor elke implementatiemogelijkheid.
Implementatie | Cachestations | Capaciteitsstations | Cachegedrag (standaard) |
---|---|---|---|
Alle NVMe's | 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 software gedefinieerde Windows-opslagstack bevindt, heeft deze geen kennis nodig van concepten zoals Opslagruimten of fouttolerantie. U kunt het beschouwen als het maken van 'hybride' stations (onderdeel flash, onderdeelschijf) die vervolgens aan het besturingssysteem worden gepresenteerd. Net als bij een echte hybride schijf is de realtime verplaatsing van hete en koude gegevens tussen de snellere en langzamere delen van de fysieke media bijna onzichtbaar voor de buitenkant.
Aangezien 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.
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 afzonderlijk cachestations of capaciteitsstations kunt toevoegen.
U wordt aangeraden 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 in cachestations afhandelen
Wanneer een cachestation uitvalt, gaan schrijfbewerkingen die nog niet zijn gedefaseerd verloren aan de lokale server, wat betekent dat ze alleen bestaan 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 opnieuwbinding heeft plaatsgevonden (automatisch) en het herstellen van gegevens is voltooid (automatisch), worden ze weer weergegeven als in orde.
In dit scenario zijn minimaal twee cachestations per server vereist om de prestaties te behouden.
Vervolgens kunt u het cachestation vervangen net als elke andere stationsvervanging.
Notitie
Mogelijk moet u inschakelen om NVMe die is invoegtoepassingskaart (AIC) of M.2-formulierfactor veilig te vervangen.
Relatie met andere caches
Er zijn verschillende andere niet-gerelateerde caches in de Windows-software-gedefinieerde opslagstack. Voorbeelden hiervan zijn de Opslagruimten cache voor write-back en de leescache cluster shared volume (CSV) in het geheugen.
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 niet 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 met ondersteuningsonderdelen van Health Service, zoals beschreven in het overzicht van Health Service.
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 kan onderscheiden, zoals schrijfduur, automatisch tussen stations van hetzelfde type.
Als u stations met een hoger uithoudingsvermogen wilt gebruiken voor cache 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 de modeltekenreeks exact overeenkomt zoals deze wordt weergegeven in de uitvoer van Get-PhysicalDisk.
Opmerking
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 de eigenschap Gebruik de tekst 'Logboek' bevat.
Mogelijkheden voor handmatige implementatie
Handmatige configuratie maakt de volgende implementatiemogelijkheden mogelijk:
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 om het gedrag te wijzigen, tenzij u zeker weet dat de standaardinstelling niet past bij uw workload.
Als u het gedrag wilt overschrijven, gebruikt u de cmdlet Set-ClusterStorageSpacesDirect en de parameters -CacheModeSSD en -CacheModeHDD . De parameter CacheModeSSD stelt het cachegedrag in bij het opslaan in cache voor SSD. De parameter CacheModeHDD stelt cachegedrag in bij het opslaan in cache voor HDD.
U kunt Get-ClusterStorageSpacesDirect gebruiken om te controleren of het gedrag is ingesteld.
Opmerking
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 een bepaald moment actief worden gelezen of geschreven) van uw toepassingen en workloads.
Dit is vooral belangrijk in 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. U kunt met name de cache miss reads/sec vergelijken met de teller voor hybride schijfclusteropslag die is ingesteld op de algemene lees-IOPS van uw implementatie. Elke hybride schijf komt overeen met één capaciteitsstation.
2 cachestations die zijn gebonden aan 4 capaciteitsstations, resulteert bijvoorbeeld in 4 exemplaren van hybride schijven per server.
Er is geen universele regel, maar als er te veel leesbewerkingen ontbreken in de cache, is deze mogelijk te klein en kunt u overwegen 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: