最近线上碰到的一个XFS根分区无法挂载导致无法开机的问题
因为系统无法开机,首先想到的是先把系统启起来,所以打算从管理口挂载光盘,从光盘启动:
启动后选择“1”,将文件系统挂载到/mnt/sysimage
执行
# chroot /mnt/sysimage
根分区一直处于挂载中,但始终挂载不上去,挂载进程处于D僵死状态,无法杀死,看了一下进程的调用栈,一直处于xfs_buf_iowait()函数中,其调用关系为xfs_buf_iowait() <- xfs_buf_read(),看了一下xfs_buf_iowait()的代码感觉是一直在等待completion信号量:
# fs/xfs/xfs_buf.c
xfs_buf_iowait(xfs_buf_t *bp)
{
trace_xfs_buf_iowait(bp, _RET_IP_);
wait_for_completion(&bp->b_iowait);
trace_xfs_buf_iowait_done(bp, _RET_IP_);
return bp->b_error;
}
希望用xfs_info查看一下根分区元数据是否损坏,结果xfs_info相关的进程也