我有一个小问题。我有一个在 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
此命令检查分区表中的更改并将其通知操作系统。