Linux ext3 error
HDDのエラーが発生したときにext3領域がReadOnlyになってしまう件。
以前から何度か経験してたけど、tune2fsの出力を見るとエラー時の動作は
デフォルトでContinueになっている模様。
Errors behavior: Continue
てっきり毎回ReadOnlyで再マウントされてたので、この点がremount-roになってる
のかと思っていた。が、そうなってなかったので調べてみた。
ReadOnlyで再マウントする処理は以下の二箇所(2.6.9カーネルより抜粋)
@fs/ext3/super.c:ext3_abort if (test_opt(sb, ERRORS_PANIC)) panic("EXT3-fs panic from previous error\n"); if (sb->s_flags & MS_RDONLY) return; printk(KERN_CRIT "Remounting filesystem read-only\n"); EXT3_SB(sb)->s_mount_state |= EXT3_ERROR_FS; sb->s_flags |= MS_RDONLY; @fs/ext3/super.c:ext3_handle_error if (test_opt (sb, ERRORS_PANIC)) panic ("EXT3-fs (device %s): panic forced after error\n", sb->s_id); if (test_opt (sb, ERRORS_RO)) { printk (KERN_CRIT "Remounting filesystem read-only\n"); sb->s_flags |= MS_RDONLY; } else {
それぞれ呼ばれる場所が異なっており、journal書き込みでエラーになった場合は
ext3_abortの方が呼ばれ、こちらはPanicかReadOnlyの二択しか選択されない。
なので、SuperBlockにあるデフォルトの設定がContinueでも効かない。
変更方法は以下の何れか
- tune2fsで書き換え (unmount時)
- fstabにオプションerrors=で指定
なお、remountで変更できるのでマウントしたまま変更も可能。
ReadOnlyになっても動き続けて欲しいか、潔くPanicして欲しいかは用途次第。
エラー無視して続行するContinueはデータ保護の観点からするとまあ無いんだろうな。