前言:第一次在这里记录,各位大佬请指正,感谢!后续会将个人之前遇到的坑都记录在这里,大家共同交流学习。
一、minio服务器磁盘耗尽
1)docker服务启动异常
命令:systemctl start docker
异常信息:Authorization not available. Check if polkit service is running or see debug message for more information.
解决方案:
1、查看磁盘使用情况,命令:df -h ,结果如下,磁盘 /dev/vda1已满 ,新挂载一块磁盘 /dev/vdb。
可以删除一些日志文件,释放部分空间。
2、查看内存使用情况,命令:free -h,结果如下,可以看到爆满
在此,粗暴的执行了释放内存命令(前提是确保机器没有其它应用)
[root@VM_129_70_linux containerd]# sync
[root@VM_129_70_linux containerd]# echo 3 > /proc/sys/vm/drop_caches
3、查看docker配置,命令:cat /usr/lib/systemd/system/docker.service,没有异常,在这里还折腾重装了docker,结果依然是又报错,但是查看docker状态已经是running,所以继续往下解决其它问题。 命令:systemctl status docker -l
2)minio启动报错
[root@VM_129_70_linux containerd]# docker run -d -p 9000:9000 -p 9090:9090 -- name=minio --restart=always -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=1234" -v /home/data:/data -v /home/config:/root/.minio minio/minio server /data --console-address ":9090" --address ":9000"
1fe8c75f59d9c87838bdbadb70357beb500d1ea8408b67b371a88f28a987861d
docker: Error response from daemon: failed to start shim: start failed: io.containerd.runc.v2: open /run/docker/containerd/daemon/io.containerd.runtime.v2.task/moby/1fe8c75f59d9c87838bd badb70357beb500d1ea8408b67b371a88f28a987861d/.address: no such file or directory: exit status 1: unknown.
表象是容器下面的.address 文件不存在,即创建失败,到对应目录下看1fe8c75f59d9 容器文件夹都没有创建。
查看docker状态(systemctl status docker -l),找到如下报错日志:
Jan 27 16:51:41 VM_129_70_linux dockerd[3450]: time="2024-01- 27T16:51:41.154845492+08:00" level=error msg="copy shim log" error="read /proc/self/fd/14: file already closed"
Jan 27 16:51:41 VM_129_70_linux dockerd[3450]: time="2024-01-27T16:51:41.155256573+08:00" level=error msg="stream copy error: reading from a closed fifo"
Jan 27 16:51:41 VM_129_70_linux dockerd[3450]: time="2024-01-27T16:51:41.155295978+08:00" level=error msg="stream copy error: reading from a closed fifo"
Jan 27 16:51:41 VM_129_70_linux dockerd[3450]: time="2024-01-27T16:51:41.254273868+08:00" level=error msg="1fe8c75f59d9c87838bdbadb70357beb500d1ea8408b67b371a88f28a987861d cleanup: failed to delete container from cont... such container
原因出现在 /proc/self/fd/14,网上找了很多资料,这个问题始终没有解决。最后联想到前面内存和磁盘空间爆满,意识到是进程管道相关异常了,系统在资源管理已经存在缺失,决定联系管理员重启机器赌一把。结果是:问题得到解决,docker启动和文件流关闭的问题都正常了。
二、minio文件目录迁移
1、下载和安装mc客户端
由于是内网环境,mc是本地下载完成后上传到机器的,下载地址:
https://dl.min.io/client/mc/release/linux-amd64/mchttps://dl.min.io/client/mc/release/linux-amd64/mc
安装:
chmod a+x mc
mv mc /usr/local/bin/
mv --version
2、启动两个minio服务
//源服务
docker run -d -p 9000:9000 -p 9090:9090 --name=minio-old --restart=always -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=1234" -v /home/data:/data -v /home/config:/root/.minio minio/minio server /data --console-address ":9090" --address ":9000"
//目标服务
docker run -d -p 9003:9003 -p 9093:9093 --name=minio-new --restart=always -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=1234" -v /data/minio:/data -v /home/config:/root/.minio minio/minio server /data --console-address ":9093" --address ":9003"
3、mc添加服务
mc alias set minio-old http://127.0.0.1:9000 admin 1234
mc alias set minio-new http://127.0.0.1:9003 admin 1234
4、执行迁移脚本
mc mirror minio-old minio-new
执行的是全量迁移,可以根据不同场景选择迁移脚本,参考脚本如下:
#1. 全量迁移,重名文件不覆盖,如bucket不存在,会自动创建
mc mirror minio-old minio-new
#2. 只迁移某个bucket,以test为例,迁移的目标bucket需要提前创建
mc mirror minio-old/test minio-new/test #test要提前在minio-new中创建
#3. 加上--overwrite参数,覆盖重名文件
mc mirror --overwrite minio-old minio-new
mc mirror --overwrite minio-old/test minio-new/test
5、重新指定文件目录
将新的minio服务指向原有端口,之前的应用就可以无感访问了。
指向新的服务后,很多资源不可访问,报错Access Denied
解决方案:
1)查看了nginx配置和防火墙相关配置,均无异常。
2)后来发现是桶的权限变成了private,通过控制台更改成public即可正常访问。暂不清楚迁移为什么会改变访问权限。
最后问题得到圆满解决,继续探索~