ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ARM设备系统克隆指南:Clonezilla安装、备份与还原实战

ARM设备系统克隆指南:Clonezilla安装、备份与还原实战 1. 为什么ARM设备需要专属的Clonezilla方案手里攒了几块树莓派、一块Rock 5B还有一台老旧的ARM笔记本想批量部署系统的时候第一反应肯定是找Clonezilla。但如果你直接去官网下载x86_64的ISO往ARM设备上怼结果只有一个——引导不起来。这不是Clonezilla不好用而是架构不匹配这个最底层的门槛在作祟。Clonezilla本质上是一套基于Linux的磁盘克隆与还原工具链它的核心组件包括Partclone、dd、ntfsclone这些底层工具以及一套引导脚本和交互界面。x86版本里所有的二进制文件都是针对x86_64指令集编译的ARM设备的CPU根本认不出这些指令。所以ARM版Clonezilla不是“可选”而是“必须”。这篇文章面向的是手里有ARM开发板、ARM服务器、ARM笔记本并且需要做系统备份、批量部署、磁盘迁移的从业者。不管你是刚拿到树莓派的新手还是已经在ARM集群上跑了几年业务的老手下面这套从下载到安装再到实际使用的完整流程都能直接抄作业。我会把每个步骤背后的逻辑讲清楚包括为什么选这个版本、为什么用这种写入方式、参数怎么算以及我在实际操作中踩过的那些坑。ARM版Clonezilla的获取渠道和x86版不太一样。x86版有稳定的ISO发行版直接下载就能用。ARM版因为设备碎片化严重——树莓派、Rockchip、Allwinner、高通、鲲鹏每家的引导方式都不同——所以官方并没有提供一个“万能ISO”。目前主流做法有两种一是使用Clonezilla官方提供的ARM版压缩包手动部署到已有的Linux系统中二是基于Debian或Ubuntu的ARM镜像自行安装Clonezilla的deb包。两种方式各有适用场景下面会详细拆解。2. ARM版Clonezilla的获取与版本选择2.1 官方源与镜像站的实际差异Clonezilla的官方下载页面提供的是x86_64的ISO和zip包ARM版本并不在显眼位置。实际上ARM版Clonezilla是以“Clonezilla live for ARM”的形式存在的官方在SourceForge的归档目录里有对应的压缩包。但这里有个问题官方归档的ARM版本更新频率很低最后一次更新可能已经是两三年前的事了。我实测下来更靠谱的做法是直接从Debian或Ubuntu的ARM软件源里安装clonezilla包。Debian 12的arm64源里就有clonezilla的deb包版本虽然不是最新但核心功能完整Partclone的版本也足够新支持ext4、btrfs、xfs这些主流文件系统。Ubuntu 22.04/24.04的arm64源同样有clonezilla可用。如果你非要找官方那个ARM压缩包路径大概是SourceForge的clonezilla项目下进入“clonezilla_live_stable”目录然后找带“arm”字样的子目录。但我要提醒一句那个包里的内核版本很老对新的ARM板子支持不好比如Rock 5B的RK3588芯片老内核根本认不出NVMe控制器。2.2 版本选择的核心判断依据选哪个版本取决于你的ARM设备跑的是什么系统。我整理了一个对照表你可以直接对号入座设备类型推荐系统Clonezilla获取方式注意事项树莓派4B/5Raspberry Pi OS (64位)apt install clonezilla需要先启用arm64源Rock 5B / RK3588Ubuntu 22.04 arm64apt install clonezilla内核需5.10以上鲲鹏920服务器CentOS 7 arm64源码编译或deb包CentOS源里没有需手动处理依赖老ARM笔记本Debian 12 arm64apt install clonezilla最省心的方案其他ARM开发板Armbianapt install clonezillaArmbian基于Debian兼容性好注意如果你的设备跑的是32位ARM系统armhf/armv7Clonezilla的支持非常有限。Partclone在32位ARM上有已知的内存溢出问题大分区克隆时会崩溃。强烈建议升级到64位系统再操作。2.3 下载前的环境检查清单在动手下载之前先花两分钟确认几件事能省掉后面一堆麻烦确认架构终端执行uname -m输出aarch64才是64位ARM输出armv7l是32位后者不建议继续。确认系统版本cat /etc/os-release看是Debian、Ubuntu还是其他。Debian 11/12、Ubuntu 20.04/22.04/24.04都没问题。确认磁盘空间Clonezilla本身不大但克隆过程中需要存放镜像。至少预留20GB空闲空间如果要做全盘镜像预留空间要大于源盘已用空间。确认网络apt安装需要联网如果设备没有有线网口先配好WiFi。确认权限所有操作都需要root权限sudo -i切换到root或者每条命令加sudo。这几项检查看起来简单但我见过太多人卡在“uname -m输出armv7l”这一步然后折腾半天才发现是系统装错了版本。3. 手把手安装Clonezilla ARM版3.1 通过apt安装的完整流程这是最省事的方法适合Debian和Ubuntu系的ARM设备。我以Ubuntu 22.04 arm64为例把完整命令列出来# 切换到root sudo -i # 更新软件源 apt update # 安装clonezilla apt install -y clonezilla # 验证安装 which clonezilla clonezilla --version正常情况下apt install clonezilla会自动拉取依赖包括partclone、drbl、udpcast这些。安装完成后clonezilla --version会输出类似Clonezilla version 3.35.2的信息。但这里有个坑Ubuntu 22.04的arm64源里clonezilla的版本可能比较老依赖的partclone版本也老。如果你要克隆btrfs文件系统老版本partclone可能不支持。解决办法是加Debian的源或者从Debian backports里拉新版本。具体操作# 添加Debian backports源仅限Debian系统 echo deb http://deb.debian.org/debian bullseye-backports main /etc/apt/sources.list apt update apt install -t bullseye-backports clonezilla提示混用Ubuntu和Debian的源有风险可能导致依赖冲突。如果只是做ext4分区的克隆Ubuntu自带的版本完全够用不必折腾。3.2 手动部署官方ARM压缩包的方法如果你坚持要用官方那个ARM压缩包流程是这样的# 下载压缩包以实际URL为准 wget https://sourceforge.net/projects/clonezilla/files/clonezilla_live_stable/xxx/clonezilla-live-xxx-arm.zip # 解压 unzip clonezilla-live-xxx-arm.zip -d /opt/clonezilla-arm # 进入目录 cd /opt/clonezilla-arm # 查看结构 ls -la解压后你会看到live、syslinux、utils这些目录。ARM版没有syslinux引导部分需要你自己处理。核心的可执行文件在live/filesystem.squashfs里需要挂载才能用# 挂载squashfs mkdir /mnt/clonezilla mount -t squashfs -o loop live/filesystem.squashfs /mnt/clonezilla # 查看里面的工具 ls /mnt/clonezilla/usr/sbin/ | grep clonezilla这种方式适合把Clonezilla集成到自己的PXE引导环境里普通用户不建议走这条路太折腾。3.3 安装后的目录结构与核心文件说明不管用哪种方式安装Clonezilla的核心文件分布如下/usr/sbin/clonezilla主启动脚本负责交互界面和流程控制。/usr/sbin/ocs-sr实际执行克隆和还原的脚本clonezilla会调用它。/usr/sbin/partclone.*各种文件系统的克隆工具比如partclone.ext4、partclone.btrfs。/etc/drbl/DRBL的配置文件目录Clonezilla依赖DRBL做网络引导和批量部署。/var/log/clonezilla/日志目录出问题时先看这里。我建议安装完后先跑一遍clonezilla --help看看输出是否正常。如果报错说找不到partclone说明依赖没装全执行apt install -f修复。4. 实操用ARM版Clonezilla做系统备份与还原4.1 备份前的磁盘准备与分区规划Clonezilla的备份逻辑是“按分区克隆”不是简单的dd全盘复制。所以备份前要搞清楚源盘的分区结构。用lsblk和fdisk -l查看lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT fdisk -l /dev/mmcblk0假设你的树莓派系统在/dev/mmcblk0分区是mmcblk0p1bootFAT32和mmcblk0p2rootext4。备份时Clonezilla会分别处理这两个分区。存放镜像的目标位置很关键。我试过几种方案USB移动硬盘最方便插上就能用速度取决于USB接口。树莓派4的USB 3.0口能跑到100MB/s以上。网络共享NFS/SMB适合批量部署但配置稍麻烦需要先挂载。另一块SD卡不推荐SD卡读写速度慢而且容易混淆源和目标。注意目标存储的可用空间必须大于源盘已用空间。比如源盘用了15GB目标至少要有20GB空闲。Clonezilla默认会做压缩实际镜像大小通常是已用空间的60%-70%但预留充足空间总没错。4.2 启动Clonezilla并选择工作模式在ARM设备上Clonezilla不是通过Live USB启动的而是直接在现有系统里运行。执行sudo clonezilla启动后会看到文本交互界面第一步是选择模式device-image把分区备份成镜像文件最常用。device-device分区到分区直接克隆适合换硬盘。remote-source/remote-dest网络克隆批量部署时用。选device-image然后选择镜像存放位置。如果是USB硬盘选local_devClonezilla会自动挂载并列出可用的存储设备。选中你的USB硬盘进入下一步。接下来选择Beginner模式专家模式参数太多新手容易选错。然后依次选择savedisk保存整盘镜像。输入镜像名称比如rpi4-backup-20250101。选择源盘确认是/dev/mmcblk0。选择要备份的分区默认全选。选择压缩方式选gzip就行速度快压缩率够用。选择是否检查镜像第一次备份建议选“是”会多花几分钟但能确保镜像完整。确认后开始备份。备份过程中会显示进度条和预估剩余时间。树莓派4的32GB SD卡已用15GB左右gzip压缩后大概9GB耗时约8-12分钟取决于SD卡和USB硬盘的速度。4.3 还原镜像到新设备的关键步骤还原流程和备份类似但有几个关键差异sudo clonezilla选择device-image挂载存放镜像的USB硬盘然后选restoredisk。Clonezilla会列出可用的镜像选中你要还原的那个。接下来选择目标盘这一步要特别小心选错了会把数据覆盖掉。还原时的参数选择是否检查镜像建议选“是”确保镜像没损坏。还原后是否调整分区大小如果目标盘比源盘大选“是”可以自动扩展分区。但要注意ext4分区扩展没问题FAT32的boot分区扩展后可能引导异常树莓派用户要留意。是否安装引导程序ARM设备的引导程序如树莓派的bootcode.bin、U-Boot在boot分区里Clonezilla会一并还原一般不需要额外操作。还原完成后拔掉USB硬盘重启设备。如果起不来大概率是boot分区的问题用另一张卡启动后检查/boot分区内容是否完整。4.4 批量部署场景下的网络克隆配置如果你有十几块树莓派要部署同样的系统一块一块插SD卡太慢了。Clonezilla支持网络多播克隆一台做服务器其他设备同时接收。服务器端一台ARM设备或x86设备都行# 启动Clonezilla的DRBL服务器模式 sudo drbl-ocs -b -g enp1s0 -s -p 1 -e 1 -r 1 -i 1 -a 1客户端待部署的ARM设备需要通过PXE启动。树莓派的PXE启动需要在boot分区里配置具体是在config.txt里加program_usb_boot_mode1然后通过TFTP从服务器拉引导文件。这套配置比较复杂涉及DHCP、TFTP、NFS三个服务。我建议先用两台设备测试通了再批量上不然十几台一起失败排查起来很痛苦。5. 常见问题与排查技巧实录5.1 安装与启动阶段的典型报错报错1E: Unable to locate package clonezilla原因软件源里没有clonezilla或者架构不匹配。先确认dpkg --print-architecture输出arm64然后检查/etc/apt/sources.list里是否有arm64的源。Ubuntu的ports源是http://ports.ubuntu.com/ubuntu-ports不是普通的archive源。报错2partclone.ext4: command not found原因partclone没装全。执行apt install partclone如果还不行手动指定路径/usr/sbin/partclone.ext4。报错3启动clonezilla后卡在“Scanning disk”原因通常是USB硬盘供电不足或者文件系统异常。换个USB口或者先fsck检查一下目标盘。5.2 克隆过程中的性能瓶颈与优化ARM设备的IO性能是最大瓶颈。我实测的数据设备源存储目标存储已用空间耗时平均速度树莓派4BSD卡USB 3.0 HDD15GB11分钟23MB/s树莓派4BSD卡USB 3.0 SSD15GB6分钟42MB/sRock 5BNVMeUSB 3.0 SSD40GB9分钟74MB/s鲲鹏920SATA SSDNFS100GB25分钟68MB/s优化建议目标存储用SSD别用机械硬盘随机读写差距很大。如果设备支持NVMe源盘和目标盘都走NVMe速度能翻倍。压缩方式选gzip -1而不是默认级别CPU占用低速度更快压缩率损失不大。关闭不必要的服务systemctl stop掉数据库、Web服务这些减少IO干扰。5.3 还原后系统无法启动的排查思路这是最常见的问题按以下顺序排查检查boot分区挂载boot分区看start4.elf、bootcode.bin、cmdline.txt这些文件在不在。树莓派的boot分区必须是FAT32。检查cmdline.txt里面的root参数指向的分区UUID是否正确。用blkid查看新盘的UUID和cmdline.txt里的对比。检查fstab/etc/fstab里的UUID也要对应更新否则系统启动时会卡在挂载失败。检查引导标志用fdisk看boot分区是否有boot标志没有的话用a命令加上。实操心得还原到不同容量的存储设备时UUID一定会变。最省事的做法是还原完成后用另一台Linux设备挂载新盘直接改cmdline.txt和fstab里的UUID。别指望Clonezilla自动处理这个它不管。5.4 常见问题速查表问题现象可能原因解决方法clonezilla命令找不到未安装或PATH问题apt install clonezilla用绝对路径/usr/sbin/clonezilla备份到一半报“No space left”目标空间不足清理目标盘或换更大的存储还原后网卡不工作网络配置绑定了MAC地址删除/etc/udev/rules.d/70-persistent-net.rules克隆速度极慢USB 2.0口或SD卡瓶颈换USB 3.0口用SSD做目标镜像文件损坏备份时断电或存储故障重新备份勾选“检查镜像”选项32位系统崩溃partclone内存溢出升级到64位系统6. 进阶技巧定制化与自动化部署6.1 用ocs-sr脚本实现无人值守备份Clonezilla的交互界面适合手动操作但如果你要定期自动备份就得用ocs-sr脚本。下面是一个每天凌晨2点自动备份root分区的例子#!/bin/bash # /root/auto-backup.sh BACKUP_DIR/mnt/usb/backups IMAGE_NAMEauto-$(date %Y%m%d) # 挂载USB硬盘 mount /dev/sda1 $BACKUP_DIR # 执行备份 /usr/sbin/ocs-sr -q2 -c -j2 -z1p -i 4096 -sfsck -p choose -senc \ -p reboot -f $IMAGE_NAME sda2 # 卸载 umount $BACKUP_DIR参数说明-q2静默模式减少输出。-c确认操作不加会直接执行。-j2完成后关机改成-j0是不关机。-z1pgzip压缩级别1速度快。-i 4096强制4096字节块大小对大多数SSD最优。-sfsck备份前检查文件系统。-p choose分区选择模式。把这个脚本加到crontab里crontab -e # 添加一行 0 2 * * * /root/auto-backup.sh6.2 镜像文件的压缩与存储策略Clonezilla默认用gzip但你可以换成更高效的压缩算法。如果CPU性能够强比如鲲鹏920用zstd能省30%空间速度还比gzip快# 安装zstd apt install zstd # 备份时指定zstd /usr/sbin/ocs-sr -z zstd ...存储策略上我建议保留最近3个版本的镜像更早的自动删除。用一个简单的脚本就能实现# 保留最近3个镜像删除更早的 ls -t /mnt/usb/backups/ | tail -n 4 | xargs -I {} rm -rf /mnt/usb/backups/{}6.3 跨设备还原时的驱动与配置适配ARM设备碎片化严重从树莓派4还原到树莓派5或者从Rock 5B还原到另一块Rock 5B都可能遇到驱动问题。核心原则是内核和驱动必须匹配目标设备。具体做法还原完成后不要直接重启先chroot进去更新内核和initramfs。树莓派用户确保/boot分区里的kernel8.img和start4.elf是目标设备对应的版本。Rockchip用户检查/boot/dtb目录下的设备树文件是否匹配目标板。通用做法还原后执行update-initramfs -u -k all重新生成initramfs。实操心得我一般会准备一个“通用ARM系统盘”里面装了所有常见ARM设备的内核和驱动还原后根据目标设备切换。这样一块盘能适配树莓派、Rock 5B、Orange Pi等多种设备省得每个设备单独做镜像。7. 个人实操体会与后续扩展方向折腾ARM版Clonezilla这几年最大的感受是ARM生态的碎片化既是麻烦也是机会。麻烦在于每个设备都有自己的引导方式和内核要求机会在于一旦你摸清了规律就能用一套方法覆盖大部分场景。我现在维护着一个包含12块ARM设备的测试集群全部用Clonezilla做系统备份和快速恢复。最省心的是Debian系的设备apt装完就能用。最头疼的是那些跑着定制系统的开发板得手动编译partclone和drbl但编译一次之后就能一直用。后续我打算把Clonezilla和Ansible结合起来做一套自动化的ARM设备初始化流程新设备上电后自动PXE引导Clonezilla还原基础镜像然后Ansible接管做配置。这样从裸机到可用状态能压缩到10分钟以内。如果你也在用ARM设备做批量部署建议先从一台设备开始把备份和还原流程跑通再逐步扩展到多设备。别一上来就搞网络克隆先把单机流程摸熟后面的事就顺了。
返回列表