xfs在dmesg上失败并报错

我有一个奇怪的错误,在Linux上与XFS框,我不知道如何debugging和修复它。

以下是dmesg的摘录:

Info fld=0x17 end_request: I/O error, dev sde, sector 34412208504 sd 7:0:0:0: SCSI error: return code = 0x08000002 sde: Current: sense key: Aborted Command <<vendor>> ASC=0xc0 ASCQ=0x23ASC=0xc0 ASCQ=0x23 Info fld=0x17 end_request: I/O error, dev sde, sector 35840057200 sd 7:0:0:0: SCSI error: return code = 0x08000002 sde: Current: sense key: Aborted Command <<vendor>> ASC=0xc0 ASCQ=0x23ASC=0xc0 ASCQ=0x23 Info fld=0x17 end_request: I/O error, dev sde, sector 35799212408 sd 7:0:0:0: SCSI error: return code = 0x08000002 sde: Current: sense key: Aborted Command <<vendor>> ASC=0xc0 ASCQ=0x23ASC=0xc0 ASCQ=0x23 Info fld=0x17 end_request: I/O error, dev sde, sector 39444095352 sd 7:0:0:1: SCSI error: return code = 0x08000002 sdf: Current: sense key: Aborted Command <<vendor>> ASC=0xc0 ASCQ=0x23ASC=0xc0 ASCQ=0x23 Info fld=0x17 end_request: I/O error, dev sdf, sector 32974487928 device-mapper: multipath: Failing path 8:80. sd 7:0:0:1: SCSI error: return code = 0x08000002 sdf: Current: sense key: Aborted Command <<vendor>> ASC=0xc0 ASCQ=0x23ASC=0xc0 ASCQ=0x23 Info fld=0x17 end_request: I/O error, dev sdf, sector 32973734264 sd 7:0:0:1: SCSI error: return code = 0x08000002 sdf: Current: sense key: Aborted Command <<vendor>> ASC=0xc0 ASCQ=0x23ASC=0xc0 ASCQ=0x23 Info fld=0x17 end_request: I/O error, dev sdf, sector 22213009752 sd 7:0:0:1: SCSI error: return code = 0x08000002 sdf: Current: sense key: Aborted Command <<vendor>> ASC=0xc0 ASCQ=0x23ASC=0xc0 ASCQ=0x23 Info fld=0x17 end_request: I/O error, dev sdf, sector 32940065144 sd 7:0:0:1: SCSI error: return code = 0x08000002 sdf: Current: sense key: Aborted Command <<vendor>> ASC=0xc0 ASCQ=0x23ASC=0xc0 ASCQ=0x23 Info fld=0x17 end_request: I/O error, dev sdf, sector 32974552944 sd 7:0:0:1: SCSI error: return code = 0x08000002 sdf: Current: sense key: Aborted Command <<vendor>> ASC=0xc0 ASCQ=0x23ASC=0xc0 ASCQ=0x23 Info fld=0x17 end_request: I/O error, dev sdf, sector 17956282744 Buffer I/O error on device dm-3, logical block 9666270717 lost page write due to I/O error on dm-3 I/O error in filesystem ("dm-3") meta-data dev dm-3 block 0xe7ffb01c2 ("xlog_iodone") error 5 buf count 12800 Buffer I/O error on device dm-3, logical block 4028959741 lost page write due to I/O error on dm-3 xfs_force_shutdown(dm-3,0x2) called from line 956 of file fs/xfs/xfs_log.c. Return address = 0xffffffff883bec58 Filesystem "dm-3": Log I/O Error Detected. Shutting down filesystem: dm-3 Please umount the filesystem, and rectify the problem(s) 

我如何debugging呢?

谢谢。

我知道这是一个非常古老的post,但是如果答案不正确,我认为未来的访问者可以发布正确的答案。

由OP报告的错误信息本身与XFS无关,而是由于驱动器/电缆不良造成的。 检查错误条目:

end_request:I / O错误,dev sde,扇区39444095352

系统无法检索位于LBA地址39444095352 sde上的数据。 这通常意味着磁盘上的坏块。

sd 7:0:0:1:SCSI错误:返回码= 0x08000002
sdf:当前:感应键:中止命令
供应商ASC = 0xc0 ASCQ = 0x23ASC = 0xc0 ASCQ = 0x23

SCSI命令由于超时(由坏块引起)而中止,并且磁盘返回详细解释错误的特定供应商代码。

发行smartctl --all显示各种内部磁盘计数器。 ID 5(Reallocated_Sector_Ct),197(Current_Pending_Sector)和198(Offline_Uncorrectable)的属性是特别感兴趣的,因为它们显示磁盘块不可读/重映射的情况。

你可以在这种情况下做什么? 最安全和强烈的首选方法是将整个可读内容备份到另一个安全磁盘(可能使用弹性的磁盘错误,如ddrescue

如果这种方法是不可能的,则还有两种可能性:

  1. 重新启动一个实时发行版,并发出一个badblocks -n <dev> ( 这里是man page ):它将启动一个非破坏性的读/写testing,它应该触发磁盘上的坏块重新映射过程
  2. 手动覆盖发出类似于dd if=/dev/zero of=/dev/sde bs=512 count=1 seek=39444095352的受影响的坏块dd if=/dev/zero of=/dev/sde bs=512 count=1 seek=39444095352

请注意,上述两种方法(尤其是第二种方法) 导致数据丢失,因为受影响的不可读的扇区将被覆盖。

恢复/覆盖完成后,您应该运行一个完整的文件系统检查,在这种情况下发出xfs_repair /dev/sde

您可以使用xfs_db命令来debuggingXFS文件系统。 请使用以下语法:

 xfs_db [device with XFS installed]