使用免费工具为数千个虚拟机备份存储

使用免费工具为数千个虚拟机备份存储

你好,我最近遇到一个有趣的问题:设置存储来备份大量块设备。

每周我们都会备份云中的所有虚拟机,因此我们需要能够维护数千个备份,并尽可能快速高效地进行备份。

不幸的是,标准配置 RAID5, RAID6 在这种情况下,我们将不被允许这样做,因为像我们这样大的磁盘上的恢复过程将非常漫长,而且很可能永远不会结束。

让我们看看有哪些替代方案:

纠删码 — 与 RAID5、RAID6 类似,但具有可配置的奇偶校验级别。 在这种情况下,预留不是逐块进行的,而是针对每个对象单独进行的。 尝试纠删码的最简单方法是扩展 铅丹.

磁盘驱动器阵列 是当前未发布的 ZFS 功能。 与 RAIDZ 不同,DRAID 具有分布式奇偶校验块,并且在恢复期间一次使用阵列的所有磁盘,这使得它能够更好地承受磁盘故障并在故障后更快地恢复。

使用免费工具为数千个虚拟机备份存储

使用免费工具为数千个虚拟机备份存储

服务器可用 富士通Primergy RX300 S7 带处理器 英特尔至强 CPU E5-2650L 0 @ 1.80GHz, 九根 RAM 三星 DDR3-1333 8Gb PC3L-10600R ECC 注册 (M393B1K70DH0-YH9), 磁盘架 美超微超级机箱 847E26-RJBOD1,通过连接 双 LSI SAS2X36 扩展器 和45张光盘 希捷 ST6000NM0115-1YZ1106TB 每个。

在我们做出任何决定之前,我们首先需要正确测试一切。

为此,我准备并测试了各种配置。 为此,我使用了 minio,它充当 S3 后端,并以不同的模式和不同数量的目标启动它。

基本上,minio 案例在纠删码与软件 raid 中进行了测试,具有相同数量的磁盘和磁盘奇偶校验,这些是:RAID6、RAIDZ2 和 DRAID2。

供参考:当您仅启动一个目标的 minio 时,minio 工作在 S3 网关模式,以 S3 存储的形式提供本地文件系统。 如果您启动指定多个目标的 minio,擦除编码模式将自动打开,这将在目标之间传播数据,同时提供容错能力。

默认情况下,minio 将目标分为 16 个磁盘组,每组有 2 个奇偶校验。 那些。 两个磁盘可以同时发生故障而不会丢失数据。

为了测试性能,我使用了 16 个 6TB 的磁盘,并在上面写入了 1MB 大小的小对象,这最准确地描述了我们未来的负载,因为所有现代备份工具都将数据分成几兆字节的块并以这种方式写入。

为了进行基准测试,我们使用了 s3bench 实用程序,该实用程序在远程服务器上启动,并通过数百个线程将数以万计的此类对象发送到 minio。 之后我尝试以同样的方式要求他们回来。

基准测试结果如下表所示:

使用免费工具为数千个虚拟机备份存储

正如我们所看到的,minio 在其自己的纠删码模式下的写入性能明显比在相同配置的软件 RAID6、RAIDZ2 和 DRAID2 上运行的 minio 差。

单独的我 有人问过 在 ext4 与 XFS 上测试 minio。 令人惊讶的是,对于我的工作负载类型来说,XFS 比 ext4 慢得多。

在第一批测试中,Mdadm 表现出了相对于 ZFS 的优越性,但后来 格梅利科夫 建议您可以通过设置以下选项来提高 ZFS 性能:

xattr=sa atime=off recordsize=1M

之后,ZFS 的测试变得更好了。

您还可以注意到,与 RAIDZ 相比,DRAID 并没有提供太多性能增益,但理论上它应该更安全。

在最后两次测试中,我还尝试将元数据(特殊)和ZIL(日志)从SSD传输到镜像。 但是删除元数据并没有给记录速度带来太大的提升,当删除 ZIL 时,我的 SSDSC2KI128G8 利用率达到了 100% 的上限,所以我认为这次测试失败了。 我不排除如果我有更快的 SSD 驱动器,那么也许这可以大大改善我的结果,但不幸的是,我没有它们。

最后,我决定使用 DRAID,尽管它处于测试阶段,但它是我们案例中最快、最高效的存储解决方案。

我在具有三个组和两个分布式备件的配置中创建了一个简单的 DRAID2:

# zpool status data
  pool: data
 state: ONLINE
  scan: none requested
config:

    NAME                 STATE     READ WRITE CKSUM
    data                 ONLINE       0     0     0
      draid2:3g:2s-0     ONLINE       0     0     0
        sdy              ONLINE       0     0     0
        sdam             ONLINE       0     0     0
        sdf              ONLINE       0     0     0
        sdau             ONLINE       0     0     0
        sdab             ONLINE       0     0     0
        sdo              ONLINE       0     0     0
        sdw              ONLINE       0     0     0
        sdak             ONLINE       0     0     0
        sdd              ONLINE       0     0     0
        sdas             ONLINE       0     0     0
        sdm              ONLINE       0     0     0
        sdu              ONLINE       0     0     0
        sdai             ONLINE       0     0     0
        sdaq             ONLINE       0     0     0
        sdk              ONLINE       0     0     0
        sds              ONLINE       0     0     0
        sdag             ONLINE       0     0     0
        sdi              ONLINE       0     0     0
        sdq              ONLINE       0     0     0
        sdae             ONLINE       0     0     0
        sdz              ONLINE       0     0     0
        sdan             ONLINE       0     0     0
        sdg              ONLINE       0     0     0
        sdac             ONLINE       0     0     0
        sdx              ONLINE       0     0     0
        sdal             ONLINE       0     0     0
        sde              ONLINE       0     0     0
        sdat             ONLINE       0     0     0
        sdaa             ONLINE       0     0     0
        sdn              ONLINE       0     0     0
        sdv              ONLINE       0     0     0
        sdaj             ONLINE       0     0     0
        sdc              ONLINE       0     0     0
        sdar             ONLINE       0     0     0
        sdl              ONLINE       0     0     0
        sdt              ONLINE       0     0     0
        sdah             ONLINE       0     0     0
        sdap             ONLINE       0     0     0
        sdj              ONLINE       0     0     0
        sdr              ONLINE       0     0     0
        sdaf             ONLINE       0     0     0
        sdao             ONLINE       0     0     0
        sdh              ONLINE       0     0     0
        sdp              ONLINE       0     0     0
        sdad             ONLINE       0     0     0
    spares
      s0-draid2:3g:2s-0  AVAIL   
      s1-draid2:3g:2s-0  AVAIL   

errors: No known data errors

好了,我们已经整理好了存储,现在我们来谈谈要备份的内容。 在这里我想立即谈谈我尝试过的三个解决方案,它们是:

奔吉备份 - 叉 巴基2是一种专门用于块设备备份的解决方案,与 Ceph 紧密集成。 可以获取快照之间的差异并从中形成增量备份。 支持大量存储后端,包括本地和S3。 需要一个单独的数据库来存储重复数据删除哈希表。 缺点:用python编写,cli有点反应迟钝。

博格备份 - 叉 阁楼是一款久负盛名且经过验证的备份工具,可以很好地备份数据并进行重复数据删除。 能够在本地保存备份并通过 scp 保存到远程服务器。 如果使用该标志启动,可以备份块设备 --special,缺点之一:创建备份时,存储库被完全阻塞,因此建议为每个虚拟机创建单独的存储库,原则上这不是问题,幸运的是它们创建起来非常容易。

雷斯蒂奇 是一个积极开发的项目,用 go 编写,速度相当快,支持大量存储后端,包括本地存储、scp、S3 等等。 另外,我想指出的是,有一个专门创建的 休息服务器 for Restic,它允许您快速导出存储以供远程使用。 在以上所有内容中,我最喜欢它。 可以从标准输入备份。 它几乎没有明显的缺点,但有几个特点:

  • 首先,我尝试在所有虚拟机(如 Benji)的通用存储库模式下使用它,它甚至运行得很好,但恢复操作花了很长时间,因为...... 每次恢复之前,restic 都会尝试读取所有备份的元数据。 这个问题很容易解决,就像 borg 一样,通过为每个虚拟机创建一个单独的存储库。 事实证明,这种方法对于管理备份也非常有效。 单独的存储库可以有单独的密码来访问数据,而且我们也不必担心全局存储库可能会以某种方式损坏。 您可以像在 borg 备份中一样轻松地生成新存储库。

    无论如何,重复数据删除仅相对于先前版本的备份执行;先前的备份由指定备份的路径决定,因此,如果您将不同的对象从 stdin 备份到公共存储库,请不要忘记指定选项 --stdin-filename,或者每次都明确指定选项 --parent.

  • 其次,由于其并行性质,恢复到标准输出比恢复到文件系统花费的时间要长得多。 将来,我们计划增加对块设备备份的更紧密支持。

  • 三、目前推荐使用 来自master的版本, 因为0.9.6 版本存在大文件恢复时间较长的 bug。

为了测试备份的有效性以及从备份写入/恢复的速度,我创建了一个单独的存储库并尝试备份虚拟机的小映像(21 GB)。 在不更改原始数据的情况下执行了两次备份,使用列出的每个解决方案来检查复制重复数据删除数据的速度有多快/有多慢。

使用免费工具为数千个虚拟机备份存储

我们可以看到,Borg Backup 具有最佳的初始备份效率,但在写入和恢复速度方面均较差。

Restic 比 Benji Backup 更快,但恢复到标准输出需要更长的时间,而且不幸的是,它还不知道如何直接写入块设备。

权衡了所有的利弊后,我决定 静止的 с 休息服务器 作为最方便和最有前途的备份解决方案。

使用免费工具为数千个虚拟机备份存储

在此截屏视频中,您可以看到在同时运行的多个备份操作期间如何完全利用 10 GB 通道。 值得注意的是,磁盘回收率不会超过 30%。

我对收到的解决方案非常满意!

来源: habr.com

添加评论