︿
Top


網管人雜誌

本文刊載於 網管人雜誌第 199 期 - 2022 年 8 月 1 日出刊NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它,或透過城邦出版人讀者服務網進行訂閱。





本文目錄






前言

隨著新版 Windows Server 2022 雲端作業系統的推出,新一代「彈性檔案系統」(Resilient File System,ReFS)也不斷增強原有功能,並且推出各項亮眼新功能,在在可以看出舊有的 NTFS 檔案系統,雖然尚未完全退場,然而從發展趨勢中可以看到將會逐步淘汰。

第一版的 ReFS 檔案系統,出現於 Windows Server 2012 作業系統中,此時的 ReFS 檔案系統僅能支援資料磁碟區用途,還無法擔任開機磁碟區的重任。事實上,ReFS 檔案系統便是希望能夠克服,舊有 NTFS 檔案系統的各式問題,其主要設計結構採用 B+Tree 的方式,將資料可用性最大化並跨各種工作負載,整體優勢包括自動化完整性檢查、資料清理、無須執行 chkdsk 檢查、支援超長路徑和檔名……等。

下列為 ReFS 檔案系統演進版本和重要功能,以及哪些作業系統支援哪些 ReFS 版本:
  • ReFS v1.1: 整合於 Windows Server 8 Beta 版本中,以及正式推出的 Windows Server 2012 作業系統版本中。
  • ReFS v1.2: 整合於 Windows 8.1、Windows 10 v1507/v1607、Windows Server 2012 R2,以及 Windows Server 2016 和後續版本,在格式化時指定採用 ReFSv1 時可供使用。
  • ReFS v2.0: 整合於 Windows Server 2016 TP2/TP3 版本,其它後續版本也無法掛載使用。
  • ReFS v3.0: 整合於 Windows Server 2016 TP4/TP5 版本。
  • ReFS v3.1: 整合於 Windows Server 2016 RTM 版本。
  • ReFS v3.2: 整合於 Windows 10 v1703 和 Windows Server Insider Preview build 16237,其中只有伺服器版本才支援重複資料刪除特色功能。
  • ReFS v3.3: 整合於 Windows 10 Enterprise v1709、Windows Server v1709 版本,從這個版本開始,在 Windows 10 的部份採用 Home 或 Pro 版本,將無法建立 ReFS 檔案系統磁碟區  。
  • ReFS v3.4: 整合於 Windows 10 Enterprise v1803、Windows Server 2019、Windows Server v1803 版本。
  • ReFS v3.5: 整合於 Windows 10 Enterprise Insider Preview 19536 和後續版本,新增支援「硬式連結」(Hard Links),但只能在新格式化的磁碟區啟用此功能,無法支援舊有的磁碟區升級版本後使用。
  • ReFS v3.6: 整合於 Windows 10 Enterprise Insider Preview 21292,和 Windows Server Insider Preview 20282 版本。
  • ReFS v3.7: 整合於 Windows 11 Enterprise v21H2 和 Windows Server 2022,只有伺服器版本才支援「檔案層級快照」(File-Level Snapshot)特色功能。

新式的 ReFS 檔案系統,在設計時便是為了支援超大型資料集而設計,並且不會對效能產生負面影響。舉例來說,舊有的 NTFS 檔案系統在磁碟區和檔案大小方面,最大僅支援至「256 TB」,而新式的 ReFS 檔案系統則支援至「35 PB」。

值得注意的是,舊有的 NTFS 檔案系統特色功能,在新式的 ReFS 檔案系統中並非全部支援,例如,檔案系統壓縮、檔案系統加密、磁碟配額、ODX 卸載資料傳輸……等便不支援(如圖 1 所示),所以要採用新式 ReFS 檔案系統,取代舊有 NTFS 檔案系統的企業和組織,管理人員在導入前必須確認所需的功能是否支援。

圖 1、無法在新式 ReFS 檔案系統中使用的特色功能





ReFS 檔案系統亮眼新功能

新一代的 ReFS 檔案系統也新增許多亮眼新功能,是傳統 NTFS 檔案系統永遠無法達到的,舉例來說,「鏡像加速同位元」(Mirror-Accelerated Parity) 功能,提供將 SSD 固態硬碟和傳統 HDD 機械式硬碟儲存空間整合的技術,達到資料讀寫效能提升同時具備大容量儲存空間的目的。

