ディスクエラーから読み取り専用でマウントされた後、ext3 fs readwriteを再マウントするにはどうすればよいですか?


18

SANでext3がディスク書き込みエラーを検出し、ファイルシステムを読み取り専用で再マウントするために何か問題が発生した場合の比較的一般的な問題。SANが修正された場合にのみ、リブートせずにファイルシステムを読み書き可能に再マウントする方法がわかりません。

見よ:

[root@localhost ~]# multipath -ll
mpath0 (36001f93000a310000299000200000000) dm-2 XIOTECH,ISE1400
[size=1.1T][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 1:0:0:1 sdb 8:16  [active][ready]
\_ 2:0:0:1 sdc 8:32  [active][ready]
[root@localhost ~]# mount /dev/mapper/mpath0 /mnt/foo
[root@localhost ~]# touch /mnt/foo/blah

いいですね、今、その下からLUNを抜き取ります。

[root@localhost ~]# touch /mnt/foo/blah
[root@localhost ~]# touch /mnt/foo/blah
touch: cannot touch `/mnt/foo/blah': Read-only file system
[root@localhost ~]# tail /var/log/messages
Mar 18 13:17:33 localhost multipathd: sdb: tur checker reports path is down
Mar 18 13:17:34 localhost multipathd: sdc: tur checker reports path is down
Mar 18 13:17:35 localhost kernel: Aborting journal on device dm-2.
Mar 18 13:17:35 localhost kernel: Buffer I/O error on device dm-2, logical block 1545
Mar 18 13:17:35 localhost kernel: lost page write due to I/O error on dm-2
Mar 18 13:17:36 localhost kernel: ext3_abort called.
Mar 18 13:17:36 localhost kernel: EXT3-fs error (device dm-2): ext3_journal_start_sb:   Detected aborted journal                      
Mar 18 13:17:36 localhost kernel: Remounting filesystem read-only

読み取り専用であるとのみ考えており、実際には存在しません。

[root@localhost ~]# multipath -ll
sdb: checker msg is "tur checker reports path is down"
sdc: checker msg is "tur checker reports path is down"
mpath0 (36001f93000a310000299000200000000) dm-2 XIOTECH,ISE1400
[size=1.1T][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][enabled]
 \_ 1:0:0:1 sdb 8:16  [failed][faulty]
 \_ 2:0:0:1 sdc 8:32  [failed][faulty]
[root@localhost ~]# ll /mnt/foo/
ls: reading directory /mnt/foo/: Input/output error
total 20
-rw-r--r-- 1 root root     0 Mar 18 13:11 bar

その「バー」ファイルがそこに存在することをまだ覚えている方法...謎ですが、今は重要ではありません。次に、LUNを再表示します。

[root@localhost ~]# tail /var/log/messages
Mar 18 13:23:58 localhost multipathd: sdb: tur checker reports path is up
Mar 18 13:23:58 localhost multipathd: 8:16: reinstated
Mar 18 13:23:58 localhost multipathd: mpath0: queue_if_no_path enabled
Mar 18 13:23:58 localhost multipathd: mpath0: Recovered to normal mode
Mar 18 13:23:58 localhost multipathd: mpath0: remaining active paths: 1
Mar 18 13:23:58 localhost multipathd: dm-2: add map (uevent)
Mar 18 13:23:58 localhost multipathd: dm-2: devmap already registered
Mar 18 13:23:59 localhost multipathd: sdc: tur checker reports path is up
Mar 18 13:23:59 localhost multipathd: 8:32: reinstated
Mar 18 13:23:59 localhost multipathd: mpath0: remaining active paths: 2
Mar 18 13:23:59 localhost multipathd: dm-2: add map (uevent)
Mar 18 13:23:59 localhost multipathd: dm-2: devmap already registered
[root@localhost ~]# multipath -ll
mpath0 (36001f93000a310000299000200000000) dm-2 XIOTECH,ISE1400
[size=1.1T][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][enabled]
 \_ 1:0:0:1 sdb 8:16  [active][ready]
 \_ 2:0:0:1 sdc 8:32  [active][ready]

いいね?そこに[rw]と書かれています。そんなに早くない:

[root@localhost ~]# touch /mnt/foo/blah
touch: cannot touch `/mnt/foo/blah': Read-only file system

OK、自動ではありません。少しプッシュするだけです。

[root@localhost ~]# mount -o remount /mnt/foo
mount: block device /dev/mapper/mpath0 is write-protected, mounting read-only

あなたは地獄です:

[root@localhost ~]# mount -o remount,rw /mnt/foo
mount: block device /dev/mapper/mpath0 is write-protected, mounting read-only

うん

さまざまな種類のmount / tune2fs / dmsetupコマンドを試しましたが、ブロックデバイスの書き込み禁止フラグを解除する方法がわかりません。再起動すると修正されますが、私はむしろオンラインでそれをしたいです。1時間のグーグル検索でも、どこにも行きませんでした。ServerFaultを保存してください。


3
うーん、いくつかの質問「SANで何かがうまくいかない場合、それは比較的一般的な問題です」 なぜSANがそれほど信頼できないのか、最初に確認しますか?umountでアンマウントしてから、再度マウントしようとしましたか?再マウントが必要な理由はありますか?私は通常、maintainaceの後、ルートファイルシステムを再マウントするだけです。
Unix Janitor

開いているファイルハンドルでバウンスをアンマウントします。これは、多くの場合、正常に終了したいプロセスからのものです。
ケージナット

SANの問題の後、VMディスクが読み取り専用であり、再マウントしようとするとOPで同じエラーが発生するという同様の問題があります。VMは、ファイバチャネルストレージを備えたesxi 4.1にあります。VMを再起動すると、問題が修正されます。個人的には、これがマルチパスと関係があるとは思いません。特に一部のサービス(apache)は読み取り専用FSで実行し続ける傾向があるため、再起動せずに修正する方法が必要です。
ウィル

私はここに来て、自分の問題の解決策を探しました(これは、ディスクの破損です)。代わりに微笑んだ。「地獄のあなた」の+1
user1207217

これとまったく同じ問題がありますが、LVMを使用しています。同じlvdisplayは、「multipath -r」を実行するまで「4096の0の後、読み取りに失敗しました:449197309952:入力/出力エラー」、その後LVMはエラーなしですべてを正しく表示し始めました。それでも、パーティションを再マウントすることはできません。どちらもアンマウントできません、デバイスがビジーであると言います。私は、デバイスを使用してすべてのプロセスをシャットダウンした場合、私はアンマウントすることができ、その後、再マウントに成功し、私のことができるようにすべきであると私は、ちょうど読み書きデバイスを再マウントすることができることを好むだろう...
mpontes

回答:


6

私は最近この問題に遭遇し、再起動することで解決しましたが、さらに調査した結果、次のコマンドを発行すると問題が解決する可能性があります。

echo running > /sys/block/device-name/device/state

このドキュメントのセクション25.14.4:オンライン論理ユニットの読み取り/書き込み状態の変更をご覧になるとよいと思いますが、再起動することをお勧めします。


ありがとうケビン。(残念ながら)問題は長い間なくなっているので、テストすることはできませんが、これは最も有望なオプションのように見えます。
ケージナット

3
同様の問題で、/ sys / block / device-name / device / stateがすでに「running」に設定されており、上記のコマンドで問題が解決しなかったことがあります。
ウィル

3

使用してみてください:

mount -o remount,rw /mnt/fo

Linuxではなく、FreeBSDを知っています。しかし、fBSDの場合はなのでmount -rw /mnt/foo、これは私にとって最も適切に見えます。
クリスS

1
質問で概説したシナリオでこの仕事をしたことはありません。エラーのためにディスクが読み取り専用とマークされると、常に再起動されます。
アレックス

1
これをOPに編集しますが、Alexはここにいます。問題はファイルシステムの下にあるようです:[root @ localhost〜]#mount -o remount、rw / mnt / foo mount:block device / dev / mapper / mpath0は書き込み保護され、読み取り専用でマウントされています
ケージナット

1
パーティションをアンマウントして再マウントしようとしましたか?ドライブでデータエラーが発生したことがありますが、アンマウント(またはremount、rw)で修正されました。これはSATAドライブ(および古いEIDE / SCSI)の場合でした。しかし、あなたの状況では、ドライブチャネルをリセットする必要があるのか​​どうか疑問に思っています。HDIO_DRIVE_RESETが何らかの方法でioctlを介して送信されたかどうか疑問に思っています。blockdevを使用して、パーティションテーブルの再読み取りを強制することができます。IDEはhdparm -wでこれを公開します。おそらくFCドライブで、ioctlをチャネルに送信する方法があります。

2

私はそもそも問題を防ぐことが好きです。ほとんどのエンタープライズUNIXボックスは、永久にファイルシステム操作を再試行します。管理者は、MPIO構成を調整する前に宿題をする必要があります。デバイスが使用可能な状態に戻るまでアプリケーションを待機する必要がある場合は、次の解決策があります。/etc/multipath.confで、関心のあるデバイスタイプに「no_path_retry」の設定が「queue」に設定されていることを確認してください。これを設定すると、有効なパスが見つかるまで、失敗したI / Oがキューに入れられます。これは、EMC Symmtrix / DMXボックスで、ドライブ/コントローラー/ srdfパスの障害/回復の特定の条件下でのしゃっくりについて機能するために行いました。

このアプローチにより、ベーコンは数え切れないほど節約され、災害復旧用のレプリケーションを備えたマルチキャビネット/マルチベンダーSANの数百のボックスの標準となっています。

皆さんと共有できると思っただけです。気を付けて。


2

いくつかの問題がありましたが、-r論理的なマルチパスデバイスのサブドライブでhdparmオプションを使用して解決しました

-rデバイスの読み取り専用フラグを取得/設定します。設定すると、Linuxはデバイスでの書き込み操作を許可しません。


1

このドキュメントの「ストレージエリアネットワーク(SAN)上のext3ファイルシステムが繰り返し読み取り専用になるのはなぜですか?」というセクションに関連していると思いますか?

これはかなり古い記事であり、ファイバーチャネルについて説明していますが、問題に関連している可能性があります。


うん、それは彼らが参照するものよりもはるかに新しいバージョンを実行しているので、正確な特定のバグではありませんが、同様の状況のすべての種類がそれを引き起こす可能性があります。ファイバーチャネル、hbas / hba-firmware / hba-drivers、アレイファームウェア、スイッチファームウェア、ファブリックデザイン、デバイスマッパー/ multipathd config、lvm、ext3の世界は、非常に多くの可動部分です。十分な環境で作業すると、似ているが同一ではない問題のグラブバッグによってこのシナリオが発生することがわかります。問題は、再起動せずに回復/再マウントする方法です。
ケージナット

0

ファイルシステムの破損?試してください:

dumpe2fs /dev/c/c | grep Filesystem\

エラーできれいになったら、スキャンしてきれいにする必要があります。


-4

Linuxは、中規模から大規模のSANに十分に対応できません。いくつかの注意を払い、IOタイムアウトとマルチパスタイムアウトの処理を微調整する必要があります。これらはすべてデスクトップ対応のデフォルト値です。

(「デッドデバイスへのIOの拒否」を覚えていますか?)


1
「LinuxはSANに対応していません」や「デスクトップ対応のデフォルト」などのステートメントを、参照や難しい事実とともにバックアップする必要があります。
クリスS

1
デフォルトのディスクIOタイムアウトは30秒ですか?上記のスレッド?RedHatからのメモ(それは時代遅れかもしれません)は、「状態変更通知」を適切に処理できないと述べています。Redhatはデフォルトで、マルチパスドライバーのロード時にアクセスできない場所(/ var / lib)にマルチパスバインディングを配置しますか?PCIホットプラグhbaを再帰的にホットディスエーブルにしたり、すべての依存LUNを交換するまで一時的に自動的にオフラインにしたりすることはできません。マルチスレッドのHW initがなく、1kを超えるLUNを作成するのに「しばらく」かかること。シェルスクリプトである
Udev ...- darkfader
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.