在我的 Debian 8 服务器上 HDD /dev/sda 崩溃了。mdadm
通过电子邮件通知我,我更换了磁盘。
服务器备份后,我使用 .GPT 复制过来sgdisk -R /dev/sdb /dev/sda
。当我按下键盘上的“Enter”键时,我意识到自己的错误。
所以现在我的两个磁盘上都有一个空的 GPT。
/dev/sdb
我的问题是,是否可以在服务器仍在运行时重新创建 GPT ,因为复制错误的 GPT 后我没有重新启动?
sfdisk -d /dev/sdb > sdb.partition.table
在更换故障硬盘之前我做了备份。但由于我没有做备份,所以sgdisk
备份完全没用,我的说法是否正确?
另外我有这个输出fdisk -l从复制 GPT 之前开始:
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
答案1
经过一番研究并尝试了诸如测试盘,我没有找到一个确定的方法来恢复我原来的GPT/dev/sdb
所以我尝试使用CG磁盘它很成功,因为我仍然记下了原来的“扇区布局” /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,并向我展示了与以下fdisk -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
剩下要做的就是使用以下命令重新同步 RAID 卷米达德姆并重新安装grub2。
重新同步完成后,如前所述,我重新安装了 grub2 /dev/sda
(我也重新安装了它/dev/sdb
,只是为了确定)并生成了一个新的设备映射。 (不过,我必须刷新 HDD 缓冲区以避免 grub2 核心映像警告)
我重新启动服务器,它再次正常运行。
重要的:我只是做了这个 GPT 修补,因为我有我的服务器的完整备份,因为我不能 100% 确定这会起作用,而且我可能会破坏我的分区。