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