一、minio简介
MinIO 是一个高性能的分布式对象存储系统,主要用于存储非结构化数据,例如照片、视频、备份和日志文件。它是开源的,基于 Go 语言开发,具有高度可扩展性和高可用性,能够在私有云、公有云和边缘环境中部署。MinIO 兼容 Amazon S3 的 API,因此可以很容易地与现有的 S3 客户端和应用程序集成。
MinIO 的主要特点
高性能:MinIO 通过优化 I/O 操作和网络协议,提供了卓越的性能,能够满足现代数据密集型应用程序的需求。
- 分布式架构:MinIO 采用分布式架构,可以横向扩展,支持大规模集群部署,确保数据的高可用性和持久性。
- S3 兼容:MinIO 完全兼容 Amazon S3 的 API,因此可以与现有的 S3 客户端和工具无缝集成。
- 简易部署:MinIO 可以在几秒钟内部署,并且提供了一个简洁的 Web 界面和命令行工具,便于管理和操作。
- 安全性:MinIO 支持服务器端加密和传输层加密,确保数据在传输和存储过程中的安全性。
- Kubernetes 友好:MinIO 可以轻松地在 Kubernetes 环境中部署,支持原生的容器编排和管理。
二、minio部署条件
MinIO部署推荐使用本地存储磁盘,只对XFS文件系统格式提供支持,多磁盘下要求使用一致的磁盘驱动器类型。
-
使用本地存储
直接连接存储 (DAS) 与网络存储 ( NAS、SAN、NFS ) 相比具有显著的性能和一致性优势。MinIO 强烈建议使用闪存存储 (NVMe、SSD) 作为主要数据或“热”数据。 -
使用 XFS 格式格式化驱动器
MinIO 强烈建议配置 XFS 格式的驱动器用于存储。MinIO 将 XFS 用作内部测试和验证套件的一部分,从而为所有规模的性能和行为提供额外的信心。
MinIO 不测试也不推荐任何其他文件系统,例如 EXT4、BTRFS 或 ZFS。 -
使用一致的驱动器类型
MinIO 不区分驱动器类型,并且不会从混合存储类型中受益。每个池必须使用相同的类型(NVMe、SSD)
例如,部署一个仅由 NVMe 驱动器组成的池。如果您将某些驱动器部署为 SSD 或 HDD,MinIO 会将这些驱动器视为与 NVMe 驱动器相同的驱动器。这可能会导致性能问题,因为某些驱动器具有不同或更差的读/写特性,并且无法以与 NVMe 驱动器相同的速率响应。 -
使用一致大小的驱动器
MinIO 将每个驱动器使用的大小限制为部署中最小的驱动器。
例如,部署一个由相同数量且容量相同的 NVMe 驱动器组成的池7.68TiB。如果您部署一个容量为 的驱动器3.84TiB,MinIO 会将池中的所有驱动器视为具有较小容量。 -
配置顺序驱动器安装
MinIO 使用 Go 扩展符号{x…y}来表示在创建新部署时一系列连续的驱动器,其中部署中的所有节点都具有相同的一组已安装驱动器。将驱动器安装路径配置为连续系列以最好地支持此符号。例如,使用 模式安装驱动器/mnt/drive-n,其中每个驱动器n从1开始,增量1。 -
重启后保留驱动器安装和映射
用于/etc/fstab确保节点重启时驱动器到安装映射的一致性。 -
MinIO需要对用于对象存储的驱动器或卷具有 独占访问权限。任何其他流程、软件、脚本或人员都不得直接对提供给 MinIO 的驱动器或卷或 MinIO 放置在其上的对象或文件执行任何操作。
博文以Linux环境下安装minio单机版未来介绍服务端、客户端的安装和使用简介。博文实验环境如下:
- 操作系统:centos7.6
- minio版本:2024-07-16T23-46-41Z
- 文件系统格式:NFS
三、安装步骤
1、下载minio
通过官网下载minio软件包,支持RPM、DEB、二进制等多种安装方式,官方建议使用RPM或者DEB方式安装,我们博文实验环境是centos7.6,所以使用rpm包方式安装。
[root@minio_test opt]# wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20240716234641.0.0-1.x86_64.rpm -O minio.rpm
2、yum安装minio
安装完成后可以执行执行minio命令,查看当前版本为2024-07-16T23-46-41Z。
[root@minio_test opt]# yum install -y minio.rpm
[root@minio_test opt]# minio --version
minio version RELEASE.2024-07-16T23-46-41Z (commit-id=3535197f993dea840dcb96302ba4d883dc619097)
Runtime: go1.22.5 linux/amd64
License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
Copyright: 2015-2024 MinIO, Inc.
3、初始化磁盘
根据磁盘格式要求,将独占磁盘格式化为xfs格式。
[root@minio_test ~]# mkfs.xfs /dev/sdb -L DISK1
meta-data=/dev/sdb isize=512 agcount=4, agsize=1638400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=6553600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=3200, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
4、创建磁盘挂载目录
[root@minio_test ~]# mkdir -p /data1
5、更新/etc/fstab
为了保证系统重启之后服务的正确性,我们需要将磁盘挂载写入到/etc/fstab文件。
[root@minio_test ~]# echo “LABEL=DISK1 /data1 xfs defaults,noatime 0 2” >> /etc/fstab
6、挂在磁盘
[root@minio_test ~]# mount -a
7、创建minio运行用户
[root@minio_test ~]# groupadd -r minio-user
[root@minio_test ~]# useradd -M -r -g minio-user minio-user
8、设置磁盘属主为minio用户
[root@minio_test ~]# chown minio-user.minio-user /data1
9、创建环境变量配置文件
minio启动文件中指定默认环境配置文件为/etc/default/minio,我们创建配置文件并设置用户、密码和存储路径、监听端口等信息。
[root@minio_test opt]# vim /etc/default/minio
[root@minio_test opt]# cat /etc/default/minio
# MINIO_ROOT_USER and MINIO_ROOT_PASSWORD sets the root account for the MinIO server.
# This user has unrestricted permissions to perform S3 and administrative API operations on any resource in the deployment.
# Omit to use the default values 'minioadmin:minioadmin'.
# MinIO recommends setting non-default values as a best practice, regardless of environmentMINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin# MINIO_VOLUMES sets the storage volume or path to use for the MinIO server.MINIO_VOLUMES="/data1"# MINIO_OPTS sets any additional commandline options to pass to the MinIO server.
# For example, `--console-address :9001` sets the MinIO Console listen port
MINIO_OPTS="--console-address :9001"
10、启动minio服务
minio服务可以命令启动,如果是rpm安装的也可以使用systectl start minio启动。
[root@minio_test opt]# minio server /data1 --console-address :9001
11、开启防火墙端口访问策略
如果开启了firewalld防火墙,我们需要开放服务端口才可以实现远程访问。如果关闭了firewalld可以跳过此步。
[root@minio_test ~]# firewall-cmd --zone=public --add-port=9001/tcp --permanent
success
[root@minio_test ~]# firewall-cmd --zone=public --add-port=9000/tcp --permanent
success
[root@minio_test ~]# firewall-cmd --reload
success
12、登录控制台
输入配置的用户名密码后就可以登录控制台。
三、使用简介
1、创建存储桶
点击创建按钮,输入名称就可以完成创建,创建完成后在服务器上就会看到一个名称对应的目录。
2、创建访问密钥
点击Access Keys标签页,点击Create access key按钮创建访问密钥,访问密钥自动生成key和密钥,我们可以设置密钥有效期、名称、用途描述等内容。
3、保存密钥
点击创建后会提示Secret Key只会展示一次,我们可以复制保存或者下载保持导入文件。
4、上传文件或目录
minio支持上传文件和文件夹。
5、修改存储桶为public
创建的存储桶默认是private格式,需要通过access key方式访问,需要使用客户端或者sdk调用API接口访问。
6、浏览器访问验证
如果是浏览器访问注意上传的文件编码格式,例如txt文件默认是UTF-8格式,浏览器访问的时候中文可能显示是乱码,我们可以修改文件格式为UTF-8-BOM格式则显示正常。