如何在不重新启动的情况下检测连接的新硬盘?

如何在不重新启动的情况下检测连接的新硬盘?

我有一个小问题。我有一个在 RHEL 6.7 (VM) 上运行的实时系统,并且有 VMware 6.5(不由我们组管理)。问题是,另一组尝试扩展虚拟机上现有磁盘的容量。之后,我像往常一样运行扫描命令来检测新磁盘echo "- - -" > /sys/class/scsi_host/host0/scan,但没有任何反应。他们在 sdb 磁盘上添加了 40G,本来应该是 100G,我看到 VM 上的情况发生了变化,但 Linux 中没有。那么问题出在哪里呢?正如我所说,这是一个实时系统,所以我不想重新启动它。

这是系统:

# df -h /dev/mapper/itsmvg-bmclv
                       59G   47G  9.1G  84% /opt/bmc

# lsblk sdb                          8:16   0   60G  0 disk  └─itsmvg-bmclv (dm-2)      253:2    0   60G  0 lvm  /opt/bmc

# vgs   VG       #PV #LV #SN Attr   VSize  VFree    itsmvg     1   1   0 wz--n- 59.94g     0 

# pwd   /sys/class/scsi_host

# ll lrwxrwxrwx 1 root root 0 Nov 13 16:18 host0 -> ../../devices/pci0000:00/0000:00:07.1/host0/scsi_host/host0 lrwxrwxrwx 1 root root 0 Nov 13 16:19 host1 -> ../../devices/pci0000:00/0000:00:07.1/host1/scsi_host/host1 lrwxrwxrwx 1 root root 0 Nov 13 16:19 host2 -> ../../devices/pci0000:00/0000:00:15.0/0000:03:00.0/host2/scsi_host/host2

答案1

如上所述,您可以使用一行扫描所有现有主机:

for host in /sys/class/scsi_host/*; do echo "- - -" | sudo tee $host/scan; ls /dev/sd* ; done

结果:

$ for host in /sys/class/scsi_host/*; do echo "- - -" | sudo tee $host/scan; ls /dev/sd* ; done
- - -
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdb1  /dev/sdc  /dev/sdc1
- - -
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdb1  /dev/sdc  /dev/sdc1


- - -
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdb1  /dev/sdc  /dev/sdc1
- - -
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdb1  /dev/sdc  /dev/sdc1
- - -
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdb1  /dev/sdc  /dev/sdc1  /dev/sdd  /dev/sdd1

最后一行显示我们/dev/sdd发现了设备。

答案2

这对我刷新所有设备有用:(作为更容易运行的命令)

echo "- - -" | tee /sys/class/scsi_host/host*/scan

三个破折号充当通配符来重新扫描所有内容:通道、SCSI 目标 ID 和 LUN。

答案3

以下是扫描主机设备所需运行的命令,以便显示已连接的新硬盘。

echo "- - -" >> /sys/class/scsi_host/host_$i/scan

$i 是主机号

答案4

您也可以尝试运行

partprobe

此命令检查分区表中的更改并将其通知操作系统。

相关内容