Zrozumienie pamięci podręcznej puli pamięci
Dotyczy: Azure Stack HCI, wersje 22H2 i 21H2; Windows Server 2022, Windows Server 2019
Storage Spaces Direct, podstawowa technologia wirtualizacji storage oparta na rozwiązaniach Azure Stack HCI i Windows Server, oferuje wbudowaną pamięć podręczną po stronie serwera w celu zmaksymalizowania wydajności przy jednoczesnym zmniejszeniu kosztów. Jest to duża, trwała, pamięć podręczna odczytu i zapisu w czasie rzeczywistym, która jest konfigurowana automatycznie podczas wdrażania. W większości przypadków nie jest wymagane żadne ręczne zarządzanie. Sposób działania pamięci podręcznej zależy od typów obecnych dysków.
Typy dysków i opcje wdrażania
Funkcja Bezpośrednie miejsca do magazynowania obecnie współpracuje z czterema typami dysków:
Typ dysku | Opis |
---|---|
![]() |
PMem odnosi się do pamięci trwałej, nowego typu pamięci masowej o małych opóźnieniach i wysokiej wydajności. |
![]() |
NVMe (Non-Volatile Memory Express) odnosi się do dysków półprzewodnikowych, które znajdują się bezpośrednio w magistrali PCIe. Typowe formaty to „2,5” U.2, PCIe Add-In-Card (AIC) i M.2. NVMe oferuje wyższą przepływność operacji we/wy i mniejsze opóźnienia niż jakikolwiek inny obsługiwany przez nas obecnie typ dysku, z wyjątkiem PMem. |
![]() |
SSD odnosi się do dysków półprzewodnikowych, które łączą się za pośrednictwem konwencjonalnego dysku SATA lub SAS. |
HDD | hdd odnosi się do obrotowych, magnetycznych dysków twardych, które oferują ogromną pojemność przy niskim koszcie. |
Można je łączyć na różne sposoby, które grupujemy w dwie kategorie: "all-flash" i "hybrid". Wdrożenia ze wszystkimi dyskami HDD nie są obsługiwane.
Notatka
W tym artykule opisano konfiguracje pamięci podręcznej z dyskami NVMe, SSD i HDD. Aby uzyskać informacje na temat używania pamięci trwałej jako pamięci podręcznej, zobacz Opis i wdrażanie pamięci trwałej.
Możliwości wdrażania wyłącznie z pamięcią flash
Wdrożenia all-flash mają na celu zmaksymalizowanie wydajności pamięci masowej i nie obejmują dysków HDD.
Możliwości wdrożenia hybrydowego
Wdrożenia hybrydowe mają na celu zrównoważenie wydajności i pojemności lub zmaksymalizowanie pojemności i dołączenie dysku TWARDEgo.
Notatka
Wdrożenie hybrydowe nie jest obsługiwane w konfiguracji pojedynczego serwera. Wszystkie płaskie konfiguracje typu pojedynczego magazynu (na przykład all-NVMe lub all-SSD) są jedynym obsługiwanym typem magazynu dla pojedynczego serwera.
Dyski pamięci podręcznej są wybierane automatycznie
We wdrożeniach z wieloma typami dysków, Storage Spaces Direct automatycznie wykorzystuje wszystkie dyski najszybszego typu do buforowania. Pozostałe dyski są wykorzystywane do zwiększenia pojemności.
Typ "najszybszy" jest określany zgodnie z następującą hierarchią.
Na przykład, jeśli masz dyski NVMe i SSD, to NVMe działa jako pamięć podręczna dla dysków SSD.
Jeśli masz dyski SSD i HDD, to SSD działają jako pamięć podręczna dla HDD.
Notatka
Dyski pamięci podręcznej nie dostarczają użytecznej pojemności magazynowej w klastrze. Wszystkie dane przechowywane w pamięci podręcznej są również przechowywane w innym miejscu lub zostaną usunięte. Oznacza to, że łączna nieprzetworzona pojemność magazynu klastra jest sumą tylko dysków pojemności.
Jeśli wszystkie dyski są tego samego typu, żadna pamięć podręczna nie jest konfigurowana automatycznie. Masz możliwość ręcznej konfiguracji dysków o większej wytrzymałości w celu buforowania dla dysków o mniejszej wytrzymałości tego samego typu — zobacz sekcję Ręczna konfiguracja, aby dowiedzieć się, jak to zrobić.
Napiwek
W niektórych przypadkach użycie pamięci podręcznej puli pamięci masowej nie ma sensu. Na przykład we wdrożeniach all-NVMe lub all-SSD, zwłaszcza w bardzo małej skali, brak dysków "wydanych" w pamięci podręcznej może zwiększyć efektywność przechowywania i zmaksymalizować osiągi. Podobnie, małe wdrożenia w zdalnych lub oddziałowych biurach mogą mieć ograniczone miejsce na dyski cache'owe.
Zachowanie pamięci podręcznej jest ustawiane automatycznie
Zachowanie pamięci podręcznej jest określane automatycznie na podstawie typów dysków, które są buforowane. Buforowanie dysków flash (takich jak buforowanie NVMe dla dysków SSD) powoduje buforowanie tylko zapisów. W przypadku buforowania obrotowych dysków (takich jak buforowanie dysków SSD dla dysków HDD) buforowane są zarówno operacje odczytu, jak i zapisu.
Buforowanie tylko do zapisu dla wdrożeń all-flash
Buforowanie może być stosowane w scenariuszu all-flash, na przykład przez użycie NVMe jako pamięci podręcznej dla przyspieszenia wydajności dysków SSD. Podczas buforowania dla wszystkich wdrożeń opartych na technologii flash buforowane są tylko operacje zapisu. Zmniejsza to zużycie dysków pojemnościowych, ponieważ wiele zapisów może się kumulować w pamięci podręcznej i dopiero wtedy być przenoszone w razie potrzeby, co zmniejsza skumulowany ruch danych do dysków pojemnościowych i wydłuża ich żywotność. Z tego powodu zalecamy wybranie dysków o wysokiej wytrzymałości i zoptymalizowanych pod kątem zapisu jako pamięci podręcznej. Dyski o dużej pojemności mogą mieć niższą, ale uzasadnioną wytrzymałość zapisu.
Ponieważ operacje odczytu nie wpływają znacząco na żywotność pamięci flash, a dyski SSD powszechnie oferują małe opóźnienia odczytu, operacje odczytu nie są buforowane: są one obsługiwane bezpośrednio z dysków pojemności (z wyjątkiem sytuacji, gdy dane zostały zapisane tak niedawno, że nie zostały jeszcze usunięte). Dzięki temu pamięć podręczna może być przeznaczona całkowicie na zapis, maksymalizując skuteczność tej pamięci.
Powoduje to, że właściwości zapisu, takie jak opóźnienie zapisu, są dyktowane przez dyski pamięci podręcznej, podczas gdy właściwości odczytu są dyktowane przez dyski pojemności. Oba są spójne, przewidywalne i jednolite.
Buforowanie odczytu/zapisu dla wdrożeń hybrydowych
W przypadku buforowania dysków HDD zarówno odczyty , jak i zapisy są buforowane, aby zapewnić opóźnienie podobne do flash (często ok. 10x lepsze) dla obu tych operacji. Pamięć podręczna odczytu przechowuje ostatnio i często odczytywane dane w celu uzyskania szybkiego dostępu i zminimalizowania losowego ruchu do dysków HDD. Ze względu na opóźnienia wyszukiwania i rotacji, opóźnienia oraz utrata czasu związane z losowym dostępem do dysku twardego są znaczne. Zapisy są buforowane w celu absorbowania zwiększonych obciążeń i, jak wcześniej, łączenia oraz reorganizacji zapisów, minimalizując łączny ruch na dyskach pojemnościowych.
Funkcja Bezpośrednie miejsca do magazynowania implementuje algorytm, który derandomizuje zapisy przed ich wycofaniem, aby emulować wzorzec we/wy na dysk, który wydaje się sekwencyjny, nawet jeśli rzeczywiste operacje we/wy pochodzące z obciążenia (takie jak maszyny wirtualne) są losowe. Pozwala to zmaksymalizować liczbę operacji we/wy na sekundę i przepływność do dysków HDD.
Pamięciowanie w ramach wdrożeń z użyciem dysków NVMe, SSD i HDD
Gdy dyski wszystkich trzech typów są obecne, dyski NVMe zapewniają buforowanie zarówno dla dysków SSD, jak i hdd. Zachowanie jest tak jak opisano powyżej: tylko zapisy są buforowane dla dysków SSD, a zarówno odczyty, jak i zapisy są buforowane dla dysków HDD. Obciążenie związane z buforowaniem dysków HDD jest równomiernie rozkładane pomiędzy dyski pamięci podręcznej.
Streszczenie
W tej tabeli przedstawiono podsumowanie dysków używanych do buforowania, które są używane do obsługi pojemności oraz jakie jest zachowanie buforowania dla każdej możliwości wdrożenia.
Wdrażania | Dyski pamięci podręcznej | Dyski o dużej pojemności | Zachowanie pamięci podręcznej (domyślne) |
---|---|---|---|
Wszystkie nvme | Brak (opcjonalnie: ręczne konfigurowanie) | NvMe | Tylko zapis (jeśli jest skonfigurowany) |
Wszystkie dyski SSD | Brak (opcjonalnie: ręczne konfigurowanie) | SSD | Tylko zapis (jeśli jest skonfigurowany) |
NVMe + SSD | NvMe | SSD | Tylko zapis |
NVMe + HDD | NvMe | HDD | Odczyt i zapis |
SSD + HDD | SSD | HDD | Odczyt i zapis |
NVMe + SSD + HDD | NvMe | SSD + HDD | Odczyt i zapis dla dysków HDD, tylko do zapisu dla dysków SSD |
Architektura po stronie serwera
Pamięć podręczna jest implementowana na poziomie dysku: poszczególne dyski pamięci podręcznej na jednym serwerze są powiązane z jednym lub wieloma dyskami pojemności na tym samym serwerze.
Ponieważ pamięć podręczna znajduje się poniżej pozostałej części stosu pamięci masowej definiowanej programowo w systemie Windows, nie jest świadoma ani nie potrzebuje świadomości pojęć, takich jak Storage Spaces czy odporność na uszkodzenia. Można o tym myśleć jako o tworzeniu "hybrydowych" (część flash, część dysku) dysków, które następnie są prezentowane systemowi operacyjnemu. Podobnie jak w przypadku napędu hybrydowego, ruch danych gorących i zimnych w czasie rzeczywistym między szybszymi i wolniejszymi częściami nośnika fizycznego jest prawie niewidoczny z zewnątrz.
Ponieważ niezawodność w Storage Spaces Direct jest co najmniej na poziomie serwera (co oznacza, że kopie danych są zawsze zapisywane na różnych serwerach; maksymalnie jedna kopia na serwer), dane w pamięci podręcznej korzystają z tej samej niezawodności co dane spoza pamięci podręcznej.
Na przykład w przypadku korzystania z dublowania trójstopniowego trzy kopie danych są zapisywane na różnych serwerach, na których znajdują się w pamięci podręcznej. Niezależnie od tego, czy są one później destagowane, czy nie, trzy kopie zawsze istnieją.
Powiązania dysków są dynamiczne
Powiązanie między pamięcią podręczną a dyskami pojemności może mieć dowolny stosunek z zakresu od 1:1 do 1:12 i więcej. Jest on dostosowywany dynamicznie za każdym razem, gdy dyski są dodawane lub usuwane, na przykład podczas skalowania w górę lub po awariach. Oznacza to, że można niezależnie dodawać dyski pamięci podręcznej lub dyski pojemności, za każdym razem, gdy chcesz.
Zalecamy, aby liczba dysków pojemności była wielokrotnością liczby dysków pamięci podręcznej dla zachowania symetrii. Jeśli na przykład masz 4 dyski pamięci podręcznej, doświadczysz bardziej wyrównanej wydajności z 8 dyskami pojemności (współczynnik 1:2) niż z 7 lub 9.
Obsługa usterek dysku pamięci podręcznej
Gdy dysk pamięci podręcznej ulegnie awarii, wszystkie operacje zapisu, które nie zostały jeszcze destagowane, zostaną utracone do serwera lokalnego, co oznacza, że istnieją tylko na innych kopiach (na innych serwerach). Podobnie jak po wystąpieniu innych awarii dysku funkcja Miejsca do magazynowania może i automatycznie odzyskuje dane, konsultując się z kopiami ocalałymi.
Przez krótki okres dyski o pojemności, które były powiązane z utraconym dyskiem pamięci podręcznej, wydawały się być w złej kondycji. Po ponownym powiązaniu pamięci podręcznej (automatyczne) i zakończeniu naprawy danych (automatyczne), ponownie będą wyświetlać się jako w dobrej kondycji.
W tym scenariuszu wymagane są co najmniej dwa dyski pamięci podręcznej na serwer w celu zachowania wydajności.
Następnie możesz zastąpić dysk pamięci podręcznej tak samo jak każdy inny zamiennik dysku.
Notatka
Może być konieczne wyłączenie zasilania, aby bezpiecznie wymienić urządzenie NVMe, które jest kartą Add-In Card (AIC) lub w formacie M.2.
Relacja z innymi pamięciami podręcznymi
Istnieje kilka innych niepowiązanych pamięci podręcznych w stosie magazynowania zdefiniowanym programowo w systemie Windows. Przykłady obejmują pamięć podręczną zapisu dla Miejsc do magazynowania i przechowywaną w pamięci pamięć podręczną odczytu dla udostępnionego woluminu klastra (CSV).
W usłudze Azure Stack HCI pamięć podręczna zapisu funkcji Miejsca do magazynowania nie powinna być modyfikowana z domyślnego zachowania. Na przykład polecenia cmdlet New-Volume nie należy używać z parametrami takimi jak -WriteCacheSize.
Możesz użyć pamięci podręcznej CSV lub nie — to zależy od ciebie. Jest on domyślnie włączony w usłudze Azure Stack HCI, ale nie powoduje konfliktu z pamięcią podręczną opisaną w tym temacie w żaden sposób. W niektórych scenariuszach może to zapewnić cenne zyski w zakresie wydajności. Aby uzyskać więcej informacji, zobacz Wykorzystanie pamięci podręcznej odczytu CSV w pamięci z Azure Stack HCI.
Konfiguracja ręczna
W przypadku większości wdrożeń konfiguracja ręczna nie jest wymagana. Jeśli jest to potrzebne, zapoznaj się z poniższymi sekcjami.
Jeśli po skonfigurowaniu musisz wprowadzić zmiany w modelu urządzenia pamięci podręcznej, zmodyfikuj dokument komponentów wsparcia technicznego usługi zdrowia, zgodnie z opisem w Przegląd usługi zdrowia.
Podaj model dysku pamięci podręcznej
We wdrożeniach, w których wszystkie dyski są tego samego typu, takie jak wdrożenia all-NVMe lub all-SSD, nie skonfigurowano pamięci podręcznej, ponieważ system Windows nie może rozróżniać cech, takich jak wytrzymałość zapisu automatycznie między dyskami tego samego typu.
Aby użyć dysków o wyższej wytrzymałości do buforowania dysków o mniejszej wytrzymałości tego samego typu, można określić, którego modelu dysku użyć, korzystając z parametru -CacheDeviceModel polecenia cmdlet Enable-ClusterS2D. Wszystkie napędy tego modelu są używane do buforowania.
Napiwek
Pamiętaj, aby dopasować ciąg modelu dokładnie tak, jak jest wyświetlany w danych wyjściowych Get-PhysicalDisk.
Przykład
Najpierw pobierz listę dysków fizycznych:
Get-PhysicalDisk | Group Model -NoElement
Oto kilka przykładowych danych wyjściowych:
Count Name
----- ----
8 FABRIKAM NVME-1710
16 CONTOSO NVME-1520
Następnie wprowadź następujące polecenie, określając model urządzenia pamięci podręcznej:
Enable-ClusterS2D -CacheDeviceModel "FABRIKAM NVME-1710"
Możesz sprawdzić, czy dyski, które zamierzałeś używać do buforowania, uruchamiając Get-PhysicalDisk w programie PowerShell i sprawdzając, czy ich właściwość Usage zawiera "Journal".
Możliwości wdrażania ręcznego
Konfiguracja ręczna umożliwia następujące możliwości wdrażania:
Ustawianie zachowania pamięci podręcznej
Istnieje możliwość zastąpienia domyślnego zachowania pamięci podręcznej. Można na przykład ustawić go tak, aby buforować odczyty nawet we wdrożeniu all-flash. Odradzamy modyfikowanie zachowania, chyba że masz pewność, że wartość domyślna nie odpowiada Twojemu obciążeniu.
Aby zastąpić zachowanie, użyj polecenia cmdlet Set-ClusterStorageSpacesDirect i jego parametrów -CacheModeSSD i -CacheModeHDD. Parametr CacheModeSSD ustawia zachowanie pamięci podręcznej podczas buforowania dysków SSD. Parametr CacheModeHDD ustawia zachowanie pamięci podręcznej podczas buforowania dla dysku HDD.
Aby sprawdzić, czy zachowanie zostało ustawione, można użyć Get-ClusterStorageSpacesDirect.
Przykład
Najpierw uzyskaj ustawienia Storage Spaces Direct.
Get-ClusterStorageSpacesDirect
Oto kilka przykładowych danych wyjściowych:
CacheModeHDD : ReadWrite
CacheModeSSD : WriteOnly
Następnie wykonaj następujące czynności:
Set-ClusterStorageSpacesDirect -CacheModeSSD ReadWrite
Get-ClusterS2D
Oto kilka przykładowych danych wyjściowych:
CacheModeHDD : ReadWrite
CacheModeSSD : ReadWrite
Ustalanie rozmiaru pamięci podręcznej
Rozmiar pamięci podręcznej powinien być dostosowany do zestawu roboczego (dane są aktywnie odczytywane lub zapisywane w dowolnym momencie) aplikacji i obciążeń.
Jest to szczególnie ważne w przypadku wdrożeń hybrydowych z dyskami twardymi. Jeśli aktywny zestaw roboczy przekracza rozmiar pamięci podręcznej lub jeśli aktywny zestaw roboczy zmienia się zbyt szybko, rośnie liczba nietrafionych odczytów z pamięci podręcznej, a zapisy muszą być wycofywane bardziej agresywnie, co zaszkodzi ogólnej wydajności.
Możesz użyć wbudowanego narzędzia Monitora wydajności (PerfMon.exe) w systemie Windows, aby sprawdzić częstotliwość chybienia pamięci podręcznej. W szczególności możesz porównać Cache Miss Reads/sec z zestawu liczników dla Hybrydowego Dysku Magazynu Klastra do ogólnej liczby operacji IOPS odczytu w twoim wdrożeniu. Każdy "dysk hybrydowy" odpowiada jednemu dyskowi o określonej pojemności.
Na przykład 2 dyski pamięci podręcznej powiązane z 4 dyskami pojemności powoduje 4 wystąpienia obiektów "Dysk hybrydowy" na serwer.
Nie ma uniwersalnej reguły, ale jeśli zbyt często brakuje danych w pamięci podręcznej, jej rozmiar może być zbyt mały i należy rozważyć dodanie dysków, aby go zwiększyć. Dyski pamięci podręcznej lub dyski pojemności można dodawać niezależnie za każdym razem, gdy chcesz.
Następne kroki
Aby uzyskać dodatkową wiedzę na temat przechowywania, zobacz również: