用于Veeam备份和恢复的高性能对象存储
备份是一件大事。在该市场中,VM备份代表了最大的市场份额。但是,虚拟机备份的世界已经改变。对于企业而言,曾经很小的挑战变成了一个庞大的挑战,其规模达到了PB,并催生了整个子行业。
Veeam是备份,恢复和复制软件的主要参与者之一,在许多企业看来,它也是主要参与者。对于Veeam客户而言,使MinIO如此有趣的原因在于MinIO是软件定义的。由于软件想与其他软件对话,因此在备份VM方面,MinIO和Veeam堪称绝配。原因如下:
VM备份需要可扩展的存储。如今,围绕建筑界的这一点几乎没有争论。对象是最具扩展性的解决方案-无论是在公共云还是在私有云中。
VM备份需要性能。这是两部分的要求。首先,无论大小,备份和还原都需要快速进行。由于多种原因,传统的对象存储体系结构(认为是设备供应商)无法胜任此任务。这就是MinIO等现代对象存储非常适合的地方。原因有很多,但以下四点比较突出:
速度。MinIO具有在单个32节点集群中以超过160 GB / s的速度进行读取/写入的能力,MinIO可以以以前认为对象存储不可能的速度进行备份和还原。较长的备份还原周期将导致业务中断增加。较慢的对象存储尝试创建快捷方式的一种方法是移至最终的一致性模型。如果在工作中拔出插头,并且数据库已损坏,则可能产生毁灭性影响。
对象大小。MinIO可以处理任何对象大小。Veeam的默认值为1MB对象,但支持256K至4MB。由于MinIO会自动将元数据与对象数据一起写入,因此不需要数据库(大多数情况下为Cassandra)来容纳元数据。在较小的对象大小下,删除将成为严重问题,并有效取消使用这种方法的任何对象存储的资格。重复数据删除容量为4MB时效果不佳,因此Veeam架构师建议不要使用它。可以这么说-如果对象存储实现使用元数据数据库,则它不太适合处理备份。
内联并且严格一致。MinIO中的数据始终可读且一致,这是因为所有I / O均与内联擦除代码,bitrot哈希和加密同步提交。MinIO提供的S3服务可抵抗繁忙事务中的任何中断或重新启动。没有用于异步I / O的数据缓存或暂存。这样可以保证所有备份操作都能成功。
商业现货硬件。COTS硬件=大量节省,熟悉和灵活。随着数据增长到PB级,这成为重要的要求。
这些要求的结果是,Veeam是高性能,软件定义的对象存储的自然选择。这正是MinIO的原因,这就是为什么我们非常适合Veeam。
为了说明这一点,我们将Veeam与MinIO配对在一起作为容量层,以允许Veeam的软件将虚拟机从VMware ESX卸载到Veeam。
环境

