我有两个与扩展 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
回答第二个问题
你说: ”...我有疑问...您是否可以仅扩展卷或者是否必须“删除并创建一个更大的卷...“
我们先来明确一些初步概念:
假设你处于正常情况:您有一个带有普通 msdos 分区的 HDD。因此,您最多有 4 个主分区;
假设您的 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
在这种情况下:
如果空间不足,则必须考虑:
3a) 将要填充的是您的文件系统(通常所指的“东西”是 EXT3、EXT4、NTFS、FAT32、HFS 等);
3b) 您的文件系统封装在设备中。在非 LVM 场景中,此类设备通常是一个“分区”。但在您的情况下,由于我们使用的是 LVM,因此此类设备是 LVM 逻辑卷
3c)逻辑卷包含在 LVM 卷组中
3d) 卷组由物理卷组成;
3e)物理卷建立在“设备”之上(非 LVM 场景中步骤 3b 中提到的相同设备),并且就您而言,该设备是一个主分区(在我的情况下为上面的 /dev/sda2)
所以:
对于您来说,扩大文件系统所需的步骤是:
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 活动是最重要的因素。
就这样。
再次:做上述所有事情时都要小心谨慎,如果您觉得自己正在面临任何风险,请不要继续!如果出了问题,不要怪我!