工位机器——硬盘更换计划
Ubuntu 系统无损迁移规划:从移动固态到 PCIe 4.0 SSD 升级实战指南
在日常的开发与科研工作中,硬件的 I/O 性能往往决定了大型工程编译、Docker 镜像构建以及深度学习模型加载的效率。本文记录了一次针对桌面端 Ubuntu 系统的存储升级与无损迁移规划,旨在打破现有的 I/O 瓶颈,并为未来的实战操作提供详尽的参考手册。
一、 硬件现状与升级思路
目前的硬件配置存在严重的“木桶效应”:
- 计算核心:Intel Core i9-14900K + 32GB 内存 + RTX 3060(性能充沛)。
- 当前系统盘:WD My Passport 1TB 固态移动硬盘(读写速率约 1000MB/s,通过 USB 挂载
/目录)。 - 内挂数据盘:500GB SATA SSD(读写速率约 500MB/s,挂载于 Docker 目录)。
- 目标新盘:致态 SSD TiPlus 7100s 4TB(读写速率约 7000MB/s,尚未安装)。
存在的问题:将操作系统和高频读写的 Docker 目录部署在 USB 移动硬盘和低速 SATA 固态上,严重限制了 i9-14900K 的性能发挥。
升级思路:
计划将 4TB 的 PCIe 4.0 新硬盘作为核心系统盘(主硬盘),承载操作系统、Docker 环境及核心科研数据。迁移完成后,原有的 1TB 移动硬盘可作为便携系统快照或重置为纯数据备份盘,而 500GB 的低速 SSD 则退居二线,用于冷数据存储。
二、 核心方案抉择:rsync vs dd
在 Linux 系统迁移中,通常面临两种底层逻辑的选择:dd 命令(扇区级克隆)与 rsync 命令(文件级同步)。结合本次从 1TB 迁移至 4TB、且需要剥离非系统分区的特殊场景,对比分析如下:
1. 为什么不首选 dd 命令?
dd 是一种简单暴力的“物理级像素复刻”。它会将旧硬盘的所有底层扇区(包括空数据和杂乱的分区表)原封不动地刻印到新硬盘上。
- UUID 冲突陷阱:
dd会连同分区的 UUID 一并克隆。如果新旧两块硬盘同时插在主板上,系统将无法分辨引导哪个硬盘,极易导致挂载错乱。 - 容量错位:从 1TB 克隆到 4TB,新硬盘前 1TB 的布局会与旧盘完全一致,剩余 3TB 变为“未分配空间”,后续利用
resize2fs等工具扩容分区相对折腾。 - 杂质带入:旧盘中可能挂载了其他不需要的数据分区(如几百 GB 的个人资料库),
dd无法将其剔除。
2. 选择 rsync 的优势
rsync 结合 chroot 的方案类似于“精装修搬家”。
提前在新硬盘上规划好完美的分区,然后仅将有用的系统文件精准同步过去。该方案会自动为新分区生成独立的 UUID,不仅解决了冲突问题,还能直接利用完整的 4TB 空间,是打造纯净新系统的最佳实践。
三、 基于 rsync + chroot 的迁移操作手册
本章节为未来实战操作的 Step-by-Step 指南。整个过程可直接在当前运行的 Ubuntu 系统中进行,无需额外的 Live USB 启动盘。
第一步:安装新硬盘并初始化分区
将 4TB 新固态安装至主板直连 CPU 的 M.2 PCIe 4.0 插槽。开机后,在终端定位新设备(假设为 /dev/nvme0n1),并使用 cfdisk 进行分区:
sudo cfdisk /dev/nvme0n1
选择 gpt 格式,创建以下三个分区以对齐原系统结构:
- 分区 1: 1GB,类型
EFI System(对应/boot/efi) - 分区 2: 2GB,类型
Linux filesystem(对应/boot) - 分区 3: 剩余所有空间,类型
Linux filesystem(对应/)
第二步:格式化新分区并临时挂载
# 格式化分区(请确保 nvme0n1p1/p2/p3 对应正确的分区)
sudo mkfs.fat -F32 /dev/nvme0n1p1
sudo mkfs.ext4 /dev/nvme0n1p2
sudo mkfs.ext4 /dev/nvme0n1p3
# 在 /mnt 临时构建新系统的目录树
sudo mount /dev/nvme0n1p3 /mnt
sudo mkdir -p /mnt/boot/efi
sudo mount /dev/nvme0n1p2 /mnt/boot
sudo mount /dev/nvme0n1p1 /mnt/boot/efi
第三步:执行系统镜像同步
使用 rsync 复制系统文件。此处的 --exclude 参数至关重要,它将屏蔽系统运行时的虚拟目录以及外接的数据硬盘,确保只同步纯粹的操作系统文件。
sudo rsync -aAXHv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/
第四步:更新挂载配置 (fstab)
新硬盘生成了全新的 UUID,必须更新配置文件以指引系统正确挂载。
- 查看新硬盘的 UUID:
sudo blkid | grep nvme0n1 - 编辑新系统环境下的 fstab 文件:
将sudo nano /mnt/etc/fstab/、/boot、/boot/efi原有的 UUID 替换为刚查到的新值,保存并退出。
第五步:重塑引导 (Chroot & GRUB)
为了让新硬盘具备独立引导能力,需进入新系统的虚拟环境安装 GRUB。
# 挂载虚拟文件系统
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /run /mnt/run
# 切换进入新系统环境
sudo chroot /mnt
# 在新环境中安装 GRUB 引导程序
grub-install /dev/nvme0n1
update-grub
# 退出并卸载
exit
sudo umount /mnt/run /mnt/sys /mnt/proc /mnt/dev /mnt/boot/efi /mnt/boot /mnt
第六步:重启切换
关机后,拔下旧的移动硬盘,进入主板 BIOS/UEFI,将新装的 4TB NVMe 硬盘设为第一启动项。顺利进入系统后,即可享受 PCIe 4.0 带来的极致流畅体验。
四、 进阶探讨:环境便携性与双系统规划
在规划迁移时,还需考量未来的工作场景变化(如携带系统外出联培)以及硬件资源的深度利用。
1. 如何兼顾极致性能与随身便携?
- 平行宇宙快照:在使用
rsync迁移后,如果不格式化旧的 1TB 移动硬盘,它实质上成为了一个完美的“系统级快照备份”。外出时拔腿带走旧盘,插入任何电脑依然能唤醒熟悉的开发环境。 - 环境与数据解耦:现代软件工程更推崇解耦。利用 Docker 将深度学习环境容器化,使用 Git 与 Submodules 管理 Emacs/Zsh 等配置(dotfiles)。日常在新固态上享受高性能,外出时只需拉取云端配置即可快速复原环境。
2. 余量空间规划:安装 Windows 双系统
如果选择使用 dd 命令迁移(尽管不推荐),会产生 3TB 的未分配空间,这部分空间可用于安装 Windows 组成双系统。
需要注意的是: Windows 的安装程序极其“霸道”,它会检测并征用原有的 EFI 分区,强制覆盖系统的默认引导项。安装完毕后,Ubuntu 看起来会“消失”。
应对方案: 此时无需惊慌,开机时进入 BIOS 的临时启动菜单(Boot Menu),手动选择进入 Ubuntu。在终端执行 sudo update-grub,GRUB 便会重新扫描出 Windows,修复双启动菜单。
本文由 Gemini AI 辅助生成,旨在为 Linux 系统迁移提供逻辑梳理与实战参考。

浙公网安备 33010602011771号