Förstå cacheminnet för lagringspoolen
Gäller för: Azure Stack HCI, versionerna 22H2 och 21H2; Windows Server 2022, Windows Server 2019
Viktigt!
Azure Stack HCI är nu en del av Azure Local. Namnbytet av produktdokumentation pågår. Äldre versioner av Azure Stack HCI, till exempel 22H2, fortsätter dock att referera till Azure Stack HCI och återspeglar inte namnändringen. Läs mer.
Lagringsutrymmen Direct, den grundläggande lagringsvirtualiseringstekniken bakom Azure Stack HCI och Windows Server, har en inbyggd cache på serversidan för att maximera lagringsprestandan samtidigt som kostnaderna minskar. 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
Lagringsutrymmen Direct fungerar för närvarande med fyra typer av enheter:
Typ av enhet | beskrivning |
---|---|
PMem refererar till beständigt minne, en ny typ av låg svarstid och lagring med höga prestanda. | |
NVMe (Non-Volatile Memory Express) refererar till solid state-enheter som sitter direkt på PCIe-bussen. Vanliga formfaktorer är 2,5" U.2, PCIe Add-In-Card (AIC) och M.2. NVMe erbjuder högre IOPS- och I/O-dataflöde med lägre svarstid än någon annan typ av enhet som vi stöder idag förutom PMem. | |
SSD refererar till solid state-enheter som ansluter via konventionell SATA eller SAS. | |
HDD avser rotationskraft, magnetiska hårddiskar, som erbjuder stor lagringskapacitet till en låg kostnad. |
Dessa kan kombineras på olika sätt, vilket vi grupperar i två kategorier: "all-flash" och "hybrid". Distributioner med alla HDD stöds inte.
Kommentar
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.
Hybriddistributionsmöjligheter
Hybriddistributioner syftar till att balansera prestanda och kapacitet eller maximera kapaciteten och inkluderar HDD.
Kommentar
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 lagringstyp som stöds för en enskild server.
Cacheenheter väljs automatiskt
I distributioner med flera typer av enheter använder Lagringsutrymmen Direct 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.
Om du till exempel har NVMe och SSD cachelagrar NVMe för SSD:erna.
Om du har SSD:er och hårddiskar cachelagrar SSD:erna för hårddiskarna.
Kommentar
Cacheenheter bidrar inte med användbar lagringskapacitet till klustret. Alla data som lagras i cacheminnet lagras också någon annanstans, eller när de har avfasningsfasen. Det innebär att den totala rålagringskapaciteten för klustret endast är summan av dina kapacitetsenheter.
När alla enheter är av samma typ konfigureras ingen cache automatiskt. Du har möjlighet att manuellt konfigurera enheter med högre uthållighet för cachelagring för enheter med lägre uthållighet av samma typ – se avsnittet Manuell konfiguration för att lära dig hur.
Dricks
I vissa fall är det inte meningsfullt att använda lagringspoolens cacheminne. I all-NVMe- eller all-SSD-distributioner, särskilt i mycket liten skala, kan inga enheter "spenderas" på cachen förbättra lagringseffektiviteten och maximera prestandan. På samma sätt kan små distributioner av fjärr- eller avdelningskontor ha begränsat utrymme för cacheenheter.
Cachebeteende anges automatiskt
Beteendet för cachen bestäms automatiskt baserat på vilka typer av enheter som cachelagras för. 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.
Cachelagring med endast skrivskydd för distributioner med flash
Cachelagring kan användas i ett helt flash-scenario, till exempel genom att använda NVMe som cacheminne för att påskynda prestanda för SSD:er. Vid cachelagring för all-flash-distributioner cachelagras endast skrivningar. Detta minskar slitaget på kapacitetsenheterna eftersom många skrivningar och omskrivningar kan slås samman i cacheminnet och sedan endast avfasas efter behov, vilket minskar den kumulativa trafiken till kapacitetsenheterna och förlänger deras livslängd. Därför rekommenderar vi att du väljer enheter med högre uthållighet och skrivoptimerade enheter för cacheminnet. Kapacitetsenheterna kan rimligen ha lägre skrivtålighet.
Eftersom läsningar inte påverkar blixtens livslängd avsevärt, 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 mellanlagrats). Detta gör att cachen kan ägnas helt åt skrivningar, vilket maximerar dess effektivitet.
Detta resulterar i skrivegenskaper, till exempel svarstid för skrivning, som styrs av cacheenheterna, medan läsegenskaperna styrs av kapacitetsenheterna. Båda är konsekventa, förutsägbara och enhetliga.
Cachelagring av läsning/skrivning för hybriddistributioner
Vid cachelagring för HDD cachelagras både läsningar och skrivningar för att ge flashliknande 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 orsakas av slumpmässig åtkomst till en hårddisk betydande.) Skrivningar cachelagras för att absorbera bursts och, som tidigare, för att sammansejsa skrivningar och återskrivningar och minimera den kumulativa trafiken till kapacitetsenheterna.
Lagringsutrymmen Direct implementerar en algoritm som av-randomiserar skrivningar innan de mellanlagring av dem, 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 hårddiskarna.
Cachelagring i distributioner med NVMe, SSD och HDD
När enheter av alla tre typerna finns tillhandahåller NVMe-enheterna cachelagring för både SSD:erna och HDD:erna. Beteendet är enligt beskrivningen ovan: endast skrivningar cachelagras för SSD:erna och både läsningar och skrivningar cachelagras för hårddiskarna. Cachelagringsbelastningen för hårddiskarna 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 | Skrivskyddad (om den är konfigurerad) |
Alla SSD | Ingen (valfritt: konfigurera manuellt) | SSD | Skrivskyddad (om den är konfigurerad) |
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äs + skrivning 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 den programvarudefinierade Lagringsstacken i Windows 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 verklig 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 Lagringsutrymmen Direct är minst servernivå (vilket innebär att datakopior alltid skrivs till olika servrar, högst en kopia per server), drar data i cacheminnet nytta av samma återhämtning som data som inte finns i cacheminnet.
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 upp 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.
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 cacheenhetsfel
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 visas 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.
Du kan sedan ersätta cacheenheten precis som alla andra enhetsbyten.
Kommentar
Du kan behöva stänga av för att på ett säkert sätt ersätta NVMe som är tilläggskort (AIC) eller M.2-formulärfaktor.
Relation till andra cacheminnen
Det finns flera andra orelaterade cacheminnen i windows programvarudefinierade lagringsstack. 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 ska till exempel inte användas.
Du kan välja att använda CSV-cachen, eller inte – det är upp till dig. Den är aktiverad som standard i Azure Stack HCI, men den 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äscache 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 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 skrivtålighet 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.
Dricks
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:
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 Lagringsutrymmen Direct:
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
Cacheminnet ska vara storleksanpassat för 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 missar i läscachen och skrivningarna måste avlagras mer aggressivt, vilket skadar den övergripande prestandan.
Du kan använda det inbyggda verktyget Prestandaövervakare (PerfMon.exe) i Windows för att kontrollera hastigheten på cachemissar. Mer specifikt kan du jämföra Cache Miss Reads/s från klusterlagringens hybriddiskräknare inställd på den övergripande läs-IOPS för din distribution. Varje "hybriddisk" motsvarar en kapacitetsenhet.
Till exempel resulterar 2 cacheenheter som är bundna till 4 kapacitetsenheter i 4 "Hybrid Disk"-objektinstanser per server.
Det finns ingen universell regel, men om för många läsningar saknar cacheminnet kan det vara understorlek 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: