如何通过partclone克隆Ubuntu 22系统

如何通过partclone克隆Ubuntu 22系统

    • [一. 背景知识:为什么要克隆系统?](#一. 背景知识:为什么要克隆系统?)
    • [二. 准备工作详解](#二. 准备工作详解)
      • [2.1 选择工具:为什么是partclone?](#2.1 选择工具:为什么是partclone?)
      • [2.2 制作定制化ISO的深层原因](#2.2 制作定制化ISO的深层原因)
    • [三. 详细操作步骤](#三. 详细操作步骤)
      • [3.1 环境准备阶段](#3.1 环境准备阶段)
      • [3.2 ISO改造关键步骤](#3.2 ISO改造关键步骤)
      • [3.3 启动到Live环境](#3.3 启动到Live环境)
      • [3.4 备份操作全解析](#3.4 备份操作全解析)
      • [3.5 还原操作要点](#3.5 还原操作要点)
    • [四. 常见问题排查](#四. 常见问题排查)
      • [4.1 克隆后无法启动?](#4.1 克隆后无法启动?)
      • [4.2 出现共享库错误?](#4.2 出现共享库错误?)
    • [五. 进阶技巧](#五. 进阶技巧)
      • [5.1 网络备份方案](#5.1 网络备份方案)
      • [5.2 增量备份配置](#5.2 增量备份配置)
    • [六. 安全注意事项](#六. 安全注意事项)

一. 背景知识:为什么要克隆系统?

当我们在工作中遇到以下场景时:

  • 两台硬件配置完全相同的服务器(如CPU/内存/硬盘型号一致)
  • 其中一台(服务器A)性能表现明显优于另一台(服务器B)
  • 经过初步排查无法定位性能差异的根源

这时可以通过全盘克隆的方式,将性能优秀服务器的系统完整复制到另一台。这样可以直接继承:

  1. 已验证稳定的内核参数配置
  2. 优化过的系统服务设置
  3. 特定版本的软件环境
  4. 经过调优的文件系统参数

💡 系统克隆 vs 重装系统

相比重新安装系统,克隆可以保留所有个性化配置和运行环境,特别适合已经部署复杂应用的场景

二. 准备工作详解

2.1 选择工具:为什么是partclone?

partclone是Linux下专业的磁盘克隆工具,相比dd命令具有显著优势:

功能对比 partclone dd命令
克隆速度 只复制有效数据块 全盘逐字节复制
空间占用 备份文件较小 等于分区容量
文件系统支持 ext4/xfs/btrfs等 与文件系统无关
恢复可靠性 完整性校验 无校验机制

2.2 制作定制化ISO的深层原因

虽然Ubuntu官方ISO已包含基础工具,但需要定制化处理是因为:

  1. Live环境限制:默认ISO不包含partclone及其依赖库
  2. 依赖库完整性:不同版本系统的动态库可能存在兼容性问题
  3. 操作便利性:预置工具包可避免每次手动安装

三. 详细操作步骤

3.1 环境准备阶段

bash 复制代码
# 在任意Ubuntu 22.04.5系统上执行
sudo apt update
sudo apt install partclone -y

# 验证依赖库(关键步骤!)
ldd /usr/sbin/partclone.ext4 | grep "not found"
ldd /usr/sbin/partclone.vfat | grep "not found"
# 必须确保没有"not found"提示,否则克隆时会报错

# 创建工具目录
mkdir partclone_tools
cp /usr/sbin/partclone.* partclone_tools/

# 自动收集所有依赖库(重点!)
mkdir -p partclone_tools/libs
for f in partclone_tools/partclone.*; do
    ldd $f | grep "=>" | awk '{print $3}' | xargs -I {} cp {} partclone_tools/libs/
done

3.2 ISO改造关键步骤

  1. 使用UltraISO打开原始ISO文件
  2. 右键菜单 -> 新建文件夹/partclone_env
  3. 将准备好的工具目录拖放至ISO根目录
  4. 必须选择"优化文件"选项保存ISO(保持ISO9660格式兼容性)

⚠️ 注意事项

  • Windows环境下操作需以管理员身份运行UltraISO
  • 保存后建议校验ISO可启动性(可用VirtualBox测试)

3.3 启动到Live环境

通过BMC控制台挂载ISO并重启服务器:

  1. 进入BMC的远程控制界面
  2. 选择虚拟介质 -> 挂载修改后的ISO
  3. 设置一次性启动项选择光盘启动
  4. 重启后看到Ubuntu安装界面时:
    • 右上角选择 [Help] -> Enter shell
    • 此时进入的是临时内存系统,原硬盘未被挂载

3.4 备份操作全解析

bash 复制代码
cd /cdrom/partclone_env

# 设置动态库路径(关键环境变量!)
export LD_LIBRARY_PATH=$PWD/libs

# 查看磁盘分区情况(重要!)
lsblk -f
# 示例输出:
# sda
# ├─sda1 vfat    ESP分区(存放GRUB)
# ├─sda2 ext4    /boot目录
# ├─sda3 swap    交换分区
# └─sda4 ext4    根文件系统

# 开始备份(注意替换实际分区号)
mkdir /backup
./partclone.ext4 -c -s /dev/sda4 -o /backup/sda4.img -N
./partclone.ext4 -c -s /dev/sda2 -o /backup/sda2.img -N
./partclone.vfat -c -s /dev/sda1 -o /backup/sda1.img -N

# 验证备份文件
ls -lh /backup/*.img
# 正常应显示类似:
# -rw-r--r-- 1 root root 12G Jan 1 00:00 sda4.img

参数说明:

  • -c:创建备份(create)
  • -s:源设备(source)
  • -o:输出文件(output)
  • -N:显示进度条(需要终端支持)

3.5 还原操作要点

在目标服务器上执行:

bash 复制代码
# 先确认目标磁盘路径!
lsblk -f
# 假设目标磁盘是sdb

# 执行还原(危险操作!)
./partclone.ext4 -r -s /backup/sda4.img -o /dev/sda4
./partclone.ext4 -r -s /backup/sda2.img -o /dev/sda2
./partclone.vfat -r -s /backup/sda1.img -o /dev/sda1
exit

四. 常见问题排查

4.1 克隆后无法启动?

  • 检查项:

    1. 确认分区表类型(MBR/GPT)一致
    2. 验证EFI分区是否正确还原
    3. 检查/etc/fstab中的UUID是否更新
  • 修复方法:

    bash 复制代码
    # 在Live环境中执行
    sudo blkid # 获取新分区的UUID
    vi /mnt/etc/fstab # 替换旧UUID

4.2 出现共享库错误?

bash 复制代码
# 错误示例:
error while loading shared libraries: libuuid.so.1: cannot open shared object file

解决方案:

  1. 检查LD_LIBRARY_PATH是否设置正确
  2. 确认libs目录包含所有依赖库
  3. 使用ldd命令验证可执行文件依赖

五. 进阶技巧

5.1 网络备份方案

对于大容量硬盘,推荐使用网络存储:

bash 复制代码
# 在Live环境中配置网络
ip a # 查看网卡名称
dhclient enp0s3

# 挂载NFS共享
mkdir /nfs
mount -t nfs 192.168.1.100:/backup /nfs

# 直接备份到网络存储
./partclone.ext4 -c -s /dev/sda4 -o /nfs/sda4.img

5.2 增量备份配置

使用partclone+rsync实现增量备份:

bash 复制代码
# 首次完整备份
./partclone.ext4 -c -s /dev/sda4 -o base.img

# 后续增量备份
rsync -c --compare-dest=base.img /dev/sda4 delta.img

六. 安全注意事项

  1. 操作前必须备份重要数据
  2. 建议在非业务时段进行操作
  3. 克隆完成后立即修改网络配置,避免IP冲突
  4. 检查SSH密钥等敏感信息的唯一性
  5. 更新系统许可证(如有)
相关推荐
草上爬17 分钟前
OpenWrt:使用ALSA实现边录边播
ubuntu·openwrt·record·alsa·play
Zfox_22 分钟前
Redis:Hash数据类型
服务器·数据库·redis·缓存·微服务·哈希算法
Kookoos1 小时前
Dynamics 365 Finance + Power Automate 自动化凭证审核
运维·自动化·dynamics 365·power automate
ABB自动化5 小时前
for AC500 PLCs 3ADR025003M9903的安全说明
服务器·安全·机器人
努力学习的小廉5 小时前
深入了解linux系统—— 进程池
linux·运维·服务器
秃头菜狗5 小时前
各个主要目录的功能 / Linux 常见指令
linux·运维·服务器
利刃大大5 小时前
【在线五子棋对战】二、websocket && 服务器搭建
服务器·c++·websocket·网络协议·项目
vfvfb6 小时前
bat批量去掉本文件夹中的文件扩展名
服务器·windows·批处理·删除扩展名·bat技巧
jiunian_cn6 小时前
【Linux】centos软件安装
linux·运维·centos
藥瓿亭7 小时前
K8S认证|CKS题库+答案| 6. 创建 Secret
运维·ubuntu·docker·云原生·容器·kubernetes·cks