PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 電腦硬體討論群組 > 儲存媒體討論區
帳戶
密碼
 

回應
 
主題工具
LIAR
Power Member
 
LIAR的大頭照
 

加入日期: Oct 2004
文章: 501
Talking [心得] DIY救援分割表錯亂

第0天:(緣起XD)
話說前幾天我想把實驗室一台電腦灌98,打算把一顆硬碟分成兩區,第二區丟安裝檔,第一區就用format/s弄成DOS啟動。

我照慣例,先用CentOS的LIVE USB分割過順便mkfs.msdos弄成FAT32後,就回DOS執行FORMAT,但reset要用硬碟開機時卻開不了,SPFDISK一看,分割表竟然亂掉了?
好吧!反正我有兩顆硬碟,前面這顆是IDE的,我猜非南橋原生晶片可能不穩( ),當下換成另一顆SATA的,問題是這一顆有資料。

sda1:NTFS
sda2:ext
sda5:NTFS
sda6:NTFS
sda7:NTFS
前人交接時已經把資料都留在sda5,其餘都沒在用,所以我在CentOS下把其他三個分割打掉,把sda6和sda7合併,然後連同前面的sda1都格式化成FAT32。之後老樣子FORMAT/S,但這時慘劇發生了,分割表又亂掉了,我臉當場綠掉。那些資料好像沒其他備份啊!!

第1天:
我想說用FINALDATA或R-STUDIO救援,但時間太久,也有試用版的限制,考慮到RAW data應該沒事,大概只有分割表亂掉,我想用testdisk救援。
問題是我照教學都做到深層掃描了,竟然只看到第一個FAT32,而且容量還是整顆硬碟?我差點瘋掉,印象中這軟體對於分割表救援好像評價不錯,如果深層掃描都救不了我不就死了?難道FORMAT真的有動到下一個檔案系統的磁區?

我趕緊用SPFDISK去看看實體磁區......如果用微軟的軟體或SPFDISK分割,我印象中NTFS的起頭會在CHS的(X,1,0),結尾會在(X,254,62)(主分割區不是第0軌的好像比較前面)而且第一行就有NTFS字樣,後頭也有像是BOOT還是CTRL +ALT+DEL之類的,想說土法煉鋼從大約C=1000看到C=4000看看,結果眼睛差點破窗,用spfdsik的page down按好久不說,用眼睛要確認那一小段字真的很蠢。

這時我想到鳥哥的LINUX教學中有提到迴圈,但我這輩子從BASIC到現在從來沒用過迴圈啊!我連IF;.then都沒碰過多少次耶!但我不想眼睛出事,只好仔細看鳥哥的文件,結果嘗試寫下以下的script:

#! /bin/sh
declare -i cylinders=0
while [ "$cylinders" -le "$2" ]
do
dd if=/dev/"$1" bs=512 count=1 skip=$((63+$cylinders*255*63))>>$3
cylinders=$(($cylinders+1))
done

檔案存成read.sh,chmod成755,用root執行。
如果這顆要救的硬碟是sda我就執行:

./read.sh sda 4000 file_sda
我推測原本的sda5起點應該會在4000以內,所以只設4000。之後用MadEditd開16進位讀取搜尋之前提到的關鍵字,像是NTFS或BOOT等等,果然找到一個sector很像。由於一個磁區大小是512,所以分界的16進位的最後三碼一定是n00,且n是偶數。
之後用小算盤推估位置應該是3991,可能有植樹問題要加減1,不過反正我會用SPFDISK再確認,所以就不管確實數字了。

至於結尾嘛....我猜可以直接設定實體硬碟結尾比較省事,印象中檔案系統只認自己知道的大小,大一點應該不會怎樣,何況後面的分割表我也沒打算救,不過反正scripte改一下也OK,所以根據我對結尾的(X,254,62)的判斷,第五行改成

dd if=/dev/"$1" bs=512 count=1 skip=$(($cylinders*255*63-1))>>$3

第一筆資料會是-1,雖然dd會錯誤,但後面不會有問題,只是計算磁軌位置會往前偏,不過就如同前面說的我會用SPFDISK肉眼確認,所以和植樹問題一樣就不管了。這次因為要掃比較後面所以數字要設比較大。

