虚拟磁盘增长后如何在线扩展Linux PV分区


14

当VM运行时,VMware允许在线扩展虚拟磁盘的大小。Linux系统的下一个预期步骤是:

  1. 扩展分区:删除并创建一个更大的分区 fdisk
  2. 通过以下方式扩展PV尺寸 pvresize
  3. 使用自由范围进行lvresize操作
  4. 然后resize2fs用于文件系统

但我坚持的第一步:fdisksfdisk仍显示旧大小的磁盘。

我的磁盘是通过虚拟LSI Logic控制器连接的SCSI虚拟磁盘。

如何在不重新启动的情况下刷新Linux内核中可用的虚拟磁盘大小和分区表信息?

据我所知,借助VMWare工具,所有这些步骤对于运行中的Windows都是可能的,无需重新启动,甚至无需任何用户操作。在Linux上,我希望也可以在线完成所有步骤,并且我已经知道步骤2、3和4可以在线工作。但是第一个-更改分区表中声明的分区大小(仍然)似乎需要重新启动。

更新:我的系统是Debian Lenny,内核为2.6.26,我扩展的磁盘是主磁盘,其主磁盘具有较大的PV,其中包含“ /”的“ root” LV。

Answers:


9

您无需重新启动即可执行此操作。在使用增加的空间更新分区之前,pvresize不会调整物理卷的大小。在重新扫描驱动器的分区以首先看到额外的空间之后,必须对分区进行fdisk并使用新的完整磁盘大小重新创建分区。

更多信息:http : //theducks.org/2009/11/expanding-lvm-partitions-in-vmware-on-the-fly/


我同意,但是无论如何重新扫描SCSI驱动器,我都无法在fdisk中看到新的磁盘大小,因此直到第一次重新启动我都被卡住了。对我来说,“ partprobe”是一个新命令。绝对,我必须测试此过程...谢谢。
伊夫·马丁

信息partprobe是来自parted项目的命令。
伊夫·马丁

如果您没有在其中看到新的磁盘大小,fdisk则问题不在于LVM。我不得不问您如何扫描,因为这通常会给我带来新的磁盘大小。如果可以,我也不会对要使用LVM的磁盘进行分区。如果您pvcreate是整个磁盘,那么更新分区表仅是减少调整大小时要做的一件事。
布拉奇利,2015年

14

提供的其他答案都不能解决您的问题,我已经确定了重新扫描已经连接的磁盘的正确命令。

我们必须重新扫描您已连接的磁盘,首先确定要重新扫描的磁盘。

ls /sys/class/scsi_disk/

在我的示例中,我看到一个名为的符号链接0:0:0:0,因此我们重新扫描了该scsi磁盘。

echo '1' > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan

我也刚刚扩展了VMware磁盘,不得不搜寻其他答案以找到正确的命令。希望这将使将来的搜索者免于徒劳的尝试。


工作完美!
埃米尔·斯特尔克

您还可以在中按其“ / dev /”名称查找磁盘/sys/block/,因此可以使用eg /sys/block/sda/device/rescan
mwfearnley

4

只要根文件系统/安装在已调整大小的磁盘上,使用Linux 2.6.26进行的SCSI重新扫描都不会刷新分区表和磁盘大小。

我真的希望新的内核版本很快会更好。

所以我必须:

  • 第一次重新启动以查看新磁盘的大小 fdisk
  • 删除旧的PV主分区 fdisk
  • 创建一个具有相同编号的分区条目,并从扇区开始直到磁盘结束
  • 第二次重新启动,或者仅当未安装在软件包中时才partprobeparted软件包运行/
  • 现在,我可以运行pvresize以获取新的可用空间,lvextendresize2fs为文件系统分配更多空间

pvcreate由于Grub2能够直接从LVM分区上的文件系统加载内核映像,因此建议我直接丢弃该愚蠢的旧分区表并直接在设备上运行。但是对于发行版安装程序而言,这种设置根本不明显。

更新:我刚刚检查了运行内核3.16和parted3.2的Debian GNU / Linux Jessie 8.2 ,partprobe现在分区表版本成功后cfdisk无需重启。pvresize之后立即工作。

如果要扩展存储为逻辑PC分区的PV,例如/dev/sda5在扩展的主分区上/dev/sda2,请不要使用,fdisk而是使用parted

parted /dev/sda2 -1
parted /dev/sda5 -1
pvresize /dev/sda5

