CentOS7下Bareos备份系统部署与配置指南

1. 项目概述:Bareos备份系统在CentOS7下的部署实践

Bareos作为一款开源的网络备份解决方案,在中小企业数据保护领域已经稳定运行了十余年。它脱胎于老牌的Bacula项目,继承了其可靠架构的同时,在管理界面和插件生态上做了显著优化。这次我们在CentOS7环境部署Bareos 21版本,这个经典组合在当前仍被大量生产环境采用——根据2023年Linux基金会调查报告,CentOS7在传统企业服务器中占比仍高达34%,而Bareos因其对传统存储设备的良好支持,成为这类环境的首选备份方案。

选择CentOS7作为部署平台主要考虑其长期支持周期(维护至2024年6月)和出色的硬件兼容性。实测在戴尔PowerEdge R740等老款服务器上,其稳定性明显优于新发行版。Bareos的核心优势在于其模块化设计:Director(控制中心)、Storage Daemon(存储服务)、File Daemon(客户端)三大组件可分布式部署,单个节点故障不会影响整体备份体系。我们这次采用All-in-One部署模式,适合初次接触的运维人员快速搭建测试环境。

2. 环境准备与依赖处理

2.1 基础系统配置

首先确保系统为最小化安装的CentOS7.9:

cat /etc/redhat-release # 应显示:CentOS Linux release 7.9.2009 (Core)

关闭SELinux和防火墙(生产环境需按需调整):

setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config systemctl stop firewalld systemctl disable firewalld

注意:如果备份涉及Windows客户端,需保持防火墙开放9101-9103端口

2.2 配置EPEL和Bareos官方源

CentOS7默认源不包含Bareos软件包,需添加第三方仓库:

yum install -y epel-release wget -O /etc/yum.repos.d/bareos.repo https://download.bareos.org/bareos/release/latest/CentOS_7/bareos.repo

关键步骤解析:

  1. EPEL源提供基础依赖包如qpid-proton
  2. 官方repo文件会自动导入GPG密钥
  3. 若企业内网需走代理,需在/etc/yum.conf中添加proxy配置

2.3 解决依赖冲突

常见问题是postgresql版本冲突:

rpm -qa | grep postgresql # 若存在旧版本执行: rpm -e --nodeps postgresql-libs-9.2.24-7.el7.x86_64

推荐安装MariaDB作为元数据库(资源占用更低):

yum install -y mariadb-server mariadb systemctl start mariadb mysql_secure_installation

3. Bareos核心组件安装

3.1 批量安装必要组件

执行一体化安装命令:

yum install -y bareos-director bareos-database-mysql bareos-storage bareos-filedaemon bareos-webui

组件说明表:

软件包名称功能说明默认端口
bareos-director备份任务调度中心9101
bareos-storage存储服务守护进程9103
bareos-filedaemon客户端代理程序9102
bareos-database-mysqlMySQL数据库插件3306
bareos-webuiWeb管理界面80/443

3.2 数据库初始化

使用官方工具初始化元数据库:

/usr/lib/bareos/scripts/create_bareos_database /usr/lib/bareos/scripts/make_bareos_tables /usr/lib/bareos/scripts/grant_bareos_privileges

检查表是否创建成功:

mysql -u root -p -e "use bareos; show tables;" # 应显示约50张表

3.3 服务启动与状态检查

启动所有服务并设置开机自启:

systemctl start bareos-dir bareos-sd bareos-fd httpd systemctl enable bareos-dir bareos-sd bareos-fd httpd

验证服务状态的正确方法:

for s in dir sd fd; do bareos-${s} -t done # 无报错即表示配置正确

4. Web界面配置与基础使用

4.1 管理员账户设置

生成WebUI登录密码:

htpasswd -b /etc/bareos/bareos-webui.users admin MySecurePassword

修改WebUI配置文件允许远程访问:

sed -i "s/\(Deny from all\)/#\1/" /etc/httpd/conf.d/bareos-webui.conf systemctl restart httpd

4.2 首次登录配置

通过浏览器访问:

http://服务器IP/bareos-webui

初始配置要点:

  1. 在"Director Configuration"中确认localhost:9101可连通
  2. "Catalog"选择MySQL/bareos
  3. 测试连接时若失败,检查/var/lib/bareos/bareos.sqlite3权限

4.3 创建首个备份任务

通过Web界面创建备份任务的实操流程:

  1. 在Clients页面添加客户端(本机填写localhost)
  2. Filesets页面创建备份集(建议先选择/etc测试)
  3. Schedules页面设置每日全备+差异备份策略
  4. Jobs页面组合以上元素创建任务

关键参数说明:

  • Maximum Concurrent Jobs:根据CPU核心数设置(建议核数×2)
  • Priority:数值越小优先级越高
  • Spool Data:大文件备份建议启用

5. 存储配置实战技巧

5.1 添加本地存储设备

编辑/etc/bareos/bareos-sd.conf:

Device { Name = FileStorage Media Type = File Archive Device = /backup LabelMedia = yes Random Access = yes AutomaticMount = yes RemovableMedia = no AlwaysOpen = no }

创建存储目录并设置权限:

mkdir -p /backup chown bareos:bareos /backup chmod 750 /backup

5.2 磁带库设备配置示例

对于IBM TS3200磁带库的配置片段:

Device { Name = LTO6-Drive1 Media Type = LTO6 Archive Device = /dev/nst0 Hardware end of medium = No AutomaticMount = yes AlwaysOpen = No RemovableMedia = yes }

5.3 存储池策略优化

建议的存储池分级策略:

Pool { Name = FullPool Pool Type = Backup Recycle = yes AutoPrune = yes Volume Retention = 365 days Maximum Volume Bytes = 50G Label Format = "Full-" } Pool { Name = DiffPool Pool Type = Backup Recycle = yes Volume Retention = 30 days Maximum Volume Bytes = 10G Label Format = "Diff-" }

6. 常见问题排查手册

6.1 数据库连接故障

错误现象:

ERR: Could not connect to database

排查步骤:

  1. 检查/var/lib/bareos/bareos-dir.ini中的db_password是否与mysql用户匹配
  2. 确认mysqld服务运行状态
  3. 测试命令行连接:mysql -u bareos -p bareos

6.2 备份任务卡在"Wait FD"状态

可能原因及解决方案:

  1. bareos-fd服务未启动 → systemctl start bareos-fd
  2. 防火墙阻止连接 → iptables -I INPUT -p tcp --dport 9102 -j ACCEPT
  3. 客户端名称不匹配 → 检查/etc/bareos/bareos-fd.conf中的Name参数

6.3 WebUI登录后空白页面

典型解决方法:

chcon -R -t httpd_sys_content_t /usr/share/bareos-webui/ systemctl restart httpd

7. 性能调优实战经验

7.1 多线程备份配置

在Job定义中添加:

Job { Name = "ParallelBackup" Maximum Concurrent Jobs = 8 Spool Attributes = yes Spool Data = yes }

7.2 网络传输优化

调整File Daemon配置:

FileDaemon { FD Port = 9102 Maximum Network Buffer Size = 65536 TLS Enable = yes TLS Require = yes }

7.3 存储端IO优化

关键参数调整:

Storage { Maximum Concurrent Jobs = 10 Maximum Open Wait = 1 hour Heartbeat Interval = 60 seconds }

我在实际生产环境中发现,当备份目标为机械硬盘阵列时,将Maximum Concurrent Jobs设置为物理磁盘数量的2倍可以获得最佳吞吐量。同时对于SSD存储,建议启用"DirectIO = yes"参数绕过系统缓存。