如何将我的 LVM 250 GB 根分区移动到新的 120 GB 硬盘?

Not*_*erd 19 partitioning lvm

我有以下情况:

我当前的 Ubuntu (12.04) 安装是从外部硬盘驱动器 (250 GB) 运行的,因为我懒得购买新的内部硬盘驱动器。现在我有一个新的内部(120GB),我想把所有东西都移到内部。安装 Ubuntu new 不在讨论范围内,因为它被个性化了。

幸运的是(我希望如此)根分区是用 LVM 分区的,所以我希望我可以将分区移动到较小的内部 HDD。

这可能吗?我在哪里可以找到帮助?

编辑:这个问题已经很老了,可能已经过时了。我添加了当时使用的 Ubuntu 版本。

Flo*_*oyd 42

正如您所怀疑的那样,使用 LVM 这样做非常优雅。

缩小现有安装以适应较小的磁盘。

物理安装新硬盘,格式化和pvcreate它,用于vgextend将其添加到与根分区相同的 vg

使用pvmove透明远离旧分区将所有数据

用于vgreduce从 vg 中删除外部高清。拔掉旧磁盘 /dev/sdOLD。

在下面的例子中:

  • /dev/sdOLD 代表要替换的旧分区
  • /dev/sdNEW 代表新分区取代它的位置。
  • vgX 代表卷组

示例:当然,您必须 100% 确定您使用的是正确的设备。此外,从系统中删除完整和最新的备份也是必不可少的。

pvcreate /dev/sdNEW
vgextend vgX /dev/sdNEW
pvmove /dev/sdOLD
vgreduce vgX /dev/sdOLD
Run Code Online (Sandbox Code Playgroud)

使用update-grubgrub-install使您的新根磁盘可启动

完毕。

  • 啊,对包含有用信息的有效接受帖子进行投票真是太好了。我故意没有给出一个具体的例子,因为危险在于有人会盲目地复制粘贴并破坏他/她的数据。如果你用 lvm 做任何事情,你应该能够找到我给出的指示。 (14认同)
  • 也在 Cento7 上工作。此处提供的步骤足以让我学习一些知识并进行一些谷歌搜索。发现 (2认同)

Gil*_*il' 21

首先,如果您将整个 250GB 磁盘用于当前安装,则需要缩小它以适应 120GB 磁盘。您只能在卸载时缩小 ext4 文件系统,因此您需要从 Ubuntu 实时系统(CD 或 USB)或专门的维护实时系统(例如GParted live )启动。您可以使用resize2fs或 GParted 来调整现有文件系统的大小。

一旦您缩小了现有安装的文件系统以适应新磁盘,您可以根据需要在挂载文件系统的情况下执行其余的移动。如果现有文件系统适合新磁盘,则无需卸载任何内容或重新启动即可进行传输。

在下面的描述中,我将展示如何使用一个名为 的现有卷组从物理卷移动/dev/sdb1到物理卷。请务必调整磁盘字母和分区编号以匹配您的系统。/dev/sda1oldvg

要进行实时传输:

  1. 使用您选择的分区工具(cfdiskfdiskparted、 ...)对新磁盘进行分区。参见例如如何添加额外的硬盘驱动器?
  2. 在新磁盘上创建一个物理卷: pvcreate /dev/sda1
  3. 将此物理卷添加到包含要移动的逻辑卷的现有卷组: vgextend oldvg /dev/sda1
  4. 将逻辑卷从一个物理卷移动到另一个: pvmove /dev/sdb1 /dev/sda1
  5. 将现有卷组一分为二: vgsplit oldvg newvg /dev/sda1

另一种方法是使用 使现有逻辑卷成为镜像卷lvconvert --mirror,在新磁盘上设置镜像,然后使用 拆分镜像lvconvert --splitmirrors。这样,您最终会得到两个数据副本,并且在拆分后每个副本都过着自己的生活。

完成复制后,您需要使新磁盘可启动。为此挂载文件系统。假设它安装在 上/mnt,以 root 身份运行这些命令:

chroot /mnt
# if the name of the volume group has changed, edit /etc/fstab
update-grub
grub-install /dev/sda
Run Code Online (Sandbox Code Playgroud)

或者,您也可以使用Clonezilla。这是一个强大的磁盘操作和克隆工具,我认为它涵盖了您的情况,但我没有使用它。