在vmware环境下,有时出现虚拟机磁盘不够用的情况,需要给原有硬盘扩容或者新增硬盘,但一般情况下下,Linux扩容硬盘或者新增硬盘都需要重启系统后才能识别,下面主要讲如何在不重启系统的情况下,如何实现硬盘空间的扩容(前提是系统使用LVM)。

vmware操作
首先,在esxi(或者workstation)中选择虚拟机设置,选中硬盘,直接调整大小(只能增加,不能减少),或者添加一块新的硬盘。

磁盘扩容后系统操作
完成虚拟机硬盘扩容后,登录到系统中,执行fdisk -l命令,发现硬盘空间并未增加,如图:

1-1.png

此时,需要重新扫描存储设备的SCSI总线,有两种方式:

方法1 .

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

如下图,其中红框部分需要根据实际的路径进行替换

2.png

重新执行fdisk,发现磁盘容量已经增加。

3.png

方法 2 .

echo 1 > /sys/block/$DISK/device/rescan

其中,$DISK用需要重新扫描的磁盘代替,如sda、sdb

添加磁盘后系统操作

[root@localhost ~]# grep mpt /sys/class/scsi_host/host?/proc_name
/sys/class/scsi_host/host2/proc_name:mptspi
[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan

其中,host2使用第一步中获取的名称替换。

扫描SCSI总线后对LVM的操作
系统能识别到磁盘之后,接下来要做的就是扩容LVM了,分为以下几种情况;

非系统磁盘扩容,使用pvresize对pv进行扩容,之后按照正常lv扩容流程进行扩容即可。

pvresize /dev/sdb
lvextend -l +100%FREE <lvname>

添加磁盘,扩容lvm,使用pvcreate将新加的磁盘创建为新的pv,将pv加入到vg,然后扩容lv即可。
扩容完成lv之后,需要对文件系统重新定义大小,执行resize2fs 设备文件名即可

另外,系统盘扩容后,暂时没找到不重启扩容的方法,如有哪位朋友有好的方法,欢迎提出

常见问题:
创建pv的时候报错:

Device /dev/sdb1 not found (or ignored by filtering).

执行partprobe命令,使kernel重新读取分区信息即可

最后修改:2019 年 10 月 03 日
如果觉得我的文章对你有用,请随意赞赏