彈性檔案系統 ReFS windows server B+Tree

ReFS檔案系統再進化 檔案級快照輕鬆備份虛機

2022-08-01
新一代的ReFS檔案系統隨最新的Windows Server 2022雲端作業系統一併釋出,勢將逐步取代舊有的NTFS檔案系統,最新的ReFS檔案系統擁有鏡像加速同位元、資料區塊複製、完整性資料流等新功能,本文將透過實作示範來加以說明。

隨著新版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檔案系統在磁碟區和檔案大小方面,最大僅支援至256TB,而新式的ReFS檔案系統則支援至35PB。

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

圖1  無法在新式ReFS檔案系統中使用的特色功能。 (圖片來源:Microsoft Docs - 彈性檔案系統(ReFS)概觀)

ReFS檔案系統亮眼新功能

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

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

鏡像加速同位元

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

圖2  鏡像加速同位元磁碟區示意圖。 (圖片來源:鏡像加速的同位 | Microsoft Docs)

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

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

圖3  系統將資料從鏡像區域移動到同位元區域示意圖。 (圖片來源:鏡像加速的同位 | Microsoft Docs)

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

圖4  原有資料或新增資料寫入鏡像區域示意圖。 (圖片來源:鏡像加速的同位 | Microsoft Docs)

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

圖5  讓同位元區域中的資料失效改為寫入鏡像區域示意圖。 (圖片來源:鏡像加速的同位 | Microsoft Docs)

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

圖6  系統將資料寫入至同位元區域示意圖。 (圖片來源:鏡像加速的同位 | Microsoft Docs)

資料區塊複製技術

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

然而,新式的ReFS檔案系統內結合了中繼資料機制和資料區塊複製技術,所以無須從頭到尾進行讀取或寫入檔案資料的動作,整個複製作業只要重新對應檔案區域與實體位置,將系統效能成本高昂的實體作業轉換為快速且具邏輯的中繼資料作業,即可更快完成複製作業,並對儲存裝置產生較少I/O動作。

簡單來說,資料區塊複製技術能夠讓多個檔案之間共用儲存裝置中相同的實體資料,並且保留共用邏輯的完整性,如圖7所示。

圖7  資料區塊複製技術共用實體資料示意圖。 (圖片來源:ReFS上的區塊複製 | Microsoft Docs)

完整性資料流

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

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

圖8  針對個別檔案驗證資料完整性示意圖。 (圖片來源:ReFS完整性資料流 | Microsoft Docs)

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

此時,假若資料儲存於鏡像加速同位元磁碟區,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、疏鬆VDL(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檔案層級快照的方式非常簡單,在本文實作環境中,先切換到存放於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.67GB」儲存空間,與剛才傳統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檔案層級快照功能將更容易使用,並應用於各項營運服務。

<本文作者:王偉任,Microsoft MVP及VMware vExpert。早期主要研究Linux/FreeBSD各項整合應用,目前則專注於Microsoft及VMware虛擬化技術及混合雲運作架構,部落格weithenn.org。>
 


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!