☰
SLES15异机恢复实战:Veeam Linux备份的裸机重建全记录
2026/9/30 3:05:16 网站建设 项目流程

上个月遇到一个挺有代表性的需求:客户一台跑着SLES15的物理服务器主板烧了,新机器到位后却发现型号、磁盘控制器、网卡和原机完全对不上。备份倒是很扎实,Veeam Backup & Replication 12管理的Veeam Agent for Linux卷级备份,恢复点每天一份。可真动起手来我才发现,用veeam-recovery对SLES15做异机恢复,和平时在VBR控制台上做Windows裸机恢复完全是两码事。这篇文章就把这次异机恢复的全过程、关键决策点,以及我在实测中踩过的坑完整记录下来,给需要给Linux服务器做异机恢复的朋友一份可以直接参照的作业手册。

1. 为什么异机恢复要单独准备一套玩法

1.1 备份可恢复与系统可启动之间,隔着一整条引导链

很多刚接触Veeam的人有个误区:既然有卷级备份,恢复到新机器无非就是复制数据。但Linux系统能否在新硬件上启动,取决于引导加载器、EFI分区、内核与initrd、磁盘设备名,甚至btrfs子卷布局。异机恢复真正的技术含量,恰好不在“把数据写回磁盘”这一步,而在于恢复过程是否把目标机的固件环境和引导链一起重建对了。

拿这次的SLES15来说,原机是传统的Legacy BIOS启动,目标机是UEFI启动。如果只把数据原样搬到新磁盘,开机后GRUB根本不知道去哪里找配置文件,更别说EFI分区里那套引导文件了。veeam-recovery这个工具的存在,就是为了在目标机硬件完全不同的情况下,帮助一个Veeam Agent for Linux的卷级备份重新变成一台可以启动的SLES15。

1.2 veeam-recovery在整套流程里的角色

VBR 12对Windows裸机恢复(BMR)有内置机制,在恢复控制台里直接能做。但Linux侧不一样,常见做法是利用Veeam Agent for Linux自带的veeam-recovery工具。它的核心能力分两块:第一,在一台活着的SLES或其它Linux系统上生成可引导的恢复介质(通常是ISO);第二,在已经引导起来的恢复环境里完成从备份仓库读取数据、分区映射、数据回写、引导程序安装这一整套动作。

你可以把veeam-recovery理解成Veeam给Linux系统准备的“降落伞”。平时用不到,但真到需要异机恢复的时候,这套工具决定了你能不能把系统从备份里完整捞回来。VBR 12对Linux Agent的管理、备份加密、恢复点校验这些周边能力比老版本强不少,但一个真正跑过Linux异机恢复的人都会告诉你:真正的细节判断都在恢复环境和恢复后的收敛阶段,VBR控制台上那些花花绿绿的按钮反而派不上用场。

1.3 什么时候才会轮到异机恢复

异机恢复不是天天用的功能,但碰到一次就是救命的场景。至少下面这几种情况你大概率会用到:

  • 物理机损坏:主板、CPU烧毁,直接换成另一型号服务器,磁盘阵列和网卡型号全变了;
  • P2V迁移:把物理SLES15服务器迁到VMware或Hyper-V虚拟机里,硬件被完全虚拟化;
  • 跨平台搬迁:从VMware虚拟机恢复到KVM或物理机,存储控制器、网卡、固件栈全部换血。

无论哪种场景,目标硬件和源机器都“八竿子打不着”,这正是异机恢复的核心诉求。我在这次实践中还额外处理了一个细节:原机上有两个卷,根分区和/home分区分开挂载,备份时是整体卷级备份,恢复时就要把卷和卷之间的映射关系也理清楚,否则新机器启动后虽然数据在,但挂载关系乱套,服务起不来。

2. 动手前的准备:备份侧与目标侧缺一不可

2.1 备份端检查清单:确认卷级备份和恢复点可用

异机恢复最怕的一件事,就是折腾半天发现备份本身是文件级备份,根本不带系统引导信息。所以在动手之前,先确认备份任务属性。Veeam Agent for Linux支持两种模式:文件级备份和卷级备份。能做系统恢复的只有卷级备份,文件级备份只能拿来误删恢复,没法把操作系统带起来。

我这次就是先在VBR 12控制台上确认了目标备份任务的类型,然后做了一次备份文件完整性校验。VBR 12在Linux Agent的备份属性页里可以触发“Test backups”或者直接跑一次SureBackup验证(前提是你配了相应的虚拟实验室),这一步能提前暴露备份文件损坏或加密元数据异常的问题。另外,如果备份启用了加密,恢复时必须在恢复环境里输入正确的加密密码,建议提前把这个密码准备好,并确认版本兼容。

还有一点容易忽略:检查恢复点的保留周期。异机恢复通常发生在几天甚至几周后,确认你需要恢复那个日期对应的恢复点还躺在备份仓库里。有些备份策略会做GFS或归档,别等到恢复时才发现在VBR控制台里看到的恢复点早就被清理掉了。

2.2 目标机端的硬件预检

目标机的硬件预检往往决定恢复过程的顺畅程度。我在这次操作前花了大概四十分钟把目标服务器过了一遍,重点看了四样东西:

检查项检查目的如果出问题的处理方式
启动模式确认UEFI还是Legacy BIOS,避免引导程序装错位置在BIOS里统一启动模式,或接受veeam-recovery在恢复时重建引导
磁盘容量和RAID级别确认目标磁盘容量足够容纳备份数据手动分区映射,避免自动布局把分区压缩过头
Secure Boot状态恢复介质和目标磁盘都需要考虑签名问题暂时关闭Secure Boot,系统起来后再处理签名
存储控制器驱动确认恢复系统能识别目标机的磁盘阵列提前准备厂商驱动,或在恢复环境中先确认磁盘可见

其中磁盘容量最要命。这次客户的新机器虽然整体配置比旧机器高,但数据盘容量反而小了近三分之一。如果直接让veeam-recovery自动映射,系统分区会被强行收紧,虽然btrfs能撑住,但后续扩容和快照空间会很尴尬。所以我提前规划好了手动分区方案,把根分区和数据分区的目标大小都算清楚。

2.3 网络与仓库访问规划

恢复环境本质上一个精简Linux系统,它要访问备份仓库才能读取备份数据。下表把常见的仓库类型和连接注意点列出来,也是我踩过几次开关后沉淀下来的:

仓库类型连接方式注意点
本地挂载磁盘/USB直接识别最省心,但需要物理接触或远程挂载到目标机
SMB/CIFS共享填写共享路径和账号密码Windows共享常见,密码或域信息不能错
NFS共享填写NFS服务器和导出路径权限检查和网络连通性要提前确认
VBR服务器管理的仓库通过VBR REST API连接端口默认9419,需要服务账号和网络放行

我这次用的是VBR服务器管理的Linux仓库,恢复环境通过REST API通道读取备份。这里有个容易忽略的点:恢复环境所在的目标机,网络通常默认走DHCP,如果目标机所在的网络没有DHCP服务,必须在恢复环境的Shell里手动配IP和路由,否则仓库地址根本ping不通。

3. 关键实操:从启动恢复ISO到完成系统还原

3.1 生成恢复介质并引导目标机

生成恢复ISO的方式很直接,在一台装有Veeam Agent for Linux的系统上执行sudo veeam-recovery,进入TUI菜单后选择创建恢复介质(Create recovery media)即可。也可以直接命令行生成,具体参数用veeam-recovery --help查一下就行。生成的ISO文件保存到现有分区或外接存储,然后用任意刻录工具写到U盘,或者通过服务器的远程管理卡挂载成虚拟光驱。

引导目标机时有一个小经验:先把启动顺序临时设为光驱/USB优先,等恢复完成后记得改回硬盘优先,不然重启后又进恢复环境,还得再折腾一次。另外,如果目标机的Secure Boot开启,恢复介质可能会被拒之门外,这时候在BIOS里先关掉Secure Boot,等系统恢复完成后再考虑重新开启。

