使用MinFS挂载minio为本地目录

警告----实验部分失败

  • Centos7实验成功
    在这里插入图片描述

  • RHEL8实验成功
    在这里插入图片描述

  • Rocky9实验失败

MinFS代码库已经只读,且找不到更多的文档支持排错, 请谨慎使用此方案.
在这里插入图片描述
Rocky9可能的解决办法

# 查看swap
systemctl --type swap
# 禁用swap
systemctl mask swap

在这里插入图片描述

后续如果找到解决方案,我会更新此文档.


MinFS与S3FS性能对比

  • MinFS性能是s3fs5倍

MinFS是由MinIO公司开发的,开发时间可以追溯到2017年。

MinFS在小文件写入性能方面表现优异,能够高效地处理大量小文件的并发写入操作,其平均写入速度是s3fs的五倍。

此外,minfs还支持高并发读写,能够充分利用本地磁盘带宽,减少数据传输延迟。

如何使用MinFS挂载MinIO? – cmdSchool


MinFS简介

参阅文档:

MinFS项目地址: https://github.com/minio/minfs/

docker的minfs
—————-
https://hub.docker.com/r/sys3/dvp-minfs
https://hub.docker.com/r/sys3/dvp-minfs/tags

minfs的docker部署
——————
https://firepress.org/en/the-complete-guide-to-attach-a-docker-volume-with-minio-on-your-docker-swarm-cluster/


MinFS的介绍

  • MinFS是适用于Amazon S3兼容对象存储服务器的fuse(保险丝或称熔断器)驱动程序
  • MinFS支持最少的配置把现代对象存储转为普通文件系统

MinFS的功能

  • MinFS支持挂载远程存储桶(来自与S3兼容的对象存储)
  • MinFS挂载远程存储桶后可像使用本地目录读取或写入

MinFS的工作原理

  • MinFS使用BoltDB缓存和保存元数据、文件列表、权限、所有者等

MinFS的架构


POSIX兼容性

  • MinFS不是严格符合POSIX标准的文件系统
  • MinFS为需要访问对象存储但不期望严格POSIX兼容的应用程序构建

不适合MinFS的应用程序范例

  • MinFS运行数据库,如Postgres、MySQL等
  • MinFS运行虚拟机,例如Qemu、KVM
  • 运行依赖于POSIX锁、扩展属性操作等丰富的POSIX应用程序

适用于MinFS的应用程序范例

  • Nginx、Apache Web服务器的静态Web内容提供
  • 用于无法使用S3协议的旧备份工具存储

准备MinIO存储服务端

https://blog.youkuaiyun.com/omaidb/article/details/143053662


配置MinFS存储客户端

# 安装fuse依赖
yum install fuse -y

# 下载MinFS安装包
wget https://github.com/minio/minfs/releases/download/v1.0.0/minfs_1.0.0_linux_amd64.rpm

# 安装MinFS软件包
yum install -y minfs_1.0.0_linux_amd64.rpm

修改fuse.conf配置

vim /etc/fuse.conf

取消注释

# 取消注释
user_allow_other


配置MinFS认证文件

# 创建minfs配置目录
mkdir -p /etc/minfs

# 编辑MinFS认证文件
vim /etc/minfs/config.json

配置内容如下:

{
    "version": "1",
    "accessKey": "miniouser",
    "secretKey": "miniouserpwd"
}

手动挂载MinFS测试

# 创建挂载点
mkdir /minfs

# 使用 mount 命令挂载一个名为 minfs 的文件系统
# -t minfs: 指定文件系统类型为 minfs
# -o defaults,cache=/tmp/mybucket: 设置挂载选项,默认选项加上缓存路径为 /tmp/mybucket
# https://minio.cmdschool.org:9000/mybucket: 指定远程存储的 URL(此处的 URL 状态为失败,可能是网络问题或链接本身的问题)
# /minfs: 指定挂载点为本地的 /minfs 目录
mount -t minfs -o defaults,cache=/tmp/mybucket https://192.168.50.141:9000/mybucket /minfs

1.3.4 配置MinFS存储持久化挂载

# 配置持久挂载
vim /etc/fstab

配置内容如下:

# minio远端地址/存储通名称 挂载点名称 文件系统
## _netdev 网络就绪后挂载
http://192.168.50.141:9000/mybucket /minfs minfs defaults,_netdev,cache=/tmp/mybucket 0 0
minio服务器地址/存储桶名称本地挂载点文件系统挂载权限dump文件系统检查
http://192.168.50.141:9000/mybucket/minfsminfsdefaults,_netdev,cache=/tmp/mybucket00
# 挂载/etc/fstab配置
mount -a

测试MinFS挂载

cp /etc/redhat-release /minfs

如果有安装mc的客户端,我们可以使用命令验证,

mc ls minio/mybucket/

可见如下显示,

[2022-06-09 23:26:52 EDT]    38B STANDARD redhat-release

错误排查

# 查看minfs的错误
systemctl status minfs.mount -l

journalctl -u minfs.mount

挂载budeg

mount -t minfs <device_spec> /minfs -o <options>,debug
### 配置 MinIO 持久化存储目录挂载方式 MinIO 是一个高性能的对象存储系统,常用于本地或云环境中提供 S3 兼容的存储服务。为了确保数据在容器重启后不会丢失,需要将 MinIO 的数据目录和配置目录通过 Docker 卷挂载到宿主机上。 #### 使用 `docker run` 命令挂载持久化目录 可以通过 `docker run` 命令启动 MinIO 容器,并使用 `-v` 参数将宿主机的目录挂载到容器中。例如: ```bash docker run -p 9000:9000 -p 9001:9001 \ --name minio \ -v ./data:/data \ -v ./config:/root/.minio \ -e MINIO_ROOT_USER=admin \ -e MINIO_ROOT_PASSWORD=_admin123 \ minio/minio server /data --console-address :9001 ``` 其中: - `-v ./data:/data` 将当前目录下的 `data` 文件夹挂载为容器内的 `/data` 目录,用于存储对象数据。 - `-v ./config:/root/.minio` 将当前目录下的 `config` 文件夹挂载为容器内的 `/root/.minio` 目录,用于保存 MinIO 的配置信息[^1]。 #### 使用 Docker Compose 挂载持久化目录 在生产或开发环境中,通常使用 `docker-compose.yml` 文件来定义和运行多容器应用。以下是一个典型的 Docker Compose 配置示例,展示了如何挂载持久化存储目录: ```yaml version: '3.8' services: minio: image: 'minio/minio:latest' container_name: base-minio ports: - '9000:9000' - '9001:9001' environment: - MINIO_ACCESS_KEY=minio - MINIO_SECRET_KEY=minio@123 volumes: - ./data:/data - ./config:/root/.minio command: server /data --address '0.0.0.0:9000' --console-address '0.0.0.0:9001' restart: unless-stopped ``` 上述配置中,`volumes` 字段定义了两个卷映射关系:宿主机的 `./data` 和 `./config` 分别挂载到容器的 `/data` 和 `/root/.minio` 目录,以实现数据和配置的持久化[^3]。 #### 多磁盘部署场景下的挂载策略 在某些性能要求较高的场景下,可以将多个磁盘挂载到不同的路径,并在 MinIO 中配置多个数据目录,以实现负载均衡和更高的吞吐量。例如,在 Docker Compose 文件中配置如下内容: ```yaml volumes: - ./disk1:/disk1 - ./disk2:/disk2 - ./disk3:/disk3 command: server /disk1 /disk2 /disk3 --console-address :9001 ``` 这种方式可以让 MinIO 在多个磁盘之间分布数据,从而提高存储性能和可靠性[^2]。 #### 确保持久化目录的访问权限 在挂载目录时,需确保容器对挂载点具有读写权限。如果遇到权限问题,可以在启动命令中添加 `--user` 参数指定用户 UID 和 GID,或者直接修改宿主机挂载目录的权限设置。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

教Linux的李老师

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值