使用物理范围和 pvresize 扩展 LVM 卷组

使用物理范围和 pvresize 扩展 LVM 卷组

我有两个与扩展 LVM 管理卷有些相关的 LVM 问题。

首先,来自(编辑:老的) 文档中提到,我读过关于 LVM 以及卷组和物理扩展之间的关系,如果要将 VG 扩展到 256GB 以上,则 PE 大小必须大于 4MB。以下是一个例子本文显示一条消息说“最大逻辑卷大小为 255.99 GB“带有 4MB PE。但是,我预计这意味着如果 PE 大小为 4MB,VG 将不允许您定义/添加超过 256GB 的卷,如果您尝试这样做,则会抛出错误或至少警告。我提出这个问题是因为我有一个 VM,它显示了其中一个卷组(摘录):

VG Size               499.50 GiB
PE Size               4.00 MiB
Total PE              127872
Alloc PE / Size       127872 / 499.50 GiB
Free  PE / Size       0 / 0   

VG 由两个物理卷组成,一个 100GB (/dev/sda2),另一个 400GB (/dev/sda3)。我​​怎么可能成功地 (?) 定义了这个 VG 中的 500GB 空间,而 PE 大小只有 4MB?我还没有进行实际测试,尝试填满已安装的逻辑卷,看看我是否确实可以存储 500GB,但除非 LVM 的运行方式发生了变化,否则逻辑卷是否会在达到 256GB 的已用空间后“停止写入”数据,尽管它显示剩余 244GB?我能否成功地将 VG 的 PE 大小(就地)更改为 8MB?

第二,如果我更愿意扩展 LVM 分区/物理卷以利用增加的空间,当我增加 vmdk 硬盘大小时,而不是创建新的物理卷并将其添加到 VG(正如这篇优秀的文章所涵盖的对于 VMWare),那么我会使用调整大小? 我的限制是不破坏任何现有数据,只是向卷添加空间,VMWare KB 文章做到了这一点,然而在阅读这个 SE 问题至于您是否可以仅扩展卷或者是否必须“删除并创建一个更大的卷”。

由于 VMWare 文章依赖于添加主分区的能力,因此您显然只能按照该过程添加最多 4 个主分区,超过此数量后,您要么无法再增加卷,要么我认为您必须使用 pvresize 之类的东西(我不知道如何正确使用/犹豫是否尝试,因为担心会破坏现有数据)。有没有关于 pvresize 是否能满足我要求的指示?

答案1

第一个问题的答案

请考虑一下你正在考虑的所有问题的文章非常过时!尽管您链接的 HOWTO 页面中没有报告明确的日期,但看一下与提到的HOWTO相关的代码,您可以看到它指的是内核 2.3.99,那是 2000 年的事了!15 年前!

这绝对符合我的直接经验,我拥有多 TB PV 和 4MB PE 完全没有问题。下面是一个正在运行的系统的输出:一个 RAID5 VG (vg_raid) 构建在 5 x 2TB S-ATA 磁盘之上,并为单个 7.28 TB LV (lv_raid) 提供服务:

[root@nocdump ~]# cat /etc/centos-release 
CentOS release 6.5 (Final)

[root@nocdump ~]# uname -r
2.6.32-431.17.1.el6.x86_64

[root@nocdump ~]# rpm -q lvm2
lvm2-2.02.100-8.el6.x86_64

[root@nocdump ~]# vgdisplay 
  --- Volume group ---
  VG Name               vg_raid
  System ID             
  Format                lvm2
  Metadata Areas        5
  Metadata Sequence No  19
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                5
  Act PV                5
  VG Size               9,10 TiB
  PE Size               4,00 MiB
  Total PE              2384655
  Alloc PE / Size       2384655 / 9,10 TiB
  Free  PE / Size       0 / 0   
  VG UUID               rXke5K-2NOo-5jwR-74LT-hw3L-6XcW-ikyDp0    

