【原创】解决minio启动报ERROR Unable to use the drive -- found backend type fs, expected xl or xl-single
【原创】解决minio启动报ERROR Unable to use the drive found backend type fs, expected xl or xl-single
前言
由于minio报了一个安全漏洞(MinIO verify 接口敏感信息泄露漏洞分析(CVE-2023-28432)_minio 漏洞_超酸柠檬的博客-CSDN博客),以至于公司需要升级minio版本,但是我发现使用最新版本的minio后minio无法正常启动了。由于之前就是单机部署,因此这次还是单机部署,结果却启动不起来了。网上找了一圈资料说是换老版本。我真是服了,既然老版本本来就有用我为什么不用老版本……
目前使用的minio版本为:
RELEASE.2023-03-24T21-41-23Z (commit-id=74040b457b50417b58eae7cb17c63428a0e2dd44)
目前(2023年3月30号)官网下载的Linux版本的minio无法启动(坑死我了),我从GitHub上下载的minio最新版本
https://github.com/minio/minio/
https://dl.min.io/server/minio/release/linux-amd64/minio
环境准备
准备好下载完成的minio,并上传到服务器上,我这里使用的是CentOS7.9,进入用户目录,创建一个minio文件夹,将需要的东西全部丢进这个文件夹里
然后创建一个data目录,用于存放minio的文件
使用:
chmod 755 minio
赋予minio可执行权限
使用:
./minio --version > version.log
可以查看minio的当前版本号
问题复现
直接执行:
/home/dct/minio/minio server --console-address "0.0.0.0:9099" --address "0.0.0.0:9098" /home/dct/minio/data > minio.log
结果发现居然正常启动了(默认用户名和密码都是minioadmin)
这可不是我想要的结果啊!!我在服务器上明明启动报错了,报的是:
ERROR Unable to use the drive /home/dct/data/minio: Drive /home/dct/data/minio: found backend type fs, expected xl or xl-single - to migrate to a supported backend visit https://min.io/docs/minio/linux/operations/install-deploy-manage/migrate-fs-gateway.html: Invalid arguments specified
这我可不甘心啊,凭什么我刚装的测试服务器能正常启动,而正式服务器上却启动失败了!!
经过我几次控制变量法测试,发现原来是使用的旧版本的minio的data路径导致的!里面的是旧版本生成的一堆文件,然后导致报错了!
但是文件还是要的啊,不能用一个新的目录就敷衍了事了,看来还是得解决这个问题。
问题解决
其实答案就在报错信息里,请看:https://min.io/docs/minio/linux/operations/install-deploy-manage/migrate-fs-gateway.html
创建minio.service
按照官方解决方案说的,首先创建/etc/systemd/system/minio.service
vi /etc/systemd/system/minio.service
将网页上的那堆信息直接复制进去
注意看一下复制到vi编辑器的结果,别漏东西了
修改其中这些配置项:
AssertFileIsExecutable改为你下载的minio的路径,比如我这边是/home/dct/minio/minio
WorkingDirectory改为旧数据的目录,比如我这边是/home/dct/minio/old-data/minio
User和Group改为当前用户的信息,比如我这边是dct
ExecStart改为minio的启动命令,比如我这边是
/home/dct/minio/minio server --console-address "0.0.0.0:9099" --address "0.0.0.0:9098" /home/dct/minio/old-data/minio
然后:wq保存这个文件
创建/etc/default/minio
vi /etc/default/minio
修改其中的MINIO_ROOT_USER和MINIO_ROOT_PASSWORD,改为你自己的用户名和密码
MINIO_VOLUMES改为你使用数据的目录,比如我这边是/home/dct
这里还发生了一个小插曲,minio的密码要求不能少于8个字符,而我不清楚,为了省事就写了一个6位的密码,结果后面minio.service无论如何都无法启动!!搞了我近2小时,和正式服务器比对配置文件比对了好久,结果通过
journalctl -u minio.service
ERROR Unable to validate credentials inherited from the shell environment: Invalid credentials
才发现是密码问题
然后用:wq保存
使用root用户执行
systemctl start minio.service
即可启动minio
如果启动失败,可以通过systemctl status minio.service和journalctl -u minio.service看一下报错信息,可能需要将MINIO_VOLUMES添加到环境变量后再次试试