ESX服务器
一台ESX服务器运行10个虚拟机,每个虚拟机具有300GB瘦磁盘,每个虚拟机具有100GB生成的数据。(眼镜)
28个物理核心@ 2.2 GHz
384 GB DDR4 ECC RAM
3.8TB NVME
10Gbps网络*
6.5.0更新1(内部版本7967591)
Veeam服务器
28个物理核心@ 2.2 GHz
384 GB DDR4 ECC RAM
3.2 TB NVMe驱动器
20Gbps交换机绑定网卡
Windows Server 2016,Veeam备份和复制10.0.0.4461
MinIO集群
我们部署了具有以下规格的四节点MinIO集群
24个物理核心@ 2.2 GHz
256 GB DDR4 ECC RAM
每台服务器2.8 TB SSD,每台服务器分为4个驱动器
2个10 GigE绑定NIC
Ubuntu 18.04
MinIO配置
我们创建了一个带有TLS的四节点MinIO集群,用于有线加密和对象加密。我们在以前的基准测试中已经注意到,对象加密对CPU性能的影响最小。因此,我们建议始终将其打开。
MINIO_VOLUMES =“ https:// veeam-minio0 {1 ... 4} / mnt / disk {1 ... 4} / veeam”
MINIO_ERASURE_SET_DRIVE_COUNT = 4
MINIO_ACCESS_KEY =
MINIO_SECRET_KEY =
MINIO_KMS_AUTO_ENCRYPTION =在
MINIO_KMS_MASTER_KEY = my-minio-key上:
技术指标
在运行任何测试之前,我们希望确保基础硬件运行状况良好,并且可以生成和维持足够的I / O,以充分利用MinIO群集。在其他性能基准测试中,我们证明了CPU和RAM永远不会成为瓶颈。
磁盘测试
作为测试的一部分,我们希望测量环境中各种服务器(包括磁盘和网络)的I / O子系统。这使我们可以了解整个环境所期望的性能类型,并有助于确定潜在的瓶颈。这些通常按该顺序在网络,磁盘或PCIe总线级别上看到。由于MinIO经过高度优化和轻巧,因此不需要太多的CPU或RAM。的顶部命令显示约30%的CPU利用率和16根据使用64GB内存消耗。
为了进行这些测试,我们使用了几种工具。为了测试磁盘性能,我们在关闭缓存的情况下使用dd。这将为我们提供磁盘在顺序读取或写入时能够执行的操作的“最佳情况”配置文件,还可以确定是否有任何磁盘的性能明显超出其他磁盘。从那里开始,我们使用iozone,它将为我们显示系统上所有磁盘的聚合吞吐量,以便我们了解整个系统的功能。 IOzone将利用随机读取和写入,为我们提供更多保证。对于网络,我们使用iperf实用程序,它将向我们显示各个端点之间的最大速度。当我们确信没有系统级瓶颈时,我们使用Warp基准测试实用程序,用于验证MinIO如何处理各种S3操作,例如GET,PUT和DELETE。
ESX:
在ESX服务器上,我们测试了VMFS数据存储,该数据存储将容纳我们稍后将备份的VM。从技术上讲,这不是必需的,因为我们测试中的流量将在Veeam服务器和MinIO群集之间进行,但是测试很有趣并且我们喜欢数字。首先,我们测试读取。dd的ESX实现不支持oflag或iflag选项,但似乎不缓存读取或写入。
$ time dd if = / dev / zero of = / vmfs / volumes / veeam / dd.delme bs = 1M count = 10000
该文件以16.25s或625MB / s的速度写入。
对9.2GB的文件进行dd读取测试,显示读取速度超过500MB / s
$ time dd if = / vmfs / volumes / veeam / bigfile.delme of = / dev / null bs = 1M
耗时18.31s。
MinIO Server写道:
由于我们有四个磁盘,因此我们希望分别进行测试。
对于{1..4}中的i;做dd if = / dev / zero of = / mnt / disk $ i / dd.delme bs = 1M count = 10000 oflag = direct; 完成
我们看到每个磁盘返回的磁盘写入速度都超过350MB / s。
复制10485760000字节(10 GB,9.8 GiB),28.839 s,364 MB / s
MinIO服务器读取
在每个磁盘上,我们放置一个大小刚刚超过9GB的文件,然后运行读取测试。
对于{1..4}中的i;做dd if = / mnt / disk $ i / bigfile.delme = / dev / null bs = 1M iflag = direct; 完成
每个磁盘的读取速度约为375MB / s。
碘
现在,我们已经有了通过dd进行磁盘读写的最佳方案,是时候进行更强大的测试了。我们使用以下选项运行iozone:
$ iozone -t 64 -r 1M -s 4MB -I -b iozone.xls -F /mnt/disk{1..4}/tmp{1..16}
它指定32个线程(每个1MB),使用直接I / O并向四个磁盘的每个磁盘中写入8个线程,并避免任何缓存。我们将专注于以下值:
初始写入总计约1.5GB,每个磁盘约382MB / s
初始读取〜1.7GB聚合,每个磁盘〜415MB / s
对于随机读取和写入,我们也看到大致相同的数字。
Windows服务器
在Windows中,我们可以使用diskspd实用程序。我们使用以下选项:
diskspd.exe -b256K -d120 -h -L -o2 -t4 -w
-c16G -rd:\ io.out
这将使用4个线程将256k的块写入120秒,不进行缓存,并且将随机I / O写入16GB文件。该-w标志让我们定义什么写的比例会为每个测试进行。我们将分别使用-w100,-w0和-w50进行写入,读取以及均等混合的读取和写入。
写

