VMware 允许在虚拟机运行时在线扩展虚拟磁盘的大小。Linux 系统的下一步预期步骤是:
- 扩展分区:删除分区并创建一个更大的分区
fdisk
- 扩展 PV 大小
pvresize
- 使用空闲区域进行
lvresize
操作 - 然后
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
- 创建具有相同编号的分区条目并启动扇区直到磁盘末尾
- 重新启动第二次或仅当未安装时才
partprobe
从parted
包运行/
- 现在我可以运行
pvresize
以获取新的可用空间,lvextend
并且resize2fs
(或者xfs_growfs
如果使用 xfs)为文件系统分配更多空间
有人建议我直接丢弃那个愚蠢的旧分区表并pvcreate
直接在设备上运行,因为 Grub2 能够直接从 LVM 分区上的文件系统加载内核映像。但这种设置在分发安装程序中并不明显。
更新:我刚刚检查了运行内核 3.16 和parted
3.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
任何要求,并且该空间可立即使用。