先执行看
lsblk
如果磁盘空间不足,并且你希望先将现有的 /data 数据复制到一个新挂载的磁盘(暂时挂载为 /data_db),再卸载原来的 /data,并最终将新的磁盘挂载为 /data,可以按照以下步骤操作:
- 准备新磁盘并挂载为 /data_db
假设你已经有一个新磁盘(如 /dev/vdb
)我这里是vdb类型,我们先将它挂载到 /data_db。
格式化新磁盘(如果需要):
sudo mkfs.ext4 /dev/vdb
创建挂载点:
sudo mkdir /data_db
挂载新磁盘到 /data_db:
sudo mount /dev/vdb /data_db
- 复制 /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
- 挂载新磁盘为 /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
- 验证挂载
使用以下命令验证新磁盘是否正确挂载到 /data:
df -h /data
- 确认数据完整性
确保所有的数据从 /data_db 复制到 /data 后没有丢失。可以再次检查 /data 目录中的文件是否完整。
如果一切正常,你可以删除 /data_db 目录中的数据,或者选择保留它作为备份。
sudo rm -rf /data_db/*
或者,如果不再需要 /data_db,你可以完全删除它:
sudo rmdir /data_db
主要的
docker 默认数据目录迁移 /data 保留原份
要将 Docker 的默认数据目录迁移到新的位置(比如 /data),并且保留原有数据,可以按照以下步骤进行操作:
- 停止 Docker 服务
首先,停止 Docker 服务,以确保没有正在运行的容器或进程。
sudo systemctl stop docker
- 创建新的数据目录
确保新目录 /data 存在。如果没有,创建它。
sudo mkdir -p /data
- 复制现有数据到新目录
将 Docker 的原数据目录内容(通常位于 /var/lib/docker)复制到新位置 /data。可以使用 rsync 或 cp 命令。
sudo rsync -aP /var/lib/docker/ /data/
- 修改 Docker 配置文件
编辑 Docker 的配置文件,告诉 Docker 使用新的数据目录。Docker 的配置文件通常位于 /etc/docker/daemon.json。如果没有该文件,可以手动创建。
sudo vi /etc/docker/daemon.json
在文件中添加如下内容:
{
"data-root": "/data/docker"
}
- 重新启动 Docker 服务
修改完成后,重新启动 Docker 服务以使配置生效
sudo systemctl start docker
- 验证数据目录
检查 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下保证服务先正常使用。