記一次有驚無險的Linux數據恢復過程


問題階段

起因: 
昨天晚上思路不是很清晰(上了一天班回來有點蒙),還是強忍着疲憊想搞事情,結果悲劇了… … 
本來想拿SD卡做一張linux燒錄卡,燒錄腳本是很久以前寫的,有git記錄,一直不成功,就回退了幾次提交,然后執行的時候沒有給腳本傳參(/dev/sd**),結果腳本中默認磁盤設備為/dev/sdb ,在現在電腦上是一塊數據磁盤,執行到一半的時候由於某些原因意外退出,但還是有一些命令執行,比如最致命的一條: 
dd if=/dev/zero of=${node} bs=1024 count=1 conv=fsync conv=notrunc 
node指向的就是/dev/sdb 
然后把LVM2 label、meta data、分區表都給刪除了,由於此硬盤在/etc/fstab中有記錄,所以今天開機有卡主了,開始以為磁盤接觸不良,進入linux recovery模式屏蔽掉fstab中相關選項后進入系統. ls -l /dev/sd* 發現只有/dev/sdb 沒有分區信息,接着執行fdisk /dev/sdb, p打印信息 
Command (m for help): p 
Disk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 sectors 
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 4096 bytes 
I/O size (minimum/optimal): 4096 bytes / 4096 bytes 
Disklabel type: dos 
Disk identifier: 0x********* 

同樣沒有分區信息,回想昨晚的操作,終於……(一身冷汗)

處理過程

冷汗過后就需要冷靜的思考,既然只是刪除了磁盤的頭信息,那么分區實際上還是存在的,而且數據也應該完好的存在.

嘗試一:

首先找到一篇lvm數據恢復的文章,PC 上的 LVM 災難修復,雖然文章中類似情景,但是恢復的時候需要/etc/lvm/backup/ 中有對應的lvm備份信息,而我的磁盤但是不是在現在的機器分的所以沒有相應信息. 文章至少透露出一個重要信息,可以恢復,應該直接恢復出分區表即可. 
還有一篇文章跟上面一篇很像:一次Linux LVM VG丟失完整找回過程記錄

嘗試二:

掛載到windwos上用diskgenius掃描分區表,能夠看到一些零星的數據,但都是亂碼.當時心又亮了一截, 此路不通.

嘗試三:

直接查找linux的數據恢復軟件,最終找到一款靠譜的:testdisk 官方文檔 
簡單介紹: 
它不能從故障的存儲設備上拷貝數據,相反,它可以解決一些因為分區的原因而 造成數據無法訪問的問題。該工具可以幫助你恢復丟失的分區,讓磁盤重新變得可以啟動,整理分區表,恢復主引導記錄,恢復引導扇區以及文件系統表,可以從 NTFS、FAT、exFAT和ext2類型的文件系統中恢復被刪除的文件,還能從已經刪除了的NTFS、FAT、exFAT和ext2/3/4文件系統 中拷貝文件。 
嘗試: 
testdisk /dev/sdb 
選擇硬盤后回車: 
Select a media (use Arrow keys, then press Enter): 
Disk /dev/sdb - 500 GB / 465 GiB - ******************* 

選擇分區: 
Please select the partition table type, press Enter when done. 
[Intel ] Intel/PC partition 
[EFI GPT] EFI GPT partition map (Mac i386, some x86_64...) 
[Humax ] Humax partition table 
[Mac ] Apple partition map 
[None ] Non partitioned media 
[Sun ] Sun Solaris partition 
[XBox ] XBox partition 
[Return ] Return to disk selection 

選擇[Intel ] Intel/PC partition

選擇動作: 
[ Analyse ] Analyse current partition structure and search for lost partitions 
[ Advanced ] Filesystem Utils 
[ Geometry ] Change disk geometry 
[ Options ] Modify options 
[ MBR Code ] Write TestDisk MBR code to first sector 
[ Delete ] Delete all data in the partition table 
[ Quit ] Return to disk selection 

這里選擇[ Analyse ] Analyse current partition structure and search for lost partitions 
過一會會顯示掃描到分區表信息,選擇寫入到磁盤,然后提示重啟電腦(其實就是重新加載硬盤). 
懷着一顆忐忑的新重啟后驚喜的發現,分區已經恢復,檢查數據一切正常: 
`Command (m for help): p 
Disk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 sectors 
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 4096 bytes 
I/O size (minimum/optimal): 4096 bytes / 4096 bytes 
Disklabel type: dos 
Disk identifier: 0x*********

Device Boot Start End Sectors Size Id Type 
/dev/sdb1 * ####### ####### ####### xxG 83 Linux 
/dev/sdb2 ####### ####### ####### xxG 83 Linux 
/dev/sdb3 ####### ####### ####### xxG 7 exFAT 
`

遇事冷靜思考,尋找最優解決方案.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM