您的位置:網站首頁 > 電器維修資料網 > 正文 >
詳解windows下一代ReFS
★★★★★【文章導讀】:詳解windows下一代ReFS具體內容是:ReFS的關鍵目標如下:·保持對一部分廣泛采用的NTFS功能的兼容性,同時放棄其他價值有限但會大幅增加系統復雜性和占用率的功能。·驗證并自動更正數據。數據可能會由于各種原因而損壞,因此必須對其進行…
來源: 日期:2013-11-24 19:10:37 人氣:標簽:
ReFS 的關鍵目標如下:
· 保持對一部分廣泛采用的 NTFS 功能的兼容性,同時放棄其他價值有限但會大幅增加系統復雜性和占用率的功能。
· 驗證并自動更正數據。數據可能會由于各種原因而損壞,因此必須對其進行驗證,并在可能的情況下進行自動更正。元數據必須寫入適當的位置,以避免出現“斷寫”。
· 針對超大規模應用進行優化。使用普遍適用的可擴展結構。不要假設磁盤檢查算法可以擴展到整個文件系統的規模。
· 確保文件系統永不脫機。當出現損壞時, 佳的解決方案是隔離錯誤,并允許繼續訪問余下的卷,同時盡可能打撈所有可用的數據,并且這一切都通過實時的方式完成。
· 借助與 ReFS 聯合設計和構建的存儲空間功能,提供完整的端到端彈性結構。
ReFS 的關鍵功能如下:
· 帶有校驗和的元數據完整性
· 提供可選用戶數據完整性的完整性流。
· 通過寫入時分配事務模型實現可靠的磁盤更新(也稱為寫入時復制)
· 支持超大規模的卷、文件和目錄
· 存儲池和虛擬化使得文件系統可建立并易于管理
· 通過數據條帶化提高性能(帶寬可管理)并通過備份提高容錯性
· 通過磁盤掃描防止潛在的磁盤錯誤
· 借助“數據打撈”實現損壞還原,以便在任何情況下盡可能提高卷的可用性
· 跨計算機共享存儲池,以提供額外的容錯性和負載平衡
此外,ReFS 還從 NTFS 集成了某些功能和語義,包括 BitLOCker 加密、用于安全的訪問控制列表、USN 日志、更改通知、符號鏈接、交接點、裝入點、重解析點、卷快照、文件 ID 和操作鎖。
當然,客戶端只要使用任何操作系統中可訪問現有 NTFS 卷的文件訪問 API,就可以訪問以 ReFS 存儲的數據。
關鍵設計屬性和功能
設計屬性與目標密切相關。在逐一介紹這些屬性的同時,請記住文件系統會由數億臺不同的設備使用,規模從體積 小的計算機到 大的數據中心,從 小的存儲格式到 大的多軸格式,從固體狀態存儲到 大的驅動器和存儲系統。同時,Windows 文件系統會由來源各異的各種應用程序和系統軟件訪問。ReFS 吸收了這些優點,并在這一基礎上進行了重新構建。ReFS并非從零開始,而是在適當的 NTFS 組件的基礎上進行了適當的重新設計。
代碼重用和兼容性
在文件系統 API 這一領域,兼容性是 重要、技術含量 高,同時也 具挑戰性的目標。重寫文件系統語義的實現代碼無法確保適當的兼容性,并且引發的問題將高度依賴于應用程序代碼、調用時間和硬件。因此,在構建 ReFS 時,Windows 8重用了用于實現 Windows 文件系統語義的代碼。此代碼用于實現文件系統接口(讀取、寫入、打開、關閉、更改通知等),維護內存中的文件和卷狀態,執行安全措施,以及維護內存緩存和文件數據同步。這些代碼的重用旨在確保與繼承自 NTFS 的功能的高度兼容性。
在重用的部分中,ReFS在 NTFS 版本代碼的基礎上使用了新架構的引擎,并在其中通過主文件表等磁盤上結構來表示文件和目錄。ReFS 將這部分重用代碼與一種全新的引擎相結合,這是 ReFS 背后的一大創新。下圖展示了這些改進:
可靠且可擴展的磁盤上結構
磁盤上結構及其操作由磁盤上存儲引擎處理。這構成了一種通用的鍵值接口,其上的層級將利用該接口來實現文件、目錄等結構。對于其自身實現,存儲引擎將使用專用B+ 樹。事實上,我們以 B+ 樹作為唯一的磁盤上結構來表示磁盤中的所有信息。樹可以嵌入其他樹中(子樹的根存儲在父樹的行中)。在磁盤中,樹可以非常大并分為多層,也可以小到只包含幾個鍵并嵌入其他結構中。這確保了該結構具有可全面適應文件系統的可擴展性。使用單一的結構顯著簡化了系統并減少了代碼量。新引擎接口包含“表”的概念,即可枚舉的鍵值對組。大部分表具有唯一的 ID(名為對象 ID),可以通過該 ID 來引用特定的表。ReFS通過一個特別對象表為系統中的所有此類表建立索引。
現在,將介紹如何通過表來構建通用文件系統的抽象。
文件結構
如上圖所示,目錄以表的形式表示。由于使用 B+ 樹來實現表,目錄可以高效地擴展為極大規模。文件可以作為嵌入父目錄行中的表來實現,父目錄本身也是一個表(即上圖所示的文件元數據)。文件元數據表中的行表示各種文件屬性。文件數據的位置范圍由嵌入的流表來表示,其中包含偏移值映射(以及可選的校驗和)。這意味著文件和目錄的規模再大也不會對性能產生影響,突破了 NTFS 的局限。
ACL(訪問控制列表)等其他文件系統中的全局結構將作為以對象表為根的表來表示。所有磁盤空間分配都由分層分配器來管理,其中會以空閑空間范圍表來表示空閑空間。為了實現可擴展性,我們提供了三種表,大型、中型和小型分配器。這三種表所管理的空間粒度各不相同:例如,中型分配器負責管理由大型分配器分配的中等大小區塊。這使得磁盤分配算法非常易于擴展,并且由于相關的元數據會自動并列配置,因此可實現更出色的性能。這些分配器的根和對象表的根都可以通過磁盤上的已知位置訪問。某些表具有專用的分配器,以便減少爭用并增強區域配置。
除了全局元數據表之外,對象表中的條目引用的目標為目錄,因為文件嵌入在目錄中。
可靠的磁盤更新策略
可靠而高效地更新磁盤是文件系統設計 重要,也是 具挑戰性的領域之一。 微軟花費了大量時間來評估各種方案。曾經考慮過一種日志結構的文件系統,但 終放棄了該方案。這種方案不適合 Windows 所需的通用文件系統類型。NTFS 依靠事務日志來確保磁盤上的一致性。該方案會更新磁盤上現存的元數據,并使用日志作為輔助來持續跟蹤更改,以便在發生錯誤或斷電時進行回滾。此方法的優勢之一在于維護現存的元數據布局,這有助于提高讀取性能。日志系統的主要弊端在于寫入可能會變得隨機化,更重要的是,如果在寫入時斷電,更新磁盤的行為可能會損壞之前寫入的元數據,該問題通常稱為“斷寫”。
為了盡可能提高可靠性并避免斷寫, ReFS 選擇了一種永不更新現存元數據的寫入時分配方案,以原子形式將其寫入不同的位置。在某種程度上,這是借鑒了“影式分頁”古老的概念,該功能用于可靠地更新磁盤上的結構。事務將基于這種寫入時分配方案構建。由于 ReFS 的上層派生自 NTFS,新的事務模型將無縫地利用現存故障恢復邏輯,該邏輯已經過數個版本的測試和穩定。
ReFS 的元數據分配方式允許通過更少、更大的I/O 將相互關聯的部件混合寫入(例如,流分配、文件屬性、文件名和目錄頁),這對于旋轉介質和 flash 都將提供諸多裨益。同時,采取措施保持讀取的連續性。分層分配方案在這方面投入了很大的精力。
微軟曾經進行過在系統負載極大的情況下斷開系統電源的測試,而當系統恢復時,所有結構都會接受正確性檢查。本測試是對ReFS成績的終極衡量。在這項 MICroSOFt 文件系統測試中達到了前所未有的可靠性水平。相信該方案已經達到了行業領先水平,并能完全實現關鍵設計目標。
磁盤損壞還原
如前所述,ReFS的設計目標之一是檢測和更正損壞。這不僅是為了確保數據完整性,也是為了提高系統可用性和聯機操作。因此,所有 ReFS 元數據都在 B+ 樹頁的級別計算了校驗和,并將校驗和與頁本身分別存儲。這允許我們檢測所有形式的磁盤損壞,包括失寫、錯寫和“位衰減”(介質上的數據降級)。此外,我們還添加了一個選項,供您選擇是否計算文件內容的校驗和。啟用稱為“完整性流”的這一選項后,ReFS 始終會將文件更改寫入與原始位置不同的位置。這種寫入時分配技術可確保不會由于新寫入的數據造成之前存在的數據丟失。校驗和更新將隨數據寫入自動進行,因此如果電源在寫入時斷開,我們始終將具有一個可用于驗證一致性的文件版本,并據此權威地檢測損壞。
除了提高性能以外,存儲空間還能通過在多個磁盤上維護副本,在發生部分和全面磁盤故障時保護數據。在發生讀取故障時,存儲空間可以讀取備選副本,而在發生寫入故障(以及徹底的介質讀/寫故障)時,該功能可以透明地重新分配數據。許多故障并非由介質故障引發,而是由數據尋壞、失寫或錯寫造成。
這些恰恰是 ReFS 可以通過校驗和檢測的故障類型。一旦 ReFS 檢測到此類故障,將通過存儲空間接口讀取所有可用的數據副本,并根據校驗和驗證選擇正確的副本。然后,ReFS 將告知存儲空間根據正確的副本修復損壞的副本。以上操作完全對應用程序透明。如果 ReFS 未在鏡像存儲空間上運行,則將無法自動修復損壞。在這種情況下,ReFS 將僅記錄一個事件,表明檢測到損壞,并且無法判斷是否為文件數據。我將在稍后進一步介紹這種情況對元數據的影響。
校驗和(64 位)始終對 ReFS 元數據啟用,假設該卷寄宿在一個鏡像存儲空間中,自動更正將始終啟用。所有完整性流(見下圖)都通過相同的方式獲得保護。這將為用戶提供一種端到端的高完整性解決方案,將相對不可靠的存儲變為高度可靠的存儲。
完整性流
完整性流可保護文件免遭任何形式的數據損壞。盡管這種功能在許多情境中頗具價值,但也不適合某些情境。例如,某些應用程序傾向于依靠磁盤上的特定文件布局,細致地管理其文件存儲。由于每當文件內容發生變化時,完整性流都會對數據塊進行重新分配,因此對于這些應用程序來說,文件布局將非常難以預測。數據庫系統是此類應用程序的典型案例。此類應用程序通常也會自行維護文件內容的校驗和,并可以通過與存儲空間 API 的直接交互來驗證和更正數據。
對于此類需要特定文件布局的情況,我們在各粒度級別都提供了用于控制此設置的機制和 API。
在 基本的級別,完整性是文件的一種屬性(FILE_ATTRIBUTE_INTEGRITY_STREAM)。它也是目錄的一種屬性。當存在于目錄中時,它將由目錄中創建的所有文件和目錄繼承。方便起見,您可以在格式化時使用“format”命令來為卷的根目錄指定該屬性。在根級別設置該屬性可確保其默認傳播至該卷上的所有文件和目錄。例如:
D:\>format /fs:refs /q /i:enable<volume>
D:\>format /fs:refs /q /i:dISAble <volume>
默認情況下,如果未指定 /i 開關,則系統選擇的行為將取決于該卷是否駐留于鏡像空間中。在鏡像空間中,完整性將獲得啟用,因為這樣做所帶來的好處將遠大于弊端。應用程序隨時可以通過編程方式逐個文件地更改此屬性。
對抗“位衰減”
如前所述,ReFS 和存儲空間的結合將在發生磁盤損壞和存儲故障時提供高度的數據彈性。“位衰減”是一種難以檢測和處理的數據損壞,它是指部分磁盤隨著時間的推移產生損壞,但由于這些部分很少讀取而未引起注意。當讀取或檢測到這些部分時,其備選副本可能已由于其他故障而損壞或丟失。
為了應對位衰減,ReFS添加了一項系統任務,該任務會定期掃描鏡像存儲空間中駐留的 ReFS卷上的所有元數據和完整性流數據。掃描涉及讀取所有冗余副本并通過 ReFS 校驗和驗證其正確性。如果校驗和不匹配,損壞的副本將通過正確的副本修復。
FILE_ATTRIBUTE_NO_SCRUB_DATA 文件屬性指示掃描器應跳過該文件。此屬性適用于自行維護完整性信息的那些應用程序,應用程序開發人員可以密切控制掃描這些文件的時間和方式。
Integrity.exe 命令行工具是管理完整性和掃描策略的一種強大方法。
當所有其他措施都失效時…卷將仍然可用
大部分用戶都能將 ReFS 與鏡像存儲空間結合使用,這樣損壞就可以自動且透明地修復。但在某些極端情況下,鏡像空間中的卷也可能發生損壞,例如損壞的系統內存會破壞數據,然后這些數據將進入磁盤并破壞所有備份副本。此外,某些用戶可能不會選擇在 ReFS 下使用鏡像存儲空間。
對于這些卷發生損壞的情況,ReFS 將實施“數據打撈”,該功能可將損壞的數據從活動卷的命名空間中移除。此功能旨在確保無法修復的損壞不會影響正確數據的可用性。例如,目錄中的單個文件已損壞且無法自動修復,ReFS 會將該文件從文件系統命名空間中移除,同時對該卷的余下部分進行打撈。此操作通常可在一秒內完成。
通常,文件系統無法打開或刪除損壞的文件,管理員也對此束手無策。但由于 ReFS 能夠打撈損壞的數據,管理員將能夠通過備份來恢復該文件或通過應用程序來重新創建該文件,同時保持文件系統的聯機狀態。這一關鍵創新可確保我們無需運行昂貴的脫機磁盤檢查和更正工具,并避免了數據量極大的卷由于損壞而產生較長的脫機期所帶來的風險。
完美兼容 Windows 存儲堆棧
設計必須具備 大的靈活性和兼容性。我們設計的 ReFS 與其他文件系統一樣可以插入存儲堆棧,以便盡可能提高對其周邊層級的兼容性。例如,ReFS 可以無縫利用 BitLocker 加密、用于安全的訪問控制列表、USN 日志、更改通知、符號鏈接、交接點、裝入點、重解析點、卷快照、文件 ID 和操作鎖。預計大部分文件系統過濾器無需或只需小幅調整即可無縫地用于 ReFS。
還有一項值得注意的靈活性,盡管 ReFS 和存儲空間適合結合使用,但它們實際上是可以分別獨立運行的兩個組件。這可以同時為兩種組件提供 大的部署靈活性,避免不必要的相互限制。換句話說,可以在選擇存儲解決方案時在可靠性和性能方面進行權衡,包括將 ReFS 與來自其他底層存儲解決方案聯合部署。
借助存儲空間,存儲池可以由多臺計算機共享,并且虛擬磁盤可以在這些計算機之間實現無縫遷移,提供額外的故障彈性。由于構建該系統的方式,ReFS 可以無縫地利用這些優勢。
使用
20 多年來,針對 NTFS 開發了數萬種復雜而龐大的測試,并使用它們對 ReFS 進行了測試。ReFS 在系統壓力測試、斷電等故障測試、可擴展性測試和性能測試等方面,都滿足并超出了預計的部署要求。因此,ReFS 已經準備好在受控的環境中接受部署測試。
同時, ReFS將作為一種階段性演進功能進行部署:
首先作為 Windows Server 的存儲系統,然后作為客戶端的存儲系統, 終作為啟動卷。之前也曾針對NTFS采取過相同的做法。
初,主要測試將聚焦于作為文件服務器運行的 ReFS。我們希望用戶能夠通過將其作為文件服務器而獲益,尤其是在鏡像存儲空間中。ReFS還計劃與存儲合作伙伴密切協作,以便與他們的存儲解決方案相集成。
結論
ReFS 和存儲空間共同構成了 Windows 在今后十年或更長時間內使用的存儲基礎。這將顯著強化微軟在存儲領域的領先地位。存儲空間和 ReFS 的架構中還預留了進一步創新的空間,期待 ReFS 能夠成為下一種大規模部署的文件系統。
常見問題解答:
問:為什么將其命名為 ReFS?
ReFS 是彈性文件系統 (ReSILientFile System) 的縮寫。盡管該系統在很多方面都進行了優化,但彈性是其中 突出的一種功能。
問:ReFS 的容量限制是多少?
下表顯示了磁盤上格式的容量限制。其他因素可能會決定某些實踐限制,例如系統配置(例如內存大小)、各種系統組件設置的限制、填充數據集所需的時間以及備份次數等。
屬性 磁盤上格式的限制
單個文件的 大規模 2 ^64-1 字節
單個卷的 大規模 格式支持帶有 16KB 群集規模的 2^78 字節 (2^64 * 16 * 2^10)。Windows 堆棧尋址允許 2^64 字節
目錄中的 大文件數量 2^64
卷中的 大目錄數量 2^64
大文件名長度 32K Unicode 字符
大路徑長度 32K
任何存儲池的 大規模 4 PB
系統中存儲池的 大數量 無限制
存儲池中空間的 大數量 無限制
問:我能否在 NTFS 和 ReFS之間轉換數據?
Windows 8 中無法轉換現有數據。
問:我能否在 Windows Server 8 中從 ReFS 啟動?
不能,目前尚未實現也不支持該功能。
問:ReFS 是否可用于可移除介質或驅動器?
不能,目前尚未實現也不支持該功能。
問:ReFS 不再支持哪些 NTFS的語義或功能?
我們在 ReFS 選擇不再支持的 NTFS 功能包括:命名流、對象 ID、短名稱、壓縮、穩健級加密 (EFS)、用戶數據事務、稀疏、硬鏈接、擴展屬性和配額。
問:奇偶校驗空間能否與 ReFS 結合使用?
ReFS 支持存儲空間提供的錯誤還原選項。在Windows Server 8 中,自動數據更正僅針對鏡像空間實施。
問:是否支持群集?
支持故障轉移群集,各卷可以跨計算機實現故障轉移。此外,支持群集中的共享存儲池。
問:RAID 呢?我如何使用ReFS 的條帶化、鏡像或其他形式的 RAID 功能?例如,ReFS 是否可以提供視頻所需的讀取性能?
ReFS 可利用存儲空間的數據備份功能,包括條帶化的鏡像和奇偶校驗。ReFS 的預計讀取性能與 NTFS 相似,因為二者之間共享了大量相關代碼。它將非常適合流數據。
問:為什么 ReFS 中沒有重復數據刪除、DRAM 和存儲間的二級緩存以及可寫入快照?
ReFS 本身不提供重復數據刪除。這種熟悉、可插入的文件系統架構的一個副作用是其他重復數據刪除產品可以按照與 NTFS 相同的方式插入 ReFS。
ReFS 并未專門實施二級緩存,但用戶可以使用第三方解決方案來實現此功能。
可將 ReFS 和 VSS 結合使用,以便按照與 Windows 環境中的 NTFS 一致的方式提供快照。目前,尚不支持寫入超過 64TB 的快照。
【看看這篇文章在百度的收錄情況】
相關文章
- 上一篇: Linux何時徹底征服Win8品牌機
- 下一篇: Win8快速啟動條件與多系統管理的說明