啟用磁碟寫入快取時資料損壞

啟用磁碟寫入快取時資料損壞

我最近了解到啟用磁碟寫入快取可以顯著提高系統效能。但是,我擔心突然斷電時資料損壞或遺失的潛在風險。

以下是有關我的設定的一些背景資訊:

作業系統:Windows Server 2012 R2

磁碟類型:SATA 3.0 硬碟

目的:我正在考慮在磁碟上啟用寫入快取以提高效能。我的理解是,如果在寫入快取上的資料尚未提交到磁碟時發生電源故障、作業系統崩潰或存取資料的應用程式崩潰時,則可能會發生資料損壞。

在我的研究過程中,我發現了以下詳細信息文章,他們提到“當啟用活動磁碟寫入快取並且磁碟執行預讀(RLA)時,資料損壞會在用戶不知情的情況下發生,該過程會提前結束。” 。我無法理解這句話的確切意思。

即使斷電時沒有進行資料寫入,啟用寫入快取後是否會發生資料損壞/檔案損壞的情況。

答案1

現代檔案系統(XFS、ZFS、JFS、ext4、APFS、NTFS 等)都使用日誌功能,所以是的,您將丟失一些數據(最新提交以及尚未提交並儲存在快取中的數據,這是顯而易見的) ,但是不,您不會遇到任何資料損壞。

以下是一些關於 IBM JFS 的好讀物,其中包含大量圖表和詳細解釋,文章中的所有內容與其他日誌檔案系統 100% 相關:

https://www.ibm.com/docs/en/aix/7.2?topic=types-journaled-file-system-jfs

不管怎樣......你必須做備份!所謂「3-2-2備份規則」就是你應該遵守的。

https://www.starwindsoftware.com/blog/3-2-1-backup-strategy-why-your-data-always-survives

希望有幫助!

答案2

簡潔版本:不,使用現代 SATA 磁碟和日誌檔案系統,即使啟用磁碟緩存,也不可能損壞已確認(即:同步)的寫入。另一方面,在斷電的情況下,未同步(緩衝)的寫入可能會遺失/損壞。但是,您連結的文章是關於特定韌體問題並且不討論使用磁碟快取時的通用行為:

在執行擴展磁碟測試練習時,發現了潛在的韌體問題。

長答案:可以發出兩種類型的寫入:

  • 同步寫入,透過利用 ATA FLUSH 或 FUA 保證持久性(和排序);
  • 不同步(緩衝)寫入,可以由磁碟 DRAM 快取進行快取、聚合和重新排序。

在處理 HDD 和消費級 SSD 時,同步寫入非常緩慢:刷新任何單次寫入的過程意味著每次單次寫入都會產生每 IO 延遲。因此,同步寫入通常保留用於最重要的IO:日誌提交、資料庫、電子郵件傳送等。電,資料將遺失發生在正確的時刻(直到原始寫入後的 30-60 秒)。

請注意,古老的 PATA 和 SATA 驅動器對作業系統撒謊,假裝遵守同步,但實際上放棄了所需的刷新行為。這導致了完全停用磁碟 DRAM 快取(或將其設定為唯讀模式)的建議,以便任何寫入的資料真正儲存在(耐用)磁碟片上。停用快取的磁碟可以有效地將每次寫入視為同步,從而以巨大的效能成本提供最大的安全保證。

請注意,這確實不是意味著緩衝的寫入不會遺失:如果在作業系統刷新其緩衝區之前發生崩潰,所有未同步的資料都會遺失。因此,考慮到現代(2008 年之後)磁碟支援 ATA FLUSH 或(2015 年後)FUA,目前的常見建議是啟用磁碟快取並依靠作業系統來刷新重要寫入。

具有斷電保護功能的 SSD 和 HW RAID 卡透過使用板載電路安全快取來避免這種性能/安全權衡任何寫入(甚至是同步的)。無論如何,當使用 HW RAID 卡時,磁碟快取的管理方式取決於實作(即:PERC 對 SAS 磁碟停用它,但對 SATA 磁碟則不停用)。

相關內容