如何将Ubuntu 22.04从1TB SSD迁移至500GB SSD(含分区调整及工具选择疑问)
如何将Ubuntu 22.04从1TB SSD迁移至500GB SSD(含分区调整及工具选择疑问)
我之前也碰到过类似从大硬盘往小硬盘迁移的需求,结合你给出的磁盘信息(只用了不到100GB,系统分区是sda2),咱们一步步来解决这个问题:
第一步:先缩小原1TB SSD的分区(关键前提)
Clonezilla确实只会自动往更大的磁盘扩容,所以必须先把源盘的总占用空间压缩到500GB以下,才能顺利克隆。具体操作:
- 先备份重要数据! 不管用什么工具,磁盘操作都有风险,先把Home Assistant的配置、个人文件这些核心数据备份到U盘或者其他存储设备。
- 制作Ubuntu 22.04 Live USB启动盘,用它开机(不要直接在当前运行的系统里修改分区,因为分区正在被挂载)。
- 进入Live环境后,打开GParted(如果没有就先在终端用
sudo apt install gparted安装):- 在左上角的磁盘选择器里找到你的1TB SSD(就是
lsblk里的sda)。 - 右键点击
sda2分区,选择「卸载」(必须先卸载才能修改)。 - 再次右键点击
sda2,选择「Resize/Move」,把分区的末端拉到400GB的位置(留足够余量,反正你只用了不到100GB,400GB完全够),点击「Resize」确认。 - 点击GParted窗口上方的「应用」按钮,等待分区调整完成(这个过程可能需要几分钟,别中断)。
- 在左上角的磁盘选择器里找到你的1TB SSD(就是
- 调整完成后,你的
sda总占用空间就是512MB(sda1)+400GB(sda2)=400.5GB,小于目标500GB SSD,接下来就可以用Clonezilla克隆了。
第二步:用Clonezilla克隆到500GB SSD
- 把500GB SSD连接到电脑(如果是台式机可以直接接SATA线,笔记本用SATA转USB适配器就行)。
- 还是用刚才的Live USB开机,运行Clonezilla(终端输入
clonezilla启动)。 - 按照向导选择:
- 模式选「device-device」(磁盘到磁盘克隆)。
- 选择源磁盘(1TB的
sda)和目标磁盘(500GB的新SSD,注意别选错!)。 - 克隆选项里保持默认即可,因为源总容量已经小于目标,Clonezilla会完整克隆分区结构。
- 克隆完成后,你的500GB SSD上会有和源盘一样的分区(512MB EFI + 400GB主分区),此时可以再用GParted把目标盘的主分区扩容到填满整个500GB空间(同样需要先卸载分区再调整)。
更灵活的替代方案:Timeshift备份恢复
如果嫌Clonezilla步骤麻烦,用Timeshift备份恢复可能更直观,适合你数据量小的情况:
- 用Live USB开机,先给500GB SSD分区:
- 打开GParted,创建一个512MB的EFI分区(格式选fat32,设置「boot」标志)。
- 剩下的空间创建一个ext4格式的主分区。
- 挂载目标分区:
- 把主分区挂载到
/mnt:sudo mount /dev/sdb2 /mnt(假设新SSD是sdb,根据实际情况改)。 - 把EFI分区挂载到
/mnt/boot/efi:sudo mount /dev/sdb1 /mnt/boot/efi。
- 把主分区挂载到
- 恢复系统:
- 如果之前已经用Timeshift做过备份,直接打开Timeshift,选择恢复到
/mnt。 - 如果没备份,先挂载源1TB SSD的主分区:
sudo mount /dev/sda2 /mnt/source,然后用Timeshift从/mnt/source创建备份,再恢复到/mnt。
- 如果之前已经用Timeshift做过备份,直接打开Timeshift,选择恢复到
- 修复引导:
- 终端执行:
sudo grub-install --target=x86_64-efi --efi-directory=/mnt/boot/efi --bootloader-id=ubuntu --root-directory=/mnt。 - 然后执行:
sudo update-grub。
- 终端执行:
- 最后同样可以用GParted把目标主分区扩容到填满500GB。
一些注意事项
- 克隆/恢复完成后,拔掉源盘,用新SSD开机,检查系统是否正常,Docker和Home Assistant是否能正常运行。
- 如果遇到引导问题,再用Live USB重新执行一次修复引导的命令。
备注:内容来源于stack exchange,提问作者gatorback
相关产品推荐
相关产品推荐

