备份第 7 部分:结论

备份第 7 部分:结论

本说明完成了有关备份的循环。 它将讨论专用服务器(或 VPS)的逻辑组织,方便备份,并且还将提供从备份快速恢复服务器的选项,而在发生灾难时无需太多停机时间。

初始数据

专用服务器通常至少有两个硬盘驱动器,用于组织第一级 RAID 阵列(镜像)。 这是在一个磁盘出现故障时能够继续运行服务器所必需的。 如果这是一台常规的专用服务器,则SSD上可能有一个具有主动缓存技术的单独的硬件RAID控制器,这样除了常规硬盘之外,还可以连接一个或多个SSD。 有时提供专用服务器,其中唯一的本地磁盘是SATADOM(小磁盘,结构上是连接到SATA端口的闪存驱动器),甚至是连接到特殊内部端口的普通小型(8-16GB)闪存驱动器,并且数据从存储系统中取出,通过专用存储网络(以太网10G、FC等)连接,并且有专用服务器直接从存储系统加载。 我不会考虑这样的选择,因为在这种情况下,备份服务器的任务会顺利传递给维护存储系统的专家;通常有各种专有技术用于创建快照、内置重复数据删除和系统管理员的其他乐趣,在本系列的前面部分中讨论过。 专用服务器的磁盘阵列的容量可以达到数十TB,具体取决于连接到服务器的磁盘的数量和大小。 就 VPS 而言,容量较小:通常不超过 100GB(但也有更多),并且此类 VPS 的资费很容易比同一托管商的最便宜的专用服务器更贵。 VPS 通常只有一个磁盘,因为它下面会有一个存储系统(或超融合系统)。 有时,VPS 具有多个具有不同特性的磁盘,用于不同的目的:

  • 小型系统——用于安装操作系统;
  • 大 - 存储用户数据。

当您使用控制面板重新安装系统时,包含用户数据的磁盘不会被覆盖,但系统磁盘会被完全重新填充。 此外,对于 VPS,托管商可能会提供一个按钮来拍摄 VPS(或磁盘)状态的快照,但如果您安装自己的操作系统或忘记在 VPS 内激活所需的服务,一些的数据可能仍会丢失。 除了按钮之外,通常还提供数据存储服务,但通常非常有限。 通常,这是通过 FTP 或 SFTP(有时与 SSH 一起)访问的帐户,具有精简的 shell(例如 rbash),或通过授权密钥(通过 ForcedCommand)限制运行命令。

专用服务器通过两个速度为 1 Gbps 的端口连接到网络,有时这些端口可以是速度为 10 Gbps 的卡。 VPS 通常只有一个网络接口。 大多数情况下,数据中心并不限制数据中心内的网络速度,而是限制互联网访问的速度。

此类专用服务器或 VPS 的典型负载是 Web 服务器、数据库和应用程序服务器。 有时可能会安装各种附加辅助服务,包括网络服务器或数据库:搜索引擎、邮件系统等。

专门准备的服务器充当存储备份副本的空间;我们稍后会更详细地介绍它。

磁盘系统的逻辑组织

如果您有 RAID 控制器,或只有一个磁盘的 VPS,并且对磁盘子系统的操作没有特殊偏好(例如,用于数据库的单独快速磁盘),则所有可用空间将按如下方式划分: 一个分区创建完毕,并在其上创建一个LVM卷组,其中创建了几个卷:2个相同大小的小卷,用作根文件系统(在更新过程中逐一更改,以便快速回滚,这个想法是从Calculate Linux发行版中学到的),另一个是交换分区,剩余的可用空间被分成小卷,用作成熟容器的根文件系统,虚拟机的磁盘,文件/home 中帐户的系统(每个帐户都有自己的文件系统),应用程序容器的文件系统。

重要提示:卷必须完全独立,即不应相互依赖或依赖于根文件系统。 对于虚拟机或容器,会自动观察到这一点。 如果这些是应用程序容器或主目录,您应该考虑将 Web 服务器和其他服务的配置文件分开,以尽可能消除卷之间的依赖关系。 例如,每个站点都从自己的用户运行,站点配置文件位于用户的主目录中,在Web服务器设置中,站点配置文件不通过/etc/nginx/conf.d/包含.conf,例如 /home//configs/nginx/*.conf

如果有多个磁盘,您可以创建一个软件 RAID 阵列(如果有需要和机会,可以在 SSD 上配置其缓存),在此基础上您可以根据上面建议的规则构建 LVM。 同样在这种情况下,您可以使用 ZFS 或 BtrFS,但您应该三思而后行:两者都需要更严格的资源处理方法,此外,ZFS 不包含在 Linux 内核中。

无论使用哪种方案,总是值得提前估计将更改写入磁盘的大致速度,然后计算将为创建快照保留的可用空间量。 例如,如果我们的服务器以每秒10兆字节的速度写入数据,并且整个数据数组的大小为10太字节——同步时间可以达到一天(22小时——这是这样一个卷将被传输多少)通过网络 1 Gbps) - 值得保留约 800 GB 。 实际上,这个数字会更小;您可以安全地将其除以逻辑卷的数量。

