我有一个大约 72TB 空间的备份服务器。仅使用了大约一半。本周早些时候,我在卸载 xfs 文件系统后立即收到以下消息。
Mar 15 15:15:47 kernel: Filesystem dm-0: XFS internal error xfs_trans_cancel at line 1164 of file fs/xfs/xfs_trans.c. Caller 0xffffffff883e54fe
Mar 15 15:15:47 kernel:
Mar 15 15:15:47 kernel:
Mar 15 15:15:47 kernel: Call Trace:
Mar 15 15:15:47 kernel: [<ffffffff883dfd95>] :xfs:xfs_trans_cancel+0x55/0xfa
Mar 15 15:15:47 kernel: [<ffffffff883e54fe>] :xfs:xfs_mkdir+0x429/0x465
Mar 15 15:15:47 kernel: [<ffffffff883ee399>] :xfs:xfs_vn_mknod+0x161/0x215
Mar 15 15:15:47 kernel: [<ffffffff800ed95a>] vfs_mkdir+0xe3/0x152
Mar 15 15:15:47 kernel: [<ffffffff800edf30>] sys_mkdirat+0xa3/0xe4
Mar 15 15:15:47 kernel: [<ffffffff800a7f3f>] sys_futex+0x129/0x14a
Mar 15 15:15:47 kernel: [<ffffffff8005ddf9>] error_exit+0x0/0x84
Mar 15 15:15:47 kernel: [<ffffffff8005d116>] system_call+0x7e/0x83
Mar 15 15:15:47 kernel:
Mar 15 15:15:47 kernel: xfs_force_shutdown(dm-0,0x8) called from line 1165 of file fs/xfs/xfs_trans.c. Return address = 0xffffffff883dfdae
Mar 15 15:15:47 kernel: Filesystem dm-0: Corruption of in-memory data detected. Shutting down filesystem: dm-0
Mar 15 15:15:47 kernel: Please umount the filesystem, and rectify the problem(s)
Mar 15 15:15:57 kernel: Filesystem dm-0: xfs_log_force: error 5 returned.
所以我从四天前开始运行以下命令:
xfs_repair -vv -o bhash=16384 -o ihash=16384 -o ag_stride=16 /dev/mapper/cdp1raid-cdp1raid
额外的-o
选项帮助大大加快了速度,并且它输出到一个日志文件,该文件确实显示了进度,但在过去的两天里,它只显示了消息:
rebuild AG headers and trees - 73 of 73 allocation groups done
我查看了诸如strace
、iostat
、htop
、 之类的内容atop
,看看我是否能找出它是否仍在进行或是否陷入困境,但没有看到任何说明该过程正在做什么的内容。从运行中iostat -xd
我可以看到sdc
、sdc1
和列表对、和值dm-0
进行倒计时,但不确定这是否真的意味着什么。r/s
w/s
rsec/s
对此的任何帮助或指导将不胜感激。
答案1
互联网上的一些人告诉我们,该-P
标志有助于xfs_repair
避免此类挂起(whns strace 仅显示FUTEX_WAIT_PRIVATE
而不显示其他内容)。男人:
-P Disable prefetching of inode and directory blocks. Use this option if you find xfs_repair gets stuck and stops proceeding. Interrupting a stuck xfs_repair is safe.