如何在对系统进行最小更改的情况下克隆/移动整个 Fedora 安装到更大的磁盘上?

如何在对系统进行最小更改的情况下克隆/移动整个 Fedora 安装到更大的磁盘上?

设想

我的计算机中有一个 SSD (250GiB),上面有/boot//分区。/home

我想将其移至更大的新 M.2 NVME 驱动器 (1TiB)。

我使用的发行版是 Fedora 37。

我的/etc/fstab样子是这样的:


#
# /etc/fstab
# Created by anaconda on Tue Jun 28 05:26:41 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=5ed1bf26-ab2f-4e5a-ab5e-d2d56f5f3803 /                       btrfs   subvol=root,compress=zstd:1 0 0
UUID=a14f6d42-3a64-4f96-856c-51e0f4344481 /boot                   ext4    defaults        1 2
UUID=5ed1bf26-ab2f-4e5a-ab5e-d2d56f5f3803 /home                   btrfs   subvol=home,compress=zstd:1 0 0

lsblk看起来像这样:

NAME   KNAME PATH       TYPE MODEL                     STATE   RO RM HOTPLUG FSTYPE FSVER LABEL                 PTTYPE PARTTYPE PARTTYPENAME PARTLABEL PARTFLAGS   SIZE FSSIZE FSAVAIL
sda    sda   /dev/sda   disk Samsung SSD 850 EVO 250GB running  0  0       0                                    dos                                              232.9G        
├─sda1 sda1  /dev/sda1  part                                    0  0       0 ext4   1.0                         dos    0x83     Linux                  0x80          1G 973.4M  608.1M
└─sda2 sda2  /dev/sda2  part                                    0  0       0 btrfs        fedora_localhost-live dos    0x83     Linux                            231.9G 231.9G  108.3G
zram0  zram0 /dev/zram0 disk                                    0  0       0                                                                                       7.5G        

笔记:/都是/home/同一分区的子卷!它们本身并不位于单独的分区上。

问题

我该如何做才能最大限度地减少对工作时间的干扰?我想我应该启动一个实时发行版gparted,然后将分区移过去,但由于 UUID 分散在我当前的设置中,我想我可能会遇到问题,而且我也不确定这是首选方法。

作为一个奖金,我想,我想要在我的硬盘上有一个交换分区,该分区大于我当前的 RAM 量(8GB)。目前,我只使用 ZRAM,但我希望有一个比我当前 RAM 容量更大(可能是两倍大小)的交换分区,以便我可以安全地将计算机置于休眠状态。另外,更多的交换对我的虚拟机来说非常好,而且目前我正在努力运行两个以上的虚拟机。

我认为我应该大致这样处理:

  1. 我想将当前布局克隆到 1TB 驱动器上,但我不确定使用哪种工具最好,从而将驱动器的一大块空间留空。
  2. 然后,我将在未分配空间的末尾创建一个交换分区。
  3. 然后扩大我的/dev/sda2分区,以便我可以使用整个驱动器等。

请告知程序的顺序(显然,步骤 0 是创建备份),以及我应该尝试的工具等。

答案1

最简单的方法是:

  1. 启动像 gparted 这样的实时 ISO
  2. 裸机将250G SATA SSD复制到NVMe SSD
  3. 拔下 SATA SSD
  4. 从 NVMe 启动
  5. 验证一切仍然有效
  6. 将分区大小调整为最大
  7. btrfs filesystem resize max /

可选但建议采取的进一步步骤:

  1. 重新启动以再次使用 live ISO
  2. 再次插入SSD
  3. blkdiscardSATA SSD
  4. 使用新的东西格式化 SATA SSD

重要问题:

  1. 克隆后,不要在两个磁盘都连接时挂载文件系统。 (启动将挂载文件系统!)
  2. 如何克隆磁盘并不重要。你甚至可以使用cp.重要的是它是 1:1 的副本
  3. /dev/disk/by-id/每当需要在 CLI 上输入磁盘时,请使用节点。使其不易出错。

答案2

或者

  1. 如果没有足够的本地空间用于克隆文件,请添加另一个目标磁盘:
sudo mkdir /media/disk
sudo mount /dev/sdb1 /media/disk
sudo chmod ugo+wx /media/disk
  1. 将可用空间清零https://unix.stackexchange.com/a/506097/518235

    然后仅克隆已使用的空间

 sudo dd if=/dev/xvda bs=16M conv=sparse,noerror | pv | sudo pigz -c > /media/disk/TargetImg.dd.gz

如果没有 pv,则可选择 dd 选项:status=progress

  1. 使用 cp / rsync 进行本地传输(参见 8)或远程 Target:
 sshpass -p "xxxxxxxxx" scp TargetImg.dd.gz [email protected]:/home/fedora | pv -lep -s 42
  1. 恢复(本地或远程):
 sudo pigz -cdk TargetImg.dd.gz | pv | sudo dd of=/dev/sdb bs=16M
  1. 或选择将磁盘格式转换为例如选择的虚拟机:
 sudo dnf install qemu 
 sudo qemu-img convert -O vmdk TargetImg.dd TargetImg.vmdk -p
  1. 可选的 HD 调整大小,例如在 ESXi 主机上:
 vmkfstools -X 100G "TargetImg.vmdk"
  1. 第一个和第二个或新旧驱动器之间的本地同步也是可能的:
sudo rsync -aHAXS \
--filter='-x security.selinux' \
--no-compress \
--no-inc-recursive \
--stats \
--numeric-ids \
--info=progress2 \
/media/disk/ \
/

来源:stackoverflow 等

相关内容