备份存储服务器设备

用于存储备份副本的服务器之间的主要区别在于其磁盘大、便宜且相对较慢。 由于现代 HDD 在一个磁盘中已经突破了 10TB 的界限,因此有必要使用带有校验和的文件系统或 RAID,因为在重建阵列或恢复文件系统(几天!)期间,第二个磁盘可能会因故障而出现故障。以增加负载。 在容量高达 1TB 的磁盘上,这并不那么敏感。 为了描述简单起见,我假设磁盘空间被分为大小大致相等的两部分(同样以使用 LVM 为例):

  • 用于存储用户数据的服务器对应的卷(最后一次的备份将部署在其上以供验证);
  • 用作 BorgBackup 存储库的卷(备份数据将直接移至此处)。

操作原理是为 BorgBackup 存储库的每个服务器创建单独的卷,来自战斗服务器的数据将存放在其中。 存储库以仅附加模式运行,这消除了故意删除数据的可能性,并且由于重复数据删除和定期清理旧备份中的存储库(保留年度副本、去年的每月副本、上个月的每周副本、上个月的每周副本)上周,可能在特殊情况下 - 最后一天每小时:总计 24 + 7 + 4 + 12 + 每年 - 每台服务器大约 50 个副本)。
BorgBackup 存储库不启用仅追加模式;相反,使用 .ssh/authorized_keys 中的 ForcedCommand ,如下所示:

from="адрес сервера",command="/usr/local/bin/borg serve --append-only --restrict-to-path /home/servername/borgbackup/",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc AAAAA.......

指定的路径包含 borg 之上的包装器脚本,该脚本除了使用参数启动二进制文件之外,还会在删除数据后启动恢复备份副本的过程。 为此,包装器脚本在相应存储库旁边创建一个标记文件。 数据填充过程完成后,最后一次备份会自动恢复到相应的逻辑卷中。

这种设计允许您定期清理不必要的备份,并且还可以防止战斗服务器删除备份存储服务器上的任何内容。

备份过程

备份的发起者是专用服务器或 VPS 本身,因为此方案可以更好地控制该服务器的备份过程。 首先,获取活动根文件系统状态的快照,使用 BorgBackup 将其挂载并上传到备份存储服务器。 数据捕获完成后,快照将被卸载并删除。

如果有一个小型数据库(每个站点最多 1 GB),则会进行数据库转储,并将其保存在相应的逻辑卷中,同一站点的其余数据也位于该逻辑卷中,但这样转储就可以无法通过网络服务器访问。 如果数据库很大,您应该配置“热”数据删除,例如,对 MySQL 使用 xtrabackup,或者在 PostgreSQL 中使用 archive_command 来使用 WAL。 在这种情况下,数据库将与站点数据分开恢复。

如果使用容器或者虚拟机,需要配置qemu-guest-agent、CRIU或者其他必要的技术。 在其他情况下,通常不需要额外的设置 - 我们只需创建逻辑卷的快照,然后以与根文件系统状态快照相同的方式处理这些快照。 获取数据后,照片将被删除。

在备份存储服务器上进行进一步的工作:

  • 检查每个存储库中所做的最后一个备份,
  • 检查标记文件是否存在,表明数据收集过程已完成,
  • 将数据扩展到相应的本地卷,
  • 标记文件被删除

服务器恢复流程

如果主服务器挂掉,则会启动一个类似的专用服务器,该服务器从某个标准映像启动。 下载很可能会通过网络进行,但设置服务器的数据中心技术人员可以立即将此标准映像复制到其中一个磁盘。 下载发生到 RAM 中,之后恢复过程开始:

  • 发出请求,通过 iscsinbd 或其他类似协议将块设备附加到包含已失效服务器的根文件系统的逻辑卷; 由于根文件系统必须很小,因此此步骤应在几分钟内完成。 引导加载程序也已恢复;
  • 重新创建本地逻辑卷的结构,使用 dm_clone 内核模块从备份服务器附加逻辑卷:开始数据恢复,并将更改立即写入本地磁盘
  • 启动一个包含所有可用物理磁盘的容器 - 服务器的功能已完全恢复,但性能有所下降;
  • 数据同步完成后,断开与备份服务器的逻辑卷,关闭容器,重启服务器;

重新启动后,服务器将拥有创建备份时的所有数据,并且还将包括恢复过程中所做的所有更改。

该系列的其他文章

备份,第 1 部分:为什么需要备份,方法和技术概述
备份第 2 部分:审查和测试基于 rsync 的备份工具
备份第 3 部分:口是心非、重复性的审查和测试
备份第 4 部分:审查和测试 zbackup、restic、borgbackup
备份第 5 部分:测试适用于 Linux 的 Bacula 和 Veeam Backup
备份:应读者要求部分:AMANDA、UrBackup、BackupPC 的评论
备份第 6 部分:比较备份工具
备份第 7 部分:结论

我邀请您在评论中讨论建议的选项,感谢您的关注!

来源: habr.com

添加评论