如何将 Linux 硬盘克隆到较小的闪存驱动器

如何将 Linux 硬盘克隆到较小的闪存驱动器

目前,我正尝试将安装了 Linux 的硬盘克隆到 16GB 的闪存驱动器上。硬盘为 233GB,但df -h显示只使用了 3.5G。我可以使用 Clonezilla 仅使用分配的空间量创建映像并将其复制到闪存驱动器,然后我可以将该映像部署到其他 Linux 笔记本电脑吗?

编辑:我尝试使用 Clonzilla 与 Parted Magic,并尝试执行设备映像,但出现以下错误:

split /home/partimag/lubuntu.img/lubuntu-vg-root.ext4.ptcl-img.gz.aa: Input/output error
Checking the disk space...
Failed to save partition /dev/lubuntu-vg/root.
Press Enter to continue

答案1

您没有指定太多有关磁盘布局的信息,因此我将做一些假设。请根据您的应用程序进行修改,或者提供其他详细信息,然后我可以对其进行编辑。

假设:

  • 1 个物理磁盘
  • 2 个分区(启动 + LVM PV)
  • 2 个 LV(根 + 交换)

这几乎是 CentOS/Red Hat 的默认安装,并且非常非常常见。

您可以使用 GParted 作为启动媒体,但让我们尝试不使用实际的 GParted 工具:

从堆栈底部开始。缩小 LVM 逻辑卷及其文件系统。

lvreduce -rL 8G /dev/mapper/centos-root

我在这里指定了 8G,因为它小于您可用的 16G,并且您可能仍然有一个较小的交换量。

用您的 LV 名称替换 centos-root。如果您不确定,请运行lvs/ lvdisplay/ 。)ls /dev/mapper

然后,您应该能够缩小 LVM PV。

pvresize --setphysicalvolumesize 14G /dev/vda2

用您的磁盘替换 /dev/vda2。

我选择 14G 是因为它刚好低于你的 16G 限制,这样我们就不需要做任何精确的计算了。如果你的交换空间是在根卷之前分配的,那么一切应该都行得通。此命令可能如果交换空间分配在您刚刚调整大小的根卷后面,则失败。如果是这种情况,则现在根卷和交换空间之间有一个间隙,您需要将交换空间滑入该空闲区域,以便 PV 可以缩小。我遇到了这个问题,但通过后续步骤克服了它。

/dev/vda2: cannot resize to *n* extents as later ones are allocated.

首先,找到需要移动的范围。

pvs -v --segments /dev/vda2

您将看到 LV 的一系列范围出现在目标边界之后n多于。

pvmove --alloc anywhere /dev/vda2:n-n

此命令将重新排列布局,使卷占用您刚刚通过缩小根目录创建的可用空间。然后您可以pvresize再次尝试,现在它应该可以正常工作。

最后,缩小你的 LVM 分区。

fdisk /dev/vda2

首先,打印 ( p) 您的分区表。(您稍后会需要它。)您要删除的 ( d) 是您的 LVM 分区,希望它位于磁盘末尾。然后,使用新的较小尺寸重新创建它。(n)绝对确保它从与之前相同的扇区开始。(向上滚动到您打印原始表格的位置。)再次将其设置为 15G,因为数学上我们知道它可以放在 16G 闪存驱动器上,但实际上并不是 16G。使用 ( w) 完成此操作以写入您的更改。

验证所有内容均小于 16G,然后重试 CloneZilla 进程。

缩小磁盘布局

相关内容