ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MinIO 与 Veeam 集成:配置 S3 兼容对象存储作为 Veeam 备份容量层并启用 WORM 不可变备份

MinIO 与 Veeam 集成:配置 S3 兼容对象存储作为 Veeam 备份容量层并启用 WORM 不可变备份 MinIO 与 Veeam 集成配置 S3 兼容对象存储作为 Veeam 备份容量层并启用 WORM 不可变备份【免费下载链接】minioMinIO is a high-performance, S3 compatible object store, open sourced under GNU AGPLv3 license.项目地址: https://gitcode.com/GitHub_Trending/mi/minio在 Veeam Backup and Replication下称 VBR或 Veeam Backup for Office365VBO环境中MinIO 可以作为 S3 兼容对象存储用作备份的容量层Capacity Tier将冷备份数据从昂贵的性能层存储中分离出去同时保持数据自主可控。本篇结合 MinIO 仓库中 Veeam 集成文档 与相关源码完整讲解从创建带对象锁的备份桶、在 Veeam 中注册对象存储、创建 Scale-out 备份仓库与备份作业到最终用mc admin trace验证数据真实落盘的整个流程并深入源码说明 MinIO 对象锁Object Lock保证备份不可变的实现机制。1. 场景定位MinIO 在 Veeam 备份架构中的角色Veeam 的备份架构采用分层存储模型性能层通常为本地高性能存储负责首次备份写入与快速恢复容量层则承接按策略迁移上来的历史备份数据。将 MinIO 用作容量层可以带来两个核心价值存储解耦Veeam 基础设施的存储与容量层分离冷数据下沉到可低成本横向扩展的对象存储数据自主可控备份数据存放在自己部署、自己管理的 MinIO 集群中不依赖第三方云厂商的对象存储。由于 MinIO 部署与运维方式简单单命令启动、mc客户端管理Veeam 备份管理员可以轻松自行部署并管理一套对象存储用于容量层分层。MinIO 在该场景中同时支持 S3 兼容的对象存储 API 与 WORM一次写入多次读取语义的对象锁后者正是 Veeam Backup with Immutability不可变备份功能的底层依赖。2. 前置条件按照集成文档的 Prerequisites 部分开始配置前需确认以下各项就绪Veeam 产品版本Veeam Backup and Replication 需支持 S3 兼容对象存储文档以 9.5.4 为例或 Veeam Backup for Office365VBO两者之一或同时使用MinIO 已部署按 MinIO 官方部署指南完成对象存储部署裸机、Docker 或 Kubernetes 均可必须启用 TLSVeeam 要求与对象存储之间使用 TLS 加密连接。MinIO 原生支持 TLS通过在其证书目录放置证书与私钥即可开启具体配置方法参见仓库中 TLS 配置文档桶、Access Key 与 Secret Key 必须预先在 Veeam 之外创建Veeam 不负责创建这些资源配置好指向该 MinIO 端点的mc客户端本文后续所有mc mb命令都依赖这一步。3. 为 Veeam 创建备份桶3.1 普通容量层桶创建一个专用于 Veeam 备份的桶例如mc mb myminio/veeambackup其中myminio是预先通过mc alias set配置的 MinIO 端点别名。3.2 需要不可变备份时启用对象锁如果计划使用Veeam Backup with Immutability不可变备份则必须创建带对象锁Object Lock的桶即在mc mb上加-l参数mc mb -l myminio/veeambackup注意对象锁要求 MinIO 服务端启用纠删编码erasure coding相关原理可参考 docs/erasure/README.md。从源码结构看桶的 Object Lock 配置是作为桶元数据的一部分持久化的cmd/bucket-metadata.go 中定义了object-lock-enabled.jsonlegacy 格式以及 S3 标准的ObjectLockConfigurationXML 两种存储形态并提供了新旧格式之间的迁移逻辑。从 S3 API 层面看mc mb -l会向服务端发送携带x-amz-object-lock-enabled: true请求头的 PUT Bucket 请求。MinIO 服务端在 cmd/bucket-handlers.go 的PutBucketHandler中解析该请求头请求头取值必须是true或false否则返回ErrInvalidRequest若请求启用对象锁服务端会额外校验调用者是否同时持有PutBucketObjectLockConfiguration与PutBucketVersioning两个策略动作缺少任一则拒绝返回 AccessDenied——即创建 WORM 桶需要比普通建桶更高的权限校验通过后LockEnabled被写入MakeBucketOptions并随objectAPI.MakeBucket落盘。3.3 源码视角MinIO 如何强制执行不可变Veeam 的不可变备份依赖 S3 对象锁语义MinIO 在 cmd/bucket-object-lock.go 中实现了完整的保留期Retention强制逻辑理解这段代码有助于理解备份为什么删不掉删除/覆盖拦截enforceRetentionBypassForDeletecmd/bucket-object-lock.go#L84-L159对每个删除/覆盖请求检查对象的 Legal Hold 与 Retention 元数据。处于 Legal Hold 的对象直接返回ObjectLocked错误Compliance 模式下只要保留期未到期任何用户包括 root都无法删除或覆盖Governance 模式下持有s3:BypassGovernanceRetention权限且请求中显式携带x-amz-bypass-governance-retention: true头才可绕过保留期不可缩短enforceRetentionBypassForPutcmd/bucket-object-lock.go#L167-L233保证 Governance/Compliance 保留期在未被合法绕过时不能变短、Compliance 模式不能变更桶级默认保留期继承当对象写入请求未显式携带保留期头、但桶配置了默认保留时长retentionCfg.Validity 0时MinIO 会自动为对象继承该保留期cmd/bucket-object-lock.go#L322-L338保留截止时间为当前 NTP 时间加桶级保留天数。这一机制正是 Veeam 在对象存储侧选择备份不可变多少天生效的技术基础。4. 在 Veeam 中添加 MinIO 对象存储按照 Veeam 官方文档中添加 S3 兼容对象存储的步骤将 MinIO 的端点https 地址、Access Key、Secret Key 填入向导即可。若启用 Veeam Backup with Immutability还需在该向导中指定备份数据要维持不可变的天数即下图所示的不可变天数选项5. 创建 Scale-out Backup RepositorySOBRScale-out 备份仓库是 Veeam 中性能层 容量层组合体的载体MinIO 正是在这里被挂载为容量层在Backup Infrastructure视图中点击Scale-out Repositories再点击工具栏的Add Scale-out Repository按向导逐步配置性能层磁盘等关键步骤在Capacity Tier界面勾选Extend scale-out backup repository capacity with object storage并从下拉列表中选择上一步添加的 MinIO 对象存储。Copy 与 Move 模式的选择如果希望在备份作业运行完成后立即能测试备份数据请在对象存储选择区勾选Copy并取消勾选Move。Copy 模式下备份写入性能层后会立即复制一份到容量层MinIO数据在本地保留可随时测试恢复Move 模式则将数据从性能层迁移走以释放本地空间。6. 创建备份作业6.1 使用 Veeam BR 备份虚拟机在左侧导航窗格Home Jobs Backup下点击工具栏Backup Job按钮并选择Virtual Machine按向导配置在Storage界面选择第 5 节创建的 Scale-out Backup Repository继续完成作业创建。在Summary界面勾选Run the Job when I click Finish并点击Finish备份作业立即启动为作业内的虚拟机创建 Active Full 备份由于创建 SOBR 时选择了Copy模式备份一旦在性能层创建完成就会被复制到容量层MinIO若使用 Veeam Backup with Immutability可在作业中进一步选择要维持不可变的恢复点数量或天数6.2 使用 VBO 备份 Office 365VBO 的配置流程与 VBR 基本相同区别在于桶与仓库的建立方式为 VBO 单独创建一个启用对象锁的桶mc mb -l myminio/vbo在Backup Infrastructure中右键Object Storage Repositories选择Add object storage按向导添加 MinIO 端点步骤与 Veeam BR 一致在Backup Infrastructure Backup Repositories上右键选择Add Backup Repository按向导配置在Object Storage Backup Repository部分选择第 2 步创建的 MinIO 对象存储创建 VBO 备份作业时选择上述创建的备份仓库即可。7. 验证部署用 mc admin trace 观察流量下一次备份作业运行时在 MinIO 服务端执行mc admin trace myminio即可实时看到 Veeam 发出的 S3 请求流。典型输出形如20:09:10.216 [200 OK] s3.GetObject veeam-minio01:9000/vbo/Veeam/Backup365/vbotest/Organizations/6571606ecbc4455dbfe23b83f6f45597/Webs/ca2d0986229b4ec88e3a217ef8f04a1d/Items/efaa67764b304e77badb213d131beab6/f4f0cf600f494c3eb702d8eafe0fabcc.aac07493e6cd4c71845d2495a4e1e19b 139.178.68.158 9.789ms ↑ 90 B ↓ 8.5 KiB 20:09:10.244 [200 OK] s3.GetObject veeam-minio01:9000/vbo/Veeam/Backup365/vbotest/RepositoryLock/cad99aceb50c49ecb9e07246c3b9fadc_bfd985e5deec4cebaf481847f2c34797 139.178.68.158 16.21ms ↑ 90 B ↓ 402 B 20:09:10.283 [200 OK] s3.PutObject veeam-minio01:9000/vbo/Veeam/Backup365/vbotest/CommonInfo/WebRestorePoints/18f1aba8f55f4ac6b805c4de653eb781 139.178.68.158 29.787ms ↑ 1005 B ↓ 296 B每一行对应一个 S3 操作s3.PutObject、s3.GetObject等、目标桶/对象路径、来源 IP、耗时与传输字节数。看到大量PutObject指向vbo或veeambackup桶即可确认备份数据真实流入 MinIO。时序注意对于 Veeam BR需要等待备份先完成写入性能层之后数据才会开始向容量层MinIO迁移因此 trace 中出现流量会晚于作业启动。从源码看mc admin trace对应服务端的 cmd/admin-handlers.go#L2028-L2060 中的TraceHandler管理 API 路由admin/v3/trace见 cmd/admin-router.go#L416它校验TraceAdminAction权限后订阅全局 trace 事件流以事件流streaming方式将 HTTP 访问记录实时推送给客户端在分布式部署中还会通过 peer REST 通道cmd/peer-rest-server.go#L844-L845汇聚其他节点的 trace 消息。8. 关键要点小结事项要求 / 说明产品版本VBR 9.5.4支持 S3 兼容对象存储或 VBO传输加密必须 TLSVeeam 不接受明文 HTTP 连接配置方法见 docs/tls/桶与凭证Access Key / Secret Key 与桶必须在 Veeam 之外预先创建不可变备份用mc mb -l创建桶MinIO 端需启用纠删编码保留期强制逻辑见 cmd/bucket-object-lock.go容量层模式Copy本地保留副本、可立即测试Move数据迁出、释放性能层空间验证手段mc admin trace myminio观察PutObject/GetObject流量完成以上步骤后Veeam 即可以把 MinIO 集群作为备份容量层长期运行结合对象锁的 Compliance/Governance 保留语义落在 MinIO 中的备份数据在保留期内对任何身份含管理员均不可删除或篡改构成面向勒索软件与误操作的独立防线。【免费下载链接】minioMinIO is a high-performance, S3 compatible object store, open sourced under GNU AGPLv3 license.项目地址: https://gitcode.com/GitHub_Trending/mi/minio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表