鏡像加速同位
儲存空間可以使用兩種基本技術來為數據提供容錯:鏡像和同位。 在儲存空間直接存取中,ReFS 引進鏡像加速同位,可讓您建立同時使用鏡像和同位復原的磁碟區。 鏡像加速同位提供便宜、節省空間的儲存空間,而不會犧牲效能。
背景
鏡像和同位復原配置具有基本不同的儲存體和效能特性:
- 鏡像復原可讓使用者達到快速寫入效能,但複寫每個複本的資料並無空間效率。
- 另一方面,同位必須針對每個寫入重新計算同位,導致隨機寫入效能受到影響。 然而同位可讓使用者以更高的空間效率儲存其資料。 如需詳細資訊,請參閱儲存空間容錯。
因此,鏡像傾向於提供效能敏感的儲存體,同位則提供改善的儲存體容量使用率。 在鏡像加速的同位中,ReFS 會利用每個復原類型的優點,藉由結合單一磁碟區內的兩個復原配置來提供節省容量和效能敏感的儲存體。
鏡像加速同位上的資料輪替
ReFS 會即時主動輪替鏡像與同位之間的資料。 這樣可讓傳入的寫入快速寫入鏡像,然後輪替至同位,以便有效率地儲存。 如此一來,傳入的 IO 會在鏡像中快速被服務,而極非經常性存取資料會有效率地儲存於同位,同時在同一磁碟區內提供最佳效能和無效益儲存體。
若要在鏡像與同位之間輪替資料,ReFS 會以邏輯方式將磁碟區分割成 64 MB 的區域,也就是輪替單位。 下圖描述分割成區域的鏡像加速同位磁碟區。
一旦鏡像層達到指定的容量層級,ReFS 會開始將整個區域從鏡像輪替為同位。 ReFS 不會立即將資料從鏡像移至同位,而是盡可能等候並保留鏡像中的資料,讓 ReFS 繼續為數據提供最佳效能 (請參閱下面的「IO 效能」)。
將資料從鏡像移至同位時,會讀取資料、計算同位編碼,然後將該資料寫入同位。 下列動畫使用在輪替期間轉換成糾刪碼編碼區域的三向鏡像區域來說明此問題:
鏡像加速同位上的 IO
IO 行為
寫入: ReFS 以三種不同的方式服務傳入的寫入:
寫入鏡像:
- 1a. 如果傳入的寫入會修改鏡像中的現有資料,ReFS 會就地修改資料。
- 1b. 如果傳入的寫入是新的寫入,而且 ReFS 可以成功地在鏡像中找到足夠的可用空間來服務此寫入,則 ReFS 會寫入鏡像。
寫入鏡像,從同位重新配置:
如果傳入的寫入會修改同位中的資料,且 ReFS 可以成功地在鏡像中尋找足夠的可用空間來服務該傳入的寫入,ReFS 會先讓同位中的先前資料無效,然後再寫入鏡像。 此一無效作業是快速且廉價的中繼資料作業,可協助有意義地改善對同位的寫入效能。
寫入同位:
如果 ReFS 在鏡像中找不到足夠的可用空間,ReFS 會將新資料寫入同位,或直接修改同位中的現有資料。 下面的「效能優化」章節提供指引,可協助將寫入最小化至同位。
讀取: ReFS 會直接從包含相關資料的層讀取。 如果使用 HDD 建構同位,儲存空間直接存取中的快取將會快取此資料,以加速未來的讀取。
注意
讀取絕對不會造成 ReFS 將資料輪替回鏡像層。
I/O 效能
寫入:上述每種寫入類型都有自己的效能特性。 大致上來說,對鏡像層的寫入速度比重新配置寫入快得多,而重新配置寫入的速度明顯比直接寫入同位層的寫入還要快。 這個不等式說明此關聯性:
- 鏡像層 > 重新配置寫入 >> 同位層
讀取:從同位讀取時並無重大的負面效能影響:
- 如果鏡像和同位使用相同的媒體類型建構,讀取效能將會相等。
- 如果鏡像和同位是使用不同的媒體類型來建構 — 例如鏡像 SSD 和同位 HDD — 儲存空間直接存取中的快取將有助於快取經常性存取資料,以加速從同位進行的任何讀取。
ReFS 壓縮
ReFS 的壓縮適用於 Windows Server 2019 和更新版本,可大幅改善 90% 以上完整鏡像加速同位磁碟區的效能。
背景:先前,當鏡像加速同位磁碟區已滿時,這些磁碟區的效能可能會降低。 效能會降低,因為隨著時間的推移,整個磁碟區中的經常性存取和極非經常性存取資料會混合在一起。 這表示不常使用的資料可能會儲存在鏡像中,因為極非經常性存取資料會占用原本可供經常性存取資料使用的鏡像空間。 將經常性存取資料儲存於鏡像,對維持高效能而言至關重要,因為直接寫入鏡像的速度比重新配置寫入更快,而且比直接寫入同位要快好幾個數量級。 因此,在鏡像中擁有極非經常性存取資料對效能不利,因為它會降低 ReFS 可直接寫入鏡像的可能性。
ReFS 壓縮可以釋出鏡像中的空間,供經常性存取資料使用,以解決這些效能問題。 壓縮會先將鏡像和同位中的所有資料合併成同位。 這樣可以減輕磁碟區內的分散情況,並增加鏡像中可定址空間的量。 更重要的是,此程序可讓 ReFS 將經常性存取資料合併回鏡像:
- 當新的寫入傳入時,會在鏡像中提供服務。 因此,新寫入的經常性存取資料將位於鏡像中。
- 對同位資料進行修改寫入時,ReFS 會產生重新配置的寫入,因此也會在鏡像中服務此寫入。 因此,壓縮期間已移至同位的經常性存取資料將會重新配置回鏡像。
效能最佳化
重要
建議將大量寫入 VHD 放在不同的子目錄中。 這是因為 ReFS 會在目錄及其檔案層級寫入中繼資料變更。 因此,如果您將頻繁寫入的檔案分散到目錄,中繼資料作業比較小,且以平行方式執行,可減少應用程式的延遲。
效能計數器
ReFS 會維護效能計數器,以協助評估鏡像加速同位的效能。
如上所述,在鏡像中找不到可用空間時,ReFS 會直接寫入同位。 一般而言,當鏡像層填滿比 ReFS 將資料輪替為同位還要快時,就會發生這種情況。 換句話說,ReFS 輪替無法跟上擷取速率。 下列效能計數器會識別 ReFS 何時直接寫入同位:
# Windows Server 2016 ReFS\Data allocations slow tier/sec ReFS\Metadata allocations slow tier/sec # Windows Server 2019 ReFS\Allocation of Data Clusters on Slow Tier/sec ReFS\Allocation of Metadata Clusters on Slow Tier/sec
如果這些計數器不是零,表示 ReFS 從鏡像中輪替資料的速度不夠快。 為了協助緩解這種情況,您可以變更輪替積極性,或增加鏡像層的大小。
輪替積極性
一旦鏡像達到指定的容量閾值,ReFS 就會開始輪替資料。
- 輪替閾值較高會導致 ReFS 將資料在鏡像層中保留較長的時間。 將經常性資料留在鏡像層對效能而言是最理想的,但 ReFS 將無法有效地服務大量的傳入 IO。
- 較低的值可讓 ReFS 主動清除資料,並更妥善地擷取傳入的 IO。 這適用於擷取繁重的工作負載,例如封存儲存體。 不過,較低的值可能會降低一般用途工作負載的效能。 不必要地從鏡像層輪替資料會降低效能。
ReFS 引入了可調整的參數,以調整此閥值,可使用登錄機碼進行設定。 此登錄機碼必須在儲存空間直接存取部署的每個節點上設定,而且需要重新開機,任何變更才會生效。
- Key: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Policies
- ValueName (DWORD): DataDestageSsdFillRatioThreshold
- ValueType: Percentage
如果未設定此登錄機碼,ReFS 會使用預設值 85%。 大部分部署都建議使用這個預設值,不建議使用低於 50% 的值。 下列 PowerShell 命令示範如何使用 75% 的值來設定此登錄機碼:
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Policies -Name DataDestageSsdFillRatioThreshold -Value 75
若要在儲存空間直接存取部署的每個節點上設定此登錄機碼,您可以使用下列 PowerShell 命令:
$Nodes = 'S2D-01', 'S2D-02', 'S2D-03', 'S2D-04'
Invoke-Command $Nodes {Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Policies -Name DataDestageSsdFillRatioThreshold -Value 75}
增加鏡像層的大小
增加鏡像層的大小可讓 ReFS 在鏡像中保留較大部分的工作集。 這樣可以提高 ReFS 直接寫入鏡像的可能性,有助於達到更好的效能。 下列 PowerShell Cmdlet 示範如何增加鏡像層的大小:
Resize-StorageTier -FriendlyName "Performance" -Size 20GB
Resize-StorageTier -InputObject (Get-StorageTier -FriendlyName "Performance") -Size 20GB
提示
在重設 StorageTier 大小之後,請務必調整磁碟分割和磁碟區的大小。 如需詳細資訊和範例,請參閱擴充磁碟區。
建立鏡像加速同位磁碟區
下列 PowerShell Cmdlet 會建立 1-TiB 鏡像加速同位磁碟區,而 [鏡像:同位] 的比率為 20:80,這是大部分工作負載應使用的設定。 如需詳細資訊和範例,請參閱在儲存空間直接存取中建立磁碟區。
New-Volume -FriendlyName "TestVolume" -FileSystem CSVFS_ReFS -StoragePoolFriendlyName "StoragePoolName" -StorageTierFriendlyNames Performance, Capacity -StorageTierSizes 200GB, 800GB
其他參考
- ReFS 概觀
- ReFS 區塊複製
- ReFS 完整性資料流
- 儲存空間直接存取概觀 \(部分機器翻譯\)