linux添加新硬盘挂载分区和数据迁移
linux添加新硬盘挂载分区和数据迁移
添加硬盘和挂载分区
开始前,停止所有与迁移数据目录相关的服务和容器
systemctl stop nginx
systemctl stop docker
# 关闭自启动,防止重启后有新的请求进入到服务
systemctl disable nginx
systemctl disable docker
- 查看现有分区
lsblk
看出这里只有一个系统盘vda(虚拟环境的系统都是以vdX命名,例如云服务器,物理设备是以sdX命名)
# 查看硬盘是ssd还是hdd,rota为1表示可旋转的hdd,0为ssd
lsblk -d -o name,rota
# 或者
cat /sys/block/vda/queue/rotational
- 增加后再次执行lsblk会增加一个类似vdb命名的硬盘
- 开始挂载分区
# 创建分区
fdisk /dev/vdb
# 在fdisk中: n(新建分区)->p(主分区)->1(分区号)->(默认起始扇区)->(默认结束扇区)->w(保存)
保存之后执行
fdisk -l
查看新建的分区vdb1
- 格式化分区
# 高io推荐xfs
mkfs.xfs /dev/vdb1
- 开始挂载分区
# 新建挂载目录
mkdir /mnt/vdb1
# 临时挂载
mount /dev/vdb1 /mnt/vdb1
# 永久挂载
echo "UUID=$(sudo blkid -s UUID -o value /dev/vdb1) /mnt/vdb1 xfs defaults 0 0" | sudo tee -a /etc/fstab
重启执行lsblk
验证
迁移数据
- 拷贝数据
# 复制数据到新磁盘
rsync -avzh --progress /docker_v/ /mnt/vdb1/docker_v/
# 验证数据完整性,如果无输出,表示完全一致
diff -r /docker_v/ /mnt/vdb1/docker_v/
- 重启容器服务
- 2.1 方式一、使用软连接方式(生产环境优选)
# 确保软链接的目标目录权限与原目录一致
chown -R root:root /mnt/vdb1/docker_v
# 重命名原目录(保险操作)
sudo mv /docker_v /docker_v_old
# 创建软连接
ln -sf /mnt/vdb1/docker_v /docker_v
优点
快速无缝迁移:容器无需修改配置,所有路径保持不变
缺点
若软链接被误删或新磁盘挂载失败,或目录权限被更改,Docker 将无法访问数据。
- 2.2 方式二、修改容器挂载目录方式(建议开发测试环境采用)
- 修改容器配置,提前记录好每个容器主要参数,如原挂载信息,端口映射,网络模式,镜像版本等(使用
docker inspect <容器名>
查看,最好保存到文档) - 删除容器(不删数据卷)
docker rm <容器名>
- 重新创建容器,将挂载路径改为新目录
-v /mnt/vdb1/docker_v/?:/path/in/container
(同时留意该容器其他启动参数是否正确)
优点
直接管理数据路径,降低复杂度避免误操作更稳定,灵活性高。
缺点
操作繁琐,需修改容器配置
- 测试检查
#启动docker容器和相关服务测试有无问题
systemctl start docker
systemctl start nginx
# 无问题,恢复自启动
systemctl enable nginx
systemctl enable docker