Inzicht in de cache van de opslagpool
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 voor en die automatisch wordt geconfigureerd bij het uitrollen. In de meeste gevallen is geen handmatig beheer vereist. Hoe de cache werkt, hangt af van de soorten schijven die aanwezig zijn.
Aandrijvingstypen en implementatie-opties
Storage Spaces Direct werkt momenteel met vier soorten schijven:
Type schijf | 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 form factoren zijn 2,5" U.2, PCIe Add-In-Card (AIC) en M.2. NVMe biedt hogere IOPS- en I/O-doorvoer met lagere latentie dan elk ander type station dat we momenteel 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 Permanente geheugenbegrijpen 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 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 schijven 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-cache voor de SSD's gebruikt.
Als u SSD's en HDD's hebt, dienen de SSD's als cache 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 overgeplaatst zodra dat proces is voltooid. 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 heeft de optie om handmatig schijven met een hogere duurzaamheid te configureren als cache voor schijven met een lagere duurzaamheid van hetzelfde type. Zie de sectie Handmatige configuratie voor meer informatie.
Fooi
In sommige gevallen is het gebruik van de cache van de opslaggroep niet logisch. In all-NVMe- of all-SSD-implementaties, vooral op zeer kleine schaal, kan het hebben van geen schijven die aan cache worden besteed de opslagefficiëntie verbeteren en de prestaties maximaliseren. Op dezelfde manier kunnen kleine externe kantoren of kantoorfilialen beperkte ruimte hebben voor cache-opslagapparaten.
Cachegedrag wordt automatisch ingesteld
Het gedrag van de cache wordt automatisch bepaald op basis van de typen schijven die worden gecached. Bij caching voor flashstations (zoals NVMe-caching voor SSD's), worden alleen schrijfbewerkingen in de cache opgeslagen. Bij caching voor roterende schijfstations (zoals SSD's die worden gebruikt voor het cachen van HDD's) worden zowel lees- als schrijfbewerkingen gecached.
Schrijfgerichte caching 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 herschrijfbewerkingen in de cache kunnen worden gecombineerd en vervolgens alleen indien nodig kunnen worden gedestaged, waardoor het cumulatieve verkeer naar de capaciteitsstations wordt verminderd en de levensduur ervan wordt verlengd. Daarom raden we u aan om schijven met hogere duurzaamheid en schrijfoptimalisatie voor de cache te kiezen. De capaciteitsschijven kunnen redelijkerwijs een lagere schrijfbestendigheid hebben.
Omdat leesbewerkingen niet significant van invloed zijn op de levensduur van flash 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 deze nog niet zijn klaargezet). 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 leesbewerkingen 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 derandomiseert voordat ze worden overgebracht naar permanente opslag, om een IO-patroon naar de schijf te emuleren dat sequentieel lijkt, zelfs wanneer de werkelijke I/O afkomstig 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 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 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 schijven die worden gebruikt voor caching, die worden gebruikt voor capaciteit en het cachinggedrag voor elke implementatiemogelijkheid.
Implementatie | Cache-schijven | Capaciteitsschijven | 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 | harde schijf | Lezen en schrijven |
SSD + HDD | SSD | harde schijf (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 Opslagstack van Windows bevindt, heeft deze geen kennis nodig van concepten zoals Opslagruimten of fouttolerantie. U kunt het beschouwen als het maken van 'hybride' schijven (deels flash, deels schijf) 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 uit de opslag worden gehaald of niet, bestaan er altijd drie kopieën.
Schijfkoppelingen zijn dynamisch
De binding tussen cache- en capaciteitsschijven 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 opschalen of bij storingen. Dit betekent dat u op elk gewenst moment afzonderlijk cachestations of capaciteitsstations kunt toevoegen.
U wordt aangeraden het aantal capaciteitsschijven een veelvoud van het aantal cacheschijven te maken voor de symmetrie. Als u bijvoorbeeld 4 cacheschijven hebt, ervaart u een gelijkere prestatie met 8 capaciteitsschijven (verhouding 1:2) dan met 7 of 9.
Afhandelen van fouten in cache-schijven
Wanneer een cachestation mislukt, gaan schrijfbewerkingen die nog niet zijn gedefaseerd verloren naar de lokale server, wat betekent dat ze alleen bestaan op de andere kopieën (op andere servers). Net als na elke andere schijffout kan Opslagruimte automatisch herstellen door de overlevende kopieën te raadplegen.
Gedurende een korte periode lijken de capaciteitsschijven die aan het verloren cachestation zijn gebonden ongezond. Zodra de cacheherbinding is opgetreden (automatisch) en het herstellen van gegevens is voltooid (automatisch), worden ze weer als in orde weergegeven.
In dit scenario zijn minimaal twee cachestations per server vereist om de prestaties te behouden.
Vervolgens kunt u het cachestation vervangen zoals bij elke andere schijfvervanging.
Notitie
Mogelijk moet u het systeem uitschakelen om NVMe in de vormfactor Add-In-kaart (AIC) of M.2 veilig te vervangen.
Relatie met andere caches
Er zijn verschillende andere niet-gerelateerde caches in de Windows-software-gedefinieerde opslagstack. Voorbeelden hiervan zijn de cache voor write-back van Opslagruimten en de leescache cluster shared volume (CSV) in het geheugen.
Met Azure Stack HCI mag de cache voor write-back van Opslagruimten niet worden gewijzigd 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 conflict is niet van toepassing op 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 HCIvoor 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 Health Service-overzicht.
Cachestationmodel opgeven
In implementaties waarbij alle stations van hetzelfde type zijn, zoals all-NVMe- of all-SSD-implementaties, is er geen cache geconfigureerd omdat Windows geen kenmerken kan onderscheiden, zoals schrijfduur automatisch tussen stations van hetzelfde type.
Als u schijven met een hoger uithoudingsvermogen wilt gebruiken om schijven met een lager uithoudingsvermogen van hetzelfde type in cache op te slaan, kunt u opgeven welk schijfmodel moet worden gebruikt met de -CacheDeviceModel parameter in de Enable-ClusterS2D cmdlet. Alle schijven van dat model worden gebruikt voor het cachen.
Fooi
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 is een voorbeelduitvoer:
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 hebt bedoeld, worden gebruikt voor caching door Get-PhysicalDisk- uit te voeren in PowerShell en te controleren of de eigenschap Usage zegt 'Logboek'.
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 cmdlet Set-ClusterStorageSpacesDirect en de bijbehorende parameters -CacheModeSSD en -CacheModeHDD. De parameter CacheModeSSD stelt het cachegedrag in bij het cachen voor SSD. De parameter CacheModeHDD stelt het cachegedrag in bij het cachen van 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 is een voorbeelduitvoer:
CacheModeHDD : ReadWrite
CacheModeSSD : WriteOnly
Ga vervolgens als volgt te werk:
Set-ClusterStorageSpacesDirect -CacheModeSSD ReadWrite
Get-ClusterS2D
Hier is een voorbeelduitvoer:
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 verschuift, neemt het aantal gemiste leescache-instructies toe en moeten schrijfbewerkingen agressiever worden afgebouwd, 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. Specifiek kunt u de Cache Miss Reads/seconde van de Hybride schijf voor clusteropslag vergelijken met de totale lees-IOPS van uw implementatie. Elke "hybride schijf" vertegenwoordigt één capaciteitsschijf.
Het gebruik van bijvoorbeeld 2 cache-drives die zijn gebonden aan 4 capaciteitsdrives, resulteert in 4 instanties van "Hybride Schijf" per server.
Er is geen universele regel, maar als te veel leesacties de cache missen, wordt deze mogelijk te klein en kunt u overwegen cacheschijven 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: