记录一次FastDFS内部文件迁移过程
场景:dockr部署下的一个DFS环境,切换环境将原DFS内的所有文件全部迁移走,老版本的镜像包现不可使用,所以重新搭建并迁移外挂包下的所有文件
一、定位存储路径及备份
确定容器内存储路径
根据使用的Docker镜像不同,默认存储路径可能为:
/var/fdfs(常见于morunchang/fastdfs镜像)
/var/local/fdfs(部分自定义镜像映射到宿主机路径如~/fastdfs)
通过docker run命令的-v参数可查看宿主机映射路径,例如:-v /data/fastdfs/storage:/var/fdfs
备份文件
使用docker cp命令将容器内文件复制到宿主机本地,或直接备份映射的宿主机目录:
bash
docker cp <容器ID>:/var/fdfs/data /本地备份路径 # 备份数据文件
cp -r /宿主机映射路径/* /备份目录 # 直接复制宿主机映射目录
二、迁移部署与配置调整
新环境部署FastDFS
参考Docker部署流程:
拉取镜像(如delron/fastdfs或morunchang/fastdfs)
启动Tracker服务:
bash
docker run -d --name tracker --net=host -v /新存储路径/tracker:/var/fdfs delron/fastdfs tracker
启动Storage服务并关联Tracker:
bash
docker run -d --name storage --net=host -e TRACKER_SERVER=新IP:22122 -v /新存储路径/storage:/var/fdfs delron/fastdfs storage
配置文件同步
修改Storage的storage.conf:更新tracker_server为新环境IP,例如:
ini
tracker_server = 新IP:22122
同步client.conf中的Tracker地址,确保客户端指向正确节点。
数据迁移与恢复
将备份的data目录复制到新容器的映射路径(如/新存储路径/storage/data)
若涉及IP变更,需修改sync目录下的.mark文件(如将旧IP标记替换为新IP)
三、服务验证与测试
重启服务
bash
docker restart tracker storage
systemctl restart docker # 确保Docker服务正常
功能测试
上传测试:进入容器执行上传命令验证存储功能:
bash
docker exec -it storage /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /tmp/test.txt
访问测试:通过Nginx代理访问文件URL(如http://新IP:8888/group1/M00/…)
日志检查
查看Tracker和Storage日志,排查路径或网络问题:
bash
docker logs tracker # 检查调度服务状态
docker logs storage # 查看存储节点同步情况