引言

UbuntuServer系统的Sata硬盘老旧出现故障了, 新买的nvme硬盘已经到货,准备进行更换,以下是数据转移操作步骤。

bg20250107JYyZh8

整个硬盘拷贝到新硬盘里

1
$ sudo dd if=/dev/sda of=/dev/nvme0n1 bs=4M status=progress

更新硬盘GUID

因为dd命令会把硬盘的GUID也会拷贝过去,为了区别新老硬盘,使用下面命令进行更新。

1
2
# randomize-guids
$ sudo sgdisk -G /dev/nvme0n1

更新硬盘EXT4分区UUID

同上

1
2
3
4
5
# 强制检查ext4格式的分区
$ sudo e2fsck -f /dev/nvme0n1p2

# 生成uuid并设置到ext4分区
$ uuidgen | xargs tune2fs /dev/nvme0n1p2 -U

修复硬盘挂载点

上一步硬盘已经可用了,现在把系统文件中相关通过uuid挂载硬盘的地方修复一下。

1
2
3
4
5
6
7
8
9

# 系统文件挂载点
$ vim /etc/fstab -> /dev/disk/by-uuid/2df0b934-xxxx-4aa6-xxxx-e84ff577926d / ext4 defaults 0 1
# 引导挂载点
$ vim /boot/grub/grub.cfg -> :%s/2df0b934-xxxx-4aa6-xxxx-e84ff577926d/4857f440-xxxx-4a85-xxxx-e8c35a7145d8/g

# 重启更新
$ sudo reboot

硬盘扩容

因为dd命令会把容量信息也会写到新硬盘里,如果新硬盘的大小大于老硬盘,这时我们要更新扩展一下分区的大小

1
2
3
# 新硬盘容量大于老硬盘使用,这里新硬盘是1T,老硬盘是256G,下面命令直接将分区填满剩余空间
$ sudo growpart /dev/nvme0n1 2
$ sudo resize2fs /dev/nvme0n1p2

参考

记一次Ubuntu完美迁移系统盘的折腾 每天学一个 Linux 命令(81):e2fsck Boot-Repair(GUI迁移工具)

1
2
3
4
5
6
$ man sgdisk
$ man e2fsck 
$ man e2fsck 
$ man tune2fs
$ man fstab
$ man growpart