文档

核心管理概念

以下核心概念是管理 MinIO 部署的基础,包括但不限于对象保留、加密和访问管理。

什么是对象存储?

对象是二进制数据,有时也称为二进制大对象 (BLOB)。Blob 可以是图像、音频文件、电子表格,甚至是二进制可执行代码。像 MinIO 这样的对象存储平台提供了专门的工具和功能,用于存储、检索和搜索 blob。

MinIO 对象存储使用存储桶来组织对象。存储桶类似于文件系统中的文件夹或目录,每个存储桶可以容纳任意数量的对象。MinIO 存储桶提供与 AWS S3 存储桶相同的功能。

例如,考虑一个托管网络博客的应用程序。该应用程序需要存储各种 blob,包括视频和图像等富媒体内容。

MinIO 通过前缀特性支持多级嵌套目录,以支持即使是最动态的对象存储工作负载。

MinIO 如何确定对对象的访问权限?

MinIO 要求客户端对每个新操作都执行身份验证和授权。身份和访问管理 (IAM) 因此是 MinIO 配置的关键组成部分。

身份验证验证连接客户端的身份。MinIO 要求客户端使用 AWS 签名版本 4 协议进行身份验证,并支持已弃用的签名版本 2 协议。具体来说,客户端必须提供有效的访问密钥和秘密密钥才能访问任何 S3 或 MinIO 管理 API,例如 PUTGETDELETE 操作。

然后,MinIO 会检查经过身份验证的用户或客户端是否具有在部署上执行操作或使用资源的授权。MinIO 使用基于策略的访问控制 (PBAC),其中每个策略描述一个或多个规则,这些规则概述了用户或用户组的权限。在创建策略时,MinIO 支持 S3 特定的操作条件

默认情况下,MinIO 拒绝访问用户分配或继承的策略中未明确引用的操作或资源。

MinIO 提供了一个作为软件一部分的访问管理功能。或者,您可以配置 MinIO 使用Active Directory/LDAPOpenID/OIDC与多个外部 IAM 提供商之一进行身份验证。

MinIO 如何保护数据?

MinIO 支持在对象存储在驱动器上时(静态加密)和从一个位置传输到另一个位置时(传输中加密,或“飞行中”)对其进行编码的方法。启用后,MinIO 利用服务器端加密以加密状态写入对象。要检索和读取加密对象,用户必须具有适当的访问权限,并提供对象的解密密钥。

MinIO 支持传输层安全 (TLS) 1.2 和 1.3 版本来加密对象。TLS 取代了之前使用但现已弃用的安全套接字层 (SSL) 方法。由互联网工程任务组 (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 命令进行备份。

驱动器的独占访问

MinIO 要求对提供给对象存储的驱动器或卷进行独占访问。任何其他进程、软件、脚本或个人都不应直接对提供给 MinIO 的驱动器或卷,或者 MinIO 放置在它们上面的对象或文件执行任何操作。

除非得到 MinIO 工程团队的指示,否则不要使用脚本或工具直接修改、删除或移动所提供驱动器上的任何数据分片、奇偶校验分片或元数据文件,包括从一个驱动器或节点移动到另一个。这类操作极有可能导致大范围的损坏和数据丢失,超出 MinIO 的修复能力。

MinIO 提供了哪些工具来根据访问速度和频率管理对象?

分层规则允许将频繁访问的对象存储在热存储或温存储上,这些存储通常更昂贵但性能更好。

访问频率较低的对象可以移动到冷存储。冷存储通常以较慢的性能换取更低的价格。

MinIO 如何保护对象免遭意外覆盖或删除?

锁定

锁定是一种一次写入多次读取 (WORM) 机制,可以防止对象的删除或修改。当对象被锁定时,MinIO 会无限期地保留该对象,直到有人移除锁定或锁定到期为止。

MinIO 提供

  • 诉讼保留锁,供所有用户无限期保留

  • 合规保留锁,为所有用户提供基于时间的限制

  • 治理锁,为非特权用户提供基于时间的规则

版本控制

默认情况下,使用相同名称(包括前缀)写入的对象会覆盖同名的现有对象。MinIO 提供了一个配置选项,可以创建启用版本控制的存储桶。版本控制提供了对唯一命名对象随时间变化的不同迭代的访问。启用后,MinIO 会将修改后的对象写入一个与原始版本不同的版本,从而允许访问原始对象和更新的、已更改的对象。

MinIO 存储桶上的其他配置决定了存储桶中每个对象的旧版本保留多长时间。

English 中文