很多运维小伙伴给linux系统挂载磁盘的时候都是用nfs或者iscsi磁盘,因为技术成熟而且文档多方便操作,但nfs有个缺点就是当连接主机很多的时候,磁盘io很高的时候就有文件写入失败。导致很多数据备份脚本停滞系统进行被大量占用。所以为了解决这个问题经过反复试验采用minio加s3fs方式完成内网的磁盘挂载备份数据的方式。

minio的安装网上已经有很多文章了可以自行查找,我把我的部署过程做一个记录,本次方案是单机版不是集群部署,只解决单台机器40TB磁盘共享连接多台linux服务器使用。

先启动minio,这个非常简单。下载minio的主程序

下载 wget https://dl.min.io/server/minio/release/linux-amd64/minio

给执行权限 chmod +x minio

在本地写后台运行脚本

#!/bin/bash

export MINIO_ROOT_USER=admin

export MINIO_ROOT_PASSWORD=XXXX

nohup /root/minio server --address ":9000" --console-address ":5000" --config-dir /var/minioconfig /mnt/data > /var/log/minio.log 2>&1 &

脚本说明

export MINIO_ROOT_USER=admin 设置用户名

export MINIO_ROOT_PASSWORD=XXXXX  设置密码

--address ":9000"  多个minio通讯端口

--console-address ":5000"  使用浏览器登录端口

--config-dir /var/minioconfig   设置minio的配置文件存储位置

/mnt/data   本地磁盘的存储的位置,就是共享的40tb磁盘

/var/log/minio.log   minio运行后的日志存储位置

这个脚本是后台运行,也可以使用systemctl进行托管,我没有弄。

使用浏览器登录后,就可以看到磁盘大小还有机器配置情况了

使用minio加s3fs给openeuler添加共享磁盘_oracle

使用minio加s3fs给openeuler添加共享磁盘_后台运行_02

重点来了,使用openeuler不能通过dnf来安装s3fs执行通过编译安装

首先安装编译前需要的工具包

dnf install automake fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel -y

去github拉去文件,我的拉取地址懂得都懂,不懂的粘贴复制就可以了。

git clone https://mirror.ghproxy.com/https://github.com/s3fs-fuse/s3fs-fuse.git

cd s3fs-fuse

  ./autogen.sh

  ./configure

  make && make install

这样就完成了s3fs的编译安装了

先初始化s3fs的密码

echo admin:XXXX > /root/.passwd-s3fs

chmod 600 /root/.passwd-s3fs 

mkdir /var/oraclermanbak

s3fs -o passwd_file=/root/.passwd-s3fs -o url=http://192.168.10.33:9000 -o use_path_request_style oraclermanbak  /var/oraclermanbak/

这样就完成了挂载

-o use_path_request_style  启用不支持的类s3 api的兼容性(必须配置,否则挂载minio存储桶失败)

-o use_path_request_style oraclermanbak 后面加上minio创建的桶名就可以了

最后就挂载成功了。