[root@nocdump ~]# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg_raid
  PV Size               1,82 TiB / not usable 4,00 MiB
  Allocatable           yes (but full)
  PE Size               4,00 MiB
  Total PE              476931
  Free PE               0
  Allocated PE          476931
  PV UUID               7ToSLb-H9Of-unDk-Yt22-upwi-qkVE-ZiEKo2

  --- Physical volume ---
  PV Name               /dev/sdc1
  VG Name               vg_raid
  PV Size               1,82 TiB / not usable 4,00 MiB
  Allocatable           yes (but full)
  PE Size               4,00 MiB
  Total PE              476931
  Free PE               0
  Allocated PE          476931
  PV UUID               PaUyX1-jykz-B2Tp-KE2M-9VaT-E4uY-iv8ppi

  --- Physical volume ---
  PV Name               /dev/sdd1
  VG Name               vg_raid
  PV Size               1,82 TiB / not usable 4,00 MiB
  Allocatable           yes (but full)
  PE Size               4,00 MiB
  Total PE              476931
  Free PE               0
  Allocated PE          476931
  PV UUID               DCag4w-CWbp-bUUI-7S24-JCFL-NlUK-Vgskab

  --- Physical volume ---
  PV Name               /dev/sde1
  VG Name               vg_raid
  PV Size               1,82 TiB / not usable 4,00 MiB
  Allocatable           yes (but full)
  PE Size               4,00 MiB
  Total PE              476931
  Free PE               0
  Allocated PE          476931
  PV UUID               3GW2LM-b01Y-oIgd-DHJf-Or0a-fys2-wLesSX

  --- Physical volume ---
  PV Name               /dev/sdf1
  VG Name               vg_raid
  PV Size               1,82 TiB / not usable 4,00 MiB
  Allocatable           yes (but full)
  PE Size               4,00 MiB
  Total PE              476931
  Free PE               0
  Allocated PE          476931
  PV UUID               fxd1rG-E9RA-2WsN-hLrG-6IgP-lZTE-0U52Ge


[root@nocdump ~]# lvdisplay /dev/vg_raid/lv_raid
  --- Logical volume ---
  LV Path                /dev/vg_raid/lv_raid
  LV Name                lv_raid
  VG Name                vg_raid
  LV UUID                fRzAnT-BQZf-J1oc-nOK9-BC10-S7w1-zoEv2s
  LV Write Access        read/write
  LV Creation host, time nocdump, 2014-05-23 00:17:02 +0200
  LV Status              available
  # open                 1
  LV Size                7,28 TiB
  Current LE             1907720
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     1280
  Block device           253:15

回答第二个问题

你说: ”...我有疑问...您是否可以仅扩展卷或者是否必须“删除并创建一个更大的卷...

我们先来明确一些初步概念:

  1. 假设你处于正常情况:您有一个带有普通 msdos 分区的 HDD。因此,您最多有 4 个主分区;

  2. 假设您的 LVM 物理卷定义在上述 4 个主分区之一之上,并且该 LVM 分区(类型 8e)跨越磁盘的最大可用空间(换句话说,在 LVM-Type-8e 和磁盘末尾之间没有其他分区)

因此,基于上述情况,您有一个类似这样的 HDD:

[root@nocdump ~]# parted /dev/sda print
Modello: ATA ST2000DM001-1E61 (scsi)
Disco /dev/sda: 2000GB
Dimensione del settore (logica/fisica): 512B/4096B
Tabella delle partizioni: msdos

Numero  Inizio  Fine    Dimensione  Tipo     File system  Flag
 1      1049kB  525MB   524MB       primary  ext4         avvio
 2      525MB   1999GB  1998GB      primary               lvm

在这种情况下:

  1. 如果空间不足,则必须考虑:

    3a) 将要填充的是您的文件系统(通常所指的“东西”是 EXT3、EXT4、NTFS、FAT32、HFS 等);

    3b) 您的文件系统封装在设备中。在非 LVM 场景中,此类设备通常是一个“分区”。但在您的情况下,由于我们使用的是 LVM,因此此类设备是 LVM 逻辑卷

    3c)逻辑卷包含在 LVM 卷组中

    3d) 卷组由物理卷组成;

    3e)物理卷建立在“设备”之上(非 LVM 场景中步骤 3b 中提到的相同设备),并且就您而言,该设备是一个主分区(在我的情况下为上面的 /dev/sda2)

