在我的备用 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 文件系统使用以下方式挂载:
挂载-t xfs-o rw,nobarrier,noatime,nodiratime /dev/md0 /postgres_data
由于这是一个 AWS ELB(GP2)卷,我猜测它没有电池供电,并且由于我选择了该
nobarrier
选项,卷是否损坏了?由于这个文件系统的大小为 2TB,我是否应该添加该选项
inode64
?这可能是问题所在吗?该文件系统包含 1.2TB 的数据。
答案1
inode64
是默认的挂载值,因此您的系统应该已经使用它。
很有可能该问题是由于该nobarrier
选项以及主机端的非 BBU 写缓存造成的。
您必须使文件系统脱机并运行xfs_repair
它。