迁移概要
由于容量原因,本人测试用DG进行克隆后无法正常引导。本次克隆采用的是无需进入PE,直接在终端输入指令即可复制系统文件,所以需要区分BIOS和UEFI引导的系统,首先需要先确认自己的系统是BIOS还是UEFI引导,如果自己不确定,可以进入SSH终端输入下面命令
lsblk
如果是BIOS引导,在你的系统盘的第一分区是没有挂载任何目录,如下图
如果是UEFI,那么这个分区后面是有 /boot/efi
sda2
就是系统根目录也可以看到他后面有个反斜杠
BIOS引导(sda迁移到sdb)
BIOS引导不需要单独分区EFI,所以克隆起来会比较简单。
操作过程
给克隆的目标磁盘进行分区
挂载新磁盘以便后续操作
使用 rsync 动态复制系统文件
修改 fstab
重新生成GRUB引导文件
给克隆的目标磁盘进行分区
以下命令中 sdb
和 sda
需要自行分别修改为克隆的目标磁盘,克隆原磁盘。
进入SSH终端 输入以下指令
fdisk /dev/sdb
按顺序输入 n
-> p
->回车(默认)->回车(默认)->回车(默认)-> w
(保存分区)
格式化迁移分区
mkfs.ext4 /dev/sdb1
挂载新磁盘并复制系统文件
mount /dev/sdb1 /mnt #指令执行完毕后不会有任何输出
rsync -q -avxHAX --progress --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/lost+found"} / /mnt/ #根据系统大小,需要10分钟左右,在此期间不要做其它操作!控制台没有任何反应属于正常情况!指令执行完毕后不会有任何输出
修改文件标识
查看克隆目标磁盘的标识
blkid /dev/sdb1
只需要复制UUID等号后面的
编辑fstab文件
nano /mnt/etc/fstab
按键盘 ctrl+X
再输入 y
然后 回车
编辑GRUB引导
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount --bind /run /mnt/run
全部复制直接粘贴到终端回车即可,正常情况下指令没有任何输出。
进入克隆目标系统终端
chroot /mnt
grub-install /dev/sdb
grub-mkconfig -o /boot/grub/grub.cfg
然后输入 exit
或者 ctrl+D
退回原系统
取消挂载系统分区
umount -R /mnt
预计需要1分钟左右,执行完毕后没有任何输出
然后到这里就已经克隆完毕了,我们可以直接重启进入bios将引导切换到克隆到的目标磁盘或关机状态下拔掉当前系统盘。
验证系统
可以看到系统根目录已经是20G了
UEFI引导(sda迁移到sdb)
UEFI引导需要单独分区一个UEFI引导盘,所以会多一些步骤。但是大体与BIOS引导类似
操作过程
给克隆的目标磁盘进行分区
挂载新磁盘以便后续操作
复制EFI引导文件
复制系统文件
修改 fstab
重新生成GRUB引导文件
以下命令中 sdb
和 sda
需要自行分别修改为克隆的目标磁盘,克隆原磁盘。
给克隆的目标磁盘进行分区
fdisk /dev/sdb
按顺序输入(创建EFI分区) n
-> p
->回车(默认)->回车(默认)-> +94M
-> y
按顺序输入(将EFI分区修改为EFI文件类型) t
-> ef
按顺序输入(创建系统分区)n
-> p
->回车(默认)->回车(默认)->回车(默认)-> w
(保存分区)
格式化分区
mkfs.fat -F32 /dev/sdb1 # EFI分区
mkfs.ext4 /dev/sdb2 # 根分区
复制文件
复制EFI文件
mkdir -p /mnt/old-efi /mnt/new-efi
mount /dev/sda1 /mnt/old-efi
mount /dev/sdb1 /mnt/new-efi
rsync -av /mnt/old-efi/ /mnt/new-efi/
umount /mnt/old-efi /mnt/new-efi
复制系统文件
mkdir -p /mnt/sdb2
mount /dev/sdb2 /mnt/sdb2
rsync -aAXv -q --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/sdb2/
根据系统大小,需要10分钟左右,在此期间不要做其它操作!控制台没有任何反应属于正常情况!指令执行完毕后不会有任何输出
修改文件标识
blkid /dev/sdb1 /dev/sdb2
只需要复制UUID等号后面的。需要复制两个分区的UUID
nano /mnt/sdb2/etc/fstab
按键盘 ctrl+X
再输入 y
然后 回车
编辑GRUB 引导
mount /dev/sdb2 /mnt/sdb2
mount /dev/sdb1 /mnt/sdb2/boot/efi
mount --bind /dev /mnt/sdb2/dev
mount --bind /dev/pts /mnt/sdb2/dev/pts
mount --bind /proc /mnt/sdb2/proc
mount --bind /sys /mnt/sdb2/sys
mount --bind /run /mnt/sdb2/run
这里会有一个报错,告诉你已经挂载了,可以忽略掉
进入克隆目标系统终端
chroot /mnt/sdb2
grub-install --target=x86_64-efi --efi-directory=/boot/efi /dev/sdb
update-grub
然后输入 exit
或者 ctrl+D
退回原系统
取消挂载
umount /mnt/sdb2/dev/pts /mnt/sdb2/dev /mnt/sdb2/proc /mnt/sdb2/sys /mnt/sdb2/run
umount /mnt/sdb2/boot/efi
umount /mnt/sdb2
然后到这里就已经克隆完毕了,我们可以直接重启进入bios将引导切换到克隆到的目标磁盘或关机状态下拔掉当前系统盘。
验证系统
可以看到系统根目录已经是20G了