web-dev-qa-db-ja.com

再起動せずにLinuxにSCSIディスクを追加する

実行中のLinux仮想マシンに新しいディスクを追加しました。

SCSI/SATAデバイスを明示的に追加したり、実行中のLinuxを再起動せずにSCSI/SATAホストバス全体を再スキャンしたりすることはできますか?

1

はい、可能です。それを行うにはいくつかの方法があります:

単一のデバイスを追加します

 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

つまりディスクがHost = 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

この回答ではソースが使用されました:

エヴァン・ホフマンのブログ

nixCraft

RedHatカスタマーポータル

2