我的NAS Debian12系统运行在1T机械硬盘上,硬盘运行时间已达到好几万个小时,接近寿命,怕突然损坏,刚好遇到io瓶颈突然就卡死,就开始折腾起迁移系统,升级成固态。
由于从大硬盘迁移到小磁盘 -> 500G SSD,直接打包磁盘所有内容这个方式好像不可以。尝试用clonezilla把分区备份出来,但是没成功恢复起来。
下面将使用rsync软件,总体来说迁移拷贝文件过程不难,前后花了两天时间搞定。
使用rsync软件的原因 可以排除不需要备份的目录,我的系统盘上有200g的数据不需要迁移,迁移成功的数据只有20多g。
总结:第一天卡在了分区格式不对上,第二天卡在无法启动。
我的启动方式是UEFI,通过这次学习了解了分区结构,UEFI和传统启动方式。在最开始前给新硬盘格式化分区,要注意先创建EFI分区
#提前做好格式化
fdisk /dev/sdb
g #新建GPT分区表
n # 新建分区 输入1 回车,+300M 回车
t # 修改分区类型 选择分区1 输入 uefi 回车 (重要,第一天少打个t 格式不对不成功)
n # 创建根分区 剩余全部空间分给/目录 输入2 回车 ,默认回车
w # 保存分区表
给两个分区格式化 注意EFI分区格式
mkfs.fat -F32 /dev/sdb1
mkfs.ext4 /dev/sdb2
把新硬盘挂载到临时目录 /mnt/newroot,注意挂载顺序,先挂载根分区
mkdir /mnt/newroot
mount /dev/sdb2 /mnt/newroot
mkdir -p /mnt/newroot/boot/efi
mount /dev/sdb1 /mnt/newroot/boot/efi
拷贝系统文件 (不需要的拷贝目录 在exclude里面添加排除)
apt install rsync -y #安装软件
rsync -aAXHv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/root/smb/*"} / /mnt/newroot
-aAXHv 保留权限、ACL、硬链接等 --exclude 排除动态目录等
更新磁盘uuid文件
查看磁盘id blkid
并在 /mnt/newroot/etc/fstab 中正确挂载新磁盘的uuid
进入 chroot 环境修复引导 我尝试不成功,就不描述了。

启动不成功 看样子像是 uuid还是以前磁盘的。但是我确认fstab文件修改正确,说明启动还有其他配置文件导致不进系统。 /mnt/newroot/boot/grub/grub.cfg 这个文件里面的主分区要改成新磁盘的uuid,全部替换后,重启开机就正常了。
