Das Auslagern eines fehlerhaften SATA / dev / sda-Laufwerks im laufenden Betrieb funktionierte einwandfrei, aber als ich ein neues Laufwerk einlegte, wurde es nicht erkannt:
[root@fs-2 ~]# tail -18 /var/log/messages
May 5 16:54:35 fs-2 kernel: ata1: exception Emask 0x10 SAct 0x0 SErr 0x50000 action 0xe frozen
May 5 16:54:35 fs-2 kernel: ata1: SError: { PHYRdyChg CommWake }
May 5 16:54:40 fs-2 kernel: ata1: link is slow to respond, please be patient (ready=0)
May 5 16:54:45 fs-2 kernel: ata1: device not ready (errno=-16), forcing hardreset
May 5 16:54:45 fs-2 kernel: ata1: soft resetting link
May 5 16:54:50 fs-2 kernel: ata1: link is slow to respond, please be patient (ready=0)
May 5 16:54:55 fs-2 kernel: ata1: SRST failed (errno=-16)
May 5 16:54:55 fs-2 kernel: ata1: soft resetting link
May 5 16:55:00 fs-2 kernel: ata1: link is slow to respond, please be patient (ready=0)
May 5 16:55:05 fs-2 kernel: ata1: SRST failed (errno=-16)
May 5 16:55:05 fs-2 kernel: ata1: soft resetting link
May 5 16:55:10 fs-2 kernel: ata1: link is slow to respond, please be patient (ready=0)
May 5 16:55:40 fs-2 kernel: ata1: SRST failed (errno=-16)
May 5 16:55:40 fs-2 kernel: ata1: limiting SATA link speed to 1.5 Gbps
May 5 16:55:40 fs-2 kernel: ata1: soft resetting link
May 5 16:55:45 fs-2 kernel: ata1: SRST failed (errno=-16)
May 5 16:55:45 fs-2 kernel: ata1: reset failed, giving up
May 5 16:55:45 fs-2 kernel: ata1: EH complete
Ich habe ein paar Dinge versucht, damit der Server das neue / dev / sda findet, wie rescan-scsi-bus.sh, aber sie haben nicht funktioniert:
[root@fs-2 ~]# echo "---" > /sys/class/scsi_host/host0/scan
-bash: echo: write error: Invalid argument
[root@fs-2 ~]#
[root@fs-2 ~]# /root/rescan-scsi-bus.sh -l
[snip]
0 new device(s) found.
0 device(s) removed.
[root@fs-2 ~]#
[root@fs-2 ~]# ls /dev/sda
ls: /dev/sda: No such file or directory
Am Ende wurde der Server neu gestartet. / dev / sda wurde erkannt, ich habe das Software-RAID repariert und jetzt ist alles in Ordnung. Aber wie kann ich Linux das nächste Mal dazu bringen, ein neues SATA-Laufwerk zu erkennen, das ich ohne Neustart im laufenden Betrieb ausgetauscht habe?
Das fragliche Betriebssystem ist RHEL5.3:
[root@fs-2 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.3 (Tikanga)
Bei der Festplatte handelt es sich um eine Seagate Barracuda ES.2 SATA 3.0-Gb / s 500-GB, Modell ST3500320NS.
Hier ist die lscpi-Ausgabe:
[root@fs-2 ~]# lspci
00:00.0 RAM memory: nVidia Corporation MCP55 Memory Controller (rev a2)
00:01.0 ISA bridge: nVidia Corporation MCP55 LPC Bridge (rev a3)
00:01.1 SMBus: nVidia Corporation MCP55 SMBus (rev a3)
00:02.0 USB Controller: nVidia Corporation MCP55 USB Controller (rev a1)
00:02.1 USB Controller: nVidia Corporation MCP55 USB Controller (rev a2)
00:04.0 IDE interface: nVidia Corporation MCP55 IDE (rev a1)
00:05.0 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:05.1 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:05.2 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:06.0 PCI bridge: nVidia Corporation MCP55 PCI bridge (rev a2)
00:08.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a3)
00:09.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a3)
00:0a.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0b.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0c.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0d.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0e.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0f.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
00:19.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:19.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:19.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:19.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
03:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G200e [Pilot] ServerEngines (SEP1) (rev 02)
04:00.0 PCI bridge: NEC Corporation uPD720400 PCI Express - PCI/PCI-X Bridge (rev 06)
04:00.1 PCI bridge: NEC Corporation uPD720400 PCI Express - PCI/PCI-X Bridge (rev 06)
Update : In vielleicht einem Dutzend Fällen mussten wir Server neu starten, weil Hot-Swap nicht "nur funktioniert" hat. Vielen Dank für die Antworten, um mehr über den SATA-Controller zu erfahren. Ich habe die Lspci-Ausgabe für das problematische System oben aufgenommen (Hostname: fs-2). Ich könnte immer noch Hilfe gebrauchen, um zu verstehen, was in Bezug auf den Hot-Swap für dieses System in Bezug auf Hardware nicht genau unterstützt wird. Bitte lassen Sie mich wissen, welche andere Ausgabe neben lspci nützlich sein könnte.
Die gute Nachricht ist, dass Hot-Swap heute auf einem unserer Server "funktioniert" hat (Hostname: www-1), was für uns sehr selten ist. Hier ist die lspci-Ausgabe:
[root@www-1 ~]# lspci
00:00.0 RAM memory: nVidia Corporation MCP55 Memory Controller (rev a2)
00:01.0 ISA bridge: nVidia Corporation MCP55 LPC Bridge (rev a3)
00:01.1 SMBus: nVidia Corporation MCP55 SMBus (rev a3)
00:02.0 USB Controller: nVidia Corporation MCP55 USB Controller (rev a1)
00:02.1 USB Controller: nVidia Corporation MCP55 USB Controller (rev a2)
00:04.0 IDE interface: nVidia Corporation MCP55 IDE (rev a1)
00:05.0 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:05.1 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:05.2 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:06.0 PCI bridge: nVidia Corporation MCP55 PCI bridge (rev a2)
00:08.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a3)
00:09.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a3)
00:0b.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0c.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0f.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:18.0 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] HyperTransport Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Miscellaneous Control
00:18.4 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Link Control
00:19.0 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] HyperTransport Configuration
00:19.1 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Address Map
00:19.2 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] DRAM Controller
00:19.3 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Miscellaneous Control
00:19.4 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Link Control
03:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G200e [Pilot] ServerEngines (SEP1) (rev 02)
04:00.0 PCI bridge: NEC Corporation uPD720400 PCI Express - PCI/PCI-X Bridge (rev 06)
04:00.1 PCI bridge: NEC Corporation uPD720400 PCI Express - PCI/PCI-X Bridge (rev 06)
09:00.0 SCSI storage controller: LSI Logic / Symbios Logic SAS1064ET PCI-Express Fusion-MPT SAS (rev 04)
Antworten:
Wenn Ihr SATA-Controller Hot-Swap unterstützt, sollte er "nur funktionieren (tm)".
Um einen erneuten Scan auf einem SCSI-Bus zu erzwingen (jeder SATA-Port wird als SCSI-Bus angezeigt) und neue Laufwerke zu finden, verwenden Sie:
In der obigen Abbildung ist <n> die BUS-Nummer.
quelle
sudo
den root-Benutzer benutze und zum root-Benutzer wechsle.powertop
, um mehr Dinge herunterzufahren, also war der SATA-Port, an den ich das Laufwerk angeschlossen habe, möglicherweise voll im Schlaf. (Das System ist ein optisches SATA - Laufwerk angeschlossen und beim Booten erkannt, aber es war wahrscheinlich schläft, auch.) Wie andere vorschlagen, zu vermeiden , dass die SATA - Verbindung für aktive Laufwerke zurückzusetzen, herauszufinden , welchehost
IDs sind bereits im Einsatz und nichtscan
diejenigen , , nur der, an den Sie ein neues Laufwerk angeschlossen haben. (Oder eine unbenutzte, wenn Sie die Nummerierung nicht kennen.)quelle
Wenn ein Laufwerk unter bestimmten Umständen ausgefallen ist, merkt Linux nicht, dass Sie es tatsächlich physisch aus dem Array gezogen haben. Wenn Sie dieses Problem haben (wie ich es heute Morgen getan habe), können Sie Folgendes tun:
Beispiel: In meinem Fall war / dev / sda fehlgeschlagen und ich wollte den Server nicht neu starten.
Nachdem ich das getan hatte, war das neue Laufwerk (das tatsächlich bereits physisch hinzugefügt worden war) sofort sichtbar.
Wenn es an dieser Stelle nicht sichtbar ist, können Sie auch einen erneuten Scan erzwingen:
Das "- - -" ist ein Platzhalter für Kanal, ID und LUN. Sie können den Scan also auf eine bestimmte Untermenge beschränken, indem Sie stattdessen Zahlen angeben.
Bevor Sie beginnen, können Sie auch:
Welches zeigt Ihnen den Pfad mit der richtigen Host-Nummer, um / proc / scsi / scsi nach dem Entfernen auf Verschwinden zu überprüfen.
quelle
Wie wäre es damit (scheint in Ubuntu zu funktionieren):
sudo partprobe
quelle
parted
FTW ... Sie sollten es auch wissen , neben den üblichen Verdächtigen wiefdisk
,gdisk
,cgdisk
,testdisk
.Ich kann nicht glauben, dass noch niemand AHCI erwähnt hat ... Ihr SATA-Controller muss sich im AHCI-Modus befinden, um Hot-Swap zu ermöglichen. Überprüfen Sie dies, indem Sie sich den Treiber ansehen, den Sie verwenden:
Sehen Sie, wie dort "ahci" steht.
Wenn dies nicht der Fall ist, aktivieren Sie es einfach in Ihrem BIOS. Außerdem haben einige BIOS-Dateien, insbesondere auf Servern oder UEFI, eine "Hot Swap = enabled / disabled" -Einstellung pro Festplatte, die Sie auch aktivieren sollten, wenn sie vorhanden sind.
quelle
Hier ist, warum ich den Computer neu starten musste ...
Ich habe gerade mein / dev / sdc ausgetauscht. Ich habe scsiadd -r 3 0 0 verwendet, um die alte Festplatte auszuschalten, bevor ich sie herausgezogen habe. Nach der Installation der neuen Festplatte wurde die neue Festplatte nicht als / dev / sdc, sondern als / dev / sdd angezeigt. Nach einem Neustart würde die Festplatte wieder als / dev / sdc angezeigt.
Es sieht also so aus, als ob Hotswap funktioniert. Ok, es kann sein, dass / dev / sd * nicht mehr dasselbe ist.
Könnte dies eine Antwort auf Ihr Problem sein?
quelle
Meine DVD auf meinem Fedora 16-Computer ist an eine SATA-Schnittstelle angeschlossen. Es war verschlossen und ließ sich nicht öffnen oder schließen. Wenn ich partprobe als root laufen lasse, funktioniert meine CD-ROM / DVD wieder. Ich gehe davon aus, dass dies auf einem anderen Computer hilfreich sein wird, auf dem gelegentlich ein Hot-Swap-Problem auftritt. Vielen Dank!
quelle
Der von Ihnen verwendete Fusion-MPT SAS-Controller ist ein Low-End-RAID-Controller. Wenn Sie es nicht für RAID verwenden, bietet es möglicherweise immer noch eine nicht hilfreiche Ebene der Behinderung / Abstraktion.
Möglicherweise müssen Sie den RAID-Controller mit mpt-status oder lsiutil anstupsen, damit er den Bus tatsächlich scannt.
http://hwraid.le-vert.net/wiki/LSIFusionMPT hat eine schöne Menge an Dokumentation, aber ich kann nicht sagen, dass ich es überprüft habe.
quelle
In einigen Fällen muss Hot-Swap möglicherweise im BIOS des Motherboards und / oder des SATA-Controllers aktiviert werden. Dies hängt vollständig von der Marke und dem Modell beider Geräte ab. Wenn Sie jedoch integrierte SATA-Controller haben, die Hotswap unterstützen sollen , lohnt es sich, das Motherboard-BIOS zu durchsuchen. SATA-Karten verfügen möglicherweise über eigene BIOS-Einstellungen, viele Karten der unteren Preisklasse jedoch normalerweise nicht.
Wenn ich mich richtig erinnere, habe ich das mit einer Reihe von Gigabyte-Motherboards und vielleicht einigen anderen Marken benötigt. Ich brauchte es, damit ein Hot-Swap-SATA-Fach funktioniert. Wenn die Funktion deaktiviert ist, verursacht das Entfernen des Laufwerks keine Probleme, aber ein neues Laufwerk wird erst nach einem Neustart registriert. Das Aktivieren der Einstellung funktionierte wie erwartet. Laufwerke, die in der Schublade platziert wurden, wurden sofort hochgefahren und standen dem Betriebssystem zur Verfügung.
quelle
Ich weiß, dass diese Frage alt ist, aber ich hatte einige Erfolge, die ich anderswo nicht gesehen habe. Hatte heute ähnliche Probleme mit einem Dell Precision 380. Irgendwann funktionierte es durch eine Kombination der folgenden Aktionen:
WARNUNG: Dies kann auch andere ATA-Geräte im System stören. Wenn Sie Dateisysteme auf diesen Geräten eingehängt haben, wird dies wahrscheinlich schlecht enden. Meine Situation war mir egal, aber deine vielleicht.
Welche der oben genannten Befehle in welcher Reihenfolge benötigt werden, ist mir derzeit nicht bekannt. Einige Befehle müssen möglicherweise wiederholt werden. Wenn ich raten müsste, würde ich sagen, in der oben gezeigten Reihenfolge zu tun, dann scsi_host erneut am Ende. Bei meinen Erkundungen habe ich noch einige mehr unternommen.
Der erste Befehl (scsi_host scan) weist den SCSI-Midlayer an, alle Busse nach neuen / geänderten Geräten zu durchsuchen. Der zweite Befehl versucht, das SCSI-Ziel (Festplattengerät) zurückzusetzen. Die letzten beiden arbeiten mit dem Treiber für den AHCI-Controller.
Ich fand die fraglichen Gegenstände größtenteils durch ausführliche Untersuchung und kühnes Experimentieren.
Sie können scsi_device-Knoten mit Gerätehersteller und -modell abgleichen (mit grep werden die Dateinamen vor dem Inhalt gedruckt):
Die erste Ziffer der SCSI-Geräte-ID sollte die scsi_host-Nummer sein. Sie können dann scsi_host-Knoten mit den Knoten ihrer Geräte abgleichen:
Ich vermute, dass ich nie die Möglichkeit haben werde, mich weiter zu verfeinern. Deshalb wollte ich diese Informationen in der Hoffnung teilen, andere näher zu bringen. Wenn ich mehr Informationen bekomme, bearbeite ich diese Antwort, um sie wiederzugeben.
Hoffe das hilft.
quelle
Damit Hotplug funktioniert, muss das acpiphp-Modul geladen sein.
Wenn dies beim Booten funktionieren soll, müssen Sie dies so konfigurieren, dass es beim Booten geladen wird. Eine Möglichkeit besteht darin, / edit /etc/rc.modules (das von rc.sysinit aufgerufen wird) zu erstellen und die folgende Zeile hinzuzufügen:
Denken Sie daran, wenn Sie diese Datei erstellen, um sie mit chmod + x zu versehen, wie sie so heißt.
quelle