在 Azure 本機使用 ReFS 重複資料刪除和壓縮將記憶體優化
本文內容
適用於:Azure Local 2311.2 和更新版本
本文說明復原文件系統 (ReFS) 重複資料刪除和壓縮功能,以及如何在 Azure 本機中使用這項功能來優化記憶體。
什麼是 ReFS 重複資料刪除和壓縮?
ReFS 重複數據刪除和壓縮是記憶體優化功能,可協助優化記憶體使用量並降低記憶體成本。 在 Azure 本機上的 Azure 虛擬桌面基礎架構(VDI)等情況下,針對活躍、對效能敏感或大量讀取的工作負載,專門使用重複資料刪除技術。 針對效能要求較低的工作負載,您可以使用重複資料刪除與壓縮的組合,或僅使用壓縮。
此功能會使用 ReFS 區塊複製 來減少數據移動,並只啟用元數據作業。 此功能會在數據區塊層級運作,並根據系統大小使用固定區塊大小。 壓縮引擎會產生熱度圖,以識別區塊是否應該符合壓縮資格,優化 CPU 使用量。
您可以執行 ReFS 重複資料刪除和壓縮作為一次性作業,或使用排程的作業將其自動化。 這項功能適用於全閃和混合式系統,並支援各種復原設定,例如雙向鏡像、巢狀雙向鏡像、三向鏡像和鏡像加速同位。
福利
以下是使用 ReFS 重複資料移除和壓縮的優點:
用於作用中工作負載的記憶體節省。 專為使用中工作負載而設計,例如 VDI,確保需求環境中的高效效能。
多個模式。 以三種模式運作:僅重複資料移除(預設模式)、僅壓縮,以及重複資料移除及壓縮,可根據您的需求進行優化。
累加重複數據刪除。 重複資料刪除只會刪除新的或變更的數據,而不是每次掃描整個磁碟區、優化作業持續時間,並減少對系統效能的影響。
必要條件
開始之前,請確定下列必要條件已完成:
您可以存取已部署和註冊的 Azure 本機實例。
您已在實例上建立叢集共用磁碟區 (CSV),而且您可以存取該磁碟區。
CSV 尚未啟用 Windows 重複資料刪除功能。
使用 ReFS 重複資料刪除和壓縮
您可以透過 Windows Admin Center 或 PowerShell 使用 ReFS 重複資料刪除和壓縮。 PowerShell 同時允許手動和自動化作業,而 Windows Admin Center 僅支援排程的工作。 不論方法為何,您都可以自定義作業設定,並利用檔案變更追蹤來加快後續執行。
注意
我們建議在考量效能的工作負載中,只使用重複數據刪除,而非使用壓縮或兩者的組合。
啟用並執行 ReFS 重複資料刪除和壓縮
在 Windows Admin Center 中,您可以建立 ReFS 重複數據刪除的排程,以在磁碟區建立期間在現有磁碟區或新的磁碟區上執行。 不過,僅透過PowerShell支援啟用壓縮。
請遵循下列步驟,透過 Windows Admin Center 啟用 ReFS 重複資料刪除,並在應該執行時設定排程:
連接到系統,然後在左側的 [工具 ] 窗格中,選取 [ 磁碟區 ]。
在 [ 磁碟區 ] 頁面上,選取 [ 清查 ] 索引卷標,選取適當的磁碟區,然後選取 [ 設定 ]。 若要開啟新磁碟區的 ReFS 重複資料刪除,請選取 [+ 建立 ]。
在右側的 [磁碟區設定 ] 窗格的 [更多選項] 下拉式清單中,選取 [使用 ReFS 重複資料刪除 ] 複選框。
選取 ReFS 重複資料刪除應該執行的星期幾、開始執行作業的時間,以及持續時間上限(預設值為無限制),然後選取 [ 儲存 ]。
下列螢幕快照顯示 ReFS 重複資料刪除將在星期五和星期六下午 10:00 執行,持續時間上限為 2 小時,從 2024 年 9 月 27 日星期五開始。
如果開始日期 變更為 2024 年 9 月 30 日星期一,第一次執行會是下午 10/4 10:00,因為這是 2024 年 9 月 30 日之後的第一個星期五。
確認磁碟區 [ 屬性 ] 區段中的變更。 排程會出現在 [ 屬性 ] 區段底下,並顯示儲存明細和下一個排程運行時間。 每次執行之後都會更新這些節省,您可以在 [效能] 區段下的 圖表中觀察效能 影響。 如果透過PowerShell啟用壓縮,其節省也會顯示在 [屬性 ] 區段上。
若要透過PowerShell使用ReFS重複資料刪除和壓縮,請先啟用此功能,然後以一次性手動作業的形式執行此功能,或將它自動化以排程工作的形式執行。 作業會在每個系統的 CSV 層級設定,並根據模式、持續時間、系統資源使用量等等來自定義。
啟用 ReFS 重複資料刪除和壓縮
請遵循下列步驟,透過 PowerShell 啟用 ReFS 重複資料刪除和壓縮:
線上到您的 Azure 本機實例,並以系統管理員身分執行 PowerShell。
您必須執行所有命令,以修改擁有者節點上指定磁碟區上的設定。 執行下列 Cmdlet 以顯示所有 CSV 擁有者節點和磁碟區路徑:
Get-ClusterSharedVolume | FT Name, OwnerNode, SharedVolumeInfo
以下是 Cmdlet 使用量的範例輸出:
Name OwnerNode SharedVolumeInfo
---- --------- ----------------
Cluster Virtual Disk (Volume1) hci-server1 {C:\ClusterStorage\Volume1}
執行下列 Cmdlet 以在特定磁碟區上啟用 ReFS 重複資料移除和壓縮:
Enable-ReFSDedup -Volume <path> -Type <Dedup | DedupAndCompress | Compress>
其中: Type
是必要參數,可以採用下列其中一個值:
重複資料刪除 :只啟用重複資料刪除。 這是預設選項。
DedupAndCompress :啟用重複資料刪除和壓縮。
壓縮 :僅啟用壓縮。
如果您想要變更 Type
參數,您必須先 停用 ReFS 重複資料刪除和壓縮 ,然後使用新的 Type
參數再次啟用它。
例如,執行下列 Cmdlet 以在磁碟區上啟用重複資料刪除和壓縮:
PS C:\Users\hciuser> Enable-ReFSDedup -Volume "C:\ClusterStorage\Volume1" -Type DedupAndCompress
啟用 ReFS 重複資料刪除和壓縮之後,請在 CSV 上確認其狀態。 執行下列 Cmdlet,並確定 Enabled
輸出中的欄位顯示為 True
,且 Type
欄位會顯示指定的模式。
Get-ReFSDedupStatus -Volume <path> | FL
以下是 Cmdlet 的Get-ReFSDedupStatus
範例輸出,其中欄位會顯示為 Enabled
,而True
字段會顯示為 Type
:DedupAndCompress
PS C:\Users\hciuser> Get-ReFSDedupStatus -Volume "C:\ClusterStorage\Volume1" | FL
Volume : C:\ClusterStorage\Volume1
Enabled : True
Type : DedupAndCompress
Status : --
Used : 1.4 TiB
Deduped : 0 B
Compressed : 0 B
ScannedOnLastRun : 0 B
DedupedOnLastRun : 0 B
LastRunTime : N/A
LastRunDuration : N/A
MextRunTime : N/A
CompressionFormat : Uncompressed
CompressionLevel : 0
CompressionChunkSize : 0 B
VolumeClusterSizeBytes : 4 KiB
VolumeTotale lusters : 805289984
VolumeTotalAllocatedelusters : 353850628
VolumeTotalAllocatedCompressibleClusters : 0
VolumeTota1InUseCompressibleClusters : 0
VolumeTota1Compressedelusters : 0
執行 ReFS 重複資料刪除和壓縮
啟用此功能之後,您可以手動執行一次性作業,或視需要排程週期性作業。
執行之前,您也應該考慮下列其他考慮:
如果您未指定壓縮格式,預設演算法為 LZ4。 您可以視需要將演算法從一個執行變更為另一個。
您可以為更複雜的使用案例指定更多參數。 本節中使用的 Cmdlet 是最簡單的使用案例。
[排除] 資料夾、[排除的擴展名] 和 [上次修改時間下限] 篩選僅適用於執行重複數據刪除,且在執行壓縮時不適用。
手動執行 ReFS 重複資料刪除和壓縮作業
若要立即啟動作業,請執行下列 Cmdlet。 啟動作業之後,它 State
可能會顯示為 NotStarted
,因為它可能仍在初始化階段。
Start-ReFSDedupJob -Volume <path> -Duration <TimeSpan> -CompressionFormat <LZ4 | ZSTD>
例如,下列 Cmdlet 會使用 LZ4 壓縮格式,立即啟動作業,持續 5 小時:
PS C:\Users\hciuser> $Start = “10/31/2023 08:30:00”
PS C:\Users\hciuser> $Duration = New-Timespan -Hours 5
PS C:\Users\hciuser> Start-ReFSDedupJob -Volume "C:\ClusterStorage\Volume1" -Duration $Duration -CompressionFormat LZ4
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
12 Job12 NotStarted True Start-Re...
若要停止執行中的作業,請執行下列 Cmdlet。 此 Cmdlet 也適用於進行中的排程工作。
Stop-ReFSDedupJob -Volume <path>
例如,下列 Cmdlet 會停止您在上一個範例中啟動的工作:
PS C:\Users\hciuser> Stop-ReFSDedupJob -Volume "C:\ClusterStorage\Volume1"
若要檢視作業的進度、儲存和狀態,請執行下列 Cmdlet:
Get-ReFSDedupStatus -Volume <path> | FL
例如,下列 Cmdlet 會顯示作業的狀態:
PS C:\Users\hciuser> Get-ReFSDedupStatus -Volume "C:\ClusterStorage\Volume1"
Volume Type Used Deduped Compressed Format
------ ---- ---- ------- ---------- ------
C:\ClusterStorage\Volume1 DedupAndCompress 1.38 TiB 0 B 0 B Unc...
排程重複重複資料刪除和壓縮作業
設定遞歸排程以執行磁碟區的記憶體優化。 然後,您可以檢視、設定或修改、暫停、繼續或清除作業排程。
若要設定或修改排程,請執行下列 Cmdlet:
Set-ReFSDedupSchedule -Volume <Path> -Start <DateTime> -Days <DayOfWeek[]> -Duration <TimeSpan> -CompressionFormat <LZ4 | ZSTD> -CompressionLevel <UInt16> -CompressionChunkSize <UInt32>
例如,若要設定排程為每週四上午 8:30 執行一次週期性作業,以 LZ4 格式持續 5 小時,請執行下列 Cmdlet。 如果您要每日執行作業,請使用 -Days EveryDay
。
PS C:\Users\hciuser> $Start = “10/31/2023 08:30:00”
PS C:\Users\hciuser> $Duration = New-Timespan -Hours 5
PS C:\Users\hciuser> Set-ReFSDedupSchedule -Volume C:\ClusterStorage\Volume1 -Start $Start Days "Thursday" -Duration $Duration -CompressionFormat LZ4
若要檢視作業排程,請執行下列 Cmdlet:
Get-ReFSDedupSchedule -Volume <path> | FL
以下是上一個範例中排程之作業的輸出:
PS C:\Users\hciuser> Get-ReFSDedupSchedule -Volume "C:\ClusterStorage\Volume1" | FL
Volume : C:\ClusterStorage\Volume1
Enabled : True
Type : DedupAndCompress
CpuPercentage : Automatic
ConcurrentOpenFiles : Automatic
MinimumLastModifiedTimeHours : 0
ExcludeFileExtension : {}
ExcludeFolder : {}
CpuPercentage : 0
CompressionFormat : LZ4
CompressionLevel : 1
CompressionChunkSize : 4 B
CompressionTuning : 70
RecompressionTuning : 40
DecompressionTuning : 30
Start : 8:30:00 AM
Duration : 00m:00.000s
Days : Thursday
Suspended : False
暫停排程工作
暫停排程會取消任何執行中的作業,並在未來停止排程的執行。 此選項會保留 ReFS 重複資料刪除和壓縮相關的元數據,並繼續追蹤檔案變更,以取得優化的未來執行。 您可以隨時繼續排程,並保留排程設定。
請遵循下列步驟,使用 Windows Admin Center 暫停排程工作:
連接到系統,然後在左側的 [工具 ] 窗格中,選取 [ 磁碟區 ]。
在 [ 磁碟區 ] 頁面上,選取 [ 清查 ] 索引卷標,選取適當的磁碟區,然後選取 [ 設定 ]。
在右側的 [磁碟區設定 ] 窗格的 [更多選項] 下拉式清單中,取消選取 [設定排程] 複選框,然後選取 [儲存 ]。
使用下列 Cmdlet 來暫停排程的工作,並使用 PowerShell 檢查狀態:
Suspend-ReFSDedupSchedule -Volume <path>
以下是 Cmdlet 使用量的範例輸出。 欄位 Suspended
會顯示為 True
。
PS C:\Users\hciuser> Suspend-ReFSDedupSchedule -Volume "C:\ClusterStorage\Volume1"
PS C:\Users\user> Get-ReFSDedupSchedule -Volume "C:\ClusterStorage\Volume1" | FL
Volume : C:\ClusterStorage\Volume1
Enabled : True
Type : DedupAndCompress
CpuPercentage : Automatic
ConcurrentOpenFiles : Automatic
MinimumLastModifiedTimeHours : 0
ExcludeFileExtension : {}
ExcludeFolder : {}
CpuPercentage : 0
CompressionFormat : LZ4
CompressionLevel : 1
CompressionChunkSize : 4 B
CompressionTuning : 70
RecompressionTuning : 40
DecompressionTuning : 30
Start : 8:30:00 AM
Duration : 00m:00.000s
Days : Thursday
Suspended : True
停用磁碟區上的 ReFS 重複資料刪除和壓縮
停用磁碟區上的 ReFS 重複資料刪除和壓縮會停止進行中的任何執行,並取消未來的排程工作。 此外,不會保留相關的磁碟區元數據,並停止檔案變更追蹤。
注意
當您停用此功能時,它不會復原重複數據刪除或壓縮,因為所有作業都會發生在元數據層。 經過一段時間,重複數據刪除會傳回其原始狀態,因為磁碟區會產生讀取和寫入。 若要解壓縮數據,請確定有足夠的容量可用,並使用 ReFSUtil 來執行下列作業。
refsutil compression /c /f NONE <vol>
請遵循下列步驟,使用 Windows Admin Center 停用此功能:
連接到系統,然後在左側的 [工具 ] 窗格中,選取 [ 磁碟區 ]。
在 [ 磁碟區 ] 頁面上,選取 [ 清查 ] 索引卷標,選取適當的磁碟區,然後選取 [ 設定 ]。
在右側的 [磁碟區設定 ] 窗格的 [更多選項 ] 下拉式清單中,取消選取 [使用 ReFS 重複資料刪除 ] 複選框,然後選取 [儲存 ]。
使用下列 Cmdlet 來暫停排程的工作,並檢查狀態:
Disable-ReFSDedup -Volume <path>
以下是 Cmdlet 使用量的範例輸出。
Enabled
欄位會顯示為 False
,而Type
欄位會顯示為空白。
PS C:\Users\hciuser> Disable-ReFSDedup -Volume "C:\ClusterStorage\Volume1"
PS C:\Users\hciuser> Get-ReFSDedupSchedule -Volume "C:\ClusterStorage\Volume1" | FL
Volume : C:\ClusterStorage\Volume1
Enabled : False
Type :
CpuPercentage : Automatic
ConcurrentOpenFiles : Automatic
MinimumLastModifiedTimeHours : 0
ExcludeFileExtension : {}
ExcludeFolder : {}
CpuPercentage : 0
CompressionFormat : LZ4
CompressionLevel : 0
CompressionChunkSize : 0 B
CompressionTuning : 70
RecompressionTuning : 40
DecompressionTuning : 30
Start : N/A
Duration : N/A
Days : None
Suspended : False
常見問題集 (FAQ)
本節會回答 ReFS 重複數據刪除和壓縮的常見問題。
ReFS 重複資料刪除和壓縮功能是否與 Windows 重複資料刪除不同?
是,這項功能與 Windows 重複資料刪除功能完全不同 。
重要
我們不支援同時啟用 ReFS 重複資料刪除和壓縮和 Windows 重複資料刪除。
ReFS 重複數據刪除和壓縮是針對作用中工作負載所設計,著重於優化后的效能影響降到最低。 不同於 Windows 重複資料刪除,ReFS 重複資料刪除和壓縮不會使用區塊存放區來儲存重複數據,而且不會涉及實體數據移動。 此功能依賴 ReFS 區塊複製來啟用僅限元數據的作業。 Windows 重複資料刪除可能會因為使用可變區塊大小而提供更好的記憶體節省,它也適用於更廣泛的工作負載類型,例如一般用途檔伺服器 (GPFS)、備份目標等等。
ReFS 重複數據刪除和壓縮的階段為何?
優化程式包含下列循序發生的階段,並相依於指定的模式。 如果優化執行達到持續時間限制,則壓縮可能不會執行。
初始化。 在此階段中,會掃描記憶體磁碟區來識別數據備援區塊。
重複資料刪除。 在這個階段中,備援區塊是單一實例,並使用 ReFS 區塊複製來追蹤。
壓縮。 在這個階段中,會產生熱度圖,以識別區塊是否應該符合壓縮資格。 默認設定會壓縮不常存取或非經常存取的數據,以減少其大小。 您可以變更壓縮層級,以調整符合壓縮資格的區塊範圍。
當磁碟區完全優化之前達到持續時間限制時,會發生什麼事?
持續時間限制已到位,以防止對商務期間優化作業所造成的客戶工作負載造成任何效能影響。 重複資料刪除服務會監視磁碟區優化元件和傳入檔案修改。 此數據會在未來的作業中使用,以減少優化時間。 例如,如果由於持續時間限制,第一次執行中只處理磁碟區 30%,後續執行會解決其餘 70% 和任何新數據。
已知問題
下一節列出 ReFS 重複資料刪除和壓縮目前存在的已知問題。
啟用壓縮時,在第一次優化執行之後,在 -FullRun
作業上使用 參數可能會導致系統中發生死結。
狀態: 開啟。
除非 是 -FullRun
Type
,Dedup
否則請避免在手動啟動的作業中使用 。
請遵循下列步驟作為暫時的因應措施,以減輕此問題:
停用磁碟區上的 ReFS 重複資料移除和壓縮:
Disable-ReFSDedup -Volume <path>
使用 refsutil
解壓縮磁碟區:
refsutil compression /c /f NONE <vol>
視需要以唯一模式重新啟用 ReFS 重複資料移除和壓縮 Dedup
:
Enable-ReFSDedup -Volume <path> -Type Dedup
狀態: 開啟。
建議的最佳做法是,請考慮錯開作業的開始時間,以避免任何重疊。 不過,如果所有作業都必須同時執行,請調整所有 CSV 上每個作業的 CPU 配置,使其相當於整體系統 CPU 使用率的 50% 以下。 請記住,施加 CPU 限制可能會導致作業運行時間更長。
ReFS 重複數據刪除和壓縮工作已完成(成功或已取消),且儲存空間節省不會列在 或 Windows Admin Center 中 Get-ReFSDedupStatus
。
狀態: 已解決。
此問題的暫時因應措施是立即起始一次性作業和結果更新。
Start-ReFSDedupJob -Volume <path>
在磁碟區上停用 ReFS 重複資料刪除和壓縮之後,傳送停止監視 Windows 事件追蹤 (ETW) 事件。
狀態: 已解決。
在磁碟區上停用 ReFS 重複資料刪除和壓縮之後,ReFS 重複 不過,由於此問題,我們不會預期有顯著的使用量影響。
如果磁碟區在壓縮期間移至另一個節點,作業失敗事件就不會記錄。
狀態: 已解決。
如果 CSV 在壓縮進行時移至系統的另一部電腦,作業失敗事件就不會記錄在 ReFS 重複資料刪除通道中。 不過,由於此問題,我們不會預期有顯著的使用量影響。
下一步