读

iperf测试
使用iperf实用程序,我们可以测量每个服务器的预期最大传输速度。在运行iperf服务器的情况下,从每个客户端到MinIO服务器,我们看到以下数字。请注意,我们还对所有MinIO节点进行了相互测试(此处仅显示一个结果,但都相似)。我们使用的示例命令是iperf -c veeam-minio01 -P20,它使用20个并发客户端连接来使入站网络饱和。
ESX
9.33 Gbits /秒
MinIO服务器
18.7 Gbit /秒
Windows到MinIO服务器:
18.9 Gb /秒
从这些数字,我们看到所有服务器都在获得预期的网络带宽。
翘曲测试
Warp是MinIO开发团队创建的实用程序,用于测量S3兼容对象存储的性能。在这些测试中,我们部署了许多具有足够网络带宽的客户端计算机,以使MinIO群集饱和。
获取号码
首先,我们对整个集群的GET性能进行测试。
$ warp get --access-key
- 密钥 --tls --host veeam-minio0 {1 ... 4}:9000 --warp-client warp-client {1 ... 4} --duration 5m --objects 2500 --obj.size 1MB --concurrent 32
这将运行5分钟的测试,对象大小为1MB,每个服务器并发32个线程,整个集群共有128个线程。我们看到〜3.3GB / s的读取速度。
操作:GET。并发:128。主机:4。
*平均:3316.29 MiB / s,3477.39 obj / s(4m59.873s)
输入号码
接下来,我们对PUT操作运行相同的测试。
$ warp put-访问密钥
在这里,我们看到约1.6GB / s的集群写入速度。重要的是要注意,由于写放大,写操作将比设置了n / 2擦除集的读操作要小,因此这是预期的数量。
操作:PUT。并发:128。主机:4。
*平均:1604.49 MiB / s,1682.43 obj / s(5.596s)
删除
最后,我们测试删除性能。
$ warp delete-访问密钥
- 密钥 --tls --host veeam-minio0 {1 ... 4}:9000 --warp-client warp-client {1 ... 4} --duration 5m
操作:删除。每个操作的对象数:100。并发:192。主机:4。
*平均:6738.25 obj / s(7.585s,UTC时间18:32:15)
Veeam设置
将MinIO配置为s3目标
1.为容量层创建对象存储
首先,我们创建一个新的S3兼容对象存储作为容量层。选择一个兼容s3的对象存储并配置为将MinIO部署用作自定义端点

1e。使用minio client命令行实用程序(mc)查看Veeam已在存储桶下创建了前缀结构:

运行到容量层的备份
接下来,我们创建一个备份作业,以将VM从Veeam卸载到MinIO。我们将使用十个测试虚拟机,每个虚拟机具有100GB的随机测试数据,每个虚拟机具有唯一的数据集,以避免重复数据删除。

在存储屏幕上,我们选择为此测试配置的横向扩展备份存储库。备份到Veeam服务器后,虚拟机也将备份到容量层,即MinIO。
概要
备份和还原的性能至关重要。Veeam的软件具有很好的架构,但是当指向S3兼容对象存储库时,它需要该对象存储库依次交付-否则,整个解决方案的实用性将受到限制。
MinIO和Veeam是彼此的完美补充。两者都可以在软件定义的解决方案中提供可伸缩性,速度和简便性。
我们鼓励Veeam用户尝试这种体系结构,因为它可以使他们的堆栈现代化,提高性能,提供更大的规模,并最终为该关键软件工作流程带来巨大的经济效益。
要开始使用MinIO,只需下载代码。如果您有任何疑问,我们有出色的文档,其中包含有关Github的集成文档以及业界最佳的社区Slack频道。如果您想要更深层次的关系,请查看我们的定价页面,以查看哪些选项可能符合您的要求。