在Linux上添加SCSI磁盘而无需重新启动

我添加了新的磁盘到我正在运行的Linux虚拟机。

是否可以明确地添加SCSI / SATA设备,或重新扫描整个SCSI / SATA主机总线,而无需重新启动正在运行的Linux?

对的,这是可能的。 有一些方法可以做到这一点:

添加一个设备

echo "scsi add-single-device <Host> <Bus> <Target> <Lun>" > /proc/scsi/scsi 

在我的情况下,我添加了Host / 8上唯一的SCSI / SATA磁盘,所以命令是

 echo "scsi add-single-device 8 0 0 0" > /proc/scsi/scsi 

重新扫描SCSI / SATA主机总线

如果系统中添加了多个磁盘,则可以扫描显式SCSI / SATA主机上的所有设备

 echo "- - -" > /sys/class/scsi_host/hostHOSTNUM/scan 

即如果磁盘被添加到主机= 8,命令是

 echo "- - -" > /sys/class/scsi_host/host8/scan 

重新扫描所有SCSI / SATA主机

一般来说,如果您不知道添加磁盘的主机号码,则可以扫描机器上的整个SCSI主机。

获取SCSI / SATA主机列表:

  1. 使用lsscsi获取主机列表: lsscsi -H

  2. 使用sysfs来获取主机列表: ls -d /sys/class/scsi_host/host*

重新扫描给定的主机: echo "- - -" > /sys/class/scsi_host/hostX/scan

简单的全面扫描自动化脚本

 #/bin/bash # ReScan all SCSI/SATA Hosts for SHOST in /sys/class/scsi_host/host*; do echo -n "Scanning ${SHOST##*/}..." echo "- - -" > ${SHOST}/scan echo Done done 

来源被用在这个答案:

EVAN HOFFMAN的博客

nixCraft

RedHat客户门户