目 录CONTENT

文章目录

飞牛系统盘迁移(大盘迁小盘)

Administrator
2025-03-24 / 0 评论 / 0 点赞 / 662 阅读 / 0 字

迁移概要

由于容量原因,本人测试用DG进行克隆后无法正常引导。本次克隆采用的是无需进入PE,直接在终端输入指令即可复制系统文件,所以需要区分BIOS和UEFI引导的系统,首先需要先确认自己的系统是BIOS还是UEFI引导,如果自己不确定,可以进入SSH终端输入下面命令

lsblk

如果是BIOS引导,在你的系统盘的第一分区是没有挂载任何目录,如下图

如果是UEFI,那么这个分区后面是有 /boot/efi

sda2 就是系统根目录也可以看到他后面有个反斜杠

BIOS引导(sda迁移到sdb)

BIOS引导不需要单独分区EFI,所以克隆起来会比较简单。

操作过程

  1. 给克隆的目标磁盘进行分区

  2. 挂载新磁盘以便后续操作

  3. 使用 rsync 动态复制系统文件

  4. 修改 fstab

  5. 重新生成GRUB引导文件

给克隆的目标磁盘进行分区

以下命令中 sdbsda 需要自行分别修改为克隆的目标磁盘,克隆原磁盘。

进入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引导类似

操作过程

  1. 给克隆的目标磁盘进行分区

  2. 挂载新磁盘以便后续操作

  3. 复制EFI引导文件

  4. 复制系统文件

  5. 修改 fstab

  6. 重新生成GRUB引导文件

以下命令中 sdbsda 需要自行分别修改为克隆的目标磁盘,克隆原磁盘。

给克隆的目标磁盘进行分区

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了

博主关闭了所有页面的评论