Linux, wie kann man den Festplattenstatus von ReadOnly nach einem vorübergehenden Absturz ändern?


17

Zu diesem Zeitpunkt keine Antwort für dieses Problem.

Normalerweise entscheidet sich der Kernel nach einigen Problemen mit dem Lesen oder Schreiben, um das Gerät zu blockieren, dafür, das Flag für GANZES GERÄT als schreibgeschützt zu setzen. Danach bewirken alle Schreibvorgänge auf einer Partition / einem Dateisystem, die / das sich auf diesem Gerät befindet, dass es zusammen mit dem Gerätestatus als schreibgeschützt geschaltet wird, da keine Schreibvorgänge möglich sind.

Beispiel von dmesg: Dies ist eine Simulation für Gast-Linux unter Windows 8 mit VirtualBox, wenn die Defragmentierung ein Gast-Geräte-Image erstellt:

[11903.002030] ata3.00: exception Emask 0x0 SAct 0x1 SErr 0x0 action 0x6 frozen
[11903.003179] ata3.00: failed command: READ FPDMA QUEUED
[11903.003364] ata3.00: cmd 60/08:00:a8:77:57/00:00:00:00:00/40 tag 0 ncq 4096 in
[11903.003385]          res 40/00:01:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[11903.004074] ata3.00: status: { DRDY }
[11903.004248] ata3: hard resetting link
[11903.325703] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[11903.327097] ata3.00: configured for UDMA/133
[11903.328025] ata3.00: device reported invalid CHS sector 0
[11903.329664] ata3: EH complete
[11941.000472] ata3.00: exception Emask 0x0 SAct 0x1 SErr 0x0 action 0x6 frozen
[11941.000769] ata3.00: failed command: READ FPDMA QUEUED
[11941.000952] ata3.00: cmd 60/08:00:c8:77:57/00:00:00:00:00/40 tag 0 ncq 4096 in
[11941.000961]          res 40/00:01:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[11941.001353] ata3.00: status: { DRDY }
[11941.001504] ata3: hard resetting link
[11941.320297] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[11941.321252] ata3.00: configured for UDMA/133
[11941.321379] ata3.00: device reported invalid CHS sector 0
[11941.321553] ata3: EH complete
[11980.001746] ata3.00: exception Emask 0x0 SAct 0x11fff SErr 0x0 action 0x6 frozen
[11980.002070] ata3.00: failed command: WRITE FPDMA QUEUED
[11980.002255] ata3.00: cmd 61/18:00:28:23:59/00:00:00:00:00/40 tag 0 ncq 12288 out
[11980.002265]          res 40/00:01:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
-------------------
There are many other errors, like "lost write page", "Journal has aborted", "Buffer I/O error", "hard resetting link" and many others.

Danach montieren Ursache:

mount / -o remount,rw
mount: cannot remount block device /dev/sda1 read-write, is write-protected

weil das GANZE gerät sda rootfs hält ist sda1 READONLY.

Nach meiner Erfahrung tritt dies in folgenden Situationen auf:

  1. Die Festplatte ist wirklich beschädigt. Zurückgegebene Schreibprobleme hängen vom Zustand der Festplatte ab
  2. Der Hostcomputer ist überlastet, und das Timeout für das Schreiben der virtuellen Festplatte des Linux-Gastcomputers ist abgelaufen
  3. FC-Kabel oder SAN-Gerät (Array-Festplatten über Fibre Channel) sind überlastet
  4. Momentan unterbrochene Verbindung über FC oder FCoE. Möglicherweise verlorenes / Timeout-FC-Paket

In diesen Situationen ist das Gerät wirklich schreibgeschützt, aber der Linux-Kernel markiert dieses Gerät intern als schreibgeschützt und wird als schreibgeschützt verwendet. Dies ist eine Kernelfunktionalität zur Schadensverhütung, die jedoch nur ab 1. Punkt verwendet werden kann.

Die Frage ist. Wie kann man dem Kernel manuell mitteilen, dass ein Festplattenblockgerät normal funktioniert?

Ohne dies dient der Kernel als schreibgeschütztes Gerät, wie 'CD-ROM', und kein anderer Befehl hat die Möglichkeit, ordnungsgemäß zu funktionieren, einschließlich mount / remount -o read-write, fsck und andere.

