Skip to main content
Enterprise applications
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

Checksum 與資料完整性

貢獻者

ONTAP 及其支援的通訊協定包含多項保護 Oracle 資料庫完整性的功能、包括靜態資料和透過網路傳輸的資料。

ONTAP 內的邏輯資料保護包含三項關鍵需求:

  • 資料必須受到保護、以免資料毀損。

  • 資料必須受到保護、避免磁碟機故障。

  • 資料變更必須受到保護、以免遺失。

以下各節將討論這三項需求。

網路毀損: Checksum

最基本的資料保護層級是 Checksum 、這是儲存在資料旁的特殊錯誤偵測程式碼。在網路傳輸期間、會使用 Checksum 和(在某些情況下)多個 Checksum 來偵測資料毀損。

例如、 FC 框架包含稱為循環備援檢查( CRC )的校驗和形式、以確保有效負載不會在傳輸過程中毀損。傳輸器會同時傳送資料和資料的 CRC 。FC 訊框的接收器會重新計算接收資料的 CRC 、以確保其符合傳輸的 CRC 。如果新計算的 CRC 與附加至框架的 CRC 不相符、則資料會毀損、 FC 框架會遭到捨棄或拒絕。iSCSI I/O 作業包括 TCP/IP 層和乙太網路層的校驗和、此外、為了提供額外的保護、也可在 SCSI 層提供選用的 CRC 保護。TCP 層或 IP 層偵測到線路上的任何位元毀損、導致封包重新傳輸。與 FC 一樣、 SCSI CRC 中的錯誤也會導致作業遭到捨棄或拒絕。

磁碟機毀損: Checksum

Checksum 也可用來驗證儲存在磁碟機上的資料完整性。寫入磁碟機的資料區塊會以 Checksum 功能儲存、產生與原始資料相關的不可預測數字。從磁碟機讀取資料時、會重新計算總和檢查碼、並與儲存的總和檢查碼進行比較。如果不相符、則資料已毀損、必須由 RAID 層還原。

資料毀損:寫入遺失

最難偵測的毀損類型之一是遺失或錯誤寫入。確認寫入後、必須將其寫入正確位置的媒體。就地資料毀損使用儲存在資料中的簡單檢查碼、相當容易偵測。但是、如果寫入資料只是遺失、則先前版本的資料可能仍然存在、而且總和檢查碼是正確的。如果寫入放置在錯誤的實體位置、則相關的 Checksum 將再次對儲存的資料有效、即使寫入已銷毀其他資料。

這項挑戰的解決方案如下:

  • 寫入作業必須包含中繼資料、以指出寫入的預期位置。

  • 寫入作業必須包含某種版本識別碼。

ONTAP 寫入區塊時、會包含區塊所屬的資料。如果後續讀取識別出某個區塊、但中繼資料指出該區塊在位置 456 找到時屬於位置 123 、則表示該寫入已放錯位置。

更難偵測完全遺失的寫入。這項說明非常複雜、但基本上 ONTAP 是以寫入作業導致磁碟機上兩個不同位置的更新方式來儲存中繼資料。如果寫入遺失、後續的資料讀取和相關中繼資料會顯示兩個不同的版本識別。這表示磁碟機未完成寫入。

遺失或放錯位置的寫入毀損極少發生、但隨著磁碟機持續成長、資料集也逐漸擴充至 EB 規模、風險也會增加。任何支援資料庫工作負載的儲存系統都應包含遺失寫入偵測。

磁碟機故障: RAID 、 RAID DP 和 RAID-TEC

如果發現磁碟機上的資料區塊毀損、或整個磁碟機故障且完全無法使用、則必須重新建立資料。這是在 ONTAP 中使用同位元磁碟機來完成的。資料會在多個資料磁碟機之間進行等量分割、然後產生同位元檢查資料。這會與原始資料分開儲存。

ONTAP 最初使用 RAID 4 、每組資料磁碟機使用單一同位元檢查磁碟機。結果是群組中的任何一個磁碟機都可能發生故障、而不會導致資料遺失。如果同位元磁碟機故障、則沒有資料受損、也可以建構新的同位元磁碟機。如果單一資料磁碟機故障、其餘磁碟機可與同位元磁碟機搭配使用、以重新產生遺失的資料。

當磁碟機很小時、同時發生兩個磁碟機故障的統計機率可忽略不計。隨著磁碟機容量的增加、磁碟機故障後重建資料所需的時間也隨之增加。這增加了第二個磁碟機故障會導致資料遺失的時間。此外、重建程序也會在正常運作的磁碟機上建立許多額外的 I/O 。隨著磁碟機老化、導致第二個磁碟機故障的額外負載風險也會增加。最後、即使持續使用 RAID 4 、資料遺失的風險並未增加、資料遺失的後果也會更加嚴重。在 RAID 群組故障時遺失的資料越多、還原資料所需的時間就越長、業務中斷也就越長。

這些問題導致 NetApp 開發 NetApp RAID DP 技術、這是 RAID 6 的變體。此解決方案包含兩個同位元檢查磁碟機、表示 RAID 群組中的任何兩個磁碟機都可能發生故障、而不會造成資料遺失。磁碟機的大小持續成長、最終導致 NetApp 開發 NetApp RAID-TEC 技術、引進第三個同位元磁碟機。

某些歷史資料庫最佳實務做法建議使用 RAID-10 、也稱為等量鏡射。因為有多個雙磁碟故障案例、因此資料保護功能比 RAID DP 更少、而在 RAID DP 中則沒有。

由於效能考量、有些歷史資料庫最佳實務做法表示 RAID-10 較 RAID-4/5/6 選項更為偏好。這些建議有時是指 RAID 罰款。雖然這些建議一般都是正確的、但不適用於在 ONTAP 中實作 RAID 。效能考量與同位元重生有關。在傳統的 RAID 實作中、處理資料庫執行的例行隨機寫入作業需要多個磁碟讀取才能重新產生同位元資料並完成寫入。其懲罰定義為執行寫入作業所需的額外讀取 IOPS 。

ONTAP 不會發生 RAID 損失、因為寫入會分段在記憶體中產生同位元檢查、然後以單一 RAID 等量磁碟寫入磁碟。完成寫入作業不需要讀取。

總而言之、相較於 RAID 10 、 RAID DP 和 RAID-TEC 可提供更多可用容量、更好的磁碟機故障防護、而且不會犧牲效能。

硬體故障保護: NVRAM

任何服務資料庫工作負載的儲存陣列、都必須儘快服務寫入作業。此外、寫入作業也必須受到保護、避免因電源故障等非預期事件而遺失。這表示任何寫入作業都必須安全地儲存在至少兩個位置。

AFF 和 FAS 系統仰賴 NVRAM 來滿足這些需求。寫入程序的運作方式如下:

  1. 傳入寫入資料儲存在 RAM 中。

  2. 必須對磁碟上的資料所做的變更、會同時記入本機節點和合作夥伴節點上的 NVRAM 。NVRAM 不是寫入快取、而是類似資料庫重做記錄的日誌。在正常情況下、系統不會讀取。它僅用於恢復、例如在 I/O 處理期間發生電源故障後。

  3. 然後寫入會被確認給主機。

此階段的寫入程序從應用程式的角度來看已完成、而且資料會受到保護、不會遺失、因為資料會儲存在兩個不同的位置。最後、變更會寫入磁碟、但此程序會從應用程式的觀點超出頻外、因為它會在寫入確認之後發生、因此不會影響延遲。此程序再次類似於資料庫記錄。對資料庫的變更會盡快記錄在重做記錄檔中、然後將變更確認為已認可。資料檔案的更新會在稍後進行、不會直接影響處理速度。

如果控制器發生故障、合作夥伴控制器會取得所需磁碟的所有權、並重新執行 NVRAM 中記錄的資料、以恢復發生故障時正在執行的任何 I/O 作業。

硬體故障保護: NVFAIL

如前所述、寫入必須先登入本機 NVRAM 及至少一個其他控制器上的 NVRAM 、才會被確認。此方法可確保硬體故障或停電不會導致機內 I/O 遺失如果本機 NVRAM 故障或連線至 HA 合作夥伴失敗、則無法再鏡射此傳輸中的資料。

如果本機 NVRAM 回報錯誤、節點會關機。此關機會導致容錯移轉至 HA 合作夥伴控制器。由於發生故障的控制器尚未確認寫入作業、因此不會遺失任何資料。

除非強制容錯移轉、否則 ONTAP 不允許在資料不同步時進行容錯移轉。以這種方式強制變更條件、即表示資料可能會留在原始控制器中、而且資料遺失是可以接受的。

如果強制容錯移轉、則資料庫特別容易受損、因為資料庫會在磁碟上保留大量的內部資料快取。如果發生強制容錯移轉、先前確認的變更將會有效捨棄。儲存陣列的內容會有效地及時向後跳轉、而且資料庫快取的狀態不再反映磁碟上資料的狀態。

為了保護資料不受這種情況影響、 ONTAP 允許設定磁碟區、以針對 NVRAM 故障提供特殊保護。觸發時、此保護機制會導致磁碟區進入稱為 NVFAIL 的狀態。此狀態會導致 I/O 錯誤、導致應用程式關機、使其不使用過時的資料。資料不應遺失、因為儲存陣列上應該存在任何已確認的寫入資料。

通常的後續步驟是讓系統管理員在手動將 LUN 和磁碟區重新上線之前、先完全關閉主機。雖然這些步驟可能涉及一些工作、但這種方法是確保資料完整性的最安全方法。並非所有資料都需要這項保護、因此 NVFAIL 行為可依每個磁碟區設定。

站台和機櫃故障保護: SyncMirror 和叢

SyncMirror 是一項鏡射技術、可增強但不取代 RAID DP 或 RAID-TEC 。它會鏡射兩個不同 RAID 群組的內容。邏輯組態如下:

  • 磁碟機會根據位置設定成兩個集區。一個集區由站台 A 上的所有磁碟機組成、第二個集區由站台 B 上的所有磁碟機組成

  • 接著會根據鏡射的 RAID 群組集建立通用儲存池(稱為 Aggregate )。從每個站台擷取的磁碟機數量相等。例如、 20 個磁碟機的 SyncMirror Aggregate 將由站台 A 的 10 個磁碟機和站台 B 的 10 個磁碟機組成

  • 指定站台上的每組磁碟機都會自動設定為一個或多個完全備援的 RAID-DP 或 RAID-TEC 群組、而不受鏡像的使用影響。即使在站台遺失之後、也能提供持續的資料保護。

錯誤:缺少圖形影像

上圖說明 SyncMirror 組態範例。在控制器上建立了 24 個磁碟機的集合體、其中 12 個磁碟機來自於站台 A 上配置的機櫃、 12 個磁碟機來自於站台 B 上配置的機櫃磁碟機分為兩個鏡射 RAID 群組。RAID 群組 0 包括站台 A 上的 6 磁碟機叢、鏡射到站台 B 上的 6 磁碟機叢同樣地、 RAID Group 1 也包含站台 A 的 6 磁碟叢、鏡射到站台 B 的 6 磁碟叢叢

SyncMirror 通常用於提供 MetroCluster 系統的遠端鏡射、每個站台都有一份資料複本。有時候、它是用來在單一系統中提供額外的備援層級。特別是提供機架層級的備援。磁碟機櫃已包含雙電源供應器和控制器、整體上比金屬板稍多、但在某些情況下、可能需要額外的保護。例如、有一位 NetApp 客戶部署 SyncMirror 、用於汽車測試期間使用的行動即時分析平台。系統由獨立的 UPS 系統提供獨立的電源供應器、分為兩個實體機架。

Checksum

對於習慣使用 Oracle RMAN 串流備份的 DBA 來說、檢查和主題特別重要、因為它們會移轉至快照型備份。RMAN 的一項功能是在備份作業期間執行完整性檢查。雖然這項功能有一些價值、但其主要優點是資料庫並未用於現代化的儲存陣列。當實體磁碟機用於 Oracle 資料庫時、幾乎可以確定磁碟機老化時最終會發生毀損、這是由真正儲存陣列中的陣列型校驗和所解決的問題。

使用真正的儲存陣列、資料完整性可在多個層級上使用校驗和加以保護。如果 IP 型網路中的資料毀損、傳輸控制傳輸協定( TCP )層會拒絕封包資料並要求重新傳輸。FC 傳輸協定包括校驗和、封裝的 SCSI 資料也一樣。在陣列上之後、 ONTAP 就有 RAID 和 Checksum 保護。可能會發生毀損、但如同大多數企業陣列一樣、系統會偵測並修正毀損。一般而言、整個磁碟機都會故障、導致 RAID 重建、資料庫完整性也不會受到影響。磁碟機上的個別位元組仍可能受到宇宙輻射或故障的 Flash 儲存格損壞。如果發生這種情況,同位檢查將會失敗,磁碟機將會故障,並開始 RAID 重建。資料完整性再次不受影響。最後一道防線是使用校驗和。例如,如果磁碟機毀損資料發生災難性的韌體錯誤,而 RAID 同位檢查無法偵測到該錯誤,則 Checksum 將不相符, ONTAP 會在 Oracle 資料庫收到毀損的區塊之前,阻止該區塊的傳輸。

Oracle 資料檔案和重做記錄架構也設計成即使在極端情況下、也能提供最高程度的資料完整性。在最基本的層級、 Oracle 區塊幾乎包含每個 I/O 的 Checksum 和基本邏輯檢查如果 Oracle 尚未當機或將資料表空間離線、則資料會保持不變。資料完整性檢查的程度可調整、 Oracle 也可設定為確認寫入。因此、幾乎所有的當機和故障情況都可以恢復、而且在極罕見的不可恢復情況下、系統會立即偵測到毀損。

大多數使用 Oracle 資料庫的 NetApp 客戶在移轉至快照型備份後、都會停止使用 RMAN 和其他備份產品。仍有一些選項可讓 RMAN 使用 SnapCenter 執行區塊層級的還原。然而、日常使用的 RMAN 、 NetBackup 及其他產品只會偶爾用於建立每月或每季的歸檔複本。

有些客戶選擇執行 dbv 定期對現有資料庫執行完整性檢查。NetApp 不鼓勵這種做法、因為它會產生不必要的 I/O 負載。如上所述、如果資料庫先前沒有遇到問題、就有可能發生 dbv 偵測問題接近零、此公用程式會在網路和儲存系統上產生非常高的連續 I/O 負載。除非有理由相信存在毀損、例如暴露於已知的 Oracle 錯誤、否則沒有理由執行 dbv