核心管理概念
以下核心概念是 MinIO 部署管理的基础,包括但不限于对象保留、加密和访问管理。
为什么是对象存储?
对象 是二进制数据,有时称为二进制大对象 (BLOB)。 Blob 可以是图像、音频文件、电子表格,甚至是二进制可执行代码。 MinIO 等对象存储平台提供了用于存储、检索和搜索 blob 的专用工具和功能。
MinIO 对象存储使用 buckets 来组织对象。 存储桶类似于文件系统中的文件夹或目录,其中每个存储桶可以容纳任意数量的对象。 MinIO 存储桶提供与 AWS S3 存储桶相同的功能。
例如,考虑托管网络博客的应用程序。 该应用程序需要存储各种 blob,包括视频和图像等丰富的多媒体。
MinIO 通过 prefixing(前缀)
功能支持多级嵌套目录,甚至支持最动态的对象存储工作负载。
MinIO 如何确定对对象的访问?
MinIO 要求客户端对每个新操作执行身份验证和授权。 因此,身份和访问管理(IAM) 是MinIO配置的一个关键组件。
身份验证 验证连接客户端的身份。
MinIO 要求客户端使用支持已弃用的 Signature Version 2 协议的 AWS Signature Version 4 协议 进行认证。
具体来说,客户端必须提供有效的访问密钥和秘密密钥才能访问任何S3或MinIO管理API,例如 PUT
、 GET
和 DELETE
操作。
随后,MinIO 会检查已认证的用户或客户端是否有 权限 在部署上执行操作或使用资源。 MinIO 使用 基于策略的访问控制(PBAC),其中每个策略描述了一个或多个规则,这些规则概述了用户或用户组的权限。 MinIO 在创建策略时支持 S3 特定的 操作 和 条件。
默认情况下,MinIO 拒绝 对用户分配或继承的策略中未明确引用的操作或资源的访问。
MinIO 提供访问管理功能作为软件的一部分。 另外,您还可以配置 MinIO 以使用其中一个或多个外部 IAM 提供者进行认证,方法是使用 Active Directory/LDAP 或 OpenID/OIDC。
MinIO 如何保护数据?
MinIO 支持在驱动器上对对象进行编码(静态加密)以及在从一个位置传输到另一个位置的过程中进行编码(传输中加密,或 “加密在飞行中”)的方法。 当启用时,MinIO 使用 服务器端加密 以加密状态写入对象。 为了检索和阅读一个加密的对象,用户必须拥有适当的访问权限,并且还需要提供对象的解密密钥。
MinIO 支持 传输层安全 (TLS) 版本 1.2 和 1.3,用于加密对象。 TLS 取代了之前使用的 Secure Socket Layer (SSL) 方法,后者已被弃用。 由互联网工程任务组(Internet Engineering Task Force, IETF)维护的TLS标准,为互联网通信提供了支持加密、认证和数据完整性的标准。
验证用户并验证对对象访问的过程称为 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
命令一起备份。
Exclusive access to drives
MinIO 要求 专有 对提供给对象存储的驱动器或卷的访问。 其他任何进程、软件、脚本或人员都不得直接对提供给MinIO的驱动器或卷执行 任何 操作,也不得对MinIO放置在其上的对象或文件执行操作。
除非由MinIO工程部门指导,否则不要使用脚本或工具直接修改、删除或移动提供给MinIO的驱动器上的任何数据片段、校验片段或元数据文件,包括从一个驱动器或节点移动到另一个驱动器或节点。 这些操作很可能会导致广泛的数据损坏和丢失,超出了MinIO的修复能力。
MinIO 提供哪些工具来根据访问速度和频率管理对象?
分层规则 允许频繁访问的对象存储在热存储或温存储上,这通常更昂贵,但提供更好的性能。
访问频率较低的对象可以移至冷存储。 冷存储通常会以较低的性能换取更便宜的价格。
MinIO 如何保护对象免遭意外覆盖或删除?
锁定
锁是一种一次写入多次读取 (WORM) 机制,可防止删除或修改对象。 锁定时,MinIO 会无限期地保留对象,直到有人移除锁或锁过期。
MinIO 提供:
legal holds 用于所有用户无限期保留
compliance holds 用于所有用户的基于时间的限制
governing locks 用于非特权用户的基于时间的规则
版本控制
默认情况下,使用相同名称(包括前缀)写入的对象会覆盖现有的同名对象。 MinIO 提供了一个配置选项来创建启用版本控制的存储桶。 版本控制 提供对唯一命名对象随时间变化的各种迭代的访问。 启用后,MinIO 将变异对象写入与原始对象不同的版本,从而允许访问原始对象和更新的更改对象。
MinIO存储桶上的额外配置确定了在存储桶中保留每个对象的较旧版本的时间长度。