Förstå cacheminnet för lagringspoolen

Gäller för: Azure Stack HCI, versionerna 21H2 och 20H2; Windows Server 2022, Windows Server 2019

Lagringsdirigering, den grundläggande lagringsvirtualiseringstekniken bakom Azure Stack HCI och Windows Server, har en inbyggd cache på serversidan för att maximera lagringsprestanda och samtidigt minska kostnaderna. Det är en stor, beständig läs- och skrivcache i realtid som konfigureras automatiskt vid distributionen. I de flesta fall krävs ingen manuell hantering alls. Hur cachen fungerar beror på vilka typer av enheter som finns.

Alternativ för enhetstyper och distribution

Lagringsdirigering fungerar för närvarande med fyra typer av enheter:

Typ av enhet Description
PMem PMem refererar till beständigt minne, en ny typ av lagring med låg svarstid och höga prestanda.
NVMe NVMe (Non-Volatile Memory Express) refererar till SSD-enheter som sitter direkt på PCIe-bussen. Vanliga formfaktorer är 2,5 tum U.2, PCIe Add-In-Card (AIC) och M.2. NVMe erbjuder högre IOPS- och I/O-dataflöde med kortare svarstid än någon annan typ av enhet som vi stöder idag förutom PMem.
SSD SSD avser SSD-enheter som ansluter via konventionell SATA eller SAS.
HDD HDD avser roterande, magnetiska hårddiskar, som erbjuder stor lagringskapacitet till en låg kostnad.

Dessa kan kombineras på olika sätt, som vi grupperar i två kategorier: "helt flash" och "hybrid". Distributioner med alla HDD stöds inte.

Anteckning

Den här artikeln beskriver cachekonfigurationer med NVMe, SSD och HDD. Information om hur du använder beständigt minne som cache finns i Förstå och distribuera beständigt minne.

Distributionsmöjligheter för alla flash-program

All-flash-distributioner syftar till att maximera lagringsprestanda och inkluderar inte HDD.

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

Hybriddistributionsmöjligheter

Hybriddistributioner syftar till att balansera prestanda och kapacitet eller maximera kapaciteten och inkluderar HDD.

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.

Anteckning

Hybriddistribution stöds inte i konfiguration av en enskild server. Alla konfigurationer av enkel lagringstyp (till exempel all-NVMe eller all-SSD) är den enda lagringstypen som stöds för en enskild server.

Cacheenheter väljs automatiskt

I distributioner med flera typer av enheter använder Lagringsdirigering automatiskt alla enheter av den snabbaste typen för cachelagring. De återstående enheterna används för kapacitet.

Vilken typ som är "snabbast" bestäms enligt följande hierarki.

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

Om du till exempel har NVMe och SSD cachelagrar NVMe för SSD:erna.

Om du har SSD och HDD cachelagrar SSD:erna för hårddiskarna.

Anteckning

Cacheenheter bidrar inte med användbar lagringskapacitet till klustret. Alla data som lagras i cacheminnet lagras också någon annanstans, eller kommer att vara det när de faser. Det innebär att klustrets totala rålagringskapacitet endast är summan av dina kapacitetsenheter.

När alla enheter är av samma typ konfigureras ingen cache automatiskt. Du kan välja att manuellt konfigurera enheter med högre uthållighet för cachelagring för enheter med lägre uthållighet av samma typ . Mer information finns i avsnittet Manuell konfiguration .

Tips

I vissa fall är det inte meningsfullt att använda lagringspoolens cacheminne. I till exempel all-NVMe- eller all-SSD-distributioner, särskilt i mycket liten skala, kan inga enheter "spenderas" på cache förbättra lagringseffektiviteten och maximera prestandan. På samma sätt kan små distributioner på fjärr- eller avdelningskontor ha begränsat utrymme för cacheenheter.

Cachebeteendet anges automatiskt

