【Linux 服务器磁盘映像备份与恢复实战指南】虚拟机备份,物理机上云都可以用这套方案!

发布于:2025-05-23 ⋅ 阅读:(25) ⋅ 点赞:(0)

Linux 服务器磁盘映像备份与恢复实战指南

背景

在服务器运维中,磁盘健康度下降可能导致数据丢失风险,特别是在未配置 RAID 的情况下。针对这种情况,备份磁盘数据并恢复到新设备是确保数据安全的关键。本文记录了使用 dd 命令通过 NFS 实现全盘映像备份,并将备份恢复到另一台服务器的裸盘(/dev/sdb)的完整流程。恢复后,系统进入 initramfs 紧急模式,通过 fsck 修复文件系统问题,最终成功启动系统的操作步骤。

本文适用于以下场景:

  • 系统:Ubuntu(本文基于 Ubuntu 22.04,内核 6.2)
  • 需求:全量备份磁盘数据,并在另一台服务器上恢复,保持系统和数据完整
  • 环境:源服务器磁盘健康度低,目标服务器使用裸盘,无 RAID 配置

环境准备

  • 源服务器

    • 系统:Ubuntu 22.04(或其他版本)
    • 磁盘:/dev/sda(待备份磁盘,健康度不足 1%)
    • 网络:可访问 NFS 服务器
  • 目标服务器

    • 系统:Ubuntu 22.04(或其他版本)
    • 磁盘:/dev/sdb(裸盘,用于恢复映像)
    • 原系统盘:/dev/sda(恢复后移除)
  • NFS 服务器

    • 提供充足存储空间,用于存放备份映像
  • 工具

    • dd:用于全盘映像备份和恢复
    • fsck:用于修复文件系统
    • nfs-common:用于挂载 NFS
  • 其他

    • Ubuntu Live USB(用于修复或验证)
    • 网络配置确保两台服务器与 NFS 通信正常

操作步骤

1. 确认磁盘健康状态

在源服务器上,检查磁盘健康状态以评估备份的紧急程度。

sudo apt update
sudo apt install smartmontools
sudo smartctl -a /dev/sda
  • 查看 SMART 输出中的 Reallocated_Sector_CtWear_Leveling_Count 等指标,确认磁盘健康度。
  • 如果健康度低于 1%,立即停止不必要的写操作,进入备份流程。

2. 挂载 NFS 并备份磁盘映像

为确保备份安全,将磁盘映像存储到 NFS 服务器。

2.1 配置 NFS 客户端

安装 NFS 客户端工具并挂载 NFS 共享目录:

sudo apt install nfs-common
sudo mkdir /mnt/nfs
sudo mount -t nfs <NFS_SERVER_IP>:/path/to/share /mnt/nfs
  • 替换 <NFS_SERVER_IP>/path/to/share 为实际 NFS 服务器地址和共享路径。

  • 验证挂载:

    df -h /mnt/nfs
    
2.2 使用 dd 创建全盘映像

停止可能导致磁盘写入的服务(如数据库、Web 服务器)以确保数据一致性:

sudo systemctl stop mysql apache2  # 根据实际情况调整

执行 dd 备份整个磁盘:

sudo dd if=/dev/sda of=/mnt/nfs/full_backup.img bs=64K status=progress
  • if=/dev/sda:源磁盘设备。
  • of=/mnt/nfs/full_backup.img:备份文件存储路径。
  • bs=64K:设置块大小以提高效率。
  • status=progress:显示备份进度。

注意

  • 确保 NFS 存储空间足够(至少等于源磁盘容量)。

  • 可选:备份后生成校验和以验证完整性:

    md5sum /mnt/nfs/full_backup.img > /mnt/nfs/full_backup.img.md5
    

3. 在目标服务器上恢复磁盘映像

将备份映像恢复到目标服务器的裸盘(/dev/sdb)。

3.1 确认目标磁盘

在目标服务器上,确认目标磁盘为裸盘(/dev/sdb):

sudo fdisk -l

如果磁盘已有分区,建议清空:

sudo wipefs -a /dev/sdb
sudo dd if=/dev/zero of=/dev/sdb bs=1M count=100
3.2 挂载 NFS

在目标服务器上挂载 NFS 以访问备份映像:

sudo apt install nfs-common
sudo mkdir /mnt/nfs
sudo mount -t nfs <NFS_SERVER_IP>:/path/to/share /mnt/nfs

验证备份文件存在:

ls /mnt/nfs/full_backup.img
3.3 恢复映像

