侧边栏壁纸
博主头像
青菜-halo2 博主等级

行动起来,活在当下

  • 累计撰写 74 篇文章
  • 累计创建 6 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

(PBS) 数据存储灾难恢复指南:系统盘损坏后的完整恢复流程

Administrator
2025-09-06 / 0 评论 / 1 点赞 / 19 阅读 / 0 字

本文详细记录了在 Proxmox Backup Server 系统盘损坏但数据盘完好的情况下,如何通过一系列操作完整恢复数据存储和备份服务的全过程。

1. 场景概述

这是一个典型的"系统盘故障,数据盘完好"的数据恢复场景。我的 Proxmox Backup Server (PBS) 系统盘意外损坏,但存储着所有备份数据的 ZFS 存储池 (zfsdata) 的磁盘完全健康。

核心目标:在新安装的 PBS 系统上,重新识别并挂载原有的 ZFS 数据存储池,恢复所有备份数据及其索引,使服务无缝恢复。

2. 恢复原理

PBS 的设计优雅地分离了系统配置和备份数据:

  • 系统配置:存放在系统盘(如 /etc/proxmox-backup

  • 备份数据与索引:独立存放在附加的 ZFS 存储池中

只要数据盘完好,所有备份文件、加密密钥和全局去重数据库都安全无恙。恢复的本质是让新 PBS 系统"认领"已有的数据存储池。

3. 完整恢复步骤

步骤 1: 连接磁盘并检查状态

将原有数据磁盘连接到新的 PBS 服务器后,首先检查 ZFS 是否能识别到存储池。

# 列出所有可导入的 ZFS 存储池
zpool import
​
# 强制导入存储池(如果状态为 OFFLINE 或需要恢复)
zpool import -f zfsdata
​
# 验证存储池状态和详细信息
zpool status zfsdata
zpool list

步骤 2: 解决路径冲突问题

当尝试直接创建 datastore 时,会遇到因现有数据导致的冲突错误:

# 尝试创建 datastore(会报错)
proxmox-backup-manager datastore create zfsdata /mnt/datastore/zfsdata
​
# 错误信息:unable to create chunk store 'zfsdata' subdir "/mnt/datastore/zfsdata/.chunks" - EEXIST: File exists

解决方案:临时移动现有数据目录,让 PBS 先创建基本结构

# 进入数据目录
cd /mnt/datastore/zfsdata/
​
# 列出内容确认存在 .chunks 目录
ls -la
​
# 临时重命名现有数据目录
mv .chunks/ .chunks-old

步骤 3: 创建基本 datastore 结构

# 移除可能存在的错误配置
proxmox-backup-manager datastore remove zfsdata
​
# 创建新的 datastore(此时会成功)
proxmox-backup-manager datastore create zfsdata /mnt/datastore/zfsdata
​
# 验证 datastore 已创建
proxmox-backup-manager datastore list

步骤 4: 恢复原始备份数据

创建基本结构后,恢复原始数据并重建索引:

# 恢复原始数据
mv .chunks-old/ .chunks
​
# 重启 PBS 服务以重新索引现有数据
systemctl restart proxmox-backup.service
systemctl restart proxmox-backup-proxy.service

步骤 5: 验证恢复结果

# 检查 datastore 状态
proxmox-backup-manager datastore list
​
# 检查存储池状态
zpool status zfsdata
​
# 查看数据目录大小,确认数据已恢复
du -sh /mnt/datastore/zfsdata/.chunks/

4. Web 界面验证

恢复完成后,通过 PBS Web 管理界面 (https://<PBS_IP>:8007) 进行最终验证:

  1. 导航到 Datastorezfsdata

  2. 确认能看到所有备份组、备份时间点和虚拟机列表

  3. 执行一次简单的验证或浏览备份内容,确认数据完全可用

5. 经验总结与最佳实践

  1. 理解 PBS 数据存储结构:PBS 使用 .chunks 目录存储所有备份块数据,这是恢复的关键

  2. 优先使用 ZFS 原生挂载点:避免使用 /mnt 下的自定义路径,直接使用 ZFS 管理的挂载点

  3. 操作前备份元数据:在对现有数据目录进行任何操作前,考虑备份元数据

  4. 服务重启是必要的:恢复数据后重启 PBS 服务可以确保所有数据被正确重新索引

  5. 文档化你的环境:记录 ZFS 存储池名称、挂载点和 PBS datastore 配置

6. 故障排除提示

  • 如果 Web 界面显示白屏或异常,检查服务状态:systemctl status proxmox-backup.service

  • 查看详细日志获取错误信息:journalctl -u proxmox-backup.service -f

  • 确保磁盘权限正确:chown -R backup:backup /zfsdata

结论

通过这一系列操作,我们成功实现了 PBS 系统盘损坏后的完整数据恢复。这个过程展示了 PBS 数据存储架构的韧性——即使系统完全损坏,只要数据盘完好,备份数据就能安全恢复。

关键收获:定期测试恢复流程、文档化环境配置,以及理解存储系统的工作原理,是确保数据安全的最佳实践。

1

评论区