2021-05-12 14:32:11
Linux MBR磁區誤刪恢復
如果MBR分割區表沒了,你有備份的話直接恢復就好。如果沒有...恭喜你。。。
如果是前446位元組的引導記錄丟了,你有備份的話,直接恢復就好。如果沒有,那就從另一台相同的主機上cp一份就好了。
我這裡使用虛擬機器進行測試。
1. 引導記錄誤刪恢復
我這裡用CentOS7系統操作(一塊硬碟)
1.1 備份引導記錄
[root@www ~]# dd if=/dev/sda of=/loader.back bs=446 count=1
1+0 records in
1+0 records out
446 bytes (446 B) copied, 0.00021032 s, 2.1 MB/s
[root@www ~]# ls -lh /loader.back
-rw-r--r-- 1 root root 446 Apr 8 21:07 /loader.back
1.2 誤刪引導記錄
[root@www ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1
1+0 records in
1+0 records out
446 bytes (446 B) copied, 0.000247003 s, 1.8 MB/s
# 然後重新啟動
[root@www ~]$ reboot
1.3 恢復引導記錄
喲,進不去了。
(1)關閉主機,然後掛載光碟
(2)進入BIOS,反正不是f2就是f12,或者Delete,設定優先順序,然後f10儲存
記得這個是亮的啊。。。不是就右鍵連線
(3)進入修復模式
當然選1咯
直接回車
系統已經被掛到/mnt/sysimage/下了,進去把。
如果這一步你chroot進不去...可能是你的分割區表壞了,或者其他原因。
(4)恢復mbr引導記錄
bash-4.2# dd of=/loader.back of=/dev/sda bs=446 count=1
然後退出(exit),重新啟動(reboot)(記得把BIOS啟動順序改回來,為Hard Drive第一個,這一步我就不截圖了)
然後...就沒然後了,就好了。
如果啊,你忘記了備份,被擔心,你將那塊磁碟卸下來,插到另一台之主機上,然後通過
dd if=dev/sda of=/dev/sdb count=1 bs=446
進行恢復,但是注意,這裡的/dev/sdb是你那塊有問題的磁碟。並且你這塊/dev/sda硬碟必須是好的,而且與之版本相同。否則可能會出現另外的問題。
2. 分割區表誤刪恢復
我這裡用CentOS7系統操作(一塊硬碟)。
對於分割區表,如果你做了備份,那沒問題。如果沒有備份...我也不知道咋解決了。。。
2.1 備份分割區表
[root@www ~]# dd if=/dev/sda of=/root/partition_table.back skip=446 bs=64 count=1
1+0 records in
1+0 records out
64 bytes (64 B) copied, 0.00020132 s, 318 kB/s
注意了啊,這個備份檔案一定是備份在遠端伺服器的,因為你的分割區表已經壞了,找都找不到了。你存在本地有何意義。。。
2.2 誤刪分割區表
[root@www ~]$ dd if=/dev/zero of=/dev/sda skip=446 bs=64 count=1
[root@www ~]$ reboot
喲。。。又壞了。
2.3 恢復分割區表
# 1. 將磁碟解除安裝
# 2. 將磁碟掛載到遠端伺服器
# 3. 然後用dd恢復
[root@www ~]# ls
partition_table.back
# 我這是遠端伺服器
[root@www ~]# dd if=./partition_table.back of=/dev/sdb seek=446 bs=64 count=1
1+0 records in
1+0 records out
64 bytes (64 B) copied, 0.00102179 s, 62.6 kB/s
然後,就可以解除安裝磁碟,放回原來的伺服器裡。
然後。
這。。。出毛病了。。。
是不是引導記錄出毛病了。。。我趕緊將磁碟插回遠端伺服器,然後dd if=/dev/sda of=/dev/sdb bs=446 count1
,將引導記錄恢復了以下。然後。。。然後就好了。。。
看了看,原來是命令搞錯了。。。再2.2 誤刪分割區表這一步命令敲錯了。skip是跳過輸入檔案的block,而seek才是跳過輸出檔案的block,所以我那一步其實是刪除了引導記錄。。。
其實把,你以後直接使用dd if=/dev/sda of=~/mbr.back bs=512 count=1
就好了,不管是分割區表壞了,還是引導記錄壞了,使用dd if=~/mbr.back of=/dev/sda bs=512 count1
恢復就好了。所以啊。一定要備份,不然就涼涼了。
最後,雖然這是在虛擬機器上做的,但在真實環境,確實是這樣的。
相關文章