问题起因:同事接zf通知,说我们的项目综合评估资源使用率较低,需要配合缩容,其中有一项要缩现在的磁盘大小。。
因为之前迁移docker失败过一次,没有总结原因,所以这次操作线上缩容,还是很谨慎的。
第一步 停服
把所有的编排文件写了个批量的命令,统一down掉,然后关闭docker程序
##批量停止
docker-compose -f XXX.yml down /
&& docker-compose -f XXX.yml down /
...
&& docker-compose -f XXX.yml down
##停止docker进程
systemctl stop docker
然后将所有文件迁移至新的目录(我查看了文件大小后,选择了在根目录新建一个备份目录)
##创建备份目录
mkdir /back
##将文件迁移到新目录
mv /path/* /back/
然后自信满满的去卸载挂载目录,发现提示
根据提示 说设备正忙,所以用lsof看下情况
##查看当前目录被哪个进程使用 path要换成你自己要查的目录哦~
lsof |grep /path
然后发现docker还有进程在占用,我也是艺高人胆大,直接kill掉了进程,发现docker..socket是自启动的,于是查阅了相关资料,发现可以通过systemctl来停止。
##停止docker进程
systemctl stop docker
##停止docker.socket进程
systemctl stop docker.socket
这里科普一下,不然我以后也会忘记啊哈哈
docker.socket是Docker守护进程的Unix Socket。它允许用户通过Unix套接字与Docker守护进程进行交互,从而管理和操作Docker容器。例如,用户可以通过docker命令行工具将容器启动、停止、删除等操作发送给Docker守护进程。docker.socket还可以设置为systemd服务的依赖项,以确保Docker守护进程在系统启动时自动启动。
关掉了docker所有的进程后,再次umount路径,发现正常卸载,后面就是大家熟悉的过程了
##查看分区
fdisk -l
##新建分区
fdisk /dev/sdc
n
p
1
回车
回车
w
##格式化
mkfs -t ext4 /dev/sdc1
##挂载
mount /dev/sdc1 /path
然后吧备份路径的文件弄回去,启动docker 启动成功 完美~