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

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

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

  1. 扩展分区:删除分区并创建一个更大的分区fdisk
  2. 扩展 PV 大小pvresize
  3. 使用空闲区域进行lvresize操作
  4. 然后resize2fs是文件系统

但是我停留在第一步:fdisk仍然sfdisk显示磁盘的旧大小。

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

如何刷新 Linux 内核中的虚拟磁盘大小和分区表信息无需重启

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

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

答案1

您无需重启即可完成此操作。pvresize 不会调整物理卷的大小,直到分区更新为添加的空间。您必须先重新扫描驱动器以查看额外的空间,然后才能对分区进行 fdisk 并使用新的磁盘完整大小重新创建它。

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

答案2

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

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

ls /sys/class/scsi_disk/

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

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

我刚刚也扩展了我的 VMware 磁盘,不得不搜索其他答案来找到正确的命令。希望这可以让未来的搜索者免于徒劳无功。

答案3

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

我真的希望随着新内核版本的推出,情况会很快得到改善。

所以我必须:

  • 重新启动一次以查看新的磁盘大小fdisk,或重新扫描 SCSI 总线(
  • 删除旧的主 PV 分区fdisk
  • 创建具有相同编号的分区条目并启动扇区直到磁盘末尾
  • 重新启动第二次或仅当未安装时才partprobeparted包运行/
  • 现在我可以运行pvresize以获取新的可用空间,lvextend并且resize2fs(或者xfs_growfs如果使用 xfs)为文件系统分配更多空间

有人建议我直接丢弃那个愚蠢的旧分区表并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

答案4

我的 PV 不在分区中,而是直接存在于 /dev/sdb 上。

在 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任何要求,并且该空间可立即使用。

相关内容