Stellen Sie eine ausgelastete Festplatte erneut in den schreibgeschützten Modus

19

Ich möchte erzwingen, dass eine Festplattenpartition schreibgeschützt ist, und sie länger als 30 Minuten schreibgeschützt lassen.

Was ich ausprobiert habe:

  1. mount -o remount,ro (partition-identifier) (mount-point) -t (filesystem)

    Problem : Dies führte zu einem Gerätefehler, da einige Prozesse die Partition verwendeten. Ich möchte die Prozesse nicht mit der Festplatte beenden. Ich möchte simulieren, dass die Festplatte plötzlich schreibgeschützt wird, während die Prozesse sie noch verwenden.

  2. Benutzter magischer sysrq Schlüssel, wie unten

    echo u > /proc/sysrq-trigger
    

    Problem : Dadurch sind alle Festplattenpartitionen schreibgeschützt (obwohl das Gerät ausgelastet ist). Nach 20-30 Minuten startet sich die Maschine von selbst neu. Einige Computer werden sofort neu gestartet, sobald dieser Befehl ausgeführt wird. Ich bin mir noch nicht sicher, was diesen Neustart verursacht. Ich möchte nicht, dass sich der Computer von selbst neu startet und die Festplatte mindestens 30 Minuten lang im schreibgeschützten Modus bleibt.

Frage : Gibt es eine bessere Möglichkeit, eine einzelne Festplattenpartition dazu zu zwingen, schreibgeschützt zu sein und sie in diesem Zustand eine halbe Stunde lang beizubehalten und wieder in den Lese- / Schreibmodus zu versetzen, ohne dabei einen Neustart zu verursachen?

AdithyaCS
quelle
3
Hast du darüber nachgedacht fsfreeze -f? Das Dateisystem wird nicht erneut schreibgeschützt gemountet. Stattdessen blockiert es alle Autoren bis fsfreeze -u. Aber es ist ähnlich ...
Celada
Vielen Dank, Celada! Das ist eine gute Idee! .. Im Moment habe ich kein fsfreeze auf meiner Maschine, aber ich werde es versuchen.
AdithyaCS
Ich habe es versucht fsfreeze -fund es war in meinem Fall mehr "os freeze". Vielleicht, weil Schreibvorgänge blockiert statt abgelehnt wurden?
Piotr Findeisen
fsfreezeIch habe mein System gesperrt und konnte den Unfreeze-Befehl nicht eingeben, da ich nicht zu einem Terminal zurückkehren konnte und meinen Computer neu starten musste. Also sei gewarnt ! :)
Alex

Antworten:

16

Normalerweise können Sie ein Dateisystem nicht erneut als schreibgeschützt bereitstellen, wenn auf Prozessen eine Datei zum Schreiben geöffnet ist oder wenn eine gelöschte, aber noch geöffnete Datei enthalten ist. Ebenso können Sie ein Dateisystem, in dem eine Datei geöffnet ist (oder eine ähnliche Verwendung von Dateien, z. B. ein Prozess, in dem das aktuelle Verzeichnis vorhanden ist, eine ausführbare Datei usw.), nicht aushängen.

Sie können umount -lden Einhängepunkt freigeben und das Öffnen weiterer Dateien verhindern, das Dateisystem jedoch weiterhin einbinden und Prozesse, bei denen Dateien bereits geöffnet sind, normal ausführen.

Ich kann mir keine generische Möglichkeit vorstellen, ein Dateisystem dazu zu zwingen, schreibgeschützt erneut gemountet zu werden, wenn dies nicht der Fall sein sollte. Wenn das Dateisystem jedoch von einem Blockgerät gesichert wird, können Sie das Blockgerät schreibgeschützt machen , z

echo 1 >/sys/block/dm-4/ro
echo 1 >/sys/block/sda/sda2/ro

echo u > /proc/sysrq-triggerDies ist eine ziemlich extreme Methode, um das erneute Laden als schreibgeschützt zu erzwingen, da dies alle Dateisysteme betrifft. Es ist als letzte Methode gedacht, das Dateisystem kurz vor dem Neustart in einem sauberen Zustand zu belassen.

Das erneute Einhängen eines Dateisystems als schreibgeschützt führt nicht zu einem Neustart. Was auch immer den Neustart verursacht, hängt nicht direkt mit dem erneuten Bereitstellen der Partition als schreibgeschützt zusammen. Möglicherweise hat dies nichts mit dem Prozessor zu tun, oder es wird ein Fehler in der Anwendung ausgelöst, der dazu führt, dass sich der Prozessor dreht und überhitzt. Ihr Prozessor ist defekt oder übertaktet und startet schließlich neu. Sie müssen die Ursache des Neustarts ermitteln.

Gilles 'SO - hör auf böse zu sein'
quelle
2
Leider ist dies keine tragbare Lösung. Auf Himbeere bekomme ich: "Erlaubnis verweigert", wenn ich laufeecho 1 | sudo tee /sys/block/mmcblk0/mmcblk0p2/ro
Piotr Findeisen
.. und echo u > /proc/sysrq-triggerist nicht nur extrem, sondern kann Sie auch zum Neustart zwingen, wenn Sie RW wieder einbinden möchten. Als ich dies versuchte und dann erneut einbinden (mit mount..) dmesgsagte "RDWR konnte nicht erneut eingebunden werden, da die Liste der verwaisten Inodes noch nicht verarbeitet wurde. Bitte umount / remount stattdessen"
Piotr Findeisen
@PiotrFindeisen hast du das als root ausgeführt?
Hanshenrik
@ Hanshenrik Ich denke schon
Piotr Findeisen
4

Verwenden Sie mountdie Option force (vorausgesetzt Ihr Mount hat eine; GNU mountnicht, aber BSD und macOS zum Beispiel):

mount -f -o remount,ro /mount/point

Natürlich kann Ihr Kilometerstand abhängig vom aktuellen Dateisystem, der Kernel-Version und der jeweiligen Situation variieren. Dies ist also nur eine übergeordnete Option, bei der Sie andere untergeordnete Tricks ausprobieren, wie z. B. von @Gilles erwähnt.

Piotr Findeisen
quelle
1
@psusi nein. Dadurch konnte ich meine ext4- /Partition erneut einbinden .
Piotr Findeisen
2
Es hat sich herausgestellt, dass ich darüber nachgedacht habe umount -f, aber ich habe gerade versucht, ro erneut einzuhängen, und während das -f bewirkt, dass der Befehl keinen Fehler zurückgibt, ist das Dateisystem tatsächlich nicht schreibgeschützt.
Psusi
1
@psusi, keine Überraschung. Ich würde nicht erwarten, dass in allen Fällen ein einziger Ansatz funktioniert. Dies hat bei mir wiederholt funktioniert (ext4-Root-Partition auf Himbeer) - und ich meine, das erneute Einhängen in RO, ohne Fehler zu ignorieren -, also wird es in einigen, aber nicht in allen anderen Fällen funktionieren. Tut mir leid, aber deins war nicht dabei.
Piotr Findeisen
13
Mann Berg sagt, -fist --fake. Zitat: "Veranlasst, dass alles außer dem eigentlichen Systemaufruf ausgeführt wird. Wenn dies nicht offensichtlich ist, wird das Dateisystem durch diese" Fälschung "eingebunden. Diese Option ist in Verbindung mit dem Flag -v nützlich, um zu bestimmen, was der Befehl mount versucht Dies kann auch verwendet werden, um Einträge für Geräte hinzuzufügen, die zuvor mit der Option -n bereitgestellt wurden. Die Option -f sucht nach vorhandenen Datensätzen in / etc / mtab und schlägt fehl, wenn der Datensatz bereits vorhanden ist (mit regulären nicht gefälschten Bereitstellungen, Diese Prüfung wird vom Kernel durchgeführt. "
Will Manley
3
BSD und MacOS-Mounts bedeuten in der -f Tat "Force".
Terdon