在正确操作下,使用 gdisk
进行 MBR 到 GPT 的转换通常不会导致 /dev/sdb
上已有的数据丢失。
但这里有非常关键的前提和解释:
为什么数据通常是安全的?
gdisk
的r
->g
命令是专门的转换命令:这个命令的设计目的就是无损地将现有的 MBR 分区表转换为 GPT 分区表。它会读取现有的 MBR 分区信息,并将其重新映射和写入到新的 GPT 数据结构中。- 它不操作分区内的数据:分区工具(如
gdisk
,fdisk
,parted
) 操作的是分区表,它就像是磁盘内容的“目录”或“地图”。转换分区表就像是重写这本书的目录页,而不会影响书里面每一章的具体内容(你的文件和数据)。
绝对必须遵守的警告和前提
尽管工具设计为无损,但以下情况会导致数据丢失:
- 在最后一步输入
w
后写入失败:如果在转换过程中发生断电、系统崩溃或磁盘硬件错误,导致新分区表没有完整写入,磁盘的分区表可能会损坏,导致数据无法访问。 - 操作了错误的磁盘:如果你不小心对
/dev/sda
(系统盘)或其他存有重要数据的磁盘执行了此操作,而你以为它是/dev/sdb
,这会导致灾难性后果。永远在执行前用lsblk
或fdisk -l
双重确认磁盘标识符。 - MBR 分区表本身异常或有不支持的类型:如果原始的 MBR 分区表非常规、有损毁或包含了
gdisk
无法完美转换的特殊类型分区,转换可能会出错。 - 转换后没有重新创建必要的分区:GPT 分区表需要保留一些特殊分区(如 Protective MBR),
gdisk
会自动处理。但如果你在转换后不小心删除了分区并新建,那就会丢失数据。
如何最大限度地保证安全?
- 备份!备份!备份!:这是最重要、最不能省略的一步。即使有 99% 的成功率,也要为那 1% 的可能性做好准备。将重要数据复制到另一块磁盘或云存储上。
- 使用
-l
选项先查看:在操作之前,先运行sudo gdisk -l /dev/sdb
查看当前分区情况,确保gdisk
能正确识别你现有的分区。 - 理解每一步命令:不要盲目地输入
y
。看清楚gdisk
给你的每一个提示。 - 准备好救援工具:手边最好有一个 Linux Live USB(如 SystemRescueCd),以防万一转换后系统无法识别磁盘,你可以用 Live 系统启动来进行数据救援。
总结
只要你:
- 确认操作的是正确的磁盘 (
/dev/sdb
) - 使用的是
gdisk
的转换功能 (r
->g
) - 确保过程不会中断(供电稳定)
- 并且已经备份了关键数据
那么,使用 sudo gdisk /dev/sdb
进行 MBR 到 GPT 的转换是安全的,不会丢失分区内的数据。
反之,如果您使用 parted
的 mklabel gpt
命令,它会直接清空整个分区表,那就会导致数据全部丢失。 这就是为什么 gdisk
是完成此任务的首选推荐工具。