如何理解 /var/log/messages 中的这些消息?

如何理解 /var/log/messages 中的这些消息?

消息是:

Dec 18 10:08:55 localhost kernel: sdb: Current [descriptor]: sense key: Recovered Error
Dec 18 10:08:55 localhost kernel:     Add. Sense: ATA pass through information available
Dec 18 10:08:55 localhost kernel: 
Dec 18 10:08:55 localhost kernel: Descriptor sense data with sense descriptors (in hex):
Dec 18 10:08:55 localhost kernel:         72 01 00 1d 00 00 00 0e 09 0c 00 00 00 00 00 00 
Dec 18 10:08:55 localhost kernel:         00 4f 00 c2 00 50 

如何理解此消息?谢谢

答案1

这与磁盘驱动器上的瞬时问题有关(错误消息和“hdb”暗示了这一点)。很难给出更多信息,但这可能是在磁盘旋转时读取磁盘时出错或类似情况 - 也可能是驱动程序错误或轻微不兼容。

建议您拥有哪种磁盘、什么内核以及什么配置可能会很有用 - 尽管我不确定这是否值得花时间。

答案2

它基本上是无害的。谷歌上有很多人报告没有错误被恢复聪明的,看到这个所谓的错误之后。

James Bottomley(如果你不知道他是谁,你可以阅读这里(但无论如何,他是顶级的 Linux 内核开发人员之一)针对此错误说道:

这是内核在所有恢复的错误返回(标记为 REQ_QUIET 的错误返回除外)上打印的消息。它纯粹是信息性的,根本不影响命令的返回处理,因此内核实际上将其视为成功完成,而不是错误。

他这样陈述在此 Bugzilla 页面上,他还说,消除错误信息也很容易:

  diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
  index f3c4089..a0235c9 100644
  --- a/drivers/scsi/scsi_lib.c
  +++ b/drivers/scsi/scsi_lib.c
  @@ -774,7 +774,8 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes)
 * is what gets returned to the user
 */
if (sense_valid && sshdr.sense_key == RECOVERED_ERROR) {
  -     if (!(req->cmd_flags & REQ_QUIET))
  +     if (!(req->cmd_flags & REQ_QUIET) &&
  +         !(sshdr.asc == 0x00 && sshdr.ascq == 0x1d))
        scsi_print_sense("", cmd);
    result = 0;
    /* BLOCK_PC may have set error */

我想你现在可以放松了。

相关内容