一、概述

MinIO 是一个开源的对象存储服务器,它兼容Amazon S3(Simple Storage Service)API。它被设计用于构建分布式存储架构,提供高可用性、高性能和可扩展的对象存储解决方案。

下面是MinIO的一些主要特点和功能:

  • 对象存储:MinIO以对象为基本存储单元,可以存储和管理任意大小的文件、数据对象。它提供了标准的对象存储操作,如上传、下载、删除和元数据管理。
  • 分布式架构:MinIO采用分布式架构,可以在多个节点上部署,并将数据分布和复制在不同的节点上。这提供了高可用性和数据冗余,确保数据的持久性和可靠性。
  • 高性能:MinIO通过并行处理和分布式架构实现高性能的数据存取。它利用现代硬件和网络技术,充分利用多核处理器和高带宽网络,以实现快速的数据传输和处理。
  • 水平扩展:MinIO可以水平扩展,通过添加更多的节点来增加存储容量和吞吐量。它支持自动数据分片和负载均衡,确保数据在各个节点上均匀分布和访问的负载均衡。
  • 数据保护:MinIO提供了多种数据保护机制,包括数据冗余、故障转移和数据校验。它可以在不同的节点之间复制数据,以应对节点故障和数据损坏的情况。
  • 安全性:MinIO支持数据加密和访问控制,保护存储在其中的数据的安全性和隐私性。它提供了传输层加密(TLS/SSL)和服务器端加密选项,以及身份验证和访问控制机制。

总的来说,MinIO是一个开源的高性能对象存储服务器,适用于构建分布式存储系统。它具有高可用性、可扩展性和数据保护机制,兼容Amazon S3 API,使其与现有的S3生态系统和工具集成无缝。MinIO在大数据、云计算和容器化环境中广泛应用,为应用程序提供了可靠、高效的对象存储服务。

官方文档:MinIO Object Storage for Kubernetes — MinIO Object Storage for Kubernetes ,

中文文档:MinIO Object Storage for Kubernetes — MinIO Object Storage for Kubernetes

二、MinIO 与 Ceph 对比

MinIO和Ceph都是流行的开源存储解决方案,它们在对象存储领域有不同的特点和适用场景。下面是MinIO和Ceph的对比:

1)架构设计对比

  • MinIO:MinIO采用分布式架构,以水平扩展为基础。它通过多个独立的MinIO节点组成集群,每个节点都是独立的对象存储服务器。MinIO专注于提供简单、轻量级的对象存储服务,适用于小型到中等规模的部署。
  • Ceph:Ceph是一个分布式存储系统,由对象存储、块存储和文件系统组成。它使用RADOS(Reliable Autonomic Distributed Object Store)作为底层存储系统,提供高可用性和数据冗余。Ceph适用于大规模的企业级部署,具有复杂的架构和丰富的功能。

2)数据一致性对比

  • MinIO:MinIO在默认配置下提供最终一致性,即写入操作返回成功后,数据可能会有一定的时间窗口内的延迟才能完全一致。这适用于许多应用场景,如数据备份、存档等。
  • Ceph:Ceph提供强一致性,即写入操作在返回成功后,数据即刻就达到一致性。这对于需要强一致性保证的应用场景非常重要,如数据库和事务处理。

3)部署和管理对比

  • MinIO:MinIO 的部署和管理相对简单,可以通过单个二进制文件或容器进行快速安装和配置。它提供了直观的管理界面和易于使用的API,使得管理和监控变得简单。
  • Ceph:Ceph 的部署和管理相对复杂,涉及多个组件和配置。它需要更多的时间和专业知识来设置和维护,需要熟悉Ceph的架构和配置。

4)生态系统和兼容性对比

  • MinIO:MinIO与Amazon S3 API兼容,这意味着现有的S3工具和应用程序可以无缝地与MinIO集成。它还有一个活跃的社区,提供了各种客户端库和插件,扩展了其功能和兼容性。
  • Ceph:Ceph 具有广泛的生态系统和丰富的功能集。它可以与多个协议和接口(如RADOS、RBD、CephFS)进行集成,提供块存储、文件系统和对象存储的全面解决方案。

综上所述,MinIO适用于简单、轻量级的对象存储需求,注重高性能和易用性。它适合中小规模部署,并且与Amazon S3兼容,易于与现有的S3生态系统集成。

  • Ceph则适用于大规模、复杂的企业级存储需求。它提供强一致性和丰富的功能集,适合需要高可用性、数据冗余和复杂数据操作的场景。Ceph的部署和管理相对复杂,需要更多的配置和管理工作。
  • 选择MinIO还是Ceph取决于具体的需求和场景。如果你需要一个简单、易用、高性能的对象存储解决方案,并与S3兼容,那么MinIO是一个不错的选择。如果你需要一个功能强大、可扩展、支持块存储和文件系统的分布式存储系统,且具备强一致性的要求,那么Ceph是更适合的选择。

无论选择MinIO还是Ceph,都需要仔细评估其与特定应用和环境的兼容性、性能需求、管理复杂性和可扩展性,以确保选择的解决方案能够满足实际需求并提供可靠的存储服务。

三、前期准备

1)部署 docker

# 安装yum-config-manager配置工具
yum -y install yum-utils

# 建议使用阿里云yum源:(推荐)
#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装docker-ce版本
yum install -y docker-ce
# 启动并开机启动
systemctl enable docker
systemctl start docker
docker --version

2)配置 docker 国内镜像源

[root@minIO ~]# vi /etc/docker/daemon.json
[root@minIO ~]# cat /etc/docker/daemon.json
{
  "registry-mirrors": ["https://docker.m.daocloud.io"]
}
[root@minIO ~]# systemctl daemon-reload
[root@minIO ~]# systemctl restart docker

四、MinIO 部署

1)拉取镜像

docker pull minio/minio

实例:

[root@localhost howlong]# docker pull minio/minio
Using default tag: latest
latest: Pulling from minio/minio
5329d7039f25: Pull complete 
2b3707fd3b24: Pull complete 
5206d1e7147f: Pull complete 
33feab5fa1c5: Pull complete 
5cd9e0eb62e5: Pull complete 
34f92c74bdaf: Pull complete 
Digest: sha256:15d762671436cf383f9cc6667260e6c1298c25c8d7009576f709c3823e4a494d
Status: Downloaded newer image for minio/minio:latest
docker.io/minio/minio:latest
[root@localhost howlong]# 

2. 创建挂载点目录

mkdir -p /usr/local/minio/config
mkdir -p /usr/local/minio/data

3. 创建minio容器

注意:这里设置了minio客户端的账号和密码,其密码不可少于8位

账号:admin

密码:admin123

docker run -d \
--name minio \
-p 9000:9000 \
-p 9001:9001 \
--privileged=true \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=admin123" \
-v /usr/local/minion/data:/data \
-v /usr/local/minio/config:/root/.minio \
minio/minio server \
--console-address ":9000" \
--address ":9001" /data

实例:

[root@localhost howlong]# docker run -d \
--name minio \
-p 9000:9000 \
-p 9001:9001 \
--privileged=true \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=admin123" \
-v /usr/local/minion/data:/data \
-v /usr/local/minio/config:/root/.minio \
minio/minio server \
--console-address ":9000" \
--address ":9001" /data
93c98998d5cbc51c6f208cfe676adf495d4931469aad1d9756e19dca3fd4b66a

4. 启动minio容器

代码:

docker start minio

实例:

[root@localhost howlong]# docker start minio
minio
[root@localhost howlong]#

5. 测试minio是否安装成功

访问虚拟机地址+端口号,前面配置minio 的端口号为:9000

例如:

http://192.168.27.129:9000

账号:admin

密码:admin123