
MinIO教程(1)对象存储基本概念与安装部署
一、对象存储简介
对象存储(Object Storage)是一种以对象为基本单位进行数据的存储系统,广泛用于存储图片、音视频、日志、备份等非结构化数据,并在私有云、混合云和边缘计算等场景中得到广泛应用。与传统的文件存储(如 NAS)和块存储(如 SAN)相比,对象存储具有更强的扩展性、灵活性和性能优势,有效解决了传统存储在容量扩展、管理复杂性和高并发访问方面的限制。
与传统的文件系统不同的地方在于每个对象包含数据本体、元数据和唯一标识符三个部分:
· 元数据:用于描述对象的属性,例如存储桶(Bucket)、自定义标签、内容类型、加密信息等
· 数据本体:对象数据本身的内容,可以是文本、图像、视频、语音等各种非结构化内容
· 唯一标识符:类似数据库的主键,用于在整个存储系统中快速找到对象,也是实现权限控制的核心要素,通过标识符可以控制某个用户对某个对象的读取、写入权限
二、MinIO特性
常见的对象存储系统有开创了对象存储标准的Amazon S3(Simple Storage Service)、阿里OSS、Ceph以及MinIO。在开源对象存储方案中,MinIO 以其高性能、轻量化、易部署、S3 完全兼容等特性,成为当前最受欢迎的对象存储项目之一。
1、MinIO性能
MinIO支持存储从 KB 级到 TB 级的对象,根据官方在特定硬件配置和并发条件下的测试结果,其 GET/PUT 性能可分别达到 325 GiB/s 和 165 GiB/s,客户端通过对象的 URL 路径或 API 调用中指定的桶名和对象名来访问数据。
2、MinIO纠删码
MinIO通过纠删码(Erasure Code,简称EC)可以最大化确保数据的安全。纠删码会将每个对象分割成若干个数据块,并基于算法生成冗余校验块,然后分布在多个磁盘或节点上。即使部分块损坏或节点故障,系统仍能自动恢复原始数据。在分布式部署中最多可以容忍一半节点失效的极端情况,非常适合云原生和边缘环境。假设有12块磁盘组成了MinIO集群,存储的对象就会被分成6个数据块和6个校验块,然后任意损坏6块磁盘(不管是数据盘还是校验盘)都可以保证数据不丢失。
在使用 MinIO 的纠删码模式(Erasure Coding)时,至少需要4块磁盘,上传的对象会被分片并分布存储在多个节点或磁盘上,以提高容错能力和数据可靠性,其中 xl.meta 存储对象的元信息,part.N 为数据分片,类似如下结构:
三、MinIO的安装
通过MinIO官网下载服务端和客户端的二进制包(https://min.io/open-source/download?platform=linux)。由于是二进制包,下载完成后就可以直接运行启动服务了,MinIO可以部署为单机模式、单机多磁盘模式以及集群模式。
#服务端 wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio mv /usr/local/src/minio /usr/local/bin/minio #客户端 wget https://dl.min.io/client/mc/release/linux-amd64/mc chmod +x mc mv /usr/local/src/mc /usr/local/bin/mc
四、单机模式
单机模式一般用于测试,生产环境下不建议使用。服务正常启动后可以看到API地址、控制台地址等信息
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server /mnt/data --console-address ":9001" # MINIO_ROOT_USER:minio管理账号 # MINIO_ROOT_PASSWORD:minio管理密码 # /mnt/data:数据存放目录 # --console-address:Web控制台监听地址和端口
五、单机多磁盘模式
需要提前做好磁盘分区和格式再进行启动,由于存在单节点故障,也不建议在生产环境下使用
nohup ./minio server --console-address ":9091" /data/{1..12} > /tmp/min.lo 2>&1 &
六、集群模式
生产环境推荐模式,当部署分布式集群时,只要磁盘梳理>=4块就可以自动启用纠删码模式。MinIO虽然可以在低成本的硬件上运行,但是为了获得最好的性能,建议所有节点的磁盘在容量和性能上都一致,并且将磁盘配置为JBOD直通方式并且使用XFS文件系统。另外各节点间需要保证时间同步,避免因为各节点时间不一致可能带来的数据冲突问题。
1、创建MinIO用户组和相关数据目录
groupadd -r minio-user useradd -M -r -g minio-user minio-user chown -R minio-user:minio-user /data2 /data3 /data4 /data5
2、创建变量配置文件
需要确保各节点都使用了相同的信息来启动,不允许顺序不一致、地址不一致、路径不一致,这是 MinIO 识别各个节点属于一个集群的前提
cat /etc/default/minio MINIO_VOLUMES="http://192.168.254.20{1...3}:9000/data{1...4}" MINIO_OPTS="--console-address :9001" MINIO_ROOT_USER=tanglu MINIO_ROOT_PASSWORD=123456789
3、配置启动脚本
cat /usr/lib/systemd/system/minio.service [Unit] Description=MinIO Documentation=https://minio.org.cn/docs/minio/linux/index.html Wants=network-online.target After=network-online.target AssertFileIsExecutable=/usr/local/bin/minio [Service] WorkingDirectory=/usr/local User=minio-user Group=minio-user ProtectProc=invisible EnvironmentFile=-/etc/default/minio ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi" ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES Restart=always LimitNOFILE=65536 TasksMax=infinity TimeoutStopSec=infinity SendSIGKILL=no [Install] WantedBy=multi-user.target # Built for ${project.name}-${project.version} (${project.name})
4、每个节点启动服务,运行后初始报错可以忽略,因为此时各节点还没有建立好连接
systemctl start minio tailf /var/log/messages #非脚本启动命令 MINIO_ROOT_USER="admin" MINIO_ROOT_PASSWORD="123456789" minio server --console-address ":9001" \ http://192.168.254.101:9000/data2 http://192.168.254.101:9000/data3 http://192.168.254.101:9000/data4 http://192.168.254.101:9000/data5 \ http://192.168.254.102:9000/data2 http://192.168.254.102:9000/data3 http://192.168.254.102:9000/data4 http://192.168.254.102:9000/data5 \ http://192.168.254.103:9000/data2 http://192.168.254.103:9000/data3 http://192.168.254.103:9000/data4 http://192.168.254.103:9000/data5
5、访问Web控制台
猜你喜欢

运维技术 MinIO教程(2)使用客户端工具mc实现对象与集群管理
一、MinIO Client介绍mc是 MinIO 官方提供的命令行客户端工具,该工具支持 Bucket 操作、对象同步、用户权限管理、Prometheus 集成、健康状态检查、纠删码修复等丰富功能,...
文章评论