Gpt

(重新)從 Debian 8 上的現有分區創建 GPT

  • October 21, 2016

在我的 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/sdbfdisk -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% 確定這會起作用,而且我可能已經破壞了我的分區。

引用自:https://unix.stackexchange.com/questions/317660