./read.sh sda 12000 file_sda
記得前一個檔案要刪掉,或是另存檔名,不然資料是一直累加的。運氣很好我也同樣只找到一個磁區符合比對,大概9600多吧!
之後回DOS用SPFDISK看磁區,確實兩個磁區和正規的NTFS頭尾一樣,且3991的上一個磁軌結尾也有NTFS結束的模式,而9600下一個磁軌的第一個磁柱(H,S=1,0)也有看到另一個檔案系統的起頭,容量大小也符合,我想應該錯不了。就根據數字回LINUX的FDISK重建分割區。最後再回SPFDISK確認有沒有切對。

但SPFDISK竟然發現切錯了,全部往前偏一個磁柱,我才知道linux的計算和SPFDISK不一樣,可能開頭是0或1的問題吧!幸好是往前偏,因為在重建延伸分割區時,也有分割表會確實會寫入某個磁區毀掉資掉,而我前面的資料正好不需要。

總之我再重建一次分割表,這次位置就對了,進WIN7也可以直接讀到資料,哈雷路亞。
趕緊備份到另一顆硬碟。

基本上這次有幾個要注意的地方:
1.由於SPFDISK或微軟的切割讓頭尾位置有規律,所以可以搜尋比較小的範圍。如果直接用LBA位置去切,那dd可能要抓整顆硬碟的資料來搜尋了。

2.我因為偷懶所以從第0軌開始抓,當然可以多加一個參數當起點。不過計算會更複雜。

3.救援軟體真的不常用,R-STUDIO或FINDLDATA我這輩子連這次只用過3次,因為平常都有確實備份資料,這個script也不曉得下次用到是幾年後了,所以有錯我就懶得改了XD

4.testdisk不曉得為什麼無法讀到我的分割表,是因為那台電腦有問題嗎?我隔天拿新的硬碟FORMAT也沒有分割表亂掉的情況....

5.定址的時候還是用LBA比較準,像這次就有DOS和LINUX的磁軌編號不一樣的狀況。

6.人不要鐵齒......... ,double check是很重要的,不管是切割或救援時都一樣。最後重建的部分真的好險。
     
      
__________________
處理器:AMD ATHLON II X4 635(C3)
主機板:ASUS M4A88TD-M EVO/USB3
記憶體:金士頓 KVR1333D3N9
硬碟1:WDC WD10EALS-00Z8A0 1TB(主硬碟+OS用)
硬碟2:SEAGATE 8.4GB(暫存檔用)
DVD燒錄器:BENQ 1640
顯示卡:內建
電源供應器:海韻 TORNADO 350W (ATX12V v1.3)
CASE:PS05
OS:Windows XP SP3

太初有道,道與耶和華同在,道就是耶和華。這道太初與耶和華同在。
萬物乃藉祂所造,凡被造的沒有一樣不是藉著祂所造的。生命在祂裡頭,
這生命就是人的光。光照在黑暗裡,黑暗卻不接受光。


吾輩乃生於黑暗,行於黑暗。因神之指引,行向光明;又因撒旦誘惑,回歸黑暗。
我不斷地徘徊於光明與黑暗之間,從被造之日至今,又自今直到那審判之日的來臨。[/CENTER]
舊 2013-02-28, 06:48 PM #1
回應時引用此文章
LIAR離線中  
f3346
Master Member
 
f3346的大頭照
 

加入日期: Mar 2012
文章: 2,351
引用:
作者LIAR
第0天:(緣起XD)
話說前幾天我想把實驗室一台電腦灌98,打算把一顆硬碟分成兩區,第二區丟安裝檔,第一區就用format/s弄成DOS啟動。

我照慣例,先用CentOS的LIVE USB分割過順便mkfs.msdos弄成FAT32後,就回DOS執行FORMAT,但reset要用硬碟開機時卻開不了,SPFDISK一看,分割表竟然亂掉了?
好吧!反正我有兩顆硬碟,前面這顆是IDE的,我猜非南橋原生晶片可能不穩( ),當下換成另一顆SATA的,問題是這一顆有資料。