Nicht verwendbare Ansvers, die sich als Spam von Leuten qualifizieren, die helfen wollen, aber die Problematik nicht verstehen:

  1. Versuchen Sie erneut, als Lese- / Schreibzugriff zu aktivieren (unmöglich, Gerät ist RO).
  2. fsck this (wofür? Gerät ist RO, keine Reparatur möglich)
  3. 'Ich weiß es nicht' (zuerst mit Verstand, aber unbrauchbar)
  4. "Tauschen Sie Ihr Gerät aus" * (normalerweise liegt das Problem an einer anderen Stelle)

Hat jemand eine Formel für die Frage oben? Schalterflag für beschreibbares Blockgerät, das es vom schreibgeschützten in den schreibgeschützten Zustand zurücksetzt? Zu diesem Zeitpunkt scheint niemand zu wissen, wie.

Es gibt einige Problemumgehungen, die jedoch normalerweise semiusfähig oder unbrauchbar sind:

  1. Das Entfernen des Moduls unterstützt den Zugriff auf die angegebene Festplatte oder das Speicherarray. Leider behält normalerweise ein beschädigtes Gerät rootfs bei, oder der Treiber behält sowohl ein beschädigtes Gerät als auch ein Gerät, das rootfs enthält
  2. Entfernen Sie den FC-Zugriff auf das Gerät und verbinden Sie es erneut (fctools), nicht immer möglich, funktioniert nicht immer.
  3. Starten Sie die GANZE Maschine neu. Normalerweise ist nur dies immer möglich und wir sind immer dazu gezwungen.

An den Punkten 1. und 2. teilen wir dem Kernel mit, dass wir das Gerät vollständig trennen und erneut verbinden. Kernel hat dies als Beitritt zu einem neuen, ordnungsgemäß funktionierenden Gerät erkannt. Wir können dies mit einem USB-Gerät simulieren und die Stromversorgung kurzzeitig unterbrechen. Punkt 3. ist die letzte Chance und funktioniert normalerweise. Aber warum sollten wir alle neu starten? Leider haben wir zu jedem Zeitpunkt alle Zeitschriftenaktualisierungen und schmutzigen Puffer verloren.

Beachten Sie, in den gleichen Situationen habe ich keine Probleme mit Windows (Desktop und Server).


Keine Antwort, aber möglicherweise im Zusammenhang mit Nummer 2 (hohe Hostlast, Festplatten-Zeitüberschreitung des Gastsystems): Erhöhen Sie die Festplatten-Zeitüberschreitung für Linux, um eine Beschädigung des Dateisystems durch Festplatten-Zeitüberschreitungen im Gastsystem zu verhindern.
Basic6

@Znik, werden diese virtuellen Gastmaschinen auf Citrix XenServer ausgeführt? Oder physische Hardware? Unser StorageServer verbindet das Land des Ethernets mit dem Land der Mini-SAS. Wenn diese Bridge-Maschine in Panik gerät, muss sie gewaltsam neu gestartet werden. Windows-Gast-VMs kehren zurück. Virtuelle Linux-Gastmaschinen weisen genau dasselbe Problem auf, das Sie haben. Nichts, was hier vorgeschlagen wird, bringt die Einhängepunkte zurück zu rw.
rjt

@rjt, dies tritt in vielen Situationen auf. Die Hauptsituation besteht darin, dass das Gerät extrem langsamer wird und Probleme wie physische Schäden, Geräteüberlastung, Verkabelung, externe FC über Eth und eth überlastet sind. Manchmal wird der Switch zurückgesetzt, wenn Übertragungsblock, Timeout, verlorenes Paket usw. angezeigt werden. aber als schreibgeschützt markiert. Neustart ist keine Lösung, sondern eine Problemumgehung, wie in der Beschreibung der Hauptfrage / des Problems beschrieben.
Znik

Antworten:


12

versuche es mit blockdev --setrwoderhdparm -r 0


danke, das sollte nützlich sein. Ich warte auf eine Auszeit auf dem fc controller
Znik

Ein wichtiger Teil, der hinzugefügt werden muss: Manchmal ist es erforderlich, ein fsckschreibgeschütztes Dateisystem zu erstellen, bevor es erneut bereitgestellt werden kann.
Evi1M4chine

