VHD 磁碟壓縮
VHD 磁碟壓縮是每次用戶註銷時執行的程式。壓縮程式的設計目的是根據預先定義的閾值,自動減少使用者容器的記憶體數量。 在註銷階段期間,FSLogix 會評估磁碟,以判斷是否應該執行磁碟壓縮。
注意
VHD 磁碟壓縮會影響配置檔和 ODFC 容器(包括 雲端快取 設定)
VHD 磁碟壓縮 預設為 [啟用 ]。 如果您想要停用它,請參閱 停用 VHD 磁碟壓縮。
壓縮程式依賴 優化磁碟驅動器 服務 (defragsvc)。 此服務會使用 GetSupportedSize 方法的 SizeMin 參數,藉由查詢 MSFT_Partition API 來判斷支援的最小大小。 這項作業會考慮不可移動檔案的位置(也就是無法移動的檔案)。 如需詳細資訊,請參閱 MSFT_Partition 類別的 GetSupportedSize 方法。
重要
如果優化磁碟驅動器服務的 StartupType (defragsvc) 設定為 Disabled,VHD 磁碟壓縮將無法查詢支援的大小下限,而且進程將不會執行。 不論服務狀態為 [執行中] 或 [已停止],服務 StartupType 都必須設定為 [手動] 或 [自動]。
您必須使用動態擴充虛擬硬碟;固定大小的虛擬硬碟無法壓縮。
判斷 VHD 磁碟壓縮何時執行
FSLogix 會決定是否每次用戶註銷時執行壓縮程式。如果符合下列準則,VHD 磁碟壓縮會執行:
- 容器的大小必須大於 1 GB(磁碟大小)。
- 磁碟上取用的大小差異(C)和查詢的大小下限(B)。 差異必須大於或等於容器中已取用大小的 20%。
差異的計算方式如下:
- A - B = C
- 如果 C ≥ (A x 0.2),壓縮就會執行。
- 如果 C < (A x 0.2),壓縮不會執行。
範例案例
以下提供幾個範例:
範例 1:容器的取用大小為 6GB。 當我們呼叫 GetSupportedSize 時,產生的最小大小為 2.5GB:
- 6 - 2.5 = 3.5 GB
- 20% 的 6 GB = 1.2 GB
- 3.5 GB 大於 1.2 GB,壓縮執行。
範例 2:容器的取用大小為 12GB。 當我們呼叫 GetSupportedSize 時,產生的最小大小為 10GB:
- 12 - 10 = 2 GB
- 20% 的 12 GB = 2.4 GB
- 2 GB 小於 2.4 GB,壓縮不會執行。
範例數據表:
容器 | 固定/動態 | 已設定的大小 | 已取用的大小 | 支援的大小 | 壓縮嗎? |
---|---|---|---|---|---|
<username> profile_.vhdx |
動態 | 30 GB | 6 GB | 2.5 GB | Yes |
<username> profile_.vhdx |
動態 | 30 GB | 12 GB | 10 GB | No |
<username> profile_.vhdx |
已修正 | 30 GB | 30 GB | N/A | No |
使用者體驗
壓縮執行時,使用者會看到等候 FSLogix Apps Services 一段時間的訊息。 根據要復原的空間,壓縮程式平均需要 20 到 30 秒的時間。 第一個精簡作業是最長的,且是以可復原的空間和其他計算資源因素為基礎。
後續註銷應該更快,因為壓縮的數據量應該會減少。 VHD 磁碟壓縮最多可以執行 5 分鐘。 如果達到此最大值,作業就會結束,然後繼續註銷。 在下一次註銷期間,作業將會從先前的狀態繼續執行。
Winlogon 事件
VHD 磁碟壓縮會在使用者註銷時運作,這是程式的一部分 Winlogon
。 每當進程造成註銷時間超過 60 秒時,進程 Winlogon
就會建立警告事件。 這些警告是正常且預期的。 壓縮程式可能會超過 60 秒,視 VHD(x) 的大小和要復原的空間而定。 臨界 Winlogon
值是固定值,無法變更。
請參閱 Winlogon (註銷) Log Analytics 查詢的延遲警告 ,以顯示超過 60 秒閾值及其持續時間的作業數目。