温馨提示×

Ubuntu如何进行分区迁移

小樊
45
2025-11-22 14:42:39
栏目: 智能运维

Ubuntu 分区迁移与扩容实操指南

一、场景与准备

  • 适用场景
    • 同盘内调整分区大小(如给 //home 扩容/缩容)
    • 将系统迁移到更大或更小的硬盘(整盘克隆或分区对分区复制)
    • /home/var 迁移到独立新盘
  • 关键准备
    • 备份重要数据;准备 Ubuntu 安装U盘,在“Try Ubuntu”环境中操作
    • 确认分区布局与文件系统(如 ext4、btrfs、xfs),记录各分区 UUID
    • 使用 GParted 进行可视化分区管理(安装:sudo apt install gparted)
    • 迁移前关闭交换分区:sudo swapoff -a;涉及系统分区时建议全程在 Live 环境执行

二、同盘分区扩容或迁移到新位置

  • 方案A(推荐)使用 GParted 在线/离线调整
    • 在“Try Ubuntu”中打开 GParted,对目标分区执行“Resize/Move”,应用操作;根分区需离线调整(Live 环境)
    • 扩容后检查并修复文件系统:sudo e2fsck -f /dev/sdXn;随后可扩展文件系统以占满分区
  • 方案B 文件级迁移(更安全、可回滚)
    • 挂载新分区到临时目录(如 /mnt/new),用 rsync 或 cp 迁移数据:
      • rsync -aAX --info=progress2 /home/ /mnt/new/
    • 备份旧目录并重命名:sudo mv /home /home.old;创建新挂载点:sudo mkdir /home
    • 获取新分区 UUID:sudo blkid;在 /etc/fstab 中新增条目(示例):
      • UUID=xxxx-xxxx /home ext4 defaults 0 2
    • 验证:mount -a、df -h;确认无误后删除 /home.old
  • 方案C 缩小分区再创建新分区(适用于从现有盘中“拆出”/home)
    • 先对原分区做离线检查与缩小文件系统(如 ext4 的 resize2fs),再在 GParted 中缩小分区;随后在未分配空间上创建新分区并格式化,最后按方案B迁移数据并更新 /etc/fstab

三、整盘迁移到新硬盘(系统盘克隆)

  • 分区布局准备
    • 在新盘上用 GParted 建立与旧盘一致的布局(含 //home/boot/efiswap 等);若新盘更大,可先按旧盘大小创建分区,后续再扩容
  • 分区对分区克隆(保持 UUID,最省事)
    • 逐分区复制(示例):
      • sudo dd if=/dev/sda1 of=/dev/sdb1 bs=64K conv=noerror,sync status=progress
    • 复制 swap 后需重建签名:sudo mkswap /dev/sdbX;并在 /etc/fstab 中更新为新分区的 UUID(用 blkid 查询)
  • 引导修复
    • 启动到 Live 环境,安装并运行 Boot-Repair
      • sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt update && sudo apt install -y boot-repair
      • boot-repair(选择推荐修复或“Advanced Options”,指定新盘/EFI 分区)
  • 扩容未分配空间
    • 在 GParted 中对新盘上已复制的分区执行“Resize/Move”,将 /home/ 扩展到未分配空间;应用后执行文件系统检查

四、常见问题与修复

  • 启动失败或找不到根分区
    • 进入 Live 环境,挂载新盘的根分区并 chroot,重装 GRUB:
      • sudo mount /dev/sdY1 /mnt
      • sudo mount --bind /dev /mnt/dev; sudo mount --bind /proc /mnt/proc; sudo mount --bind /sys /mnt/sys
      • sudo chroot /mnt
      • grub-install /dev/sdY && update-grub
      • 若有独立 EFI 分区(如 /dev/sdY2):mount /dev/sdY2 /mnt/boot/efi;grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
  • 克隆后 swap 仍是旧盘大小
    • 关闭旧 swap:sudo swapoff /dev/sdXn;对新 swap 分区执行 sudo mkswap /dev/sdYn;在 /etc/fstab 中替换为新 UUID
  • 新盘出现未分配空间
    • 在 GParted 中选中对应分区执行“Check/修复”,随后“Resize/Move”扩展分区以利用未分配空间
  • 使用文件级迁移后某些程序找不到家目录
    • 检查 /etc/fstab 挂载是否正确、权限是否一致;确认用户目录属主:sudo chown -R $USER:$USER /home/$USER

五、关键命令速查表

目的 命令示例
查看分区与 UUID sudo blkid;lsblk -f
关闭/开启交换 sudo swapoff -a;sudo swapon -a
分区对分区克隆 sudo dd if=/dev/sda1 of=/dev/sdb1 bs=64K conv=noerror,sync status=progress
重建 swap 签名 sudo mkswap /dev/sdXn
文件级迁移 rsync -aAX --info=progress2 /home/ /mnt/new/
编辑 fstab sudo nano /etc/fstab(UUID 方式挂载)
引导修复 boot-repair;或 chroot 后 grub-install + update-grub
文件系统检查 sudo e2fsck -f /dev/sdXn

提示

  • 操作前务必备份;对系统盘进行写操作(尤其 dd、resize2fs)存在数据丢失风险
  • 若使用 LVM/Btrfs/ZFS 等高级文件系统,请使用对应工具(如 lvextend、btrfs filesystem resize、zpool online -e),流程与本文的 ext4 示例不同
  • 在 UEFI 机器上,确保 /boot/efi 分区正确挂载且 GRUB 安装到目标磁盘的 EFI 分区(–efi-directory)

0