„rescan-scsi-bus.sh“ kann verwendet werden, um neue LUNs in einem CentOS/RHEL-Computer zu scannen. Wenn 'rescan-scsi-bus.sh -i' ausgeführt wird, führt das Skript auch einen LIP_RESET (ISSUE_LIP) aus, der zu einer Unterbrechung der E/A auf dem Server und sogar zu einem Ausfall führen kann, falls ein System unter hoher Last läuft .
Was ist LIP (Loop Initialization Protocol)?
LIP scannt die Verbindung und bewirkt, dass die SCSI-Schicht aktualisiert wird, um die derzeit auf dem Bus befindlichen Geräte widerzuspiegeln. Ein LIP ist im Wesentlichen ein Bus-Reset und bewirkt das Hinzufügen und Entfernen von Geräten. Dieses Verfahren ist erforderlich, um ein neues SCSI-Ziel auf einer Fibre Channel-Verbindung zu konfigurieren. Beachten Sie, dass issue_lip eine asynchrone Operation ist. Der Befehl kann abgeschlossen werden, bevor der gesamte Scan abgeschlossen ist.
Was kann ein LIP-Reset verursachen?
Die Methode des Schleifeninitialisierungsprotokolls zum Scannen der HBAs kann zu Verzögerungen und E/A-Zeitüberschreitungen führen, wenn der HBA/das Gerät verwendet wird, und kann auch Geräte unerwartet entfernen. Daher wird die Durchführung des Scans mit dieser Methode auf Produktionsservern, auf denen die SAN-Geräte bereits konfiguriert sind, nicht empfohlen. Diese Art von Scan wird auf einem neu erstellten Server empfohlen, um alle LUNS/Geräte zu scannen. LIP wird normalerweise beim Booten des Servers ausgeführt.
Wann man issu_lip verwendet
Bitte verwenden Sie den Standardbefehl rescan-scsi-bus.sh ohne -i FLAG, rescan-scsi-bus.sh „scannt“ nur nach neuen LUNs. Bitte achten Sie besonders darauf, wenn Sie rescan-scsi-bus.sh -i in der Live-/Produktionsumgebung ausführen, dies kann zu ernsthaften Problemen führen.
Das Problem kann noch schlimmer werden, wenn rescan-scsi-bus.sh auf dem tatsächlichen RAC-Knoten oder einer Clustering-Software ausgeführt wird, die den Eviction-Prozess verwendet. Dies liegt an der E/A-Aktivität, die auf dem Knoten blockiert wird, auf dem rescan-scsi-bus. sh -i wird ausgeführt, was dazu führt, dass sogar disk-heartbeat keine 'Heartbeat-Informationen' schreiben kann.
Ein LIP-Reset kann auch ohne rescan-scsi-bus.sh -i erreicht werden, indem der Befehl verwendet wird:
# echo "1" > /sys/class/fc_host/host/issue_lip
Diese Methode wird nicht empfohlen . Der LIP-Befehl ist asynchron, daher kann dieser Befehl zurückkehren, bevor der LIP-Vorgang abgeschlossen ist. Sie müssen das Systemprotokoll /var/log/messages überwachen, um festzustellen, wann die LIP-Operation abgeschlossen ist. Dies ist im Wesentlichen ein Bus-Reset, sodass alle E/A-Operationen während des Flugs unterbrochen werden können. Bitte verwenden Sie stattdessen das Skript rescan-scsi-bus.sh.
Wenn neue LUNs erkannt werden müssen, können Sie Folgendes ausführen:
# echo "1" > /sys/class/fc_host/host/issue_lip
Dies sollte dazu beitragen, dass neue LUNs auf dem System erscheinen, ohne dass der Befehl rescan-scsi-bus.sh -i ausgeführt werden muss.
Diese Methode wird nicht empfohlen. Der LIP-Befehl ist asynchron, daher kann dieser Befehl zurückkehren, bevor der LIP-Vorgang abgeschlossen ist. Sie müssen das Systemprotokoll /var/log/messages überwachen, um festzustellen, wann die LIP-Operation abgeschlossen ist. Dies ist im Wesentlichen ein Bus-Reset, sodass alle E/A-Operationen während des Flugs unterbrochen werden können. Bitte verwenden Sie stattdessen das Skript rescan-scsi-bug.sh.
Schlussfolgerung
Wenn rescan-scsi-bus.sh -i wirklich auf der Produktionsumgebung ausgeführt werden muss, stoppen Sie bitte alle Anwendungen/Datenbankinstanzen und folgen Sie dann mit rescan-scsi-bus.sh -i. Der sicherere Weg wäre ein nur geplanter Server-Neustart, da der Server-Boot-in-LIP-Reset automatisch ausgeführt wird.
Bitte denken Sie auch daran, dass rescan-scsi-bus.sh -i nicht ausgeführt werden muss, wenn ein Multipath-Pfad verloren geht, es wird wiederhergestellt, wenn der Back-End-Speicherpfad wiederhergestellt wird (dies wird durch die Option path_checker in multipath .conf).