Wie kann ich eine SATA-Festplatte sicher aus einem laufenden System entfernen?


64

Manchmal muss ich eine Festplatte in einen Festplattenschacht stecken. In anderen Fällen habe ich das seltsame Problem, eine SSD über ein SATA-eSATA-Kabel an meinem Laptop anzuschließen, während ich von einem Desktop-Computer aus Strom ziehe.

Wie kann ich die SATA-Festplatte sicher aus dem System entfernen? Dieser Phoronix- Forenthread hat einige Vorschläge:

justsumdood schrieb:

Ein (noymous) Droide schrieb:
Was machen Sie dann auf der Softwareseite, bevor Sie den Stecker ziehen? Ist es ein einfaches "umount / dev / sd" [Laufwerksbuchstabe]? Um das Gerät auszuschalten (oder in den Ruhezustand zu versetzen), gehen Sie wie folgt vor:

hdparm -Y /dev/sdX

(Dabei steht X für das Gerät, das Sie ausschalten möchten. Beispiel: / dev / sdb)

Dadurch wird das Laufwerk abgeschaltet, sodass es entfernt werden kann, ohne dass die Gefahr von Spannungsspitzen besteht.

Bedeutet dies, dass die Festplatten-Caches ordnungsgemäß geleert und danach ausgeschaltet werden?

Ein weiterer Vorschlag aus dem gleichen Thread:

chithanh schrieb:
Alle SATA-und eSATA-Hardware ist physikalisch Hotplug- fähig (dh nicht beschädigt, wenn Sie den Stecker einstecken / ziehen).

Wie der Chipsatz und der Treiber damit umgehen, ist eine andere Frage. Einige Treiber / Chipsatz-Kombinationen unterstützen das Hotplugging nicht ordnungsgemäß und benötigen einen Warmplug-Befehl wie den folgenden:

echo 0 - 0 > /sys/class/scsi_host/hostX/scan

Ersetzen Sie X durch die entsprechende Nummer für Ihren SATA / eSATA-Anschluss.

Ich bezweifle, ob dies der richtige Weg ist, aber ich kann auch keinen Beweis dafür finden.

Was ist nun der richtige Weg, um eine angehängte Festplatte von einem System zu entfernen? Angenommen, ich habe bereits alle Partitionen auf der Festplatte abgemeldet und ausgeführt sync. Bitte verweisen Sie nach Möglichkeit auf eine offizielle Dokumentation. Ich konnte weder im Linux-Dokumentationsbaum noch im Linux-ATA-Wiki etwas finden .

Antworten:


82
  1. Hängen Sie alle Dateisysteme auf der Festplatte aus. ( umount ...)
  2. Deaktivieren Sie alle LVM-Gruppen. ( vgchange -an)
  3. Stellen Sie sicher, dass die Festplatte für nichts verwendet wird.
  4. Sobald Sie das getan haben, sollte es sicher sein, den Stecker zu ziehen.

Wenn Sie besonders vorsichtig sein möchten, tun Sie dies echo 1 > /sys/block/(whatever)/device/deletezuerst. Dadurch wird die Registrierung des Geräts vom Kernel aufgehoben , sodass Sie wissen , dass es beim Trennen nicht verwendet wird. Wenn ich das mit einem Laufwerk in einem eSATA-Gehäuse mache, höre ich, wie sich die Köpfe des Laufwerks selbst parken, sodass der Kernel das Laufwerk anscheinend auffordert, sich auf das Herunterfahren vorzubereiten.

Wenn Sie einen AHCI-Controller verwenden, sollte dieser mit dem Herausziehen von Geräten fertig werden. Wenn Sie einen anderen SATA-Controller verwenden, kann das Hotplugging den Treiber verwirren.

Meiner Erfahrung nach funktioniert SATA-Hotplugging (mit AHCI) unter Linux ziemlich gut. Ich habe ein optisches Laufwerk herausgezogen, eine Festplatte eingesteckt, nach Fehlern durchsucht, ein Dateisystem erstellt und Daten darauf kopiert, es ausgehängt und herausgezogen, ein anderes DVD-Laufwerk eingesteckt und eine CD / DVD gebrannt, und das alles mit der Maschine und läuft.


Ich musste eine Festplatte ausstecken, die ich komplett löschen wollte. Nachdem Sie die Festplatte aus dem Schacht gezogen haben, wurde / dev / sdXY immer noch angezeigt. Das Schreiben 1an deletemachte es verschwinden , und ich konnte die Scheibe zum Stillstand kommen hören. War einfach hdparm -Ynicht genug, weil die /dev/Einträge noch existieren würden. Vielen Dank!
Lekensteyn

16
Es wird dringend empfohlen, den Befehl immer abzusetzen, echo 1 > /sys/block/(whatever)/device/deleteda das Laufwerk die Köpfe parkt, die Festplatte vollständig stoppt und die Stromversorgung für den Bus deaktiviert. Wenn ein nicht geparkter Kopf eine sich drehende Platte berührt, kann das Laufwerk dauerhaft zerstört werden.
Trommelfeuer

2
Auch - wenn smartd gerade ausgeführt wird, ist es eine gute Idee, ein SIGHUP für den Prozess auszustellen, damit die Laufwerksinformationen neu geladen werden. Besonders wichtig , wenn Sie ersetzen Laufwerke weil smartd die Informationen für das Laufwerk und alle anderen neu zu laden.
Trommelfeuer

