Introduction
提示:这篇还没写完,有空的时候记得填一下坑
单机部署 minio erase-code 模式
使用了 8 块硬盘
本文很长,涉及的内容很多
Deploy
Environment:
- OS: RHEL 8
- HDD: 4 TB x 10
- RAM: 8 GB
- NIC: 1 x GbE
安装系统
配置网络自动连接
开启 Cockpit
使用 Podman 管理容器
Podman 作为 Red Hat 的儿子,自然是要体验一下
但是在这个过程中我遇到了很多困难
看日志发现是 SELinux 阻止了 minio 访问磁盘
在这里我提供两种解决方法,任选其一即可
Method 1: z and Z
# 当你使用 minio 一段时间,
# bucket 里的文件非常多的时候,
# 你会发现创建容器的过程非常缓慢
# 并且
podman ps # 这条指令会卡住
# 使用 strace -f <cmd> 发现,这个阶段
# podman 在帮你设置 SELinux label
# 几十万个文件,一个一个地设置 ......
所以也推荐下面这个简单粗暴的方法(Method 2)
Method 2: SELinux
什么是 SELinux?
SELinux 有哪些模式?
- None
- Permissive
- Enforce
如何在 Enforce 下正常使用容器?
挖个坑,以后填
使用 SFTPGO 作为中间层
裸的 minio 是不提供 WebDAV、SFTP、SMB 这些协议支持的,所以你需要一个中间层进行对接。
SFTPGO 支持把 S3 服务以 SFTP 的协议暴露出去。
Performance Test
部署完成后,就可以测试 minio 整套的性能了
可以随意拔下 2 块硬盘看看 minio 是否能正常工作(记得提前开启 SATA 热插拔 功能!)
裸盘速度 | minio速度 | 软 RAID 速度 | |
---|---|---|---|
4MB | 0 MB/s | 0 MB/s | 0MB/s |
32MB | |||
64MB | |||
128MB | |||
256MB | |||
512MB | |||
1GB |
^ MB/s 指的是 Mega Bytes per second
^ 这里放个图片
Summary
本节内容介绍了在 RHEL8 环境下,如何使用容器技术部署了 minio
同时讲解了 SELinux 是如何影响容器内 minio 的工作,并提供了解决办法
最后,做了相对完整的性能测试
下一节,将介绍在实际使用过程中,对象存储带来的不方便的地方
老哥,家里的NAS没必要这么折腾吧…
回想起来确实不需要这么折腾,我搞这一套其实是为了回答「为什么家庭NAS不采用对象存储方案」这个问题。
因为我并不明白对象存储等方案的特点,也没有在互联网上找到这个问题的回答。所以我决定,借着自己买硬盘的这个契机,部署一套系统验证一下自己的想法。
部署完这套系统之后,我实际体验了一段时间,最终发现自己少考虑了很多事情,在问题的思考方面有很多漏洞。总之,我也算是在这个过程中有了收获!