3.2 接入备份仓库并选定恢复点

目标机在恢复环境下启动后,屏幕上会进入Veeam Recovery Environment(VRE)的交互界面。根据之前规划好的仓库访问方式,选择对应的备份来源类型,填写服务器地址、共享路径、账号密码或者VBR服务账号。

连接成功后,向导会列出所有可用的备份文件。选中目标SLES15的备份,然后在恢复点列表里选择具体时间点。如果某天晚上跑批任务导致数据一致性有问题,可以选跑批开始前的时间点。值得注意的是,恢复环境此时还能访问恢复介质自带的一些基础命令,如果网络不通或者仓库连不上,可以先切到Shell里排查,再回到向导继续。

3.3 磁盘布局、分区映射与引导程序安装

选定恢复点后,Veeam会展示源备份的卷列表。这里我强烈建议不要直接用“自动布局”,尤其当你对目标机磁盘有自己的容量规划时。手动映射时重点关注三件事:

第一,EFI系统分区(如果是UEFI启动)必须映射到目标磁盘的EFI分区,并且分区类型标识要正确;第二,根分区和/home分区要映射到目标磁盘上足够大的区域,避免恢复完才发现空间不够;第三,swap分区可以直接让恢复环境重新创建,没必要从备份里恢复。

数据写入完成后,veeam-recovery会执行引导程序安装。这个步骤会把GRUB2写入目标磁盘,UEFI模式下写EFI分区,Legacy模式下写MBR。屏幕提示“Bootloader installation finished”之后,才算真正通关了一半。

3.4 重启后的系统收敛

从恢复环境退出、拔掉恢复介质、把启动顺序改回硬盘,然后重启。这一步可能出现的情况比较多,我在第四章和第五章会展开。第一次看到SLES15的GRUB菜单真正弹出来时,心里那块石头才算落了地。但进入系统不代表完事,系统能起来只是异机恢复的下半场开端,接下来还有一堆SLES15特有的收尾工作要做。

4. SLES15特有的恢复后收尾工作

4.1 GRUB2与内核启动参数

SLES15使用的引导加载器是GRUB2,配置路径在/boot/grub2/grub.cfg,现代SLES上通常通过grub2-mkconfig -o /boot/grub2/grub.cfg重新生成配置。恢复完成后,我建议先看两样东西:cat /proc/cmdline检查当前内核启动参数,再检查/etc/default/grub里有没有残留旧硬件的参数,比如先前绑定过的rd.luks、net.ifnames=0等等。

异机恢复后的硬件环境通常会有内核模块变化,此时重新生成initramfs是性价比最高的操作。执行dracut -f,让initrd重新扫描目标机的存储控制器、网卡和文件系统驱动,能避免启动时挂在“Waiting for device”这种问题上。SLES15上这个命令很成熟,跑一遍没坏处。

4.2 网络接口命名与wicked/NetworkManager适配

这是异机恢复里出现频率最高的“隐形坑”。原机的网卡名可能叫ens33,新机器上变成了enp3s0f1,但/etc/sysconfig/network/下的ifcfg-*文件还是旧名字,结果系统起来后根本没有网卡被激活。

SLES15默认用wicked管理网络,检查/etc/sysconfig/network/ifcfg-*里的NAME和BOOTPROTO,把新接口名对应上。如果原机配置里做了bonding或者VLAN,还要一并核对ifcfg-bond0、/etc/sysconfig/network/ifroute-*这些文件。改完之后执行wicked ifreload all或者systemctl restart wicked。如果用NetworkManager,就用nmcli重新配置连接,道理一样。

4.3 btrfs子卷与snapper快照检查

SLES15默认根文件系统是btrfs,安装时会创建一堆子卷,典型布局包括@、@/home、@/opt、@/var等等,配合snapper做系统快照管理。异机恢复后,建议用mount | grep btrfs检查根子卷是否以正确的subvol参数挂载,再看snapper list能否正常列出快照。

一般的卷级恢复会把btrfs子卷整个原样拷回,所以子卷结构通常不会坏。但如果恢复时手动调整过分区,或者恢复后根分区剩余空间明显偏小,需要确认snapper的清理策略还能不能正常执行,否则大量快照会把空间吃光。

4.4 驱动、注册与系统标识处理

如果原机是一台VMware虚拟机,恢复到了物理机,或者反过来从物理机恢复到了KVM虚拟机,驱动差异会非常明显。除了前面说的重新生成initramfs,还要检查/etc/modprobe.d/里是否有针对旧硬件写的黑名单或别名设置,这些配置在异机环境下可能直接导致模块加载失败。

SLES15如果是通过SUSE注册码或SUSE Manager激活的,硬件变化后注册状态可能会漂移。执行SUSEConnect --status检查产品注册情况,必要时用SUSEConnect -p SLES/15.x-xxxx重新激活。还有一些细节,比如系统的machine-id会在恢复后继续沿用备份时的值,如果目标机和其它虚拟机冲突,可能导致DHCP分配异常或集群节点标识冲突,这时可以重置机器ID并重启。

5. 我实测中遇到的三个坑

5.1 恢复介质启动后连不上备份仓库

第一次引导恢复介质时,我在填完VBR服务器地址后一直提示连接超时,卡了整整二十分钟。后来切到恢复环境Shell里一看,目标机拿到的是某个隔离网段IP,和备份仓库所在的管理网段完全不通。恢复环境默认DHCP,但这台目标机所在的业务网和备份网是物理隔离的。

排查思路很清楚:先用ip addr show确认当前IP,再用ping测试仓库地址,不走通绝不进向导。解决方式是在Shell里手动配置静态IP和网关,重新ping仓库或VBR服务器。经验总结就是:恢复介质启动后,网络是第一道关卡,提前把目标机应处的网段、IP、网关记在纸上比什么都强。

5.2 UEFI和安全启动导致的引导失败

这次恢复完成后第一次重启,系统卡在GRUB命令行,反复输入exit都没用。原因出在目标机的Secure Boot一直开着,恢复环境的GRUB签名和目标磁盘EFI分区里的shim不匹配,引导链被固件拦截了。

处理思路分两步:先在BIOS里临时关闭Secure Boot,确认系统能正常引导进入SLES15,然后在系统内检查EFI分区中的引导链文件,必要时用update-bootloader重新安装引导组件。确认系统稳定后,再评估是重新开启Secure Boot并注册密钥,还是一直保持关闭——生产环境下这个决定要谨慎,需要和系统合规要求一起考虑。

5.3 目标磁盘比原盘小,自动布局差点把根分区压残

客户新机器数据盘比原机小30%,我第一次偷懒选了自动布局,恢复完成后根分区被压缩得只剩下40多GB可用空间,btrfs快照一跑起来就告警。后来只能重新手动规划:把根分区按原大小恢复,把数据分区适当缩容,恢复完成后在系统里用btrfs filesystem resize在线调整。

手动映射时还有个细节,SLES15的btrfs根分区和/home分区如果都在同一个物理磁盘上,要注意物理分区的起止顺序,避免把分区表中的空余空间浪费掉。这次教训让我深刻认同一点:异机恢复的容量规划不要交给工具自动判断,还原前花十分钟把目标盘的布局画一遍,能省掉恢复后一天的人工调整。


最后再分享一条个人体会:这一整套流程跑下来,最值钱的不是那些“下一步、下一步”的界面操作,而是恢复前对备份类型、硬件差异、容量规划、网络通路的通盘梳理。VBR 12和veeam-recovery的组合确实能扛住SLES15的异机恢复场景,但前提是你把工具当辅助而不是当保姆。建议正式恢复前,用同样的流程在一台测试机上完整演练一遍,把仓库连接、引导程序、网络收敛这几个高风险环节全部跑通。真到了服务器起不来的那一天,你会感谢自己多做过的这次演练。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询