MinIO 官网地址 http://www.minio.org.cn/
MinIO GitHub地址 https://github.com/minio/minio
MinIO 文档地址 http://docs.minio.org.cn/docs/
MinIO 是一款高性能、分布式的对象存储系统.可运行在标准硬件即X86等低成本机器。构建高性能的云原生数据,机器学习,大数据分析,海量存储的基础架构,MinIO支持各种应用程序数据工作负载。
MinIO的企业级功能代表了对象存储空间中的标准。从AWS S3 API支持到S3 Select支持,以及设计的擦除编码和数据安全等实现,代码受到了技术和业务领域的一些知名人士的广泛赞誉和频繁使用。
MinIO设计为云原生,可以作为轻量级容器运行,由外部编排服务(如Kubernetes)管理。整个服务器约为40MB静态二进制文件,即使在高负载下也可以高效利用CPU和内存资源。达到共享硬件上共同托管大量租户。
MinIO与硬件无关,可在从基于ARM的嵌入式系统到高端x64和POWER9服务器的各种硬件体系结构上运行。但是对于大规模数据存储基础结构,
建议以高密度和高容量形式使用以下服务器配置。(注意:对象存储操作主要受吞吐量限制。因此,MinIO充分利用了现代硬件改进,例如AVX-512 SIMD加速,100GbE网络和NVMe SSD可用)。
如只是在开发和测试环境使用可使用podman和docker容器快速部署。MinIO是一个云原生的应用程序,旨在在多租户环境中以可持续的方式进行扩展。编排(orchestration)平台为MinIO的扩展提供了非常好的支撑。支持Docker Swarm、Docker Compose、Kubernetes、DC/OS编排平台的MinIO部署文档。
io.minio.errors.ErrorResponseException: Access denied
原因可能是:
# 安装ntp ntpdate
yum -y install ntp ntpdate
# 与时间服务器同步时间
ntpdate cn.pool.ntp.org
# 将系统时间写入硬件时间
hwclock --systohc
如果开发熟悉使用可以直接使用单机容器部署
# podman中运行MinIO单点模式非持久化,9000端口是提供客户端的端口,9001是MinIO控制台页面端口
podman run \
-p 9000:9000 \
-p 9001:9001 \
minio/minio server /data --console-address ":9001"
# docker中运行MinIO单点模式持久化宿主机
docker run \
-p 9000:9000 \
-p 9001:9001 \
-v /mnt/data:/data \
-v /mnt/config:/root/.minio \
minio/minio server /data --console-address ":9001"
# 如果需要设置密码可以使用可以再加上如下参数
-e "MINIO_ROOT_USER=minioadmin" \
-e "MINIO_ROOT_PASSWORD=minioadmin123" \
查看docker进程
访问http://192.168.50.95:9001/ 输入上述提示的用户名密码minioadmin/minioadmin123 ,进入后首页显示如下
Minio使用纠删码erasure code
和校验和checksum
来保护数据免受硬件故障和无声数据损坏。 即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据。
什么是纠删码erasure code
?
为什么纠删码有用?
什么是位衰减bit rot
保护?
Data Rot
、无声数据损坏Silent Data Corruption
,是目前硬盘数据的一种严重数据丢失问题。硬盘上的数据可能会神不知鬼不觉就损坏了,也没有什么错误日志。正所谓明枪易躲,暗箭难防,这种背地里犯的错比硬盘直接咔咔宕了还危险。 不过不用怕,Minio纠删码采用了高速 HighwayHash基于哈希的校验和来防范位衰减。Minio纠删码快速入门
minio server /data1 /data2 /data3 /data4 /data5 /data6 /data7 /data8 /data9 /data10 /data11 /data12
Copydocker run -p 9000:9000 --name minio \
-v /mnt/data1:/data1 \
-v /mnt/data2:/data2 \
-v /mnt/data3:/data3 \
-v /mnt/data4:/data4 \
-v /mnt/data5:/data5 \
-v /mnt/data6:/data6 \
-v /mnt/data7:/data7 \
-v /mnt/data8:/data8 \
minio/minio server /data1 /data2 /data3 /data4 /data5 /data6 /data7 /data8
分布式Minio可以将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式Minio避免了单点故障。在大数据领域,通常的设计理念都是无中心和分布式。Minio分布式模式可以帮助你搭建一个高可用的对象存储服务,你可以使用这些存储设备,而不用考虑其真实物理位置。
启动一个分布式Minio实例只需要把硬盘位置做为参数传给minio server命令即可,然后需要在所有其它节点运行同样的命令。注意
启动分布式Minio实例启动分布式Minio实例4个节点,每节点4块盘(虚拟),需要在4个节点上都运行下面的命令;先根据上面下载服务端和客户端,这里修改默认MinIO客户端端口和控制台端口,依次在每一台执行。
# 模拟多个盘
mkdir -p /home/minio/data1 /home/minio/data2 /home/minio/data3 /home/minio/data4
# 进入目录
cd /home/minio/
# 下载服务端
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
export MINIO_ACCESS_KEY=minioadmin
export MINIO_SECRET_KEY=minioadmin123
nohup ./minio server --address :9900 --console-address :9901 \
http://192.168.5.52:9900/home/minio/data1 http://192.168.5.52:9900/home/minio/data2 \
http://192.168.5.52:9900/home/minio/data3 http://192.168.5.52:9900/home/minio/data4 \
http://192.168.5.53:9900/home/minio/data1 http://192.168.5.53:9900/home/minio/data2 \
http://192.168.5.53:9900/home/minio/data3 http://192.168.5.53:9900/home/minio/data4 \
http://192.168.50.95:9900/home/minio/data1 http://192.168.50.95:9900/home/minio/data2 \
http://192.168.50.95:9900/home/minio/data3 http://192.168.50.95:9900/home/minio/data4 \
http://192.168.12.28:9900/home/minio/data1 http://192.168.12.28:9900/home/minio/data2 \
http://192.168.12.28:9900/home/minio/data3 http://192.168.12.28:9900/home/minio/data4 > run.log &
当所有都执行完后,每一台都有如下启动配置完成的输出,系统配置保存在每个盘下面.minio.sys文件夹,这个是一个隐藏文件夹,如果想重置初始化部署可以删除这个目录。
登录http://192.168.5.52:9901/ 输入用户名密码minioadmin/minioadmin123,查看
接下来创建一个名称为file的Bucket,然后在file下上传文件tinyid-server-1.0.tar.gz,
我们登录另外一台http://192.168.5.52:9901/ 后查看的结果是一样的
点击右边的Download下载按钮,瞬间下载完毕,MinIO真的就是快,上传下载基本上只受限于网络带宽,至此分布式部署已完成
**本人博客网站 **IT小神 www.itxiaoshen.com