在虚拟机Vmware中我们有时候需要添加新的虚拟磁盘或给已有虚拟磁盘扩容(expand),在新增磁盘或磁盘扩容后,linux系统并不能马上识别到。也就是说你看不到磁盘空间变化(使用fdisk -l查看),这时我们可以通过重启系统(reboot)解决这个问题,但是很多时候,我们并不想在存储扩容时重启系统,因为这样会影响到现有的业务系统。那么为什么新增磁盘或磁盘扩容后,Linux系统识别不到呢?这个是因为连接存储设备的SCSI总线需要重新扫描,才能识别到这些新的存储设备。下面测试一下在添加新的虚拟磁盘或给已有虚拟磁盘扩容如何操作才能不用重启系统
1:Vmware虚拟磁盘扩容
如下所示,Vmware虚拟磁盘扩容后,使用fdisk -l看不到任何变化
[root@localhost ~]# fdisk -l
Disk /dev/sda: 171.7 GB, 171798691840 bytes
255 heads, 63 sectors/track, 20886 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 15665 125724690 8e Linux LVM
/dev/sda3 15666 15795 1044225 83 Linux
/dev/sda4 15796 20886 40893457+ 83 Linux
Disk /dev/dm-0: 126.6 GB, 126600871936 bytes
255 heads, 63 sectors/track, 15391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/dm-0 doesn't contain a valid partition table
Disk /dev/dm-1: 2113 MB, 2113929216 bytes
255 heads, 63 sectors/track, 257 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/dm-1 doesn't contain a valid partition table
方法1:echo 1 > /sys/class/scsi_device/device/rescan
[root@localhost ~]# cd /sys/class/scsi_disk/
[root@localhost scsi_disk]# ls
0:0:0:0
[root@localhost scsi_disk]# cd 0/:0/:0/:0/
[root@localhost 0:0:0:0]# echo '1' > device/rescan
[root@localhost 0:0:0:0]# fdisk -l
Disk /dev/sda: 173.9 GB, 173946175488 bytes
255 heads, 63 sectors/track, 21147 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 15665 125724690 8e Linux LVM
/dev/sda3 15666 15795 1044225 83 Linux
/dev/sda4 15796 20886 40893457+ 83 Linux
Disk /dev/dm-0: 126.6 GB, 126600871936 bytes
255 heads, 63 sectors/track, 15391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/dm-0 doesn't contain a valid partition table
Disk /dev/dm-1: 2113 MB, 2113929216 bytes
255 heads, 63 sectors/track, 257 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/dm-1 doesn't contain a valid partition table
方法2:重新扫描特定的 SCSI Device
echo 1 > /sys/block/$DEVICE/device/rescan 用sda, sdb, sdc等替换$DEVICE
[root@localhost ~]# echo 1 > /sys/block/sda/device/rescan
2:Vmware新增虚拟磁盘
首先找到您的主机总线编号
[root@localhost ~]# grep mpt /sys/class/scsi_host/host?/PRoc_name
/sys/class/scsi_host/host0/proc_name:mptspi
使用下面命令扫描SCSI总线
[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
参考资料:
http://thornelabs.net/2012/08/22/linux-rescan-scsi-bus.html
新闻热点
疑难解答