Cachens beteende bestäms automatiskt baserat på vilka typer av enheter som cachelagras. När cachelagring för flash-enheter (till exempel NVMe-cachelagring för SSD:er) cachelagras endast skrivningar. När cachelagring för roterande diskenheter (till exempel SSD-cachelagring för HÅRDDISKar) cachelagras både läsningar och skrivningar.

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

Skrivskyddad cachelagring för distributioner med enbart flash

Cachelagring kan användas i ett scenario med enbart flash, till exempel genom att använda NVMe som cacheminne för att påskynda SSD-prestanda. Vid cachelagring för distributioner med enbart flash cachelagras endast skrivningar. Detta minskar slitaget på kapacitetsenheterna eftersom många skrivningar och omskrivningar kan slås samman i cachen och sedan endast mellanlagras efter behov, vilket minskar den kumulativa trafiken till kapacitetsenheterna och utökar livslängden. Därför rekommenderar vi att du väljer skrivoptimerade enheter med högre uthållighet för cachen. Kapacitetsenheterna kan rimligen ha lägre skrivförmåga.

Eftersom läsningar inte avsevärt påverkar livslängden för flash, och eftersom SSD:er allmänt erbjuder låg läsfördröjning, cachelagras inte läsningar: de hanteras direkt från kapacitetsenheterna (förutom när data skrevs så nyligen att de ännu inte har delagrats). Detta gör att cachen kan vara helt dedikerad till skrivningar, vilket maximerar dess effektivitet.

Detta resulterar i skrivegenskaper, till exempel skrivfördröjning, som styrs av cacheenheterna, medan läsegenskaper styrs av kapacitetsenheterna. Båda är konsekventa, förutsägbara och enhetliga.

Cachelagring av läsning/skrivning för hybriddistributioner

När cachelagring för HDD cachelagras både läsningar och skrivningar för att ge flash-liknande svarstid (ofta ~10x bättre) för båda. Läscachen lagrar nyligen och ofta lästa data för snabb åtkomst och för att minimera slumpmässig trafik till hårddiskarna. (På grund av sök- och rotationsfördröjningar är svarstiden och förlorad tid som uppstår vid slumpmässig åtkomst till en hårddisk betydande.) Skrivningar cachelagras för att absorbera bursts och, som tidigare, för att slå samman skrivningar och återskrivningar och minimera den kumulativa trafiken till kapacitetsenheterna.

Lagringsdirigering implementerar en algoritm som av-randomiserar skrivningar innan de mellanlagringen, för att emulera ett I/O-mönster till disk som verkar sekventiellt även när den faktiska I/O som kommer från arbetsbelastningen (till exempel virtuella datorer) är slumpmässig. Detta maximerar IOPS och dataflödet till HDD:erna.

Cachelagring i distributioner med NVMe, SSD och HDD

När det finns enheter av alla tre typerna tillhandahåller NVMe-enheterna cachelagring för både SSD och HDD. Beteendet beskrivs ovan: endast skrivningar cachelagras för SSD:erna och både läsningar och skrivningar cachelagras för hårddiskarna. Cachelagringsbördan för HDD:erna fördelas jämnt mellan cacheenheterna.

Sammanfattning

Den här tabellen sammanfattar vilka enheter som används för cachelagring, vilka som används för kapacitet och vad cachelagringsbeteendet är för varje distributionsmöjlighet.

Distribution Cacheenheter Kapacitetsenheter Cachebeteende (standard)
Alla NVMe Ingen (valfritt: konfigurera manuellt) NVMe Skrivskydd (om det är konfigurerat)
Alla SSD Ingen (valfritt: konfigurera manuellt) SSD Skrivskydd (om det är konfigurerat)
NVMe + SSD NVMe SSD Skrivskyddad
NVMe + HDD NVMe HDD Läsning + skrivning
SSD + HDD SSD HDD Läsning + skrivning
NVMe + SSD + HDD NVMe SSD + HDD Läsa + skriva för HDD, skrivskyddad för SSD

