Windows-Server-2008

Windows Server 2008 Software Raid 5 - 數據完整性問題

  • November 27, 2012

我有一台執行 Windows Server 2008 R2 的伺服器,帶有(Windows 本機)軟體 raid-5 陣列。該陣列由 7 個 1TB 西部數據 RE3 和 RE4 驅動器組成。我有這個陣列的離線備份。

問題是這樣的:幾天前,在將一個大文件複製到磁碟後,我注意到該文件存在完整性問題 - 這是我通過 uTorrent 下載的約 12GB 文件。將其移至 raid 陣列後,我使用 uTorrent 重新定位下載位置,並進行了重新檢查,以便可以從該位置播種。複查發現,複製文件中只有 6308/6310 塊完好無損。

我的下一步是編寫一個快速的 powershell 腳本,它將文件複製到數組中,同時對原始文件和結果文件執行 SHA1 雜湊並比較它們。較小的文件(100-1000MB)複製過來就好了。當我開始複製更大的數據(~15GB)時,我發現雜湊檢查失敗的時間大約有 2/3。損壞的文件有非常非常小的不一致 - 小於 0.01%(編輯 - 後來的實驗表明,損壞的數據塊的長度始終為 60 字節,每個 15GB 複製文件通常顯示一到三個。損壞的數據看起來是隨機的,沒有一致的翻轉位模式)。我進一步消除了網路或客戶端問題的可能性,將這個大文件放在伺服器的 C:\ 上,然後從那裡重複複製到陣列,看到類似的結果。

通過資源管理器、powershell 或標準 Windows 命令提示符複製數據會產生相同的結果。沒有一個副本失敗或報告任何問題。RAID 陣列本身在磁碟管理中被列為健康。

經過幾次實驗後,我關閉了伺服器,並在一夜之間執行了 memtest。未檢測到錯誤。chkdsk 的基本執行沒有發現任何問題,但我沒有使用 /R 標誌,因為我不確定這會如何影響軟體 raid-5 卷。

接下來我執行 Crystal Disk Info 來檢查驅動器上的智能數據 - 但發現 CDI 僅檢測到陣列中 7 個磁碟中的 5 個。我不知道為什麼。儘管如此,CDI 在單個驅動器上顯示以下“警告”標誌:

05 199 199 140 000000000001 Reallocated Sectors Count
C5 200 200 __0 000000000001 Current Pending Sector Count

這有點令人擔憂,但我真的不知道如何處理這些資訊。我幾乎不覺得一個重新分配的部門可能會導致這種情況。

在這一點上,我正在尋找一些關於下一步做什麼的指導。我需要確定這個問題的原因,但我對執行 chkdsk /R 或任何可啟動磁碟健康檢查程序猶豫不決,因為我擔心它們可能會破壞陣列。我考慮過觸發陣列的重新同步,但我實際上不確定如何在不做一些愚蠢的事情(例如手動刪除磁碟然後恢復它)的情況下做到這一點。

任何可以幫助我找出此問題的確切原因的建議將不勝感激。

由於您正在執行的任何操作都沒有失敗,因此執行chkdsk /R可能不會產生任何結果 - chkdsk 將無法恢復任何未被檢測為損壞的內容。

像您所看到的那樣的數據損壞可能有幾個來源:

  1. 寫入數據前軟體 RAID 算法執行中的位翻轉
  2. 寫入數據時硬體實現中的位翻轉
  3. 磁性介質上的位翻轉
  4. 讀取數據時硬體實現中的位翻轉

您應該選擇一種有條不紊的方法來排除您可以排除的那些:

  • 數字 4 - 讀取時的位翻轉 - 應該很容易辨識,因為翻轉會發生在不同的數據區域,因此 md5 或 sha1 雜湊值會不時不同,您嘗試在大文件上計算它們
  • 數字 3 - 磁性介質上的翻轉 - 不太可能未被檢測到,因為每個硬碟都包含前向糾錯算法以及錯誤檢測校驗和,您肯定會看到不可恢復的扇區讀取錯誤比位翻轉滑動更頻繁通過 - 查看 SMART 不可恢復的讀取錯誤應該足以排除這個錯誤
  • 2 號 - 這個很難被發現。儘管 SATA 協議通過糾錯算法保護傳輸的數據,其中 3. 案例的邏輯將應用並在允許通過翻轉位扇區之前將任何傳輸減慢到爬行,但損壞可能發生在其他地方並且未被檢測到 - 在緩衝區中例子。
  • 1 號 - 我認為這是最有可能的情況。實現中的錯誤或(更可能是具有這種意義的錯誤可能會在作業系統發布 4 年後由其他地方記錄和記錄)硬體故障(如有缺陷的 RAM)可能導致這種位翻轉。執行幾次 memtest 以排除 RAM,尤其是在您不使用 ECC 記憶體的情況下。在具有相同軟體配置(最好是系統映像)的類似環境中重新執行測試,以排除基於軟體的原因。

您還可以將測試擴展到複製價值 15 GB 的較小文件,以查看在寫入一定數量的數據後損壞是否也會影響其中一個。如果是這種情況(根據您的描述,這似乎很可能),您應該假設已經放置在磁碟上的數據發生了類似的損壞 - 嘗試與原始數據或具有較大文件的已知良好加密雜湊值進行比較,以估計損壞程度.

此外,重新計算 XOR 校驗和並將它們與儲存在磁碟上的奇偶校驗數據進行比較的能力會很好,並且大多數 RAID 5 系統都提供這種通常稱為“清理”的功能。對於 Windows,似乎沒有辦法做到這一點。我只能找到為您執行此操作的數據恢復服務。

很好的狩獵。

引用自:https://serverfault.com/questions/452019