如何调整 LVM 分区的大小?(即:物理卷)

Ida*_*gar 104 partitioning lvm gparted

我想缩小我的第二个 (LVM) 分区,以便在新释放的空间中创建一个新分区。我正在使用 Live CD 这样做,因为我知道我无法在使用时调整/移动该分区的大小。当我在 Live CD 中打开 GParted 时,我意识到我无法调整分区大小,因为当我右键单击它时,“调整大小/移动”选项被禁用。

我试图卸载它,“懒惰”地卸载它 ( umount -l /dev/sda2) 但它没有用。

GParted 的截图:

GParted 截图

pzk*_*pfw 59

谷歌上似乎有很多结果,人们遇到了类似的问题。一个例子:

在尝试之前备份所有重要数据。始终假设您在调整分区大小时可能会丢失所有数据。

在不丢失数据的情况下缩小 LVM

这个论坛帖子建议了以下过程,在这个例子中,我们将一个分区从 10G 缩小到 9G:

首先,我们卸载。

sudo umount /dev/vg_blah/lv_blah
Run Code Online (Sandbox Code Playgroud)

检查文件系统。

sudo e2fsck -f /dev/vg_blah/lv_blah
Run Code Online (Sandbox Code Playgroud)

调整文件系统和逻辑卷的大小。一步完成此操作可以避免导致数据丢失的错误。(注意 lvreduce 参数-L解释G为 2^30 字节和g10^9 字节。)

sudo lvreduce --resizefs -L 9G /dev/vg_blah/lv_blah
Run Code Online (Sandbox Code Playgroud)

(可选)如果需要,从卷组中删除一个物理驱动器(如果您现在有一个未使用的驱动器)。

sudo vgreduce vg_blah /dev/sdxy
Run Code Online (Sandbox Code Playgroud)

所有功劳都归功于 brianmcgee

注意:如果磁盘末尾有另一个 lv,vgreduce将会失败cannot resize to xxxxx extents as later ones are allocated- 我有一个交换 lv,我删除了它。请参阅如何缩小 Ubuntu LVM 逻辑和物理卷?在这种情况下寻求帮助。

  • 答案是缺少如何调整物理卷的大小。此外,我强烈建议将这两个调整大小步骤与 `lvreduce -r` 合二为一。 (12认同)
  • 此外,您需要意识到从 `1G` 到 `lvreduce` 是 1000000000 字节,而对于 `resize2fs` 它是 1 吉比字节。如果您想将 1 Gibibyte 传递给 `lvreduce`,请改用 `1g`。 (5认同)
  • 你不使用 `vgreduce`;那是为了从卷组中*删除*一个 pv。 (2认同)
  • 我强烈怀疑 `lvreduce` 在差分模式下使用 G = gibibyte。它在绝对模式下确实如此。它的手册页写得不好,没有解释他们的单位是什么意思,我认为这接近于刑事疏忽。 (2认同)

Cao*_* Tu 52

您可以使用 GUI 工具非常轻松地缩小/扩展逻辑卷:system-config-lvm. 因为system-config-lvm没有预先安装,所以一旦从 live-cd 启动,你必须安装它:

sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe"
sudo apt-get update
sudo apt-get install system-config-lvm
Run Code Online (Sandbox Code Playgroud)

安装后,运行程序,在左侧面板中选择要更改的逻辑卷,单击“编辑属性”。

主逻辑卷管理程序 GUI

现在根据需要更改参数!

编辑逻辑卷窗口

一件好事system-config-lvm是,如果新分区大小小于所有现有数据的总和(我刚刚尝试过并亲眼看到),它将不允许您继续。

参考:

  1. How-To Geek 教程(这是图像的来源)。
  2. Red Hat 的完整程序指南

  • 为什么“system-config-lvm”比“lvresize”或“lvresize -r”风险更大? (10认同)
  • 请注意 system-config-lvm 使用 1024 次幂单位,尽管使用了(不正确的)“千兆字节”措辞。它真的应该像`palimpsest`(又名磁盘工具)一样,并以明确的字节指定其含义。 (5认同)
  • @Suncatcher 在 17.10 和 18.04 上,您必须添加 Xenial 存储库。`sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu xenial Universe"` (4认同)
  • GUI 绝对是可行的方法,但是您可能需要从 Live CD 运行它。 (2认同)
  • 在 Ubuntu 20.04 LTS live cd 上,添加 xenial 存储库后,我遇到了未满足的依赖项问题。 (2认同)

