スタンバイpostgresデータベースで停電のように見える後、次のエラーが表示されます。
XFS: Internal error XFS_WANT_CORRUPTED_GOTO
システムの再起動後、postgresのエラーログに次のように表示されます。
ERROR: could not write block 1759002 in file "base/278425/1651445.13": Input/output error
CONTEXT: writing block 1759002 of relation base/278425/1651445
ERROR: could not write block 339174 in file "base/278425/1651495.2": Input/output error
CONTEXT: writing block 339174 of relation base/278425/1651495
PANIC: could not write to log segment 0000000100001423000000A9 at offset 149696, length 5952: Input/output error
数日前に別の同一のシステムで、postgresエラーを受け取りました。
ERROR: could not write block 69511 in file "base/278425/539725": Structure needs cleaning
CONTEXT: writing block 69511 of relation base/278425/539725
WARNING: could not write block 69511 of base/278425/539725
DETAIL: Multiple failures --- write error might be permanent.
2TBファイルシステムは以下を使用してマウントされます。
mount -t xfs -o rw、nobarrier、noatime、nodiratime/dev/md0/postgres_data
これはAWSELB(GP2)ボリュームであるため、バッテリーでバックアップされておらず、nobarrier
オプションを選択したためにボリュームが破損していると思いますか?
このファイルシステムのサイズは2TBなので、inode64
オプションを追加した方がいいですか?ファイルシステムには1.2TBのデータが含まれています。
inode64
はデフォルトのマウント値なので、システムはすでにそれを使用しているはずです。
多くの場合、問題はnobarrier
オプションが原因であり、ホスト側の非BBU書き込みキャッシュと組み合わされています。
ファイルシステムをオフラインにして、それに対してxfs_repair
を実行する必要がありました。