Arkitektur på serversidan

Cachen implementeras på enhetsnivå: enskilda cacheenheter inom en server är bundna till en eller flera kapacitetsenheter på samma server.

Eftersom cacheminnet ligger under resten av Windows programvarudefinierade lagringsstacken behöver den inte heller någon medvetenhet om begrepp som Lagringsutrymmen eller feltolerans. Du kan tänka på det som att skapa "hybrid" (del flash, del disk) enheter som sedan presenteras för operativsystemet. Precis som med en faktisk hybridenhet är realtidsflytten av varma och kalla data mellan de snabbare och långsammare delarna av det fysiska mediet nästan osynlig för utsidan.

Med tanke på att återhämtning i Lagringsdirigering är minst servernivå (vilket innebär att datakopior alltid skrivs till olika servrar, högst en kopia per server), får data i cacheminnet samma återhämtning som data som inte finns i cacheminnet.

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.

När du till exempel använder trevägsspegling skrivs tre kopior av alla data till olika servrar, där de hamnar i cacheminnet. Oavsett om de senare mellanlagras eller inte finns det alltid tre kopior.

Enhetsbindningar är dynamiska

Bindningen mellan cache- och kapacitetsenheter kan ha valfritt förhållande, från 1:1 till 1:12 och senare. Den justeras dynamiskt när enheter läggs till eller tas bort, till exempel vid uppskalning eller efter fel. Det innebär att du kan lägga till cacheenheter eller kapacitetsenheter oberoende av varandra, när du vill.

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

Vi rekommenderar att du gör antalet kapacitetsenheter till en multipel av antalet cacheenheter, för symmetri. Om du till exempel har 4 cacheenheter får du jämnare prestanda med 8 kapacitetsenheter (1:2-förhållande) än med 7 eller 9.

Hantera fel på cacheenhet

När en cacheenhet misslyckas går alla skrivningar som ännu inte har mellanlagrats bort till den lokala servern, vilket innebär att de bara finns på de andra kopiorna (på andra servrar). Precis som efter andra enhetsfel kan och återställer Lagringsutrymmen automatiskt genom att konsultera de överlevande kopiorna.

Under en kort period ser de kapacitetsenheter som var bundna till den förlorade cacheenheten inte felfria. När cachen har ombindats (automatisk) och datareparationen har slutförts (automatisk) fortsätter de att visas som felfria.

Det här scenariot är anledningen till att minst två cacheenheter krävs per server för att bevara prestanda.

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.

Du kan sedan ersätta cacheenheten precis som andra enhetsbyten.

Anteckning

Du kan behöva stänga av för att på ett säkert sätt ersätta NVMe som är Add-In-kort (AIC) eller M.2-formfaktor.

Relation till andra cacheminnen

Det finns flera andra orelaterade cacheminnen i den Windows programvarudefinierade lagringsstacken. Exempel är Lagringsutrymmen cacheminne för tillbakaskrivning och cacheminnet för klusterdelade volymer (CSV).

Med Azure Stack HCI bör Lagringsutrymmen tillbakaskrivningscache inte ändras från standardbeteendet. Parametrar som -WriteCacheSize på cmdleten New-Volume bör till exempel inte användas.

Du kan välja att använda CSV-cachen eller inte – det är upp till dig. Det är aktiverat som standard i Azure Stack HCI, men det står inte i konflikt med cachen som beskrivs i det här avsnittet på något sätt. I vissa scenarier kan det ge värdefulla prestandavinster. Mer information finns i Använda csv-minnesintern läscachen med Azure Stack HCI.

Manuell konfiguration

För de flesta distributioner krävs inte manuell konfiguration. Om du behöver det kan du läsa följande avsnitt.

Om du behöver göra ändringar i cacheenhetsmodellen efter installationen redigerar du dokumentet om Hälsotjänst supportkomponenter enligt beskrivningen i Hälsotjänst översikt.

