云计算百科
云计算领域专业知识百科平台

手把手教你把服务器数据文件迁移到服务器其他磁盘内

有部分小伙伴把服务直接部署在系统盘内,占用了大量的系统盘空间,需要定期清理服务产生的日志文件很麻烦,接下来我就以docker服务为例,做一下数据迁移。

📦 通过软链接(安全且无损)

1. 停止 Docker 服务

bash

sudo systemctl stop docker

2. 备份原数据(重要!)

bash

sudo cp -a /var/lib/docker /var/lib/docker.bak

3. 迁移数据到数据盘

bash

# 创建目标目录
sudo mkdir -p /data/docker

# 复制数据(保留权限)
sudo rsync -avxP /var/lib/docker/ /data/docker/

说明:使用 rsync 比 mv 更安全,可避免数据丢失

4. 重命名原目录(作为临时备份)

bash

sudo mv /var/lib/docker /var/lib/docker.old

5. 创建软链接

bash

sudo ln -s /data/docker /var/lib/docker

6. 修复 SELinux 上下文(如果启用 SELinux)

bash

sudo restorecon -Rv /var/lib/docker

7. 启动 Docker 并验证

bash

sudo systemctl start docker
docker info | grep "Docker Root Dir" # 应显示 /data/docker
docker ps -a # 检查容器状态
docker images # 检查镜像是否正常

8. 确认无误后清理(谨慎操作)

bash

# 运行3-4天确认无问题后
sudo rm -rf /var/lib/docker.old
sudo rm -rf /var/lib/docker.bak


⚠️ 关键注意事项

  • 磁盘空间要求

    • 确保 /data 有足够空间容纳整个 /var/lib/docker

    • 建议预留 20% 以上空间供 Docker 使用

  • 软链接权限
    确保软链接的权限一致:

    bash

    ls -ld /var/lib/docker # 应显示 lrwxrwxrwx … /var/lib/docker -> /data/docker

  • 挂载点配置
    确保 /data 在 /etc/fstab 中配置了自动挂载,避免重启后失效:

    bash

    # 查看 /data 的文件系统类型
    df -Th /data

    # 示例 /etc/fstab 条目(根据实际情况修改)
    /dev/sdb1 /data xfs defaults 0 0

  • 容器存储驱动兼容性
    如果使用特定存储驱动(如 btrfs, zfs),需确保目标文件系统支持


  • 🔄 替代方案:修改 Docker 配置(更推荐)

    如果担心软链接的兼容性问题,可以直接修改 Docker 数据目录:

  • 编辑配置文件:

  • bash

    sudo mkdir /etc/docker
    sudo tee /etc/docker/daemon.json <<EOF
    {
    "data-root": "/data/docker"
    }
    EOF

  • 移动数据:

  • bash

    sudo systemctl stop docker
    sudo mv /var/lib/docker/* /data/docker/
    sudo systemctl start docker


    💡 迁移后管理建议

  • 定期清理

    bash

    # 自动清理无用数据
    docker system prune -af

  • 日志管理
    在 daemon.json 添加日志限制:

    json

    {
    "log-driver": "json-file",
    "log-opts": {
    "max-size": "10m",
    "max-file": "3"
    }
    }

  • 监控磁盘
    添加监控告警,当 /data 使用率 >80% 时触发通知

  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » 手把手教你把服务器数据文件迁移到服务器其他磁盘内
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!