「資料區塊複製」(Block Cloning)「疏鬆 VDL」(Sparse VDL)特色功能,能夠有效加速資料區塊的複製作業,在 Hyper-V 虛擬化環境中,讓 VM 檢查點合併的操作時間大幅縮短並降低對效能的影響,針對 VM 虛擬主機的 .VHDX 虛擬硬碟檔案的建立和擴充作業,也能有效加速並縮短整體處理時間。



鏡像加速同位元

對於 RAID 磁碟陣列概念不陌生的管理人員便知,每種類型的磁碟陣列都有其優點和缺點,而鏡像加速同位元的特色功能,便是將 「鏡像」(Mirror)「同位元」(Parity),這兩種不同儲存空間效率和效能特性整合在一起(如圖 2 所示)。

圖 2、鏡像加速同位元磁碟區示意圖

簡單來說,鏡像機制能夠獲得較佳的資料寫入效能,但是儲存空間效率上較差,而同位元機制在寫入資料時,因為要重新計算同位元檢查後才進行資料寫入,導致資料寫入效能較差,然而同位元機制相較於鏡像則有更多的儲存空間。

那麼這兩種機制整合在一起時,系統如何處理資料讀寫以及資料存放的難題 ?首先,當鏡像區域儲存空間達到指定的容量時,系統便會開始將資料從鏡像區域移動到同位元區域的動作,也就是執行讀取資料、計算同位元編碼、將資料寫入同位元區域……等工作任務(如圖 3 所示)。

圖 3、系統將資料從鏡像區域移動到同位元區域示意圖

那麼在寫入資料時,鏡像加速同位元磁碟區又是如何處理的呢 ?系統分別有三種不同的方式,來因應各種 IO 寫入資料的情境。首先,如果資料寫入是修改鏡像區域內的現有資料時,系統便會直接修改資料內容,倘若資料寫入是全新資料時,系統將會在鏡像區域中尋找足夠將資料寫入的儲存空間,然後將資料寫入鏡像區域中(如圖 4 所示)。

圖 4、原有資料或新增資料寫入鏡像區域示意圖

當資料寫入需求為修改同位元區域中的資料時,系統會先讓同位元區域中的資料失效,然後在鏡像區域中尋找足夠將資料寫入的儲存空間,再將資料寫入鏡像區域中,其中讓同位元區域中的資料失效這個動作,是採用「中繼資料」(Metadata)的方式進行快速操作,所以能有效改善同位元區域資料寫入緩慢的問題(如圖 5 所示)。

圖 5、讓同位元區域中的資料失效改為寫入鏡像區域示意圖

當系統無法在鏡像區域中,尋找到足夠的儲存空間進行資料寫入作業時,系統只能將資料寫入至同位元區域內(如圖 6 所示)。此時,建議管理人員將需要大量寫入的 VHD/VHDX 虛擬硬碟檔案,存放在不同的子目錄當中,因為 ReFS 檔案系統的特色,會在資料夾及檔案層級中寫入中繼資料變更,當系統執行大量資料寫入作業時,由於中繼資料操作較小並且能夠平行執行,達到減少應用程式的延遲,讓系統以效能最佳化的方式,將資料寫入至同位元區域中。

圖 6、系統將資料寫入至同位元區域示意圖



資料區塊複製技術

傳統上執行資料複製時,無論目的端檔案與來源端檔案相同或不同,都必須複製一段範圍的檔案位元組,所以資料複製作業將會觸發系統效能成本高昂的讀取和寫入動作。

然而,在新式的 ReFS 檔案系統中,結合中繼資料機制和資料區塊複製技術,所以無須從頭到尾進行讀取或寫入檔案資料的動作,整個複製作業只要重新對應檔案區域與實體位置,將系統效能成本高昂的實體作業,轉換為快速且具邏輯的中繼資料作業,即可更快完成複製作業,並對儲存裝置產生較少 I/O 動作。簡單來說,資料區塊複製技術能夠讓多個檔案之間,共用儲存裝置中相同的實體資料,並且保留共用邏輯的完整性(如圖 7 所示)。

圖 7、資料區塊複製技術共用實體資料示意圖



完整性資料流

事實上,在預設情況下,ReFS 檔案系統一律會為中繼資料建立 「總和檢查碼」(Checksums),但是針對個別檔案資料上,並不會產生並驗證總和檢查碼,只有需要判斷或嘗試修正損毀的檔案資料時,管理人員才需要啟用 「完整性資料流」(Integrity Streams) 機制。

當管理人員針對個別檔案或資料夾或整個磁碟區,啟用完整性資料流機制後,ReFS 檔案系統將會建立和維護總和檢查碼,並且在傳回啟用完整性資料流的資料之前,先驗證該資料的完整性(如圖 8 所示)。

