Dela via


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 PMem refererar till beständigt minne, en ny typ av låg svarstid och lagring med höga prestanda.
NVMe 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 SSD refererar till solid state-enheter som ansluter via konventionell SATA eller SAS.
HDD 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.

Diagram visar all-flash-distributioner, inklusive NVMe för kapacitet, NVMe för cache med SSD för kapacitet och SSD för kapacitet.

Hybriddistributionsmöjligheter

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

Diagram visar hybriddistributioner, inklusive NVMe för cache med HDD för kapacitet, SSD för cache med HDD för kapacitet och NVMe för cache med HDD plus SSD för kapacitet.

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.

Diagram visar disktyper ordnade snabbare till långsammare i den ordning NVMe, SSD, omärkt disk som representerar HDD.

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.

Diagram som jämför cachelagring för all-flash, där skrivningar cachelagras och läsningar inte är, med hybrid, där både läsningar och skrivningar cachelagras.

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.

Diagrammet representerar tre servrar som är kopplade till en trevägsspegling i ett lagringsutrymmeslager, som har åtkomst till ett cachelager med NVMe-enheter som har åtkomst till omärkta kapacitetsenheter.

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.

Animerat diagram visar två NVMe-cacheenheter som dynamiskt mappas till första fyra, sedan sex och sedan åtta kapacitetsenheter.

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.

Animerat diagram visar två SSD-cacheenheter mappade till sex kapacitetsenheter tills en cacheenhet misslyckas, vilket gör att alla sex enheterna mappas till den återstående cacheenheten.

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:

Diagram visar distributionsmöjligheter, inklusive NVMe för både cache och kapacitet, SSD för både cache och kapacitet samt SSD för cache och blandad SSD och HDD för kapacitet.

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.

Prestandaövervakare.

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: