前言:第一次在这里记录,各位大佬请指正,感谢!后续会将个人之前遇到的坑都记录在这里,大家共同交流学习。

一、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即可正常访问。暂不清楚迁移为什么会改变访问权限。

最后问题得到圆满解决,继续探索~