使用 TestDisk 恢復失去的分區表
所以,不知何故,我磁碟上的分區表壞了:在下一次啟動時系統無法啟動,我在 BIOS 中被反复踢,我沒有可行的啟動選項。BIOS 仍然正確地檢測到磁碟,所以我啟動了 LiveDVD 以查看發生了什麼。
因此,在裝有 OS 的磁碟中
/dev/sdb
,128GB SSD 是沒有分區表的。gpart 和 fdisk 都報告它為空。fdisk 報告磁碟標籤類型為 gpt。我嘗試執行 testdisk,它將分區表類型辨識為 Intel(而不是 EFI GPT)。我嘗試搜尋這兩種類型的分區,但只有 Intel 成功了。
那麼,第一個問題:英特爾分區類型是 MBR 嗎?為什麼即使磁碟標籤是 GPT,EFI GPT 也不起作用?
啟動時,該工具僅找到此分區:
Disk /dev/sdb - 128 GB / 119 GiB - CHS 15566 255 63 Partition Start End Size in sectors 1 P EFI GPT 0 0 2 15566 29 63 250069679
當我執行快速搜尋(甚至是完整搜尋)時,該工具會找到一些分區,其中有 5 個分區是有意義的:
FAT32 0 32 33 33 69 36 532480 [SYSTEM] Linux 33 69 37 163 207 44 2097152 Linux Swap 163 240 14 931 97 62 12328960 Linux 931 97 63 9038 187 45 130244608 Linux 9038 187 46 15565 209 4 104857600
第二個問題與顯示的值有關:開始列中有 3 個值(例如 0 32 33),結束列中有 3 個值(例如 33 69 36),我如何解釋這些值?
如果我使用命令查看這些分區內部
P: list file
,我可以看到第一個分區包含 EFI 的東西,例如
drwxr-xr-x 0 0 0 31-Jan-2019 19:26 EFI drwxr-xr-x 0 0 0 13-Mar-2019 18:29 System -rwxr-xr-x 0 0 0 21-May-2019 10:55 mach_kernel;5ce3af18 -rwxr-xr-x 0 0 34 13-Mar-2019 18:29 mach_kernel drwxr-xr-x 0 0 0 26-Oct-2018 00:52 8310a92cdfe04b36b5a63736b6419b48
第二個分區是引導分區,包含
efi
,grub2
,vmlinuz
s 等。第四個分區包含主文件夾,最後一個包含根目錄。因為我可以看到文件,所以我恢復了
/etc/fstab
/etc/lvm/,這確實表明系統是使用 LVM 配置的。我不確定分區是否以某種方式擴展/邏輯,我什至不知道這對 GPT 是否有意義,並且不僅限於 MBR。
第三個問題,鑑於 testdisk 可以辨識一些分區,我可以嘗試使用這些值恢復分區表,但是 LVM 呢?GPT呢?鑑於這些分區似乎已正確辨識,我該如何恢復以前的情況?
非常感謝!
編輯:我提出關於擴展分區的問題,因為顯然我無法將它們全部設置為主分區(這讓我認為它是 MBR),我需要一個擴展分區,但我無法創建它。
編輯2:這裡是深度搜尋找到的所有分區:
Disk /dev/sdb - 128 GB / 119 GiB - CHS 15566 255 63 Partition Start End Size in sectors >* FAT32 0 32 33 33 69 36 532480 [SYSTEM] * P Linux 33 69 37 163 207 44 2097152 * P Linux Swap 163 240 14 931 97 62 12328960 * D Linux 931 97 63 9038 187 45 130244608 * D Linux 4873 98 26 12980 188 8 130244608 D Linux 4875 43 33 12982 133 15 130244608 D Linux 9038 187 46 15565 209 4 104857600 * D FAT12 9695 133 39 9695 198 39 4096 D HPFS - NTFS 15502 117 40 15566 19 5 1021952
帶有文件的分區是第 1 (EFI)、第 2 (/boot)、第 4 (/home)、第 7 (/)。我
*
在行尾用 a 標記了明顯合法的分區。編輯
我最終通過以這種方式
dd
安裝舊分區來複製驅動器,重新安裝作業系統並恢復數據。
在您進一步創建 (
dd
) 磁碟映像之前,如果出現嚴重錯誤,您可以使用它來恢復它。從您的文章看來,您已經閱讀了TestDisk指南。如果不是最好閱讀它。
問題 1
Testdisk
應該自動辨識可用的分區類型,並且它找到分區的事實INTEL
並不令人擔心。您找到了分區,通過檢查驗證了內容,它們就是您要恢復的內容。不要忘記testdisk
使用相同的模式來查找將寫入已修復分區表的文件。所以一切看起來都很好。問題2
如果您查看指南,您應該能夠看到您感興趣的數字是開始和結束列中的第一個數字。當這些是連續的時,分區之間就沒有間隙,它們很可能是連貫分區模式的一部分。這很好,而且,
testdisk
可以使用它從磁碟創建/推斷的分區表來降低到文件級別的事實再次鼓舞了信心。唯一讓我擔心的問題是起始地址和結束地址相同且不連續。也就是說,
testdisk
如果你要求它寫一個無效的表,應該會窒息。問題 3 …. 我應該…?
LVM 在此級別不會出現,但會在修復後的作業系統載入 LVM 模組並從您恢復的系統中讀取 LVM 佈局時在引導時被拾取。
GPT / MBR只是不同格式的分區表。由於正在使用的
testdisk
文件可以找到您的文件,因此您應該在恢復中使用它。在您的位置上,我將按照您列出的架構安全地修復表,並確信我已經準備了一個可以恢復到原始磁碟的映像,如果出現問題,我會重試。
如果有任何安慰的話,我有一個 1TB 的驅動器去 ping 並經歷了類似的痛苦來決定做什麼。最後,使用 by 選擇的預設模式一切順利,
testdisk
但我手裡有一個備份……以防萬一。如果有很多分區可供選擇,那麼我建議您發布完整的輸出,然後您可能會獲得一些更具體的幫助。
編輯
TBH 我對 5 個分區/MBR 的難題有點不知所措。
我能提供的最好的方法是在你的情況下我會做什麼,即製作圖像的副本,嘗試從每個圖像中恢復一個分區作為 MBR(通過將圖像安裝在 testdisk 中,而不是 SSD 中),然後重建原始具有 GPT 架構的新媒體上的磁碟。如果可行,則將整個 shebang 遷移回您的 SSD。當您遷移回來以安裝所有內容時,您需要重新安裝
grub
並使用 GUID,fstab
但這不是火箭科學。最重要的是,您可以毫無畏懼地在圖像副本上嘗試任何您喜歡的東西。只需保持原始驅動器和一張圖像的安全。