圖 8、針對個別檔案驗證資料完整性示意圖

判斷或嘗試修正損毀的檔案資料時,系統將會拿個別檔案的總和檢查碼,以及檔案中繼資料的總和檢查碼互相比對,倘若總和檢查碼結果相符,則會將資料標記為有效,倘若總和檢查碼內容不相符,則表示資料已經發生損毀。

此時,倘若資料儲存於鏡像加速同位元磁碟區時,ReFS 檔案系統將會嘗試修正損毀的資料,當修正作業成功時,便會還原資料的完整性並且將有效的資料回傳給應用程式,而應用程式不會察覺到任何損毀的情況發生過。倘若,嘗試修正資料作業失敗時,ReFS 檔案系統將會在系統事件記錄檔中記錄所有損毀資料。





實戰演練 – ReFS 檔案層級快照機制

在實戰演練小節中,將透過最新 Windows Server 2022,內建在 ReFS 檔案系統中的「檔案層級快照」(File-Level Snapshots)機制,它與傳統的快照機制完全不同,使用「快速中繼資料操作」(Quick Metadata Operation)的方式來建立快照檔案。

此外,ReFS 檔案層級快照和 ReFS 資料區塊複製機制,在運作機制上也有很大的不同,因為 ReFS 區塊複製機制是「可寫入」(Writable)的狀態,而 ReFS 檔案快照則是「唯讀」(Read-Only)的狀態,這樣的特性運作在 Hyper-V 虛擬化平台中,針對 VHD/VHDX 檔案的 VM 虛擬主機備份場景特別有優勢,因為 ReFS 檔案快照無須考慮備份的 VM 虛擬主機檔案大小,而是一律採用固定的時間即可完成快照檔案的建立,有效縮短 VM 虛擬主機建立快照所花費的時間和儲存成本。



安裝 Hyper-V 虛擬化伺服器角色

首先,為實作演練的 Windows Server 2022 主機,安裝 Hyper-V 虛擬化伺服器角色。請在開啟伺服器管理員後,依序點選「Manage > Add Roles and Reatures > Role-based or feature-based installation」,在 Server Roles 安裝伺服器角色頁面中勾選「Hyper-V」選項,並同時安裝相關 Hyper-V 伺服器功能即可,值得注意的是,當 Hyper-V 安裝程序完成後,需要重新啟動主機後才能套用生效,當主機重新啟動後再次開啟伺服器管理員,系統將會顯示 Hyper-V 虛擬化角色和功能安裝完成資訊(如圖 9 所示)。

圖 9、為 Windows Server 2022 主機安裝 Hyper-V 虛擬化伺服器角色和功能



建立 NTFS 和 ReFS 檔案系統磁碟區

為了稍後便於比較,傳統 NTFS 和新式 ReFS 檔案系統磁碟區有何不同,已經預先在 Windows Server 2022 主機中,除了系統磁碟區之外,額外配置 16TB 的硬碟後,將其中的 8TB 儲存空間格式化為 NTFS 檔案系統,並且指派磁碟機代號為「N:」,另外的 8TB 儲存空間則格式化為 ReFS 檔案系統,並指派磁碟機代號為「R:」(如圖 10 所示)。

圖 10、同一個儲存裝置中,將儲存空間格式化出 NTFS 和 ReFS 檔案系統磁碟區

為了確保目前的 ReFS 磁碟區中,採用正確且最新的 ReFS 檔案系統版本,確保 ReFS 檔案層級快照機制能夠順利運作,請開啟命令提示字元後,鍵入「fsutil fsinfo refsInfo」指令,搭配 ReFS 磁碟區代號「R:」,即可查詢 ReFS 檔案系統磁碟區採用的 ReFS 版本,請確認採用最新的 ReFS「v3.7」版本,才能支援 ReFS 檔案層級快照機制(如圖 11 所示)。

圖 11、確認採用最新的 ReFS v3.7 檔案系統版本

管理人員若有興趣了解和比較,有關 NTFS 和 ReFS 檔案系統磁碟區,在功能性支援度和磁碟區有哪些不同的話,可以在命令提示字元視窗中,分別鍵入「fsutil fsinfo volumeInfo」和「fsutil fsinfo sectorInfo」指令,搭配 NTFS 或 ReFS 磁碟區代號,即可查看相關資訊。

舉例來說,鍵入「fsutil fsinfo volumeInfo R:」指令,即可查看 ReFS 檔案系統磁碟區支援哪些特色功能,例如,支援新式的 Block Cloning、Sparse VDL、File Ghosting……等特色功能(如圖 12 所示)。

圖 12、查詢 ReFS 檔案系統磁碟區支援哪些特色功能



大幅提升 VM 虛擬主機工作負載效能

前面已經介紹過資料區塊複製和疏鬆 VDL 特色功能。事實上,在 ReFS 檔案系統中這兩項新增的特色功能,無論在 Hyper-V 虛擬化環境,或是整合 Storage Spaces Direct 機制建構的 HCI 超融合運作環境,都能夠大幅提升 VM 虛擬主機的工作負載效能。

舉例來說,資料區塊複製技術能夠加速資料區塊的複製作業,讓 VM 虛擬主機執行檢查點合併作業時,除了降低對系統工作負載的影響之外還大幅降低工作任務執行時間,而疏鬆 VDL 機制可以將 ReFS 檔案系統中的檔案,在建立檔案工作任務時將檔案設定為「快速歸零檔案」(Zero Files Rapidly),有效降低建立 VM 虛擬主機採用「固定」(Fixed)虛擬硬碟格式時所花費的時間。

在 Windows Server 2022 主機中,已經分別建立 NTFS 磁碟區(N:)和 ReFS 磁碟區(R:),管理人員可以透過簡單的 PowerShell 指令,分別在 NTFS 磁碟區和 ReFS 磁碟區中,建立 1TB 大小並採用固定格式的 VHDX 虛擬硬碟,觀察在 NTFS 磁碟區和 ReFS 磁碟區中所需花費的時間。

請在 PowerShell 指令視窗中,鍵入「Measure-Command {New-VHD -SizeBytes 1024GB -Path N:\VM-NTFS.vhdx -Fixed}」指令,指定在 NTFS 磁碟區中建立 1TB 大小並採用固定格式的 VHDX 虛擬硬碟,接著鍵入「Measure-Command {New-VHD -SizeBytes 1024GB -Path R:\VM-ReFS.vhdx -Fixed}」指令,指定在 ReFS 磁碟區中建立 1TB 大小並採用固定格式的 VHDX 虛擬硬碟(如圖 13 所示)。

圖 13、在 NTFS 和 ReFS 磁碟區中,建立 1TB 固定格式的 VHDX 虛擬硬碟

從兩個指令的執行結果中可以看到,即使在同一個儲存裝置中,一個磁碟區採用傳統 NTFS 檔案系統,另一個則採用新式 ReFS 檔案系統,分別建立 1TB 固定格式 VHDX 虛擬硬碟時,花費的時間有如此巨大的差異,在本文實作環境中 NTFS 磁碟區花費「3,665 秒」,而 ReFS 磁碟區則僅花費「2 秒」,整體效率相差「1,832.5 倍」,可想而知在其它 VM 虛擬主機工作負載的操作,整體所花費的時間成本以及工作效能的提升將有非常明顯的差異。



傳統 Hyper-V 層級快照

在傳統運作架構中,管理人員可以隨時針對 Hyper-V 虛擬化平台中,為運作的 VM 虛擬主機建立「檢查點」(Checkpoint),也就是舊稱為「快照」(Snapshot)的技術。一般來說,VM 虛擬主機建立檢查點時,通常是為了重大安全性更新或軟體及應用程式大版本更新前使用,倘若更新失敗能夠快速將 VM 虛擬主機回到建立檢查點時間,一旦完成更新作業後再執行合併檢查點的動作。

然而,對於許多管理人員來說,在重大版本更新作業完成後,可能還需要進行許多測試和驗證項目,往往忘記必須將 VM 虛擬主機執行合併檢查點的動作而繼續使用。事實上,一旦 VM 虛擬主機建立檢查點之後,便會產生「.avhdx」檔案記錄建立檢查點之後 VM 虛擬主機所有的異動,並且這個硬碟將會是效能最差的「差異硬碟」(Differencing vDisk)格式。

舉例來說,管理人員可以為 VM 虛擬主機建立檢查點之後,針對 VM 虛擬主機進行隨意操作,例如,建立檔案和資料夾再刪除、啟動 / 停用系統服務……等,同時觀察 .avhdx 檔案的變化,便能發現這個檔案將會因為 VM 虛擬主機的各項操作而不斷增長,倘若 VM 虛擬主機再次建立檢查點,系統除了再次產生另一個 .avhdx 檔案並且不斷增長之外,隨著資料變動多寡程度也會影響建立檢查點的時間(如圖 14 所示)。

圖 14、為 VM 虛擬主機建立 Hyper-V 層級檢查點



建立 ReFS 檔案層級快照

