Bootstrap

linux服务器系列数据盘挂载并迁移旧数据,无停机切换。

先执行看

lsblk

在这里插入图片描述
如果磁盘空间不足,并且你希望先将现有的 /data 数据复制到一个新挂载的磁盘(暂时挂载为 /data_db),再卸载原来的 /data,并最终将新的磁盘挂载为 /data,可以按照以下步骤操作:

  1. 准备新磁盘并挂载为 /data_db
    假设你已经有一个新磁盘(如 /dev/vdb)我这里是vdb类型,我们先将它挂载到 /data_db。
    格式化新磁盘(如果需要):
sudo mkfs.ext4 /dev/vdb

创建挂载点:

sudo mkdir /data_db

挂载新磁盘到 /data_db:

sudo mount /dev/vdb /data_db
  1. 复制 /data 数据到 /data_db
    将 /data 中的数据复制到新磁盘挂载的 /data_db 目录。

使用 rsync 复制数据:

sudo rsync -av --progress /data/ /data_db/

这将把所有 /data 目录下的文件复制到 /data_db,并保留文件的权限和属性。
3. 卸载原有磁盘
假设原有 /data 磁盘已经没有足够空间,接下来你可以卸载原有的磁盘。
确认 /data 没有被其他进程使用:

lsof +D /data

卸载 /data 磁盘:

sudo umount /data
  1. 挂载新磁盘为 /data
    在此步骤之前,确保新磁盘(原先挂载到 /data_db 的磁盘)可以挂载到 /data。
    卸载 /data_db:
sudo umount /data_db

修改 /etc/fstab,以确保新磁盘能够在系统启动时挂载到 /data。

sudo vi /etc/fstab

添加一行来指定新的挂载配置(假设新磁盘是 /dev/vdb):

/dev/vdb /data ext4 defaults 0 2

保存并退出。
挂载新磁盘到 /data:

sudo mount /dev/vdb /data
  1. 验证挂载
    使用以下命令验证新磁盘是否正确挂载到 /data:
df -h  /data
  1. 确认数据完整性
    确保所有的数据从 /data_db 复制到 /data 后没有丢失。可以再次检查 /data 目录中的文件是否完整。
    如果一切正常,你可以删除 /data_db 目录中的数据,或者选择保留它作为备份。
sudo rm -rf /data_db/*

或者,如果不再需要 /data_db,你可以完全删除它:

sudo rmdir /data_db

主要的
docker 默认数据目录迁移 /data 保留原份
要将 Docker 的默认数据目录迁移到新的位置(比如 /data),并且保留原有数据,可以按照以下步骤进行操作:

  1. 停止 Docker 服务
    首先,停止 Docker 服务,以确保没有正在运行的容器或进程。
sudo systemctl stop docker
  1. 创建新的数据目录
    确保新目录 /data 存在。如果没有,创建它。
sudo mkdir -p /data
  1. 复制现有数据到新目录
    将 Docker 的原数据目录内容(通常位于 /var/lib/docker)复制到新位置 /data。可以使用 rsync 或 cp 命令。
sudo rsync -aP /var/lib/docker/ /data/
  1. 修改 Docker 配置文件
    编辑 Docker 的配置文件,告诉 Docker 使用新的数据目录。Docker 的配置文件通常位于 /etc/docker/daemon.json。如果没有该文件,可以手动创建。
sudo vi /etc/docker/daemon.json

在文件中添加如下内容:

{
  "data-root": "/data/docker"
}

  1. 重新启动 Docker 服务
    修改完成后,重新启动 Docker 服务以使配置生效
sudo systemctl start docker

  1. 验证数据目录
    检查 Docker 是否成功使用了新的数据目录,并且数据是否完整。
docker info | grep "Docker Root Dir"

它应该显示新的数据目录路径 /data/docker。
7. 删除原数据目录(可选)谨慎操作
如果确认迁移成功并且不再需要旧的 /var/lib/docker 目录,可以删除它来释放磁盘空间。

sudo rm -rf /var/lib/docker

这样,你就完成了 Docker 默认数据目录的迁移,同时保留了原目录的数据。

如果启动失败。
只需要
sudo vi /etc/docker/daemon.json 进行删除 然后重启docker 恢复到之前的状态 ,清理/var/log下保证服务先正常使用。

;