为什么家庭 NAS 不采用对象存储方案(二)部署对象存储服务


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 的工作,并提供了解决办法

最后,做了相对完整的性能测试

下一节,将介绍在实际使用过程中,对象存储带来的不方便的地方


2 responses to “为什么家庭 NAS 不采用对象存储方案(二)部署对象存储服务”

    • 回想起来确实不需要这么折腾,我搞这一套其实是为了回答「为什么家庭NAS不采用对象存储方案」这个问题。

      因为我并不明白对象存储等方案的特点,也没有在互联网上找到这个问题的回答。所以我决定,借着自己买硬盘的这个契机,部署一套系统验证一下自己的想法。

      部署完这套系统之后,我实际体验了一段时间,最终发现自己少考虑了很多事情,在问题的思考方面有很多漏洞。总之,我也算是在这个过程中有了收获!

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.