sda1:NTFS
sda2:ext
sda5:NTFS
sda6:NTFS
sda7:NTFS
前人交接時已經把資料都留在sda5,其餘都沒在用,所以我在CentOS下把其他三個分割打掉,把sda6和sda7合併,然後連同前面的sda1都格式化成FAT32。之後老樣子FORMAT/S,但這時慘劇發生了,分割表又亂掉了,我臉當場綠掉。那些資料好像沒其他備份啊!!

第1天:
我想說用FINALDATA或R-STUDIO救援,但時間太久,也有試...


碰到現在的"先進格式化"硬碟也能這樣救嗎...
我發現只要拿該硬碟灌W7, 切出來的分割區在SPFDISK裡面看就是會錯亂
 
舊 2013-02-28, 08:10 PM #2
回應時引用此文章
f3346離線中  
LIAR
Power Member
 
LIAR的大頭照
 

加入日期: Oct 2004
文章: 501
Cool

引用:
作者f3346
碰到現在的"先進格式化"硬碟也能這樣救嗎...
我發現只要拿該硬碟灌W7, 切出來的分割區在SPFDISK裡面看就是會錯亂

我想那只是SPFDISK太舊了...不建議用在新出的先進格式化硬碟。不過會錯亂嗎?我是沒碰過新的硬碟所以不清楚,但只要磁軌沒有重複SPFDISK應該就不會出錯吧?何況如果你WIN7能讀到的話,根本不需要救援吧?
像我那顆,是在SSPFDISK或LINUX都會錯誤,SPFDISK出現了絕對不可能出現的磁軌編號啊.....

先進格式化如果知道規律應該也可以如法炮製啦!不然就是整個掃描了,會哭吧
__________________
處理器:AMD ATHLON II X4 635(C3)
主機板:ASUS M4A88TD-M EVO/USB3
記憶體:金士頓 KVR1333D3N9
硬碟1:WDC WD10EALS-00Z8A0 1TB(主硬碟+OS用)
硬碟2:SEAGATE 8.4GB(暫存檔用)
DVD燒錄器:BENQ 1640
顯示卡:內建
電源供應器:海韻 TORNADO 350W (ATX12V v1.3)
CASE:PS05
OS:Windows XP SP3

太初有道,道與耶和華同在,道就是耶和華。這道太初與耶和華同在。
萬物乃藉祂所造,凡被造的沒有一樣不是藉著祂所造的。生命在祂裡頭,
這生命就是人的光。光照在黑暗裡,黑暗卻不接受光。


吾輩乃生於黑暗,行於黑暗。因神之指引,行向光明;又因撒旦誘惑,回歸黑暗。
我不斷地徘徊於光明與黑暗之間,從被造之日至今,又自今直到那審判之日的來臨。[/CENTER]

此文章於 2013-02-28 10:13 PM 被 LIAR 編輯.
舊 2013-02-28, 10:08 PM #3
回應時引用此文章
LIAR離線中  
orakim
Master Member
 

加入日期: Sep 2003
文章: 1,810
> testdisk不曉得為什麼無法讀到我的分割表
就不一定是正確,
我自己碰過一次,同一個硬碟 testdisk 的 linux,windows版本不同就可以讀出不一樣的結果
另外還碰到一次是testdisk 掃出的磁區 size 沒錯,但錯在類型 搞錯主要,延伸磁區
這兩次都還能救的回來就是了
舊 2013-02-28, 10:35 PM #4
回應時引用此文章
orakim離線中  
誰找我
Major Member
 
誰找我的大頭照
 

加入日期: Aug 2005
您的住址: 歡迎加入THK
文章: 161
引用:
作者f3346
碰到現在的"先進格式化"硬碟也能這樣救嗎...
我發現只要拿該硬碟灌W7, 切出來的分割區在SPFDISK裡面看就是會錯亂


標題: [情報] SPFDISK 修改支援 先進格式化 (4KB對齊)
http://www.ptt.cc/bbs/PC_Shopping/M...2990.A.AE9.html
也許試試這個有修改過的版本看看
__________________
罰金100萬元。 科技不敵人性。
舊 2013-03-01, 01:53 AM #5
回應時引用此文章
誰找我離線中  


回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是11:14 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。