Ubuntu 系统增加磁盘并迁移数据 — 完整方案
·
基于 Ubuntu 实际操作经验整理
日期:2026-04-30
一、场景
- 系统盘(SSD)空间不足,需要利用大容量机械硬盘扩展存储
- 需要迁移 /home、/var 等目录到新磁盘
- 使用 LVM 实现灵活分区管理
二、前提条件
- Ubuntu 24.04 或类似版本
- 新磁盘已物理连接(如 /dev/sdc)
- 已有系统盘包含 root (/) 和 /boot/efi,不需要动系统盘
- 新磁盘上的数据已备份(如有)
三、操作步骤
步骤 1:安装 LVM 工具
sudo apt update
sudo apt install lvm2 -y
步骤 2:确认磁盘信息
# 查看所有磁盘
lsblk -f
# 查看磁盘详情
sudo fdisk -l /dev/sdc
# 确认磁盘无重要数据(或已备份)
步骤 3:清空磁盘
# 卸载所有分区(如有挂载)
sudo umount /dev/sdc*
# 清除分区表
sudo wipefs -a /dev/sdc
sudo sgdisk --zap-all /dev/sdc
# 确认清空
sudo fdisk -l /dev/sdc
# 应显示:Disklabel type: gpt, 无分区
步骤 4:创建分区
# 使用 parted 创建 GPT 分区
sudo parted /dev/sdc -- mklabel gpt
sudo parted /dev/sdc -- mkpart primary ext4 0% 100%
# 或只使用部分空间(如 1TB),剩余空间留给未来扩展
sudo parted /dev/sdc -- mkpart primary ext4 0% 1TB
# 确认分区
sudo fdisk -l /dev/sdc
步骤 5:创建 LVM
# 5.1 创建物理卷 (PV)
sudo pvcreate /dev/sdc1
# 5.2 创建卷组 (VG)
sudo vgcreate vg-hys /dev/sdc1
# 5.3 查看卷组容量
sudo vgs
# 5.4 创建逻辑卷 (LV)
# 格式:sudo lvcreate -L <大小> -n <名称> <卷组名>
sudo lvcreate -L 400G -n lv-docker vg-hys
sudo lvcreate -L 200G -n lv-data vg-hys
sudo lvcreate -L 100G -n lv-home vg-hys
sudo lvcreate -L 50G -n lv-var vg-hys
sudo lvcreate -L 50G -n lv-backup vg-hys
# 5.5 查看所有逻辑卷
sudo lvs
步骤 6:格式化
# 所有逻辑卷格式化为 ext4
sudo mkfs.ext4 /dev/vg-hys/lv-docker
sudo mkfs.ext4 /dev/vg-hys/lv-data
sudo mkfs.ext4 /dev/vg-hys/lv-home
sudo mkfs.ext4 /dev/vg-hys/lv-var
sudo mkfs.ext4 /dev/vg-hys/lv-backup
步骤 7:创建挂载点
sudo mkdir -p /mnt/new-docker
sudo mkdir -p /mnt/new-data
sudo mkdir -p /mnt/new-home
sudo mkdir -p /mnt/new-var
sudo mkdir -p /mnt/new-backup
步骤 8:挂载
sudo mount /dev/vg-hys/lv-docker /mnt/new-docker
sudo mount /dev/vg-hys/lv-data /mnt/new-data
sudo mount /dev/vg-hys/lv-home /mnt/new-home
sudo mount /dev/vg-hys/lv-var /mnt/new-var
sudo mount /dev/vg-hys/lv-backup /mnt/new-backup
# 确认挂载
df -h
步骤 9:迁移数据
# 9.1 停止相关服务
sudo systemctl stop snapd
sudo systemctl stop docker # 如果已有 Docker
# 9.2 迁移 /var(排除 snapd 数据)
sudo rsync -avxHAX /var/ /mnt/new-var/ \
--exclude='/var/lib/snapd' \
--exclude='/var/lib/docker'
# 9.3 迁移 /home
sudo rsync -avxHAX /home/ /mnt/new-home/
# 9.4 验证数据
du -sh /var/ /mnt/new-var/
du -sh /home/ /mnt/new-home/
步骤 10:配置 fstab(UUID 绑定)
# 10.1 获取各逻辑卷的 UUID
sudo blkid /dev/vg-hys/lv-docker
sudo blkid /dev/vg-hys/lv-data
sudo blkid /dev/vg-hys/lv-home
sudo blkid /dev/vg-hys/lv-var
sudo blkid /dev/vg-hys/lv-backup
# 10.2 备份当前 fstab
sudo cp /etc/fstab /etc/fstab.bak
# 10.3 编辑 fstab,添加以下内容
sudo nano /etc/fstab
# 添加(替换 UUID 为实际值):
# UUID=xxxx-xxxx /var/lib/docker ext4 defaults 0 2
# UUID=xxxx-xxxx /data ext4 defaults 0 2
# UUID=xxxx-xxxx /home ext4 defaults 0 2
# UUID=xxxx-xxxx /var ext4 defaults 0 2
# UUID=xxxx-xxxx /backup ext4 defaults 0 2
# 10.4 验证 fstab 语法
sudo findmnt --verify --tab-file /etc/fstab
步骤 11:切换挂载点
# 11.1 卸载临时挂载点
sudo umount /mnt/new-docker
sudo umount /mnt/new-data
sudo umount /mnt/new-home
sudo umount /mnt/new-var
sudo umount /mnt/new-backup
# 11.2 备份原目录(可选)
sudo mv /var /var.old
sudo mv /home /home.old
# 11.3 重新创建目录(fstab 挂载需要空目录)
sudo mkdir /var
sudo mkdir /home
sudo mkdir /data
sudo mkdir /backup
sudo mkdir -p /var/lib/docker
# 11.4 挂载所有 fstab 条目
sudo mount -a
# 11.5 确认挂载成功
df -h
mount | grep vg-hys
步骤 12:重启验证
# 12.1 重启系统
sudo reboot
# 12.2 重启后检查
df -h # 确认 LVM 挂载正常
ls /home/ # 确认数据存在
ls /var/ # 确认数据存在
sudo lvs # 确认 LVM 状态
sudo vgs # 确认卷组状态
步骤 13:清理旧数据(可选)
# 确认一切正常后,删除旧目录
sudo rm -rf /var.old
sudo rm -rf /home.old
四、LVM 扩容(后续扩展)
# 如果之前只用了部分磁盘空间,后续可以扩展
# 4.1 创建新分区(使用剩余空间)
sudo parted /dev/sdc -- mkpart primary ext4 1TB 100%
# 4.2 创建新物理卷
sudo pvcreate /dev/sdc2
# 4.3 扩展卷组
sudo vgextend vg-hys /dev/sdc2
# 4.4 扩展逻辑卷(如 docker 增加 200G)
sudo lvextend -L +200G /dev/vg-hys/lv-docker
sudo resize2fs /dev/vg-hys/lv-docker
五、注意事项
| 事项 | 说明 |
|---|---|
| 系统盘不动 | root (/) 和 /boot/efi 保持在原 SSD 上 |
| UUID 绑定 | 必须用 blkid 获取 UUID,不要用 /dev/mapper 路径 |
| rsync 参数 | -avxHAX 保留所有权限、属性、硬链接 |
| 服务停止 | 迁移前停止 snapd、docker 等服务 |
| fstab 验证 | 用 findmnt 验证语法,避免重启无法启动 |
| 保留旧数据 | 确认新挂载正常后再删除旧目录 |
| snapd 处理 | snap 数据不迁移,重启后自动重建 |
六、实际案例参考
hys (172.18.6.6) 配置:
| 组件 | 值 |
|---|---|
| 磁盘 | WDC WD20EZAZ-00G 1.82T (/dev/sdc) |
| 分区 | sdc1: 1TB (剩余 820GB 未分配) |
| 卷组 | vg-hys (931.32G) |
| 逻辑卷 | docker(400G), data(200G), home(100G), var(50G), backup(50G) |
| 文件系统 | ext4 |
| 迁移数据 | /var(14G→1.4G), /home(30G→31G) |
更多推荐


所有评论(0)