UEFI模式下Windows和Linux系统的迁移与备份
以下介绍都是在UEFI模式和GPT分区下操作,对于传统的BIOS和MBR这里没有测试不保证好用
一、先说下基本的感念
VHD | VHDX | |
---|---|---|
最大容量 | 2040GB | 64TB |
最大逻辑扇区大小 | 512 bytes | 4096 bytes |
断电保护 | 不支持 | 支持 |
Trim指令 | 不支持 | 支持 |
其实上面的磁盘是微软Hyper-v虚拟机的磁盘文件,但是我们可以把Windows系统导出成VHD(x)格式的文件,同时也可以让主机直接运行VHD(x)上面的系统,方便迁移操作
● EFI系统分区(英语:EFI system partition,简写为ESP):是一个FAT16或FAT32格式的物理分区,但是其分区标识是EF (十六进制) 而非常规的0E或0C,因此,该分区在Windows操作系统下一般是不可见的。其中存储已安装系统的EFI引导加载程序以及启动时固件使用的应用程序。如果您的硬盘驱动器初始化为GUID分区表(GPT)分区样式,它将在安装Windows或Mac操作系统(OS)或Linux系统,后生成EFI系统分区。
这里我们只要知道在UEFI模式下(磁盘分区方式为GPT),如果没有ESP分区或者ESP分区损坏那么就不能正常启动操作系统,如果损坏就需要修复,可以看下面的解释
UEFI」第2话 UEFI启动的七个阶段以及BootLoader
● MSR分区(Microsoft Reserved Partition,缩写MSR):即Microsoft 保留 (MSR) 分区。是每个 在GUID 分区表 (GPT) 上的 Windows操作系统(Windows 7以上)都要求的分区。Linux和MAC系统没有这个分区
1、Windows不会向MSR分区建立文件系统或者写数据,而是为了调整分区结构而保留的分区。在Win8以上系统更新时,会检测MSR分区。MSR分区本质上就是写在分区表上面的“未分配空间”,目的是微软不想让别人乱动。
2、MSR分区的用途是防止将一块GPT磁盘接到老系统中,被当作未格式化的空硬盘而继续操作(例如重新格式化)导致数据丢失。GPT磁盘上有了这个分区,当把它接入XP等老系统中,会提示无法识别的磁盘,也无法进一步操作。
MSR分区除了上面的作用还有别的作用我这里没有查到太详细的资料,这个分区删除不影响系统的启动(普通桌面系统,服务器系统不清楚)但是分区没多大还是建议保留
这里需明确的是只有UEFI启动+GPT(GUID Partiton Table)硬盘分区才会出现ESP分区和MSR分区,而传统(Legacy)启动+MBR(Master Boot Record)硬盘分区完全用不到ESP分区和MSR分区
二、Windows系统的迁移与备份
1、当我们需要把系统从HDD硬盘迁移到SSD硬盘,我们可以用磁盘工具的系统迁移来完成
上面的操作是通过DiskGenius这个磁盘管理软件进行,其他分区软件也有类似的功能,这里我们可以知道以下几点
- 迁移会在目标磁盘上自动创建源磁盘相同的分区,包括恢复,ESP,MSR,系统分区,分区的类型也一样,上面的都为GPT分区
- 目标系统分区可以自定义大小,源磁盘的数据分区不会创建和复制,如D盘,我上面的演示中没有数据分区
在原磁盘恢复的时候我们只需要恢复对应的分区就行,大部分只是恢复系统分区
如果是恢复到新的磁盘相对麻烦些,我们可以有2个思路
思路1:通过备份的分区表先把分区信息恢复出来,恢复后可以根据自己的需求把不需要的分区删除或调整某个分区的大小,保存后,在把ESP分区和系统分区恢复到对应的分区即可
思路2:如果没有备份分区表可以通过分区软件创建出对应的分区,保存后,在把ESP分区和系统分区恢复到对应的分区即可
上面是直接一起创建出来,也可以单独创建出来,但是要看好分区类型
上面的这些操作备份的时候可以在系统下或PE下,恢复的时候需要在PE下进行,这里还需要注意的就是如果软件安装的不是系统盘,那么对应的分区也要备份和恢复比如D盘
3、使用Disk2VHD将系统分区生成为VHDx文件,Microsoft工具之Disk2vhd
我们可以在PE系统中将VHDx文件添加到磁盘管理中,这样的话就像普通磁盘一样,我们就可以通过分区软件将对应的分区恢复到新的磁盘
添加的磁盘如下
通过克隆的方式恢复
其实上面的整个恢复过程比较麻烦不如通过磁盘工具直接迁移来的方便,通过VHDx更好的是用在这里Ventoy 启动本地硬盘中的镜像文件 ,或 P2V的迁移
二、Linux系统的迁移与备份
在我了解分区软件没有专门针对Linux系统进行迁移的,所以迁移只能通过备份恢复的方式实现,所以下面只介绍备份
在进Linux备份的时候最好把/etc/fstab 文件中自动挂在的磁盘注释掉,如果不注释掉,开机恢复的主机没有对应的磁盘就会有下面的报错
这时候还是要去/etc/fstab里把对应的磁盘注释掉
1、备份整个磁盘,整个磁盘备份适合磁盘相对不大只有系统分区的场景,这里的系统分区主要跟分区,备份的方式和上面介绍的Windows一样这里就不介绍了
2、备份某个分区,这个比较适合系统分区所在的磁盘比较大的场景,Linux系统与Windows系统不同的就是我们需要备份ESP分区,/ 分区,如果 /boot是单独的分区也要备份,同时Linux没有所谓的保留分区及MSR分区
上面的分区是我笔记本安装的Ubuntu22.04系统的分区,这里先备份的分区表,在把ESP分区,/ 分区,boot分区备份了,swap分区可以不用备份因为没有数据,只是在让新硬盘恢复的时候如果是新建的swap分区那么这个分区的UUID会发生变化就需要去/etc/fstab下重新添加
如果是恢复到新的磁盘,也是有2个思路
思路1:通过备份的分区表先把分区信息恢复出来,恢复后可以根据自己的需求把不需要的分区删除或调整某个分区的大小,保存后,在把ESP分区,/ 分区,boot分区恢复到对应的分区即可,swap分区需要格式化
思路2:如果没有备份分区表可以通过分区软件创建出对应的分区,保存后,在把ESP分区,/ 分区,boot分区恢复到对应的分区即可,swap分区重新创建并且格式化