(重新)從 Debian 8 上的現有分區創建 GPT
在我的 Debian 8 伺服器上,硬碟 /dev/sda 崩潰了。
mdadm
通過電子郵件通知我,我更換了磁碟。伺服器備份後,我從使用
sgdisk -R /dev/sdb /dev/sda
. 我在鍵盤上按下“Enter”的那一刻,我意識到我的錯誤。所以現在我在兩個磁碟上都有一個空的 GPT。
我的問題是是否可以
/dev/sdb
在伺服器仍在執行時重新創建 GPT,因為複制錯誤的 GPT 後我沒有重新啟動?
sfdisk -d /dev/sdb > sdb.partition.table
在更換故障硬碟之前,我做了備份。但是由於我沒有做備份,用sgdisk
備份是完全沒用的,如果我說的對嗎?此外,我在複製 GPT 之前從fdisk -l獲得了以下輸出:
Disk /dev/sdb: 2.7 TiB, 3000592982016 bytes, 5860533168 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: gpt Disk identifier: 454774BD-960F-45C6-8C82-AE5C156444E0 Device Start End Sectors Size Type /dev/sdb1 4096 33558527 33554432 16G Linux RAID /dev/sdb2 33558528 34607103 1048576 512M Linux RAID /dev/sdb3 34607104 5860533134 5825926031 2.7T Linux RAID /dev/sdb4 2048 4095 2048 1M BIOS boot Partition table entries are not in disk order. Disk /dev/md0: 16 GiB, 17171349504 bytes, 33537792 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 Disk /dev/md1: 511.7 MiB, 536543232 bytes, 1047936 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 Disk /dev/md2: 2.7 TiB, 2982739705856 bytes, 5825663488 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
經過一番研究並嘗試了諸如testdisk之類的工具後,我沒有找到一種確定的方法來恢復我原來的 GPT
/dev/sdb
所以我嘗試使用cgdisk並且它是成功的,因為我仍然有記下的原始“扇區佈局”
/dev/sdb
:Disk identifier: 9F95A04D-3ECB-144D-B2A0-55CDD986072B Device Start End Sectors Size Type /dev/sdb1 4096 33558527 33554432 16G Linux RAID /dev/sdb2 33558528 34607103 1048576 512M Linux RAID /dev/sdb3 34607104 5860533134 5825926031 2.7T Linux RAID /dev/sdb4 2048 4095 2048 1M BIOS boot
有了這些資訊,我創建了具有相同起始扇區、使用相同數量的扇區和相同文件系統類型的分區,如上所述。
在 上寫 GPT 後
/dev/sdb
,fdisk -l /dev/sdb
給了我與上面相同的輸出。
sgdisk -R /dev/sda /dev/sdb
然後,我通過使用(這次以正確的順序)複製了 GPT,並向我展示了與forfdisk -l /dev/sda
完全相同的“扇區佈局” :/dev/sda``/dev/sdb
Disk identifier: 4CB38488-8B72-44AA-8449-4E4692165893 Device Start End Sectors Size Type /dev/sdb1 4096 33558527 33554432 16G Linux RAID /dev/sdb2 33558528 34607103 1048576 512M Linux RAID /dev/sdb3 34607104 5860533134 5825926031 2.7T Linux RAID /dev/sdb4 2048 4095 2048 1M BIOS boot
剩下要做的就是使用mdadm重新同步 RAID 卷並重新安裝 grub2。
如上所述,重新同步完成後,我重新安裝了 grub2
/dev/sda
(我也重新安裝了它/dev/sdb
,只是為了確定)並生成了一個新的設備映射。(不過,我必須刷新 HDD 緩衝區以避免出現 grub2 核心映像警告)我重新啟動了伺服器,它再次出現就好了。
重要提示:我只做了這個 GPT 修補,因為我有一個完整的伺服器備份,因為我不能 100% 確定這會起作用,而且我可能已經破壞了我的分區。