一、简介:备份不是“可选项”,是工业现场“硬指标”
飞腾芯片(FT-1500A/FT-2000/FT-D2000)已批量应用于能源、矿山、轨道交通等关键领域,系统一旦宕机:
变电站控制中断 → 区域停电,损失千万;
矿井提升机失控 → 人身安全风险;
地铁信号系统离线 → 列车紧急制动,晚点 30 min+。
国产化 + PREEMPT_RT带来微秒级实时性,但“硬件冗余”不等于“系统冗余”——逻辑层备份缺失仍是现场最大痛点。
掌握“飞腾平台实时 Linux 备份与灾难恢复” =90 min 内原地重建系统,保障业务连续性,满足《工业控制系统信息安全》GB/T 33009 要求。
二、核心概念:6 个关键词先搞懂
| 关键词 | 一句话说明 | 飞腾平台特殊点 |
|---|---|---|
| 全量镜像 | 整个系统分区逐字节复制 | 需兼容 ARM64 引导(UEFI+GRUB) |
| 增量快照 | 基于初始镜像,仅保存变化块 | 推荐 btrfs/zstd,压缩比 2:1 |
| PREEMPT_RT | 实时补丁内核,中断线程化 | 备份时需保留实时内核与模块 |
| 国产可信固件 | 飞腾 UEFI 2.5,支持可信启动 | 备份必须包含 /boot/efi 与 EFI变量 |
| 灾难恢复时间 RTO | 系统故障 → 业务恢复 最大容忍时间 | 矿山场景要求 RTO ≤ 90 min |
| 恢复点目标 RPO | 允许丢失的数据时间窗 | 控制指令 RPO ≤ 5 min |
三、环境准备:30 分钟搭好“备份实验室”
1. 硬件
飞腾 FT-2000 4 核工业主板 × 2(节点 A/B)
256 GB 国产 SSD(长江存储)(系统盘)
1 TB 移动硬盘 ×1(灾备介质,可插拔)
千兆以太网交换机 ×1(网络备份通道)
2. 软件
| 组件 | 版本 | 安装命令 |
|---|---|---|
| 实时内核 | linux-5.15-rt53 | 飞腾原厂 deb 包 |
| 备份工具 | fsarchiver 0.8.7 | apt install fsarchiver |
| 快照工具 | btrfs-progs 5.16 | 已内置 |
| 网络同步 | rsync 3.2.3 | 已内置 |
| 脚本模板 | bash 5.0+ | 本文提供 |
3. 一键装 btrfs 与实时内核(可复制)
#!/bin/bash # setup_btrfs.sh sudo apt update sudo apt install -y btrfs-progs fsarchiver # 将第二块 SSD 格式化为 btrfs,用于快照 sudo mkfs.btrfs -L BTRFS_SNAP /dev/nvme1n1 sudo mkdir /mnt/snap sudo mount /dev/nvme1n1 /mnt/snap四、应用场景(300 字):矿井提升机控制柜
山西某煤矿立井提升机额定载荷 25 吨,PLC 主控器采用飞腾 FT-2000 + PREEMPT_RT 内核,运行提升曲线算法(周期 1 ms)。现场粉尘、潮湿、24 h 连续运行,曾出现 SSD 坏块导致系统无法启动,人工下井抢修耗时 4 h,影响提煤 6000 吨。
按本文方案部署“本地快照 + 网络镜像”双保险:
每 30 min 自动生成分区快照,RPO=30 min;
每日夜班将全量镜像同步到地面机房,RTO=60 min;
故障时插入移动硬盘 → 一键恢复 → 系统重新上线,抢修时间缩短至 45 min,满足矿山安全规程停产不超过 2 h 要求,直接避免一次重大停产损失。
五、实际案例与步骤:从“0”到“可恢复”全流程
实验目录统一:
~/backup-lab,所有脚本可一键运行。
5.1 全量镜像:fsarchiver 整盘克隆
#!/bin/bash # full_backup.sh DATE=$(date +%F_%H-%M) SNAP_DIR="/mnt/snap/full" mkdir -p $SNAP_DIR # 保存分区表 + UEFI 固件变量 sudo sfdisk -d /dev/nvme0n1 > $SNAP_DIR/pt.txt sudo efibootmgr -v > $SNAP_DIR/efi.txt # 逐分区存档(-z8 = zstd 压缩级别 8) sudo fsarchiver savefs $SNAP_DIR/root.fsa /dev/nvme0n1p2 \ -A "FT2000_RT_DEMO" -z8 -j4 sudo fsarchiver savefs $SNAP_DIR/boot.fsa /dev/nvme0n1p1 -z8 echo "Full backup done: $SNAP_DIR"使用场景:
首次部署、版本发布前生成“基线”,故障时可直接还原。
5.2 增量快照:btrfs 每 30 min 自动快照
#!/bin/bash # snap_create.sh MOUNT="/" SNAPDIR="/mnt/snap/incr" mkdir -p $SNAPDIR # 创建可写快照(-r 只读,-w 可写用于演练) sudo btrfs subvolume snapshot -r $MOUNT $SNAPDIR/snap_$(date +%s) # 保留最近 48 份,超量删除最旧 ls -t $SNAPDIR | tail -n +49 | xargs -r sudo rm -rf加入 cron:
echo "*/30 * * * * /home/ftuser/backup-lab/snap_create.sh" | sudo tee -a /var/spool/cron/crontabs/root5.3 网络镜像:rsync 每日推送到灾备机
#!/bin/bash # net_sync.sh REMOTE="backup@192.168.10.100::ft_backup" # 排除运行时文件 rsync -avz --delete --exclude='/tmp' --exclude='/var/log' \ /mnt/snap/ $REMOTE/$(date +%F)灾备机需安装rsyncd并配置模块:
# /etc/rsyncd.conf [ft_backup] path = /data/ft_backup read only = no auth users = backup secrets file = /etc/rsyncd.secrets5.4 一键恢复:USB 启动盘 60 min 重建系统
制作飞腾 UEFI 启动盘(Ubuntu Live RT)
插入移动硬盘,启动进入 Live 系统
执行恢复脚本:
#!/bin/bash # restore.sh DISK="/dev/nvme0n1" FSARCHIVER="/usr/sbin/fsarchiver" # 还原分区表 sfdisk $DISK < pt.txt # 还原 boot & root $FSARCHIVER restfs boot.fsa id=0,dest=${DISK}p1 $FSARCHIVER restfs root.fsa id=0,dest=${DISK}p2 # 重新安装 UEFI 条目 efibootmgr -c -d $DISK -p1 -L "FT-RT" -l /EFI/BOOT/grubaa64.efi重启,进入新生系统,验证实时性:
sudo cyclictest -p99 -i100 -d60s -n六、常见问题与解答(FAQ)
| 问题 | 现象 | 解决 |
|---|---|---|
| fsarchiver 报“unknown filesystem feature” | 源分区启用了新特性 | 加-o选项忽略特征,或升级 fsarchiver |
| btrfs 快照占用空间暴涨 | 数据库大量写 | 启用 zstd 压缩 + 每日合并快照 |
| 恢复后无法启动 | UEFI 条目丢失 | Live 系统内重新efibootmgr -c并检查 /boot/efi 文件完整 |
| rsync 同步慢 | 单线程 10 MB/s | 加--whole-file局域网跳过 delta,或并行lsyncd |
| 磁盘坏道导致备份失败 | I/O error | 使用ddrescue先抢救镜像,再 fsarchiver |
七、实践建议与最佳实践
3-2-1 原则
至少 3 份副本,2 种介质,1 份异地。备份验证演练
每季度做一次“盲演”:随机拔掉节点 A 电源,45 min 内节点 B 拉起并接管控制。加密与可信
移动硬盘使用cryptsetup luksFormat全盘加密,防止丢失泄露。快照链合并
每周合并一次增量快照→“周基线”,减少链深度,提升恢复速度。监控告警
备份失败立即告警:*/30 * * * * /home/ftuser/backup-lab/snap_create.sh || echo "backup fail" | mail -s Alert admin@example.com文档化
将恢复步骤写成《现场抢修卡》A4 塑封,贴于机柜内侧,断电时无需找电脑即可操作。
八、总结:一张脑图带走全部要点
飞腾 RT 系统备份恢复 ├─ 全量:fsarchiver + UEFI 变量 ├─ 增量:btrfs 快照 + cron ├─ 网络:rsync 异地同步 ├─ 恢复:Live USB + 一键脚本 └─ 演练:季度盲演 + 加密 + 文档备份不是成本,是保险;恢复不是选修,是生存。
把本文脚本纳入 Git,下次矿山、电网、地铁现场出现“黑屏”时,你只需插入移动硬盘 → 执行 restore.sh → 45 min 后系统重新上线,让国产化飞腾平台真正“稳若磐石”!