瞭解儲存池快取
適用於:Azure Stack HCI 版本 22H2 和 21H2;Windows Server 2022、Windows Server 2019
儲存空間直接存取是 Azure Stack HCI 和 Windows Server 背後的基本記憶體虛擬化技術,其功能是內建的伺服器端快取,可最大化記憶體效能,同時降低成本。 這是在部署時自動設定的大型持續性即時讀取 和 寫入快取。 在大部分情況下,不需要手動管理。 快取的運作方式取決於存在的磁碟驅動器類型。
磁碟驅動器類型和部署選項
儲存空間直接存取目前適用於四種類型的磁碟驅動器:
磁碟驅動器類型 | 描述 |
---|---|
![]() |
PMem 是指持續性記憶體,這是一種低延遲、高效能記憶體的新類型。 |
![]() |
NVMe (非揮發性記憶體 Express) 是指直接位於 PCIe 總線上的固態硬碟。 常見的尺寸為 2.5 英吋 U.2、PCIe Add-In-Card (AIC),以及 M.2。 NVMe 提供的 IOPS 和 I/O 輸送量比我們今天支援的任何其他類型的磁碟驅動器都高,但 PMem 除外,延遲也比較低。 |
![]() |
SSD 是指透過傳統 SATA 或 SAS 連線的固態硬碟。 |
![]() |
HDD 是指旋轉式磁碟硬碟機,提供低成本的龐大儲存容量。 |
這些可以透過各種方式合併,我們會將這兩個類別分組為「全快閃」和「混合式」。 不支援僅使用 HDD 的部署。
注意
本文涵蓋 NVMe、SSD 和 HDD 的快取組態。 如需使用永續性記憶體作為快取的資訊,請參閱 瞭解及部署永續性記憶體。
全快閃部署的可能性
全快閃部署的目標是將記憶體效能最大化,且不包含 HDD。
混合式部署可能性
混合式部署旨在平衡效能和容量,或最大化容量,並確實包含 HDD。
注意
單一伺服器組態不支援混合式部署。 所有一般單一儲存類型組態(例如所有 NVMe 或全 SSD)都是單一伺服器唯一支援的記憶體類型。
快取磁碟會自動選取
在具有多種磁碟類型的部署中,Storage Spaces Direct 會自動使用最快速類型的所有磁碟進行快取。 剩餘的磁碟驅動器會用於儲存容量。
根據下列階層,判斷哪一種類型為「最快」。
例如,如果您有 NVMe 和 SSD,則為 SSD 提供 NVMe 快取。
如果您有 SSD 和 HDD,SSD 會作為 HDD 的快取。
注意
快取磁碟驅動器不會為叢集提供可使用的記憶體容量。 儲存在快取中的所有數據也會儲存在其他地方,或者會在資料轉移後儲存。 這表示您叢集的原始儲存容量總計是您所有容量硬碟的總和。
當所有磁碟驅動器都屬於相同類型時,不會自動設定任何快取。 您可以選擇手動設定較高耐力磁碟驅動器作為較低耐力相同類型磁碟驅動器的快取 – 請參閱 手動設定 一節以瞭解做法。
小技巧
在某些情況下,使用儲存池快取並不合理。 例如,在全 NVMe 或全 SSD 的部署中,特別是在非常小規模的情況下,如果沒有額外配置硬碟用於快取,可以提升儲存效率並最大化效能。 同樣地,小型遠端或分公司部署可能會有有限的快取磁碟驅動器空間。
快取行為會自動設定為
快取的行為會根據被快取的磁碟驅動器類型自動決定。 為快閃儲存裝置進行快取時(例如針對 SSD 使用 NVMe 介面進行快取),只會快取寫入作業。 當為旋轉磁碟驅動器(例如以 SSD 快取 HDD)進行快取時,讀取和寫入操作都會被快取。
全閃存部署的僅限寫入快取
快取可用於全快閃案例,例如使用 NVMe 作為快取來加速 SSD 的效能。 當針對全快閃存儲部署進行快取時,僅會快取寫入操作。 這可減少大容量硬碟的磨損,因為許多寫入和重寫可以在快取中整合,然後僅在需要時釋放,減少對大容量硬碟的累積操作量並延長其壽命。 基於這個理由,我們建議針對快取選取 耐用性較高且優化寫入的 磁碟驅動器。 容量磁碟驅動器的寫入耐用性可能較低。
因為讀取不會大幅影響快閃的壽命,而且因為 SSD 普遍提供低讀取延遲,所以不對讀取進行快取,這些讀取會直接從容量驅動器提供(除非數據最近寫入且尚未從快取中移除)。 這可讓快取完全專用於寫入,使其有效性最大化。
這會導致寫入特性,例如寫入延遲,由快取磁碟驅動器決定,而讀取特性則由容量磁碟驅動器決定。 兩者都是一致、可預測且統一的。
混合式部署的讀寫快取
當為 HDD 進行快取時,會同時快取讀取 和寫入,為這兩個操作提供類似快閃記憶體的延遲(通常快 10 倍)。 讀取快取會儲存最近且經常讀取的數據,以便快速存取,並將 HDD 的隨機流量降到最低。 由於搜尋和旋轉延遲,隨機存取 HDD 所產生的延遲和時間損失相當嚴重。寫入作業會透過緩存來吸收突發流量,並如前所述,合併寫入和重寫,將對容量磁碟驅動器的累計流量降到最低。
Storage Spaces Direct 使用一種演算法,在移除暫存之前先將寫入順序化,以模擬磁碟的 IO 模式,即使來自工作負載(例如虛擬機)的實際 I/O 是隨機的。 這會最大化 HDD 的 IOPS 和輸送量。
在部署中使用 NVMe、SSD 和 HDD 進行快取。
當同時存在三種類型的磁碟驅動器時,NVMe 磁碟驅動器會為 SSD 和 HDD 提供快取功能。 作業機制如上所述:對於 SSD,只會快取寫入動作,而對於 HDD,則會快取讀取和寫入動作。 HDD 的快取負擔會平均分散在快取磁碟驅動器之間。
總結
下表摘要說明哪些硬碟用於快取、哪些用於容量,以及每種部署可能性的快取行為。
部署 | 快取磁碟驅動器 | 容量磁碟驅動器 | 快取行為 (預設值) |
---|---|---|---|
所有 NVMe | 沒有選擇性:手動設定 ) | NVMe | 只限寫入 (如果已設定) |
所有 SSD | 沒有選擇性:手動設定 ) | 固態硬碟 (SSD) | 只限寫入 (如果已設定) |
NVMe + SSD | NVMe | SSD(固態硬碟) | 僅限寫入 |
NVMe + HDD | NVMe | 硬碟機 | 讀取 + 寫入 |
SSD + HDD | SSD | 硬碟 (HDD) | 讀取 + 寫入 |
NVMe + SSD + HDD | NVMe | SSD + HDD | HDD 讀取與寫入,SSD 僅寫入 |
伺服器端架構
快取會在磁碟驅動器層級實作:一部伺服器內的個別快取磁碟驅動器會系結至相同伺服器內的一或多個容量磁碟驅動器。
由於快取位於 Windows 軟體定義儲存堆疊的其餘部分下方,因此它不需要知道儲存空間或容錯等概念。 您可以將它視為建立「混合式」(部分快閃、部分磁碟)磁碟驅動器,然後呈現給作系統。 如同實際的混合式硬碟,實體媒體中熱門和冷門數據在較快和較慢部分之間的即時移動幾乎對外部是看不見的。
假設儲存空間直接存取中的復原能力至少為伺服器層級(這表示數據複本一律會寫入不同的伺服器;每部伺服器最多一個複本),快取中的數據會受益於與不在快取中的數據相同的復原能力。
例如,使用三向鏡像時,會將三份任何數據複本寫入到不同的伺服器,這些複本會落在快取中。 無論它們稍後是否被移除,三份複本都會存在。
磁碟驅動器系結是動態的
快取和容量磁碟驅動器之間的系結可以有任何比例,從 1:1 到 1:12 及以上。 它會在新增或移除磁碟時動態調整,例如在擴容或發生故障後。 這表示您可以視需要個別新增快取磁碟驅動器或容量磁碟驅動器。
建議將容量磁碟驅動器數目設定為快取磁碟驅動器數目的倍數,以達到對稱性。 例如,如果您有 4 個快取磁碟驅動器,那麼相較於 7 或 9 個容量磁碟驅動器,使用 8 個容量磁碟驅動器(1:2 比例)的效能會更平均。
處理快取磁碟機故障
當快取磁碟失敗時,任何尚未轉移的寫入將會遺失,到本地伺服器,也就是說,它們只存在於其他伺服器上的其他複本中。 就像在任何其他磁碟驅動器故障後一樣,儲存空間會自動復原,並透過參考倖存的多個副本來完成。
短暫期間,系結至遺失快取驅動器的容量驅動器顯示為不良狀態。 快取重新系結發生之後(自動)且數據修復已完成(自動),它們就會繼續顯示為狀況良好。
此案例是為什麼每個伺服器至少需要兩個快取磁碟驅動器來保留效能。
然後,您可以像更換其他任何磁碟一樣更換快取磁碟。
注意
您可能需要關閉電源,以安全地取代 Add-In 卡 (AIC) 或 M.2 尺寸的 NVMe。
與其他快取的關聯性
Windows 軟體定義儲存堆疊中有數個其他不相關的快取。 範例包括儲存空間回寫快取和叢集共用磁碟區 (CSV) 記憶體內部讀取快取。
使用 Azure Stack HCI 時,不應從其預設設定行為修改儲存空間回寫快取。 例如,不應該使用 New-Volume Cmdlet 上的 -WriteCacheSize 等參數。
您可以選擇使用 CSV 快取,或否 – 由您決定。 它預設會在 Azure Stack HCI 中開啟,但不會以任何方式與本主題中所述的快取發生衝突。 在某些情況下,它可以提供寶貴的效能提升。 如需詳細資訊,請參閱 使用 CSV 記憶體內部讀取快取搭配 Azure Stack HCI。
手動設定
在大部分的部署中,不需要手動設定。 如果您需要它,請參閱下列各節。
如果您需要在安裝之後變更快取裝置模型,請編輯 Health Service 的支援元件檔,如 Health Service 概觀中所述,。
指定快取硬碟型號
在所有磁碟驅動器都屬於相同類型的部署中,例如所有NVMe或全 SSD 部署,不會設定任何快取,因為 Windows 無法區分相同類型磁碟驅動器之間的自動寫入耐力等特性。
若要使用較高耐用性的磁碟驅動器來作為相同類型的低耐用性磁碟驅動器的快取,您可以在 Enable-ClusterS2D Cmdlet 中指定 -CacheDeviceModel 參數以選擇要使用的磁碟驅動器型號。 該型號的所有磁碟驅動器都用於快取。
提示
請務必比對模型字串,就像出現在 get-PhysicalDisk 輸出中一樣。
例
首先,取得實體磁碟的清單:
Get-PhysicalDisk | Group Model -NoElement
以下是一些範例輸出:
Count Name
----- ----
8 FABRIKAM NVME-1710
16 CONTOSO NVME-1520
然後輸入下列命令,並指定快取裝置型號:
Enable-ClusterS2D -CacheDeviceModel "FABRIKAM NVME-1710"
您可以在 PowerShell 中執行 Get-PhysicalDisk,然後確認其 Usage 屬性是否顯示為 "Journal",以確認您打算用於快取的磁碟驅動器。
手動部署可能性
手動設定可啟用下列部署可能性:
設定快取行為
可以覆寫快取的預設行為。 例如,您可以將它設定為在全快閃記憶體部署中進行快取讀取。 除非您確定預設值不符合您的工作負載,否則不建議修改行為。
若要覆寫行為,請使用 set-ClusterStorageSpacesDirect cmdlet 及其 -CacheModeSSD 和 -CacheModeHDD 參數。 當進行 SSD 快取時,CacheModeSSD 參數會設定快取行為。 CacheModeHDD 參數會在快取 HDD 時設定快取行為。
您可以使用 Get-ClusterStorageSpacesDirect 來確認行為是否已設定。
例
首先,取得 Storage Spaces Direct 的設定:
Get-ClusterStorageSpacesDirect
以下是一些範例輸出:
CacheModeHDD : ReadWrite
CacheModeSSD : WriteOnly
然後,執行下列動作:
Set-ClusterStorageSpacesDirect -CacheModeSSD ReadWrite
Get-ClusterS2D
以下是一些範例輸出:
CacheModeHDD : ReadWrite
CacheModeSSD : ReadWrite
調整快取大小
快取應該有足夠的大小,以容納應用程式與工作負載的工作集(在任何時間點積極使用的資料)。
這在搭配硬碟的混合式部署中特別重要。 如果作用中工作集超過快取的大小,或作用中工作集漂移太快,讀取快取遺漏就會增加,而且寫入需要更積極地還原標記,損害整體效能。
您可以使用 Windows 中的內建性能監視器 (PerfMon.exe) 公用程式來檢查快取遺漏率。 具體來說,您可以將 叢集儲存混合磁碟 計數器中的 快取遺漏讀取/秒 與您的部署的整體讀取 IOPS 進行比較。 每個「混合式磁碟」都會對應至一個容量磁碟。
例如,2 個快取磁碟驅動器綁定至 4 個容量磁碟驅動器會導致每部伺服器出現 4 個「混合式磁碟」物件實例。
沒有通用的規則,但如果有太多讀取無法命中快取,這可能意味著您的快取容量不足,您應考慮新增快取驅動器來擴充快取。 您可以視需要個別新增快取磁碟驅動器或容量磁碟驅動器。
後續步驟
如需其他記憶體知識,另請參閱: