Windows

如果我在文件伺服器上啟用寫入緩衝區,我會面臨多大程度的數據失去或損壞風險?

  • November 28, 2017

我發現很多線上文章警告在斷電時啟用寫入緩衝區的驅動器存在數據失去或損壞的風險。但是,我還沒有發現任何實際涉及風險規模的資訊。

我正在尋找在 Windows Server 2016 上的儲存空間中建構一個鏡像文件伺服器,用於小型影片編輯辦公室。性能非常重要(因此要考慮寫入緩衝區),我們的伺服器將主要處理兩種類型的重要寫入:上傳素材和保存項目或文件文件。

這讓我想知道如果發生意外斷電,最壞的情況會是什麼。

對於上傳素材,我預計伺服器的任何中斷都會導致任何正在進行的文件傳輸出現可見的網路故障。因此,除非在文件傳輸的網路部分完成後幾秒鐘發生電源故障,否則他們會意識到一旦伺服器重新聯機就需要重新啟動文件傳輸。由於我知道伺服器出現故障,因此我可以建議辦公室使用同步程序來大概用本地主副本覆蓋任何損壞的文件。

至於保存文件和項目文件,它們中的大多數應該很小,以便在失敗時甚至在緩衝區中的風險最小。如果不是這樣,在使用者的電腦上仍然有自動保存或開放版本會給他們第二次機會。我真正能看到的唯一風險是電源故障是否在他們保存關閉文件時發生,並且該程序沒有儲存滾動自動保存。

我的評估是否準確,還是我忽略了什麼?這種情況下的損壞是否會影響比正在寫入的數據更多的數據?

謝謝

**編輯:**我應該強調,我並不是特別尋找關於在這種情況下我應該做什麼的結論。我只是想正確理解可能性,以便我可以就這種風險的現實做出明智的決定。

到目前為止,我在這個問題上閱讀的許多網頁都令人沮喪地模棱兩可,特別是在區分“寫入記憶體”和“寫入記憶體緩衝區刷新”方面。

您必須區分啟用的寫入緩衝區禁用的緩衝區刷新。要充分理解其中的區別,讓我們從基礎開始。

HDD 和 SSD 幾乎普遍都有一個私有 DRAM 記憶體,用於短暫儲存和合併傳入的寫入,從而大大提高了它們的寫入性能。作為參考,考慮一個快速 SATA SSD 在啟用其緩衝區的情況下泵送 >500 MB/s 的順序寫入,而在禁用緩衝區的情況下只有約 5 MB/s。HDD 的性能下降不太嚴重,但仍然如此。

同時,如果這些私有 DRAM 記憶體沒有斷電保護,則可能會發生嚴重的數據損壞(直至失去整個文件系統)。為了在不完全破壞性能的情況下防止此問題,存在一些可能性:

  • 使用帶有斷電保護寫入記憶體的驅動器(即:企業級 SSD 和一些較新的支持 NV 的機械硬碟)
  • 使用具有斷電保護記憶體的硬體 RAID 控制器,禁用專用磁碟的 DRAM 記憶體
  • 使用啟用了不受保護的 DRAM 記憶體的廉價消費硬體,但發出定期刷新以保證文件系統(但不是數據,因為性能影響會非常大)的一致性。

當使用類似軟體 RAID 的方法(即:Linux MDRAID、ZFS、儲存空間、ecc)時,您永遠不應該禁用磁碟記憶體,除非您準備支付非常高的性能成本。相反,您最好的選擇是啟用寫入記憶體並讓您的作業系統/文件系統在需要時自由地發出 DRAM 同步/刷新命令。通過這種方式,您可以獲得啟用記憶體的性能加速,而不會冒著破壞整個文件系統的風險。請注意,應用程序數據不會自動受到保護:任何想要確保數據持久性的應用程序都必須自己發出定期刷新(數據庫就是一個很好的例子)。

另一方面,您永遠不應該禁用 DRAM 記憶體刷新,除非您200% 確定您的驅動器/RAID 卡具有受保護的回寫記憶體。但是,在這種情況下,啟用刷新不會造成太大傷害,因為幾乎所有最近的驅動器/卡在其受保護的 DRAM 記憶體處於健康狀態時都會忽略刷新。

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