很多运维小伙伴给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进行托管,我没有弄。
使用浏览器登录后,就可以看到磁盘大小还有机器配置情况了
重点来了,使用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:///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创建的桶名就可以了
最后就挂载成功了。