Linux、一時的なクラッシュ後にハードドライブの状態を読み取り専用から読み取り専用に変更するには?

Linux、一時的なクラッシュ後にハードドライブの状態を読み取り専用から読み取り専用に変更するには?

現在、この質問に対する回答はありません。

通常、ブロックデバイスの読み書きに問題が発生した後、カーネルはデバイス全体のフラグを読み取り専用に切り替えることを決定します。その後、デバイスのパーティション/ファイルシステムへの書き込みを実行すると書き込みが不可能になり、デバイスの状態とともに読み取り専用に切り替わります。

ゲストデバイスイメージを取得するために最適化を実行するときにVirtualBoxを使用してWindows 8でゲストLinuxをエミュレートするdmesgの例:

[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.

その後、再インストールする理由は次のとおりです。

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

これは、rootfs sda1に予約されているデバイス全体のsdaが読み取り専用であるためです。

私の経験によれば、次のような場合にこれが発生します。

  1. 実際、ハードドライブが破損しています。返される書き込みの問題は、ハードドライブの状態によって異なります。
  2. ホストがオーバーロードされ、Linux ゲスト仮想ハードディスクの書き込みがタイムアウトします。
  3. 過負荷のFCケーブルまたはSANデバイス(ファイバチャネルベースのアレイディスク)
  4. FCまたはFCoEを介した接続が一時的に切断されました。 FCパケットの損失/タイムアウトの可能性

この場合、デバイスは実際に読み書き可能ですが、Linuxカーネルは内部でデバイスを読み取り専用としてマークし、読み取り専用の方法で使用します。これは損傷を防ぐように設計されたカーネル機能ですが、ポイント 1 でのみ使用できます。

問題は。 hddブロックデバイスが正しく動作していることをカーネルに手動で通知する方法は?

これがなければ、カーネルはデバイスを "CD-ROM"のような読み取り専用として扱い、mount / remount -o read-write、fsckなどを含む他のコマンドは正しく機能する機会がありません。

助けたいのですが、問題の本質を理解していない人が送った効果がなく、スパムである回答:

  1. 読み書きで再マウントしてみてください(不可能、デバイスはROです)。
  2. fsck(使い方は何ですか?デバイスはROなので修理できません)
  3. 「わかりません」(最初は理解できますが役に立たない)
  4. 「機器の交換」*(通常問題は別のものです)

上記の問題の公式を知っている人はいますか?読み取り専用から読み取り/書き込み状態に復元するために、書き込み可能なブロックデバイスのフラグを切り替えますか?現時点では、何をすべきかを知っている人が誰もいないようです。

以下はいくつかの回避策ですが、一般的に半分使用可能または使用できません。

  1. 削除モジュールは、指定されたハードディスクまたはストレージアレイへのアクセスをサポートします。残念ながら、破損したデバイスにrootfsが保持されているか、ドライバが破損したデバイスとrootfsを維持するデバイスの両方を維持することがよくあります。
  2. デバイスへのFCアクセスを削除して再接続することは必ずしも可能ではなく、常に機能するわけではありません。
  3. システム全体を再起動します。しばしばこれだけが可能であり、私たちは常にそうするよう強制されます。

ポイント 1 と 2 では、カーネルにデバイスとの接続を完全に切断して再接続するように指示します。カーネルはそれを新しいアクチュエータを追加すると認識します。 USBデバイスを使用してこれをシミュレートし、一時的に電源装置を取り外します。ポイント3は最後のチャンスで、通常は機能します。しかし、なぜすべてを再起動するのですか?残念ながら、私たちはあらゆる面ですべてのログ更新とダーティバッファを失いました。

同じ状況で、私は問題なくWindows(デスクトップとサーバー)を使用しています。

ベストアンサー1

blockdev --setrwまたはhdparm -r 0

おすすめ記事