由於 ReFS 檔案層級快照,採用快速中繼資料操作的方式來建立快照檔案,除了有效縮短 VM 虛擬主機建立快照所花費的時間成本之外,也不像傳統 Hyper-V 層級快照般產生大量的異動參照檔案。在本文實作環境中,將使用 ReFSUtil 指令工具的方式來建立和管理 ReFS 檔案層級快照。
ReFS 檔案層級快照也支援採用 API 進行建立和管理。

建立 ReFS 檔案層級快照的方式非常簡單,在本文實作環境中切換到存放於 ReFS 檔案系統磁碟區的 VM 虛擬主機 R 槽後,鍵入「refsutil streamsnapshot /c "ReFS_snapshot_01" VM-ReFS.vhdx」指令後,即可看到系統回應執行成功的訊息,和剛才傳統 Hyper-V 層級快照相比之下,ReFS 檔案層級快照的建立時間幾乎是瞬間完成。

需要查詢建立的 ReFS 檔案層級快照資訊時,只要將剛才建立時的參數更改為「/l」即可,請鍵入「refsutil streamsnapshot /l "ReFS_snapshot_01" VM-ReFS.vhdx」指令,即可看到剛才為 VM 虛擬主機建立的 ReFS 檔案層級快照資訊,可以看到建立的快照檔案才佔用「2.67 GB」儲存空間,與剛才傳統 Hyper-V 層級快照初始產生的空間相差極大(如圖 15 所示)。

圖 15、為 VM 虛擬主機建立 ReFS 檔案層級快照並查詢快照資訊

成功建立 ReFS 檔案層級快照後,和先前建立傳統 Hyper-V 層級快照一樣,針對 VM 虛擬主機進行隨意操作,建立檔案和資料夾再刪除、啟動 / 停用系統服務……等後,再次建立 ReFS 檔案層級快照,當檔案有多份 ReFS 檔案層級快照時,管理人員可以善用「萬用字元」(wildcards)的參數,以便同時查詢和顯示多筆 ReFS 檔案層級快照資訊。

請鍵入「refsutil streamsnapshot /c "ReFS_snapshot_02" VM-ReFS.vhdx」指令,針對 VM 虛擬主機再次建立 ReFS 檔案層級快照,鍵入「refsutil streamsnapshot /l "ReFS_snapshot_*" VM-ReFS.vhdx」指令查詢多筆的 ReFS 檔案層級快照資訊,可以看到針對 VM 虛擬主機同樣的操作,在傳統 Hyper-V 層級快照產生的檔案空間佔用較大,並且隨時各項操作越多檔案空間不斷增長,而 ReFS 檔案層級快照則是固定大小且佔用的儲存空間不再變動(如圖 16 所示)。

圖 16、再次建立 ReFS 檔案層級快照並查詢多筆資訊



管理 ReFS 檔案層級快照

管理人員可以隨時管理 ReFS 檔案層級快照,舉例來說,可以查看單筆的 ReFS 檔案層級快照內容,甚至是上一份與另一份 ReFS 檔案層級快照之間總共有哪些變動。

只要鍵入「refsutil streamsnapshot /q "ReFS_snapshot_03" VM-ReFS.vhdx」,即可查看單筆的 ReFS 檔案層級快照內容含有哪些資訊,倘若需要刪除快照檔案的話,只需要將參數改為「/d」即可。

當管理人員,想要查詢不同 ReFS 檔案層級快照之間有哪些異動時,可以在檔案結尾加上「:快照名稱」即可。舉例來說,目前共建立三份 ReFS 檔案層級快照,請鍵入「refsutil streamsnapshot /q "ReFS_snapshot_01" VM-ReFS.vhdx:ReFS_snapshot_03」指令,即可查看第一份和第三份快照之間有哪些異動,可惜的是目前系統的顯示方式並不是人類容易閱讀的資訊(如圖 17 所示),相信後續的版本將會持續改進。

圖 17、查看不同 ReFS 檔案層級快照有哪些異動





結語

透過本文的深入剖析和實戰演練後,相信管理人員對於新一代的 ReFS 檔案系統有更深層的認識。很可惜的是,由於 ReFS 檔案層級快照功能,為最新 Windows Server 2022 雲端作業系統的第一個版本,因此尚未完全與系統進行深度整合,包括實作演練查詢 ReFS 檔案層級快照有哪些異動時,系統顯示的資訊是人類無法輕鬆閱讀的資訊,不過相信隨著 ReFS 檔案系統版本不斷演進,屆時 ReFS 檔案層級快照功能將更容易使用,並應用於各項營運服務。
文章標籤: ,