1
Nur ein Hinweis, der erwähnenswert ist, echo 1 > /sys/block/(whatever)/device/deletefunktioniert nicht unter sudo, der Fehler "Berechtigung verweigert" wird ausgegeben. Sie müssen eine echte Wurzel werden, verwenden Sie sustattdessen einfach alt .
TranslucentCloud

11
@TranslucentCloud Sie können es weiterleiten sudo tee, um eine Umleitung als root zu emulieren:echo 1 | sudo tee /sys/block/(whatever)/device/delete
Oli

5

Diese beiden Abschnitte sind für verschiedene Dinge.

Der erste ist zum Ausstecken . Die zweite ist zum Einstecken .

Zum Trennen synchronisiert das Betriebssystem die Daten während des Unmount-Vorgangs. Wenn die Festplatte nicht gemountet ist (vorausgesetzt, Sie verfügen tatsächlich über vollständige Hardwareunterstützung), können Sie die Festplatte ausschalten und dann vom Stromnetz trennen, ohne dass das Risiko eines Datenverlusts oder einer Beschädigung besteht.

Zum Einstecken sollte das Gerät automatisch erkannt werden. Wenn nicht, können Sie diesen Befehl ausführen, um einen Busscan auszulösen. Sobald das Gerät erkannt wurde, können Sie es einbinden.

Lassen Sie mich dies einschränken, indem ich sage, dass ich so etwas bisher nur mit USB-Laufwerken gemacht habe.


Vielen Dank für Ihre Antwort, aber ich bin immer noch nicht überzeugt, was die richtige Aktion wäre. SSDs haben ein SMART-Feld "Unsafe Shutdown Count" (Anzahl unsicherer Herunterfahren). Nur das Herausziehen des Steckers, ohne etwas zu tun, klingt für mich nicht sicher.
Lekensteyn

3
Wenn es hilft, kann ich SATA-Festplatten routinemäßig als Teil meiner Arbeit Hot-Plug- und Hot-Unplug-Vorgänge ausführen. Dabei muss lediglich sichergestellt werden, dass sie zuerst ausgehängt werden, und es ist kein Problem aufgetreten. Das ist anekdotisch, also nimm es nicht als Evangelium, aber es ist zumindest ein Beweis dafür, dass es wahrscheinlich sicher ist. In jedem Fall würde ich es als Kernel-Fehler bezeichnen, wenn das Betriebssystem nicht sicherstellt, dass die Daten am Ende eines Unmount-Vorgangs vollständig geschrieben sind, insbesondere in einer Hotplug-Welt.
Jander

1
@Lekensteyn, das hdparm -Ywird sich darum kümmern. Das ist im Grunde, was das System jedes Mal tut, wenn Sie anhalten oder herunterfahren.
Psusi

5

was ist eject /dev/sdX? Bei meinem Setup wird das Laufwerk mit diesem Befehl umgemountet, synchronisiert und heruntergefahren.


4
Ich habe dies mit einer Festplatte versucht, die über eSATA angeschlossen ist, aber der Befehl ist mit "nicht hotpluggbar" oder so fehlgeschlagen.
Lekensteyn

1
Afaik Eject steckt den steckbaren Datenträger aus und nicht das Gerät. Dies hängt davon ab, ob der Block-Gerätetreiber ioctl()die vom ejectTool verwendete Operation unterstützt . Esata-Festplattenlaufwerke unterstützen dies nicht, aber optische Geräte, Disketten und wahrscheinlich Flash-Laufwerke, ja.
user259412

2

Ich habe ein paar Skripte, die auf der Antwort von Wyzard aufbauen . Das erste scsi-dropist das sichere Trennen einer einzelnen Festplatte:

#!/bin/sh

if test -h "$1"
then
    disk=$(chase "$1")
else
    disk="$1"
fi

if test -b "$disk"
then
    echo 1 >/sys/block/$(basename "$disk")/device/delete
else
    echo "$0: not a block device: $1" >&2
    exit 1
fi

Der Hauptvorteil besteht darin, dass Sie ihm einen Symlink übergeben können, wie er in gefunden /dev/disk/by-id/wird, und dass dieser auf das reale Gerät übertragen wird. Es muss chaseinstalliert sein; Möglicherweise können Sie mit das gleiche Ergebnis erzielen readlink -e.

Das zweite Skript scsi-rescanwird nach dem Hotplugging eines neuen Geräts verwendet:

#!/bin/bash

exec tee /sys/class/scsi_host/host*/scan <<<'- - -' >/dev/null

Dadurch suchen alle Adapter erneut nach Geräten. Nur so konnte ich die neue Kapazitäts- und Partitionstabelle lesen.


0

Tatsächlich parken SATA-Laufwerke die Köpfe automatisch, wenn die Stromversorgung unterbrochen wird. Das Ziehen des Laufwerks, während es sich noch dreht, sollte nicht zu Problemen führen. Drehende Scheiben neigen jedoch zu Dellen, wenn sie angestoßen werden. Sie können dies hören, wenn Sie Schuppenkraft oder Sonneneruptionen haben.

Die meisten Schäden werden normalerweise durch nicht geleerten Cache und nicht festgeschriebene Schreibvorgänge in Puffern usw. verursacht. Aus diesem Grund MÜSSEN Sie die Bereitstellung eines Laufwerks aufheben, bevor Sie es entfernen. Der SCSI-Befehl ist nur eine gute Maßnahme und funktioniert zum gleichen Zweck.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.