背景

目前 Ubuntu 系统位于一块 512GB 的固态硬盘上,系统根目录 / 位于该盘,/opt 目录挂载在一块 2TB 的固态硬盘上。现在希望将 2TB 固态用作新的系统盘,并保持原有的系统设置、已安装软件和驱动。

注意事项

由于涉及硬盘维护,建议在操作前先备份数据。我使用了一块 20TB 的机械硬盘将 /opt 目录的数据进行迁移备份,确保数据安全。

实际操作步骤

1. 迁移前准备

关闭服务

在 Ubuntu 系统中,许多服务依赖 /opt 目录,例如 Docker 的 containerd 目录。因此,在进行调整前,建议关闭相关服务并重启系统,确保操作期间不会受到其他服务的干扰。

关闭 Docker 服务:

sudo systemctl disable docker
sudo service docker stop

2. 迁移 /opt 数据

由于 /opt 目录下的数据约有 1TB,且机械硬盘的写入速度为 240MB/s,因此此过程会较为耗时。

执行以下命令,将 /opt 数据迁移到新的路径:

mv /opt /data/opt_bak

3. 查看硬盘信息

使用 fdisk 查看当前系统中的硬盘信息:

sudo fdisk -l

典型输出示例:

Disk /dev/nvme1n1: 476.94 GiB, 512GB
Disk /dev/nvme0n1: 1.86 TiB, 2TB

4. 卸载 /opt 挂载点

由于 2TB 盘当前挂载在 /opt,需要先卸载:

umount /opt

5. 格式化 2TB 新硬盘

格式化 2TB 的固态硬盘为 ext4 文件系统:

sudo mkfs.ext4 /dev/nvme0n1

6. 更新挂载设置

如有必要,取消自动挂载 /opt,编辑 /etc/fstab 文件并删除或修改相关挂载条目:

sudo vim /etc/fstab

7. 迁移原系统数据到 2TB 新硬盘

使用 dd 命令将原系统盘(512GB)中的数据复制到 2TB 新硬盘:

sudo dd if=/dev/nvme1n1 of=/dev/nvme0n1 bs=16M status=progress

完成后,重启系统并从新的硬盘启动。

8. 扩展分区至完整容量

重启后,系统可能会显示新硬盘的容量仍为原来大小(512GB),此时需要手动扩展分区。

安装 gparted 工具:

sudo apt update
sudo apt install gparted parted

使用 gparted 扩展分区至 2TB 完整容量。

9. 恢复 /opt 目录

迁移完成并扩容后,将之前备份的 /opt 目录恢复:

sudo mv /data/opt_bak /opt

通过该操作,新的固态硬盘将成为系统盘,并保留原有的系统配置和软件。