所以:

  1. 对于您来说,扩大文件系统所需的步骤是:

    i) 通过在磁盘末尾添加“未分区空间”来扩大物理磁盘;

    ii) 让 LVM 可以选择使用此类未分区的空间。这可以通过两种不同的模式实现:

    iii/1) 扩大 LVM-type-8e 分区,以便它将在磁盘的新末端结束(这只有当现有分区是磁盘上的最后一个分区时才有可能。因此,上面第 2 点的要求)

    iii/2) 将未分区的空间分配给新的主分区,分配类型为 8e。这将是一个新的 LVM-Physical_Volume,可用于扩大 Volume_Group;

由于您似乎对第 iii/1 点感兴趣,我将重点介绍它。所以...如何扩大现有的主分区

警告!:这会很危险!请确保您已正确备份数据,并且制定了适当的灾难恢复计划。如果您不了解所面临的风险,请不要继续!

答案很简单。由于主分区在磁盘分区表中引用了 START_CYLINDER 和 END_CYLINDER,因此您只需修改 END_CYLINDER。可以使用“fdisk -lu /dev/sda”检索 START 和 END 磁柱的当前值,如下所示:

[root@nocdump ~]# fdisk -lu /dev/sda

Disco /dev/sda: 2000.4 GB, 2000398934016 byte
[...]
Sector size (logical/physical): 512 bytes / 4096 bytes
[...]
Dispositivo Boot      Start         End      Blocks   Id  System
[...]
/dev/sda2         1026048  3904294911  1951634432   8e  Linux LVM

所以我的 /dev/sda2 开始于1026048结束于3904294911。现在,您可以简单地删除 /dev/sda2 分区并创建一个新分区,从 1026048 开始,到扩大后的驱动器的新结尾结束。不要忘记为该分区分配类型 8e,当然,不要忘记保存更改。如果你对这个过程感到“不舒服”——因为它有风险——你唯一的选择是 iii/2

  • iv) 现在您有一个扩大的分区,您必须说服您的操作系统重新加载分区表。在你提到的 SF 问题中,有很多细节。最坏的情况是,你需要重启服务器

  • v)现在你有了一个扩大的分区,并且它被操作系统正确识别,你有一个新问题:您有一个 LVM-Physical_Volume,它知道具有特定大小(原始大小),并且该大小小于底层 8e-Physical 分区(您刚刚扩大的分区)。您可以使用以下命令自行检查这种不匹配:

  • pvdisplay:显示原始的较小尺寸;
  • lvmdiskscan -l:显示新的、更大的大小。一旦知道上述数字,您就可以使用以下命令将 PV 元数据重新设置为新的、更大的大小:“调整大小“及其”设置物理卷大小“参数,例如:

    pvresize --setphysicalvolumesize 49.51G /dev/sda2

请注意我强烈建议使用稍微更小pvresize 中的值要比 lvmdiskscan 显示的值大。这是因为,如果您错误地将 PV 大小设置为大于物理可用空间的值,则可能会发生非常糟糕的事情(例如挂起的 LV,无法重新上线!)。因此,如果您有一个 49.52G 的物理分区,则应将物理卷大小设置为 49.51G。

  • vi) 现在您有了扩大的 PV,您的 VG 中就有了可用空间,并且... 这些可用空间可以分配给您的 LV。所以...

  • vii)你可以使用以下方法扩展你的 LVlvextend命令。就我而言,我决定分配 100% 的可用空间(在 VG 中),我使用了:lvextend -l +100%FREE /dev/vg_raid/lv_raid

我们基本已经完成了。现在我们有一个扩展的 LV,不幸的是,它里面还有一个“较小”的文件系统。如果你依赖 EXT3 或 EXT4,那么很有可能你可以使用调整2fs大小. 来自其手册页:

resize2fs 程序将调整 ext2、ext3 或 ext4 文件系统的大小。[...] 如果文件系统已挂载,则可以使用它来扩展已挂载文件系统的大小,假设内核支持在线调整大小。

resize2fs 完成调整大小所需的时间取决于多种因素:文件系统的大小和在其上运行的 I/O 活动是最重要的因素。

就这样。

再次:做上述所有事情时都要小心谨慎,如果您觉得自己正在面临任何风险,请不要继续!如果出了问题,不要怪我!

相关内容