Laufwerk sicher entfernen im Terminal

Lance

Well-Known Member
Ich benutze regelmäßig eine ZFS HDD (extern über USB 3.0) als Backup und kann sie unter macOS und auch Ubuntu „sicher entfernen“ so dass das Laufwerk „herunterfährt“ und anschließend die LED blinkt.
Bei FreeBSD (MATE; GhostBSD) wird sie im Dateimanager nicht als Laufwerk eingebunden und daher fehlt diese Option.

Generell scheint MATE diese Option auch gar nicht anzubieten, selbst bei anderen eingebundenen HDD USB Laufwerken (z.B. exFAT, NTFS)

Kann man das per Terminal bewerkstelligen? Ich meine jetzt auch nicht den umount Befehl sondern da soll es unter Linux etwas geben um den USB Port in den Ruhemodus zu versetzen aber das finde ich recht kompliziert.
 

cabriofahrer

Well-Known Member
Generell scheint MATE diese Option auch gar nicht anzubieten, selbst bei anderen eingebundenen HDD USB Laufwerken (z.B. exFAT, NTFS)
Das liegt nicht an MATE. Neulich hattest Du noch freudig erwähnt, dass GhostBSD jetzt alles automatisch mounten würde. Möglicherweise ist da bsdisks am Werk, was noch ziemlich unausgereift scheint. Mit dsbmd/dsbmc bekomme ich alles automatisch gemountet, auch externe NTFS-Laufwerke. Vielleicht solltest Du mal versuchen, auch auf GhostBSD dsbmd/dsbmc zu installieren, doch beachte meinen Thread von neulich, da gibt es aufgrund von bsdisks neuerdings eine Komplikation:

 

pit234a

Well-Known Member
Mit dsbmd/dsbmc bekomme ich alles automatisch gemountet
aber eben nicht ZFS und dafür hat @marcel gute Gründe.

ZFS ist eben nicht nur "ein weiteres Dateisystem" und es kann sehr zerstörerisch sein, da etwas einfach und unüberlegt in ein laufendes System einzubinden.
In Linux habe ich auch gesehen, dass sowohl BTRFS als auch ZFS mehr oder weniger wie ein gewöhnliches Dateisystem behandelt werden (können) und fand das auch recht verwirrend. Vermutlich laufen da Automatismen, die ein "sicheres Handling" ermöglichen und dann kann es nur so sein, dass eine ganze Anzahl von Möglichkeiten außer Acht gelassen werden. Ob man das gut finden soll oder nicht, sei mal dahingestellt. Ich weiß so etwas nicht.

Das ist aber wiederum eine ganz unterschiedliche Sache, als das Schlafen lassen von Laufwerken.
Natürlich hängt das insofern zusammen, dass man ja tunlichst nicht ein Laufwerk schlafen lassen sollte, das noch eingebunden ist und worauf womöglich aktiv Daten geschrieben werden.
In Linux gibt es dafür Befehle, ich meine mich an hdparm zu erinnern, womit man Laufwerke schlafen legen kann
In FreeBSD kommt man dem vielleicht mit smartctl nahe.
Doch: Geräte am USB-Anschluss sind speziell und es ist nicht gesagt, dass der dort verwendete Kontroller die Befehle auch durchreicht. Im Gegenzug haben solche Geräte oft eine automatische "Schlaf-Funktion" eingebaut.

Nun, und ist dann wiederum eine ganz andere Sache, als den USB-Port für das Betriebssystem zu sperren oder den dev-Eintrag zu entfernen.

Man müsste nun etwas genauer wissen, was denn "sicher Entfernen" eigentlich machen soll und wie denn der Zustand ist, von dem aus etwas entfernt werden soll. Dazu möchte ich mal nur auf zwei unterschiedliche Dinge hinweisen:
zfs mount <-> zpool import
zfs umount <-> zpool export
Logisch sicher ist das ja, wenn nichts eingebunden ist. Aber: auch dann könnte ich das Laufwerk formatieren und mit /dev/zero beschreiben oder so was. Wenn ich also Fehler mache, könnte ich auch ein sicher entferntes Laufwerk, dessen /dev-Eintrag noch zugänglich ist, durchaus zerstören, also, die Daten darauf zerstören. Über die unterschiedlichen Möglichkeiten mit mehreren vorhandenen Partitionen will ich dabei gar nicht erst anfangen zu reden.
Angenommen, du hast einen Pool auf der externen Platte und hast den mittels zpool import eingebunden (inklusive der Datasets) und bist nun damit fertig, dann kannst du mit einem zpool export diesen Pool wieder loswerden.
Angenommen, du hast nur ein bestimmtes Dataset mit zfs mount eingebunden und bist damit fertig, dann kannst du mit zfs unmount dieses "auswerfen".
Und den Rest würde ich der Einfachheit (und Sicherheit) halber manuell machen: Stecker ziehen!
 

Lance

Well-Known Member
Nachtrag:
Code:
usbconfig ugen1.3 power_off
muss es in meinem Fall heissen und es macht tatsächlich genau das was ein "sicheres entfernen" unter Windows oder den anderen Systemen macht :) (Aber unbedingt vorher unmounten, da darauf keine Rücksicht genommen wird, habs mal getestet!)
 
Oben