在结束命令不起作用#深裂的/ dev / SDA2 -1 - >分手:无效选项- '1'
奥斯卡·伯格伦

3

您需要重新扫描磁盘,然后才能创建更大的分区。

在Centos中,您可以通过

ls /sys/class/scsi_host

然后对于每个主机

echo "- - -" > /sys/class/scsi_host/host#/scan

(用数字替换#)

调整分区大小后,上述步骤还需要扩展ext或正在使用的任何文件系统。

尽管有时仍需要卸载该分区。我们倾向于做的是添加第二个vmware磁盘,并使用lvm扩展到新磁盘上(如果是替换磁盘,则减少旧磁盘),因为这样可以使整个过程实时进行。


我的系统是Debian,我从scsitools运行rescan-scsi-bus.sh。我认为这等效于您在/ sys / class / scsi_host上建议的命令,但是“ fdisk”仍显示磁盘上的旧大小...
Yves Martin

重新扫描时,它可以识别新的vmware磁盘吗?
JamesRyan 2012年

否。该磁盘已存在,不是新磁盘。在vSphere Client中已增加了磁盘大小。
伊夫·马丁

我知道,但是您应该尝试添加一个新的扫描程序,以查看扫描是否可以缩小扫描范围,以缩小问题范围
JamesRyan 2012年

我同意您的观点,并且我已经通过实践知道,对于列出的所有步骤,都可以在线将新的SCSI磁盘添加到Linux计算机。由于VM可能会运行10年,我担心不久的将来磁盘总数会减少
Yves Martin

2

作为更新的答案,在Ubuntu 16.04.1上,我能够执行以下操作将卷的大小从1024GB调整为1.4TB:

echo '1' > /sys/class/scsi_disk/32\:0\:1\:0/device/rescan
pvresize /dev/sdb
lvextend -l +100%FREE /dev/nvr01-opt/opt
resize2fs /dev/nvr01-opt/opt

不需要fdisk,并且该空间立即可用。


3
幸运的你。原因是因为您没有分区表,但直接在PV上/dev/sdb,这可能是您的应用程序数据仅是辅助磁盘,而不是系统的第一个磁盘(要说我以相同的方式配置系统!)。我的问题是关于扩展这种“系统磁盘”(从模板克隆)的最后PV /分区,只要Linux发行版不支持在直接PV上安装,而Linux内核和GRUB应该能够在系统磁盘上启动并运行完全没有分区表。
伊夫·马丁

有道理。对于那些通过Google找到的信息:请记住这一点。
Peelman '16

1

您没有提供足够的详细信息来告诉您所需的确切命令,但是从本质上讲,您将需要使用该lvextend命令来扩展逻辑卷,然后是该e2fsck命令,然后是resize2fs实际扩展您的文件系统的命令。这些命令中的每一个都将需要我们无法提供的其他参数,特别是设备和文件系统信息,但您需要了解这些参数,只需对每个命令使用--help选项即可告诉您如何具体使用它们,以及你可能会最终使用pvdisplaylvdisplaymount以帮助命令填写这些参数。


我知道其他步骤的所有命令。我的问题是:如何在不重新引导的情况下增加用作PV的主分区?
伊夫·马丁

抱歉,您是说pvresize吗?
Chopper3

我同意我的问题不够明确(即使是粗体部分)。在第2步中提到了pvresize。在第1步中,我陷入了困境:增加“ PCAT”分区的大小。
伊夫·马丁

您是否通过VSClient增加了.vmdk大小?
斩波器

3
要确认/sbin/rescan-scsi-bus问题不会更改现有磁盘大小。但echo "1" > '/sys/class/scsi_disk/0:0:1:0/device/rescan'确实如此
伊夫·马丁

0

没有人发布完整的命令集,因此我们开始:

# the following steps are for adding a new HDD
apt install scsitools
rescan-scsi-bus
pvcreate /dev/sdX
vgextend /dev/vgname /dev/sdx
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root

#if resizing existing HDD
fdisk /dev/sdX
create new partition
pvcreate /dev/sdXn
vgextend /dev/vgname /dev/sdXn
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root

对distrub感到抱歉,但是我发现在每个磁盘增长时添加磁盘,分区和PV都是“丑陋的”,并且无法扩展。我的问题是关于在磁盘上扩展现有的主分区而不添加磁盘或分区或PV。
伊夫·马丁
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.