小智 25

注意:您应该使用 Live CD 运行几乎所有以下命令。有时,它希望您卸载已挂载在 / 上的分区(在这种情况下,您无法卸载它)。

这些是调整 LVM 或 LVM2 分区大小所需的所有步骤:

sudo lvresize --verbose --resizefs -L -150G /dev/mapper/ubuntu

sudo pvresize --setphysicalvolumesize {some-space} /dev/sda5
Run Code Online (Sandbox Code Playgroud)

如果第二个命令产生如下内容:

/dev/sda5: cannot resize to xxxxx extents as later ones are allocated.
Run Code Online (Sandbox Code Playgroud)

然后,您必须重新排列 LVM 末尾的未分配空间。这意味着在 root 和 swap_1 分区之后。因此,最初,您需要使用以下命令检查物理卷的信息:

sudo pvs -v --segments /dev/sda5
Run Code Online (Sandbox Code Playgroud)

这将显示如下输出:

/dev/sda5 ubuntu lvm2 a-- 698.04g 150g   0 xxx root 0 linear /dev/sda:0-rrr
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx sss 0 free                          
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g zzz ttt swap 0 linear /dev/sda5:yyy-www
Run Code Online (Sandbox Code Playgroud)

注意yyy-www。使用以下命令删除外部碎片:

sudo pvmove --alloc anywhere /dev/sda5:yyy-www
Run Code Online (Sandbox Code Playgroud)

现在,让我们看看它是如何进行的:

sudo pvs -v --segments /dev/sda5
Run Code Online (Sandbox Code Playgroud)

这将显示如下输出(注意更改):

/dev/sda5 ubuntu lvm2 a-- 698.04g 150g   0 xxx root 0 linear /dev/sda:0-rrr
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx ttt swap 0 linear /dev/sda5:xxx-sss
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g yyy www 0 free
Run Code Online (Sandbox Code Playgroud)

之后,使用 GParted 并将 LVM 调整为最大已用区域,其余部分将位于未分配的空间中。享受...


小智 16

我会推荐另一个 GUI 工具 - KVPM。它结合了 GParted 和 system-config-lvm 的功能。此外,它允许对 system-config-lvm不允许的活动(挂载)分区进行一些操作。 但是,必须卸载卷才能缩小。

在此处输入图片说明 在此处输入图片说明

自 Ubuntu 12.04 以来,它就在 Universe 存储库中,所以只需执行 sudo apt-get install kvpm

注意:以root权限启动 sudo kvpm


Fli*_*imm 13

只有最新版本的 Gparted (0.14) 支持调整 LVM 物理卷的大小。Ubuntu 12.10 或 13.04 附带的版本不支持它。

以下是调整 LVM 物理卷大小的方法:

  1. 如果与 LVM 物理卷关联的卷组没有足够的未分配空间,则需要通过缩小逻辑卷来增加一些空间。查看bigbadonk420 的答案以获取有关如何执行此操作的说明。如果您更喜欢 GUI,您还可以使用 GNOME 磁盘(包含在 Ubuntu 中)执行某些步骤。

  2. 从 GParted 的网站上刻录最新的 .iso 映像,然后将其刻录到 CD 或放在 U 盘上。从 CD 或 U 盘启动。或者,您可以从源代码编译最新版本的 GParted。

  3. 使用 GParted 调整 LVM 物理卷的大小。GParted 不会让您将 LVM 物理卷缩小到小于未分配空间所允许的大小。


小智 11

我偶然找到了这个答案,但这至少对我有用。就我而言,我已经在 root 之后保留了一个未分配的磁盘空间,所以我跳过了如何获得更多空间的部分,只解释我如何在没有启动的情况下在 root 上使用它。

注意:gparted您最好使用,而不是使用system-config-lvm。下次我会改用那个……我的 gparted 版本是 0.18。

  1. 首先,我曾经gparted尽可能多地扩展根分区。令我惊讶的是,它只扩展了物理尺寸,而对逻辑部分没有任何作用。所以df -k命令说磁盘已经满了。
  2. lvresize -l +100%FREE /dev/ubuntu-vg/root尽可能地扩展逻辑分区。无需在各种方法中检查和计算 GB 或块。
  3. resize2fs /dev/ubuntu-vg/root 然后是我做的第三步:它将文件系统扩展到逻辑分区的大小。

最后一步可以合并到第二步:

lvresize -l +100%FREE --resizefs /dev/ubuntu-vg/root