Ange cacheenhetsmodell

I distributioner där alla enheter är av samma typ, till exempel all-NVMe eller all-SSD-distributioner, konfigureras ingen cache eftersom Windows inte kan särskilja egenskaper som skrivförmåga automatiskt mellan enheter av samma typ.

Om du vill använda enheter med högre uthållighet för att cachelagras för enheter med lägre uthållighet av samma typ kan du ange vilken enhetsmodell som ska användas med parametern -CacheDeviceModel i cmdleten Enable-ClusterS2D . Alla enheter i modellen används för cachelagring.

Tips

Se till att matcha modellsträngen exakt som den visas i utdata från Get-PhysicalDisk.

Exempel

Hämta först en lista över fysiska diskar:

Get-PhysicalDisk | Group Model -NoElement

Här är några exempel på utdata:

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

Ange sedan följande kommando och ange cacheenhetsmodellen:

Enable-ClusterS2D -CacheDeviceModel "FABRIKAM NVME-1710"

Du kan kontrollera att de enheter som du avsåg används för cachelagring genom att köra Get-PhysicalDisk i PowerShell och verifiera att deras användningsegenskap säger "Journal".

Manuella distributionsmöjligheter

Manuell konfiguration möjliggör följande distributionsmöjligheter:

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.

Ange cachebeteende

Det går att åsidosätta standardbeteendet för cachen. Du kan till exempel ställa in den på cacheläsningar även i en all-flash-distribution. Vi avråder från att ändra beteendet om du inte är säker på att standardinställningen inte passar din arbetsbelastning.

Om du vill åsidosätta beteendet använder du cmdleten Set-ClusterStorageSpacesDirect och parametrarna -CacheModeSSD och -CacheModeHDD . Parametern CacheModeSSD anger cachebeteendet vid cachelagring för SSD. Parametern CacheModeHDD anger cachebeteende vid cachelagring för HDD.

Du kan använda Get-ClusterStorageSpacesDirect för att kontrollera att beteendet har angetts.

Exempel

Hämta först inställningarna för Lagringsdirigering:

Get-ClusterStorageSpacesDirect

Här är några exempel på utdata:

CacheModeHDD : ReadWrite
CacheModeSSD : WriteOnly

Gör sedan följande:

Set-ClusterStorageSpacesDirect -CacheModeSSD ReadWrite

Get-ClusterS2D

Här är några exempel på utdata:

CacheModeHDD : ReadWrite
CacheModeSSD : ReadWrite

Ändra storlek på cachen

Cachen bör vara storleksanpassad för att hantera arbetsuppsättningen (de data som aktivt läss eller skrivs vid en viss tidpunkt) för dina program och arbetsbelastningar.

Detta är särskilt viktigt i hybriddistributioner med hårddiskar. Om den aktiva arbetsuppsättningen överskrider cachens storlek, eller om den aktiva arbetsuppsättningen går för snabbt, ökar antalet läscachemissar och skrivningarna måste mellanlagras mer aggressivt, vilket försämrar den övergripande prestandan.

Du kan använda det inbyggda verktyget Prestandaövervakare (PerfMon.exe) i Windows för att kontrollera hastigheten för cachemissar. Mer specifikt kan du jämföra Cache Miss Reads/sek från räknare för kluster Storage hybriddisk inställd på den övergripande läs-IOPS för distributionen. Varje "Hybriddisk" motsvarar en kapacitetsenhet.

Till exempel resulterar 2 cacheenheter som är bundna till 4 kapacitetsenheter i 4 "Hybrid Disk"-objektinstanser per server.

Performance-Monitor

Det finns ingen universell regel, men om för många läsningar saknar cacheminnet kan det vara underdimensionerat och du bör överväga att lägga till cacheenheter för att expandera cacheminnet. Du kan lägga till cacheenheter eller kapacitetsenheter oberoende av varandra när du vill.

Nästa steg

Mer information om lagring finns i även: