消息是:
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 */
我想你现在可以放松了。