将备份映像恢复到 /dev/sdb

sudo dd if=/mnt/nfs/full_backup.img of=/dev/sdb bs=64K status=progress
  • 确保目标磁盘容量不小于源磁盘。

  • 验证恢复完成:

    sudo fdisk -l /dev/sdb
    

4. 移除原系统盘并重启

为使用恢复的磁盘作为系统盘,移除目标服务器的原系统盘(/dev/sda)。

  1. 关机:

    sudo poweroff
    
  2. 物理移除 /dev/sda(或在 BIOS 中调整启动顺序,确保从 /dev/sdb 启动)。

  3. 重启服务器:

    • 如果使用 BIOS,进入 BIOS 设置,将 /dev/sdb 设置为首选启动设备。
    • 如果使用 UEFI,确保 EFI 分区正确配置。

5. 处理 initramfs 紧急模式

重启后,系统进入 initramfs 紧急模式(提示类似 (initramfs)),通常是由于文件系统错误或分区配置问题。

5.1 运行 fsck 修复文件系统

initramfs 提示符下,执行以下命令:

fsck /dev/sda1
  • 替换 /dev/sda1 为根分区(恢复后 /dev/sdb 可能被识别为 /dev/sda)。

  • 如果提示修复错误,按 y 确认。

  • 如果需要检查所有分区:

    fsck -A -y
    
5.2 确认修复并重启

修复完成后,退出 initramfs

exit

系统将尝试继续启动。如果仍无法进入正常模式,重启:

reboot

6. 验证系统恢复

重启后,检查系统是否正常启动:

  1. 确认登录

    • 登录系统,验证用户和数据是否完整。

    • 检查关键目录:

      ls /bin /sbin /home
      
  2. 检查 GRUB

    • 确保 GRUB 正常加载:

      cat /boot/grub/grub.cfg
      
    • 如果 GRUB 配置缺失,重新安装:

      sudo grub-install /dev/sda
      sudo update-grub
      
  3. 检查文件系统

    df -h
    sudo fsck /dev/sda1
    
  4. 验证服务

    • 检查关键服务是否正常运行:

      systemctl status
      

注意事项

  1. 备份完整性

    • 备份前停止写操作,确保映像一致性。
    • 验证备份文件完整性(使用 md5sum 或挂载映像检查)。
  2. 目标磁盘准备

    • 确保目标磁盘为空,避免覆盖已有系统导致冲突。
    • 目标磁盘容量需大于或等于源磁盘。
  3. NFS 配置

    • 确保 NFS 服务器稳定,网络带宽足够,避免备份或恢复中断。
    • 检查 NFS 权限,确保目标服务器有写权限。
  4. 分区和 UUID

    • 恢复后检查 /etc/fstab 中的 UUID 是否与 blkid 输出一致:

      blkid
      cat /etc/fstab
      
    • 如有不匹配,编辑 /etc/fstab 修正。

  5. GRUB 配置

    • 如果系统无法启动,可能需从 Ubuntu Live USB 重新安装 GRUB:

      sudo mount /dev/sda1 /mnt
      sudo mount --bind /dev /mnt/dev
      sudo mount --bind /proc /mnt/proc
      sudo mount --bind /sys /mnt/sys
      sudo mount --bind /run /mnt/run
      sudo chroot /mnt
      grub-install /dev/sda
      update-grub
      
  6. 硬件兼容性

    • 确保目标服务器硬件(如磁盘控制器、CPU)与源系统兼容。

    • 如果内核版本不匹配,可能需重新安装内核:

      apt install --reinstall linux-image-$(uname -r)
      

总结

通过 dd 命令结合 NFS 实现全盘映像备份与恢复,是一种高效的服务器数据迁移方案。本文详细记录了从备份到恢复的完整流程,以及处理 initramfs 紧急模式的修复方法。关键点包括:

  • 使用 dd 确保全量备份,结合 NFS 提供可靠存储。
  • 恢复到裸盘并移除原系统盘,简化启动配置。
  • 通过 fsck 修复文件系统,解决 initramfs 问题。

后续建议

  • 配置 RAID(如 RAID 1)以提高数据冗余。
  • 定期验证备份完整性,建立自动化备份机制(如 cron + rsync)。
  • 使用监控工具(如 smartmontools)跟踪磁盘健康状态。

希望这篇实战指南能为你的服务器运维提供参考!如果有其他问题,欢迎留言交流。


网站公告

今日签到

点亮在社区的每一天
去签到