Linux、一時的にクラッシュした後にHDDの状態をReadOnlyから変更する方法は?


17

現時点では、この問題に対する回答はありません。

通常、ブロックデバイスへの読み取りまたは書き込みに関するいくつかの問題の後、カーネルは、WHOLE DEVICEのフラグを読み取り専用に切り替えることを決定します。この後、このデバイスにあるパーティション/ファイルシステムへの書き込みは、書き込みが不可能であるため、デバイス状態とともに読み取り専用に切り替えます。

dmesgからの例、これはデフラグがゲストデバイスイメージを取得するときVirtualBoxを使用するwindows8のゲストLinuxのためのシミュレーションです:

[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. HDDは本当に破損しています。返される書き込みの問題は、HDDの状態に依存します
  2. ホストマシンが過負荷になり、Linuxゲスト仮想HDDの書き込みがタイムアウトになる
  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. 削除モジュールは、指定されたhddまたはストレージアレイへのアクセスをサポートします。残念ながら、通常は破損したデバイスがrootfsを保持するか、ドライバーが破損したデバイスとrootfsを保持するデバイスの両方を保持します
  2. デバイスへのFCアクセスを削除し、これに再度参加してください(fctools)。
  3. 完全なマシンを再起動します。通常、これのみが常に可能であり、私たちは常に強制されます。

ポイント1および2で、カーネルにデバイスを完全に切断し、再度接続することを伝えます。カーネルは、これを適切に動作する新しいデバイスに参加するものとして認識しました。USBデバイスと瞬間的な電源切断を使用して、これをシミュレートできます。ポイント3はラストチャンスであり、通常は機能します。しかし、なぜすべてを再起動する必要があるのでしょうか?残念ながら、すべての時点で、すべてのジャーナルの更新とダーティバッファが失われました。

同じ状況で、Windows(デスクトップとサーバー)に問題がないことに注意してください。


答えではありませんが、#2(高ホスト負荷、ゲストhddタイムアウト)の場合に関連している可能性があります:Linux hddタイムアウトを増やして、ゲストシステムのhddタイムアウトによるファイルシステムの破損を防ぎます。
basic6

@Znik、これらのゲスト仮想マシンはCitrix XenServerで実行されていますか?それとも物理的なハードウェアですか?StorageServerは、イーサネットの土地からミニサーの土地への橋渡しをします。このブリッジマシンがパニックになった場合、強制的に再起動する必要があります。WindowsゲストVMが復活します。Linuxゲスト仮想マシンには、あなたとまったく同じ問題があります。ここでは、マウントポイントをrwに戻すことを提案するものはありません。
rjt

@rjt、これは多くの状況で発生します。主な状況は、物理的損傷、デバイスの過負荷、ケーブル接続、Ethおよびeth上の外部FCが過負荷、転送ブロック、タイムアウト、パケット損失などの場合にリセットを切り替えるなど、問題が発生してデバイスが極端に遅くなる場合です。ただし、読み取り専用としてマークされています。リブートは解決策ではなく、主な質問/問題の説明で説明した回避策です。
ズニック

回答:


12

blockdev --setrwまたはで試すhdparm -r 0


おかげで、これは役に立つはずです。私はfcコントローラーのタイムアウトを待っています
-Znik

追加する必要がある重要な部分:fsck再度マウントする前に、読み取り専用ファイルシステムでaを実行する必要がある場合があります。
Evi1M4chine

3
私にとってはうまくいかなかった。私は同様の問題持っている
jonneymendoza

1
fsckを使用しても機能しませんでした。Citrix XenServer Linuxゲスト。
rjt

動作していません!このコマンドは効果的に見えますが、ドングルは依然としてROです。(ソフトウェアですが、どこからですか?)試してみたい場合は、Debian iso 9.4を使用してください。
サンドバーグ

5

Jose Luis Martinがblockdevの使用を提案したように、私の2centはrwとforcefsckを再マウントすることです

(sdaがディスクであると仮定)

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

1
それなしでマウントするのに失敗するので、ちょうどfsck前に実行するのはより理にかなっています。(少なくとも私の場合はそうでした。)mountfsck
Evi1M4chine

`#blockdev --setrw / dev / xvda1##touch / tmp / date +%Y%m%d-%H%M%Stouch:タッチできない?/ tmp / 20170722-221904 ?:読み取り専用ファイルシステム##mount -o remount、rw / dev / xvda1 [137010.709883] EXT4 -fsエラー(デバイスxvda1):ext4_remount:4824:ユーザーマウントによる強制終了:ブロックデバイス/ dev / xvda1の読み取り/書き込みを再マウントできず、書き込み保護されています `
-rjt

2

このWikiページを確認してください。libataによってスローされるエラーについて説明しています。

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

私が上で見たものから、あなたはタイムアウトの問題を受け取りました、そして言及されたドキュメントに従って:

コントローラがアクティブなATAコマンドに応答できませんでした。これにはさまざまな原因が考えられます。ほとんどの場合、これは関連のない割り込みサブシステムのバグ(「pci = nomsi」または「acpi = off」または「noapic」で起動してみてください)によるもので、ハードウェアからの割り込みを予期していたときに割り込みを配信できませんでした。

ACPIを無効にする(ディストリビューションに基づいて確認する)か、既知のバグについてカーネルを確認し、最新でない場合は更新する(またはダウングレードする)こともできます。


はい、これは本当にタイムアウトです。通常、アレイデバイスが過負荷になると、FCコントローラーでこれが発生します。そうです、ローカルATAサブシステムでは、これは通常、ハードウェアのバグまたはドライバー/チップセットの実装です
-Znik

だから、タイムアウトですか?さて、何sudo hdparm -I /dev/sdX | grep lockedと言うのですか?「ロックされていません」と言わなければなりません。HDDがATAパスワードによってロックされるたびに、過去にこれらの不可解なタイムアウトを示しました(以前のセキュリティ消去と、後でセキュリティpwが再びクリアされないシステムクラッシュのため)。このパスワードは、あなたの神経にも大きな影響を与えます。:) HDドライブベンダーから出荷された標準ツールでさえも、パスワードがアクティブなときにHDDが死にかけているかのように狂ったように動作します。長年にわたって引き裂かれた無数の髪の毛原因。
構文エラー14

1

Windows 10で再起動し、電源オプションに移動して、高速シャットダウンをオフにします。linuxから再起動します。.gbammで問題ありません。

Windows 10の高速シャットダウンでは一部のファイルが休止状態になり、ドライブが部分的に使用されます。そのため、Linuxは忙しいと考えています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.