核心管理概念
以下核心概念是 MinIO 部署管理的基础,包括但不限于对象保留、加密和访问管理。
什么是对象存储?
一个 对象 是二进制数据,有时称为二进制大型对象 (BLOB)。Blob 可以是图像、音频文件、电子表格,甚至二进制可执行代码。对象存储平台(如 MinIO)提供用于存储、检索和搜索 blob 的专用工具和功能。
MinIO 对象存储使用 桶 来组织对象。桶类似于文件系统中的文件夹或目录,每个桶可以保存任意数量的对象。MinIO 桶提供与 AWS S3 桶相同的功能。
例如,考虑一个托管 Web 博客的应用程序。该应用程序需要存储各种 blob,包括视频和图像等丰富的多媒体。
MinIO 通过 前缀
功能支持多级嵌套目录,以支持甚至最动态的对象存储工作负载。
MinIO 如何确定对对象的访问权限?
MinIO 要求客户端对每个新操作执行身份验证和授权。因此,身份和访问管理 (IAM) 是 MinIO 配置的关键组成部分。
身份验证 验证连接客户端的身份。MinIO 要求客户端使用 AWS 签名版本 4 协议 进行身份验证,并支持已弃用的签名版本 2 协议。具体而言,客户端必须提供有效的访问密钥和密钥才能访问任何 S3 或 MinIO 管理 API,例如 PUT
、GET
和 DELETE
操作。
MinIO 然后会检查经过身份验证的用户或客户端是否拥有授权来执行操作或使用部署上的资源。 MinIO 使用基于策略的访问控制 (PBAC),其中每个策略都描述了一条或多条规则,这些规则概述了用户或用户组的权限。 MinIO 在创建策略时支持特定于 S3 的操作 和条件。
默认情况下,MinIO 会拒绝对用户分配的或继承的策略中未明确引用的操作或资源的访问。
MinIO 提供了一个作为软件一部分的访问管理功能。 或者,您可以使用Active Directory/LDAP 或OpenID/OIDC 将 MinIO 配置为使用多个外部 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 存储桶上的其他配置决定在存储桶中保留每个对象的旧版本多长时间。