3
Nicht für mich arbeiten. Ich habe ein ähnliches Problem
jonneymendoza

1
Hat bei mir auch mit fsck nicht geklappt. Citrix XenServer Linux-Gäste.
rjt

Funktioniert nicht ! Diese Befehle scheinen effektiv zu sein, aber der Dongle ist immer noch RO. (Es ist Software, aber woher ???) Wenn Sie es versuchen möchten, nehmen Sie eine beliebige Debian-ISO 9.4.
Sandburg

5

Wie Jose Luis Martin vorgeschlagen hat, blockdev zu verwenden, besteht mein zweiter Schritt darin, ein Remount-Verfahren für rw und forcefsck durchzuführen

(vorausgesetzt, sda ist Ihre Festplatte)

blockdev --setrw /dev/sda
mount /dev/sda -o remount,rw
touch /forcefsck

1
Es ist sinnvoller, nur fsckvor dem zu laufen mount, da es sonst nicht möglich ist, ohne zu mounten fsck. (Zumindest in meinem Fall.)
Evi1M4chine

`# blockdev --setrw / dev / xvda1 # # touch / tmp / date +%Y%m%d-%H%M%Stouch: kann nicht berühren? / tmp / 20170722-221904 ?: Nur-Lese-Dateisystem # # mount -o remount, rw / dev / xvda1 [137010.709883] EXT4 -fs Fehler (Gerät xvda1): ext4_remount: 4824: Abbruch durch Benutzermount erzwungen: Block Gerät / dev / xvda1 kann nicht erneut gemountet werden, schreibgeschützt `
rjt

2

Überprüfe diese Wiki-Seite, sie erklärt den Fehler, den libata ausgelöst hat:

https://ata.wiki.kernel.org/index.php/Libata_error_messages

Nach dem, was ich oben sehe, haben Sie ein Timeout-Problem und laut dem genannten Dokument:

Der Controller hat auf einen aktiven ATA-Befehl nicht reagiert. Dies kann eine beliebige Anzahl von Ursachen haben. In den meisten Fällen liegt dies an einem nicht zusammenhängenden Fehler im Interrupt-Subsystem (versuchen Sie, mit 'pci = nomsi' oder 'acpi = off' oder 'noapic' zu booten), der keinen Interrupt auslöste, als wir einen von der Hardware erwarteten.

Möglicherweise möchten Sie ACPI deaktivieren (überprüfen Sie anhand Ihrer Distribution, wie es funktioniert) oder Ihren Kernel auf bekannte Fehler überprüfen und möglicherweise aktualisieren, falls dies nicht die neueste Version ist (oder ein Downgrade durchführen).


Ja, das ist wirklich eine Auszeit. Normalerweise tritt dies auf dem FC-Controller auf, wenn das Array-Gerät überlastet ist. Sie haben Recht, auf dem lokalen ATA-Subsystem ist dies normalerweise ein Hardware-Fehler oder eine Treiber- / Chipsatz-Implementierung
Znik

Es ist also eine Auszeit? Nun, was sudo hdparm -I /dev/sdX | grep lockedsagt das? Es muss heißen: 'nicht gesperrt'. Es zeigte diese rätselhaften Zeitüberschreitungen in der Vergangenheit, wenn eine Festplatte durch ein ATA-Kennwort gesperrt wurde (aufgrund einer vorherigen Sicherheitslöschung und eines späteren Systemabsturzes, der dazu führte, dass die Sicherheitspw nicht mehr gelöscht wurde). Dieses Passwort-Zeug hat wirklich große Auswirkungen , auch auf Ihre Nerven. :) Selbst die Standard-Tools, die von Ihrem Festplattenhersteller geliefert werden, verhalten sich verrückt, als ob die Festplatte kurz vor dem Tod steht, wenn das Passwort aktiv ist. Der Täter für unzählige Haarbüschel, die im Laufe der Jahre herausgerissen wurden.
Syntaxfehler

1

Starten Sie Windows 10 neu, rufen Sie die Energieoptionen auf und schalten Sie das schnelle Herunterfahren aus. dann auf linux neustarten ..gbamm alles in ordnung.

Das schnelle Herunterfahren in Windows 10 hält einige Dateien im Ruhezustand und das Laufwerk wird teilweise verwendet. also linux sieht genauso beschäftigt aus.

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.