核心管理概念
以下核心概念是 MinIO 部署管理的基础,包括但不限于对象保留、加密和访问管理。
什么是对象存储?
一个 对象 是二进制数据,有时被称为二进制大对象 (BLOB)。Blob 可以是图像、音频文件、电子表格,甚至二进制可执行代码。像 MinIO 这样的对象存储平台提供专门的工具和功能来存储、检索和搜索 Blob。
MinIO 对象存储使用 存储桶 来组织对象。存储桶类似于文件系统中的文件夹或目录,每个存储桶可以容纳任意数量的对象。MinIO 存储桶提供与 AWS S3 存储桶相同的功能。
例如,考虑一个托管网络博客的应用程序。该应用程序需要存储各种 Blob,包括视频和图像等丰富的多媒体。
MinIO 通过 前缀
功能支持多级嵌套目录,以支持即使是最动态的对象存储工作负载。
MinIO 如何确定对对象的访问权限?
MinIO 要求客户端对每个新操作执行身份验证和授权。因此,身份和访问管理 (IAM) 是 MinIO 配置的关键组成部分。
身份验证 验证连接客户端的身份。MinIO 要求客户端使用 AWS 签名版本 4 协议 进行身份验证,并支持已弃用的签名版本 2 协议。具体而言,客户端必须提供有效的访问密钥和密钥才能访问任何 S3 或 MinIO 管理 API,例如 PUT
、GET
和 DELETE
操作。
MinIO 然后检查经过身份验证的用户或客户端是否具有 *授权* 在部署上执行操作或使用资源。MinIO 使用 基于策略的访问控制 (PBAC),其中每个策略都描述一个或多个规则,这些规则概述了用户或用户组的权限。MinIO 在创建策略时支持特定于 S3 的 操作 和 条件。
默认情况下,MinIO *拒绝* 访问用户分配或继承的策略中未明确引用的操作或资源。
MinIO 提供了一个访问管理功能,作为软件的一部分。或者,您可以配置 MinIO 以使用 Active Directory/LDAP 或 OpenID/OIDC 与多个外部 IAM 提供商进行身份验证。
MinIO 如何保护数据?
MinIO 支持在驱动器上(静态加密)和从一个位置到另一个位置的转换过程中(传输加密或“飞行中”加密)对对象进行编码的方法。启用后,MinIO 会利用 服务器端加密 以加密状态写入对象。要检索和读取加密对象,用户必须具有适当的访问权限,并且还需要提供对象的解密密钥。
MinIO 支持 **传输层安全** (TLS) 版本 1.2 和 1.3 加密对象。TLS 替换了以前使用的安全套接字层 (SSL) 方法,该方法现已弃用。TLS 标准由互联网工程任务组 (IETF) 维持,提供互联网通信使用的标准以支持加密、身份验证和数据完整性。
对用户进行身份验证并验证对对象的访问的过程称为 *TLS 握手*。身份验证后,TLS 将提供用于加密然后解密从服务器到请求客户端的信息传输的密码。
MinIO 支持几种 服务器端加密 方法。
我可以在存储桶中使用文件夹结构来组织对象吗?
MinIO 利用每个对象的 前缀 方法,该方法模拟传统文件系统中的文件夹结构。前缀涉及使用固定字符串在对象名称之前添加前缀。
使用前缀,您不会手动创建文件夹和子文件夹。相反,MinIO 在对象的名称前缀中查找 /
字符。每个 /
表示一个新的文件夹或子文件夹。
使用对象的名称和前缀,MinIO 会自动为存储的对象生成一系列文件夹和子文件夹。当您在多个对象上使用相同的字符串前缀时,MinIO 会将它们识别为类似的或分组的对象。
例如,名为 /articles/john.doe/2022-01-02-MinIO-Object-Storage.md
的对象最终会位于 articles
存储桶中,位于名为 john.doe
的文件夹中。
MinIO 对象存储可能类似于以下结构,其中包含三个存储桶。MinIO 根据这些对象的名称前缀自动在 articles
存储桶中生成两个文件夹。
/ #root
/images/
2022-01-02-MinIO-Diagram.png
2022-01-03-MinIO-Advanced-Deployment.png
MinIO-Logo.png
/videos/
2022-01-04-MinIO-Interview.mp4
/articles/
/john.doe/
2022-01-02-MinIO-Object-Storage.md
2022-01-02-MinIO-Object-Storage-comments.json
/jane.doe/
2022-01-03-MinIO-Advanced-Deployment.png
2022-01-02-MinIO-Advanced-Deployment-comments.json
2022-01-04-MinIO-Interview.md
MinIO 本身并不限制任何特定前缀可以包含的对象数量。但是,硬件和网络条件可能会在使用大型前缀时表现出性能影响。
具有适度或预算重点硬件的部署应将其工作负载架构设计为以每个前缀 10,000 个对象为基准。根据基准测试和对真实世界工作负载的监控,将此目标增加到硬件可以有意义地处理的程度。
具有高性能或企业级 硬件 的部署通常可以处理包含数百万个对象或更多对象的名称前缀。
MinIO SUBNET 企业帐户可以利用年度架构审查作为部署和维护策略的一部分,以确保您的 MinIO 依赖项目的长期性能和成功。
有关限制前缀内容的益处的更深入讨论,请参阅有关 优化 S3 性能 的文章。
如何在 MinIO 上备份和还原对象?
MinIO 提供两种类型的复制,以将对象、其版本及其元数据从一个位置复制到另一个位置。您可以在 存储桶级别 或 站点级别 配置复制。
存储桶级复制可以作为单向、主动-被动复制(例如,用于存档目的)或作为双向、主动-主动复制,以使两个存储桶彼此同步。
站点级复制作为双向、主动-主动复制,以使多个数据位置(例如,不同的地理数据中心)彼此同步。
除了复制之外,MinIO 还提供镜像服务。 mc mirror
仅将实际对象复制到任何其他与 S3 兼容的数据存储,包括其他 MinIO 存储。但是,版本和元数据不会与 mc mirror
命令一起备份。
对驱动器的独占访问
MinIO **需要** 对用于对象存储的驱动器或卷进行 *独占* 访问。任何其他进程、软件、脚本或人员不应直接对提供给 MinIO 的驱动器或卷或 MinIO 在其上放置的对象或文件执行 *任何* 操作。
除非由 MinIO 工程指导,否则不要使用脚本或工具直接修改、删除或移动提供驱动器上的任何数据分片、奇偶校验分片或元数据文件,包括从一个驱动器或节点到另一个驱动器或节点。此类操作很可能导致广泛的损坏和数据丢失,超出了 MinIO 的修复能力。
MinIO 提供了哪些工具来根据访问速度和频率来管理对象?
分层规则 允许频繁访问的对象存储在热存储或暖存储中,这通常更昂贵,但提供更好的性能。
不太频繁访问的对象可以移动到冷存储。冷存储通常用更慢的性能换取更低的价格。
MinIO 如何保护对象免遭意外覆盖或删除?
锁定
锁定(一种一次写入多次读取 (WORM) 机制)会阻止对象被删除或修改。锁定后,MinIO 会无限期地保留对象,直到有人删除锁定或锁定过期。
MinIO 提供
版本控制
默认情况下,使用相同名称(包括前缀)写入的对象会覆盖具有相同名称的现有对象。MinIO 提供了一个配置选项,用于创建启用了版本控制的存储桶。 版本控制 提供对唯一命名对象的各种迭代的访问,这些迭代随着时间的推移而发生变化。启用后,MinIO 会将突变的对象写入与原始对象不同的版本,从而可以访问原始对象和更新的、已更改的对象。
MinIO 存储桶上的其他配置确定在存储桶中保留每个对象的旧版本的持续时间。