MinIO 是一种高性能、S3 兼容的对象存储。本文主要包括 MinIO 简介和安装;文中所使用到的软件版本:MinIO RELEASE.2025-07-23T15-54-02Z、Centos 8.5.2111。
1、简介
1.1、MinIO 的特性
1.1.1、主动,主动复制
对象存储的主动、多站点复制是任务关键型生产环境的关键要求。MinIO是目前唯一提供它的供应商。MinIO 提供存储桶级粒度,并支持同步和近同步复制,具体取决于架构选择和数据变化率。
1.1.2、加密
在对象存储领域,需要强大的加密才能在谈判桌上占有一席之地。MinIO 通过最高级别的加密以及广泛的优化提供更多功能,几乎消除了通常与存储加密操作相关的开销。
1.1.3、自动化数据管理界面
数据是企业最关键的资产,因此必须在整个组织中轻松安全地使用,以便为每个人实现最大价值。因此,企业必须根据受众的需求采用一系列数据接口方法。MinIO提供了一套选项来涵盖数据驱动型企业中的每个角色,例如图形用户界面(GUI),命令行界面(CLI)和应用程序编程接口(API)。MinIO 的数据管理接口可互换运行,以提供精细、高性能和可扩展的对象存储管理。
1.1.4、存储桶和对象不变性
保护数据不被删除(意外或故意)是涉及每个行业的关键合规性组件。MinIO 支持完整的功能范围,包括对象锁定、保留、法律保留、治理和合规性。MinIO 的存储桶和对象不变性已通过 Veeam 认证和验证,可根据 SEC 规则 17a-4(f)、FINRA 规则 4511 和 CFTC 规则 1.31 使用。
1.1.5、亚马逊云 S3 兼容性
S3兼容性是云原生应用程序的硬性要求。MinIO 毫不妥协地坚持 API,拥有数以万计的用户(包括商业用户和社区用户),MinIO 的 S3 实施是世界上测试和实施最广泛的 AWS S3 替代方案。
MinIO是S3 API(V2和V4)的最早采用者之一,也是仅有的专注于S3的存储公司之一,其庞大的社区确保了没有其他AWS替代品比它更兼容。MinIO也是少数几家支持S3 Select的公司之一。
1.1.6、数据生命周期管理和分层
随着数据的持续增长,针对访问、安全性和经济性进行共同优化的能力成为一项硬性要求,而不是可有可无。这就是生命周期数据管理的作用。MinIO 提供了一套独特的功能来保护云内部和跨云的数据 - 包括公共云和私有云。
MinIO的企业数据生命周期管理工具,包括版本控制、对象锁定和各种衍生组件,满足多种用例。
1.1.7、可扩展性
缩放是一个维度概念,但它有一个真理:简单缩放。MinIO 通过称为服务器池的概念进行水平扩展(横向扩展)。服务器池是一种结合了多个技术组件的方法。每个服务器池都是一组独立的节点,具有自己的计算、网络和存储资源。
1.1.8、身份和访问管理
MinIO IAM 以 AWS 身份和访问管理 (IAM) 兼容性为核心构建,无论环境如何,都可以向应用程序和用户提供该框架 - 在不同的公共云、私有云和边缘提供相同的功能。MinIO 通过支持流行的外部身份提供商(如 ActiveDirectory/LDAP、Okta 和 Keycloak)扩展了 AWS IAM 兼容性,允许管理员将身份管理卸载到其组织的首选 SSO 解决方案。
1.2、对象管理
MinIO 对象存储使用 buckets 来组织对象。 存储桶类似于文件系统中的顶级驱动器、文件夹或目录 ( /mnt/data or C:\ ) ,其中每个存储桶可以容纳任意数量的对象。
MinIO 服务器上的对象结构可能类似于以下内容:- / #root
- /images/
- 2020-01-02-MinIO-Diagram.png
- 2020-01-03-MinIO-Advanced-Deployment.png
- MinIO-Logo.png
- /videos/
- 2020-01-04-MinIO-Interview.mp4
- /articles/
- /john.doe/
- 2020-01-02-MinIO-Object-Storage.md
- 2020-01-02-MinIO-Object-Storage-comments.json
- /jane.doe/
- 2020-01-03-MinIO-Advanced-Deployment.png
- 2020-01-02-MinIO-Advanced-Deployment-comments.json
- 2020-01-04-MinIO-Interview.md
复制代码 如示例结构,将创建 /images , /videos 和 /articles 存储桶。 客户端应用程序使用该对象的完整 “路径” 将对象写入这些存储桶,包括所有中间前缀。
MinIO 使用前缀支持多层嵌套目录和对象,甚至可以支持最动态的对象存储工作负载。 MinIO 使用 / 作为分隔符自动从完整对象路径推断出中间前缀,例如 /articles/john.doe 。
客户端和管理员不应手动创建这些前缀,因为 MinIO 会自动从对象名称中推断出它们。
2、安装
这里主要介绍 MinIO 在 Linux 环境下的部署;可通过如下地址下载 MinIO 二进制包:- https://dl.minio.org.cn/server/minio/release/linux-amd64/minio
- https://dl.min.io/server/minio/release/linux-amd64/minio --这个地址下载的版本比较新
复制代码 2.1、单节点单硬盘部署(SNSD)
SNSD 部署使用零奇偶校验的纠删码后端,这提供的可靠性或可用性与底层存储卷实现的一致,没有额外的可靠性或可用性。 这些部署最适合用于本地测试和评估,或者用于没有可用性或性能要求的小规模数据工作负载。
2.1.1、预先存在的数据
MinIO 的启动行为取决于指定的存储卷或路径的内容。 服务器会检查 MinIO 内部的后端数据以及现有文件夹和文件的结构。 以下表格列出了可能的存储卷状态和 MinIO 的行为:
存储容量状态 | 行为 | 不包含 任何文件、文件夹 | MinIO 以 SNSD 模式启动并创建零冗余后端 | 存在 SNSD 零冗余对象和 MinIO 后端数据 | MinIO 以 SNSD 模式恢复 | 存在文件系统文件夹、文件,但没有 MinIO 后端数据 | MinIO 返回错误并且不启动 | 存在文件系统文件夹、文件和传统的“FS模式”后端数据 | MinIO 返回错误并且不启动 | 2.1.2、存储要求
A、使用本地存储
直接连接存储(DAS)在性能和一致性方面显著优于网络存储( NAS, SAN, NFS)。 MinIO 强烈建议使用闪存存储(NVMe、SSD)作为主要或 “热” 数据。
B、对驱动器使用 XFS 格式化
MinIO 强烈建议存储为格式化 XFS 文件系统的驱动器。 MinIO 在其内部测试和验证套件中使用 XFS,这增加了对所有规模下的性能和行为表现的额外信心。
C、持久化驱动器挂载和映射跨重启
为了确保在节点重启后驱动器到挂载点的映射一致,请使用 /etc/fstab 文件。
2.1.3、启动
- nohup ./minio server ./data --console-address :9090 &
复制代码 2.2、单节点多硬盘部署(SNMD)
SNMD 部署提供了驱动器级别的可靠性以及故障转移/恢复功能,但由于单个节点的限制,会对性能和扩展性产生限制。
2.2.1、存储要求
A、使用本地存储
直接连接存储(DAS)在性能和一致性方面比网络存储( 网络附加存储(NAS)、 存储区域网络(SAN)、 网络文件存储(NFS))有显著优势。 MinIO 强烈建议使用闪存存储(NVMe,SSD)作为主要或 “热” 数据。
B、使用 XFS 格式化驱动器
MinIO 强烈建议为存储提供 XFS 格式化的驱动器。 MinIO 在内部测试和验证套件中使用 XFS,以提供对性能和行为在所有规模上的额外信心。
MinIO 并不测试也不推荐其他文件系统,如 EXT4、BTRFS 或 ZFS。
C、使用一致类型的驱动器
MinIO 不区分驱动器类型,并且不从混合存储类型中受益。 每个 :term:`pool`(池)必须使用相同类型(NVMe,SSD)的驱动器。
例如,部署一个仅由 NVMe 驱动器组成的池。 如果您将一些驱动器作为 SSD 或 HDD 部署,MinIO 会将与 NVMe 驱动器相同的方式来处理这些驱动器。 这可能会导致性能问题,因为一些驱动器具有不同的或更差的读/写特性,并且不能像 NVMe 驱动器那样以相同的速率响应。
D、使用一致大小的驱动器
MinIO 将每个硬盘使用的大小限制为池中最小的硬盘。
例如,部署一个由容量相同的 7.68TiB NVMe驱动器组成的数据池。 如果您部署了一个容量为 3.84TiB 的驱动器,MinIO会将池中的所有驱动器都视为具有那个较小的容量。
E、配置顺序挂载驱动器
MinIO 使用 Go 扩展表示法 {x...y} 来表示在创建新 deployment 时驱动器的顺序系列,其中 deployment 中的所有节点都具有相同的一组挂载驱动器。 将驱动器挂载路径配置为顺序系列,以最佳支持这种表示法。 例如,使用模式 /mnt/drive-n 挂载您的驱动器,其中 n 从 1 开始,每增加一个驱动器就递增 1 。
F、在重新启动后保持驱动器挂载和映射不变
使用 /etc/fstab 确保在节点重新启动后驱动器到挂载点的映射一致。
2.2.2、启动
- nohup ./minio server /minio-data/data-{2...4} --console-address :9090 &
复制代码 /minio-data/data-n 为单独的挂载盘:- /dev/nvme0n2 /minio-data/data-2 xfs defaults 0 0
- /dev/nvme0n3 /minio-data/data-3 xfs defaults 0 0
- /dev/nvme0n4 /minio-data/data-4 xfs defaults 0 0
复制代码 2.3、多节点多硬盘部署(MNMD)
MNMD 部署提供企业级性能、可用性和可扩展性,并且是所有生产工作负载的推荐拓扑结构。MNMD 部署支持 Erasure Coding(纠删码) 配置,可以容忍部署中多达一半的节点或驱动器的丢失,同时继续提供读操作。
2.3.1、存储要求
A、使用本地存储
直接连接存储(DAS)在性能和一致性方面比网络存储( 网络附加存储(NAS)、 存储区域网络(SAN)、 网络文件存储(NFS))有显著优势。 MinIO 强烈建议使用闪存存储(NVMe,SSD)作为主要或 “热” 数据。
B、使用 XFS 格式化驱动器
MinIO 强烈建议为存储提供 XFS 格式化的驱动器。 MinIO 在内部测试和验证套件中使用 XFS,以提供对性能和行为在所有规模上的额外信心。
MinIO 并不测试也不推荐其他文件系统,如 EXT4、BTRFS 或 ZFS。
C、使用一致类型的驱动器
MinIO 不区分驱动器类型,并且不从混合存储类型中受益。 每个 :term:`pool`(池)必须使用相同类型(NVMe,SSD)的驱动器。
例如,部署一个仅由 NVMe 驱动器组成的池。 如果您将一些驱动器作为 SSD 或 HDD 部署,MinIO 会将与 NVMe 驱动器相同的方式来处理这些驱动器。 这可能会导致性能问题,因为一些驱动器具有不同的或更差的读/写特性,并且不能像 NVMe 驱动器那样以相同的速率响应。
D、使用一致大小的驱动器
MinIO 将每个硬盘使用的大小限制为池中最小的硬盘。
例如,部署一个由容量相同的 7.68TiB NVMe驱动器组成的数据池。 如果您部署了一个容量为 3.84TiB 的驱动器,MinIO会将池中的所有驱动器都视为具有那个较小的容量。
E、配置顺序挂载驱动器
MinIO 使用 Go 扩展表示法 {x...y} 来表示在创建新 deployment 时驱动器的顺序系列,其中 deployment 中的所有节点都具有相同的一组挂载驱动器。 将驱动器挂载路径配置为顺序系列,以最佳支持这种表示法。 例如,使用模式 /mnt/drive-n 挂载您的驱动器,其中 n 从 1 开始,每增加一个驱动器就递增 1 。
F、在重新启动后保持驱动器挂载和映射不变
使用 /etc/fstab 确保在节点重新启动后驱动器到挂载点的映射一致。
2.3.2、部署规划
主机 | 磁盘 | 10.49.196.33 | /minio-data/data-2
/minio-data/data-3
/minio-data/data-4
| 10.49.196.34 | /minio-data/data-2
/minio-data/data-3
/minio-data/data-4
| 10.49.196.35 | /minio-data/data-2
/minio-data/data-3
/minio-data/data-4
| 2.3.3、启动
在每台机器上执行:- nohup ./minio server http://10.49.196.3{3...5}:9000/minio-data/data-{2...4} --console-address :9090 &
复制代码 3、控制台
控制台端口通过 --console-address 参数指定,如:http://10.49.196.35:9090;用户名/密码默认为 minioadmin/minioadmin,可以通过环境变量 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD 来调整用户名/密码。
该版本的控制台功能较简单,MinIO 想让用户转向企业版;2025.4.22 及之前版本的控制台功能丰富:
参考:https://min-io.cn/docs/minio/linux/operations/installation.html。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |