was successfully added to your cart.

硬碟缺陷表 編譯器 (1)

身為Data Recovery 工程師 常見清理G表,重建編譯器. 如果只會下指令.而不懂其中原理意義. 
 “小學而大遺”   很容易造成資料進一步損壞

講究基本與原理.才能正確的推導與解決問題.
本篇文章圖 轉自 HDD Oracle Spilit :Translator, Defect Lists and Bad Sectors 

這篇將解釋硬碟缺陷列表的基本概念,編譯器系統 及使用工廠(P)邊緣缺陷列表或(G)劃分缺陷列表來映射 壞扇區 CHS與LBA對應原理。 

以下為原作者使用軟體與硬體.
1 .Windows Victoria
2. 韌體區 讀取使用昂貴的硬體HRT  Tools ,PC3000 ,MRT.
OSSLab下篇會用一般免費硬碟韌體工具軟體來做做示範.

下圖為 使用Windows Victoria 看硬碟機資訊
Fujitsu 富士通硬碟 6GB
LBA 12672450
CHS : 13410 /15/63 

1.png

掃描後都沒有壞軌
2.png

 

3.png

在上圖可以看到的,硬碟SMART ID 05 重新分配扇區數值Raw為0,這表示G-List(Growing Defect List)是空的,
因為直到現在和出廠格式之後(P-LIST紀錄廠級缺陷分) 硬碟沒有發現缺陷。 表面掃描之後也顯示,所有扇區都是“好的”

使用硬碟韌體工具看更細部的資料

6.png

 

Primary Defect List : (P表)
由於現在硬碟容量更大 ,因此更容易生產出的碟片更容易有缺陷.
因此不再一定要無缺陷的硬碟碟面,而是使用糾正錯誤方法(如ECC)和在硬碟上紀錄缺陷,這跟傳統思路硬碟碟片應該完全無缺陷不一樣 。

現在硬碟在生產結束時,已經沒有再用 Servo Write 技術.(某間資料恢復公司非常強調Servo Write設備值得商確)
大量生產下,硬盤使用的器件相同,但是這些相同器件還是有一定的物理性偏差,由此組合成的硬盤就有差異。
例如:碟片在盤腔中的位置,磁頭的落腳點等等。
因此,自校准的第一個目的就是將這些器件的差異調整在預先訂制的標准範圍之內,並且記錄下來,以便硬盤每次都
能夠正確的實現存取數據。除了這些,碟片上磁道的劃分也是在硬盤組裝完成之後才進行劃分的。

由此可知,自校准過程中會先蒐集硬碟硬體物理數據,然後計算成為高級參數
(磁頭,媒體,段位分配,磁道以及磁道的 SPT 等數據的分配)讓自校準程序使用物理參數完成自校準。

以WD 為例. 正常硬碟單晶片程式碼放在碟片上.當生產好空白硬碟時候,碟片上沒有任何韌體,則必須加載外部LDR (完整的單晶片程式碼),在硬碟碟片上寫入韌體.
再載入自校准(Self Test)程式碼.開始Self Test掃描測試,掃描所有表面 磁訊號確保其質量。

在自較準流程中掃描到的碟片上的缺陷 就會添加到PRIMARY缺陷列表 (Plist)中,在列表內這些區域將不再被使用。

若硬碟碟片狀況不理想也可以將多缺陷的硬碟,改成較低容量。

來看看在本範例中富士通硬碟上的主要缺陷 (Plist) 這邊是以邏輯CHS 為記錄.
邏輯CHS 已經跟物理CHS 無關.當作一種全硬碟的位置定位就好.

  

從這可以看到工廠缺陷表(PList)有 6個缺陷。

這邊的CHS  是指邏輯LBA(或C / H / S) 已經不再說傳統物理上的CHS 

或許你會看過很多 邏輯CHS換算LBA 換算方法
C :柱面號;
H :磁頭號;
S :扇區號;
HPC :每個柱面上的最大磁頭數。
SPT (sectors per track),:每個磁道上的最大扇區數。
LBA = (( C x HPC ) + H ) x SPT + S – 1
LBA:邏輯扇區號(邏輯塊地址)

打開編譯器:會發現LBA與CHS對應根本不是如網路上的算式.
主要有二個問題:
1.每款硬碟不一定都從 CHS:0, 0, 1 開始 像本硬碟範例為  282,0,0
2.每Zone(段位)的 SPT 每個磁道最大扇區數是不同的

所以最標準的CHS與LBA對應方式都是打開編譯器查看.

1.png
硬碟上的編譯器(Transatlor): 紀錄扇區的邏輯坐標轉換為驅動器上的CHS位置表。 

在這範例內  LBA 0 對應的 邏輯 CHS 為  H:0, C:282  ,Sector :0  

2.png

 

 

記得剛剛在P表內 CHS 11254 ,0,212 是缺陷嗎?
在編譯器內有發現了嗎? 這條並沒有對應LBA .被抽離開來了.

1.png

 

來玩玩 嘗試手動添加P表新缺陷.先找出缺陷LBA定位點 等會掃描要用

2.png

 

使用韌體工具砍掉原有P表上的缺陷.

3.png

掃瞄LBA  300000位置

5.png

這邊發現怎還是一樣狀況沒有缺陷?  那是因為使用了舊的編譯器.如果動了缺陷表 必須下編譯器生成指令

Image

這邊使用Quick format 替代編譯器生成指令

7.png

 

下圖可以看到P表 被修改後, 所有的CHS跟LBA對應位置已經不一樣了.

a.png

再看一次 plist被修改的狀況
PBA為物理對應扇區.
原本
         PBA   0     1   2  3   4  5 6 
         LBA  0      X 1   2   3  4 5 

Plist 砍掉後
                     PBA   0     1   2  3   4  5 6 
砍到後        LBA   0     1   2   3  4  5  6  
原來            LBA   0     x   1   2  3  4 5
   
對資料當然會有影響 特別是不連續的資料塊跟檔案系統目錄.

萬一 P表編譯器壞了怎辦? 那當然先從P表生成P表編譯器.
那假設P表都掛了那怎辦?
其實剛剛前面已經描述過了,以WD為例子:在自較準流程中掃描到的碟片上的缺陷 就會添加到PRIMARY缺陷列表 (Plist)中,因此可以從自校准日誌獲得P表.
獲得P表後再做編譯器生成.


另外一種P表損壞後的偏移處理方式, PC3000 DE內建虛擬編譯器.可以手動偏移整個硬碟LBA.

Thx Chang

Author Thx Chang

More posts by Thx Chang

Leave a Reply