有沒有辦法透過原始讀取或寫入磁區/區塊來插入或複製 Linux 中的「CRC」⁽1⁾ 錯誤?

有沒有辦法透過原始讀取或寫入磁區/區塊來插入或複製 Linux 中的「CRC」⁽1⁾ 錯誤?

我的一位朋友告訴我,Linux 核心 raid (mdadm raid5/6) 並不可靠,因為他曾經嘗試覆蓋其中一個實體磁碟區上的磁區,結果導致檔案損壞。我回答他說這是正常的,因為raid5系統並不是為了檢測而只是為了在已經檢測到由於磁碟讀取錯誤而檢測到錯誤時糾正錯誤。

然而,我想知道如何透過在磁碟本身上寫入錯誤來證明這個概念或進行可靠性測試。有沒有一種方法,在Linux中,以某種原始模式寫入(或讀取)扇區,這將允許手動讀取或寫入“CRC”⁽1⁾代碼,而不是讓控制器自行管理它?

按照相同的邏輯,是否有一種方法可以將一個磁碟原始複製到另一個磁碟上,以便在副本而不是原始磁碟上嘗試一些恢復資料處理,這在不良恢復軟體中會發生,從而使磁碟無法恢復。

我看到有人提出了類似的問題這裡或者那裡,但它很舊,不是很清楚,也沒有得到令人滿意的答案。顯然,目標不是物理性破壞磁碟,而只是強制在其上寫入一些無效內容,這些內容稍後可能會用類似的方法重寫。順便說一句,如果磁碟確實包含錯誤,則該磁區不可能透過正常操作重新定位,因為需要事先正確讀取該磁區。

(1) :我加上引號是因為我不確定最近的磁碟錯誤偵測程式碼是否仍基於 CRC。

答案1

答案很簡短,但如果這是可以接受的:

基本上所有儲存媒體都是透過透過各種其他協定(SATA、USB 等)發送 SCSI 命令來存取的,並且無法使用這些命令來控制 CRC 或類似欄位。事實上,現代磁碟機甚至會默默地取代具有不良 CRC 的磁區,而這些磁區無法透過在下次寫入時將其對應到具有良好 CRC 的其他磁區來修正。

可能有特定於供應商的擴展允許您更直接地控制所有這些,但供應商不會告訴您。

相關內容