基于 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)

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