什么是“请求缓存数据失败”警告?

我在戴尔笔记本电脑上安装Ubuntu服务器12.04,我经常收到如下消息:

3256.362200] sd 5:0:0:0: [sdb] Asking for cache data failed [3256.362200] sd 5:0:0:0: [sdb] Assuming drive cache : write through 

这条消息意味着什么以及如何删除?

请求缓存数据失败假设驱动器缓存:直写消息是什么意思?

  • 硬盘具有少量RAM缓存以加速写入操作。 系统可以将一大块数据写入磁盘高速缓存,而无需实际等待将其写入磁盘。 这有时被称为“回写”模式。

    • 如果磁盘上没有缓存,则以“直写”模式直接将数据写入其中。
  • 要求缓存数据失败警告通常发生在USB闪存驱动器,USB读卡器等设备上,这些设备本身就是系统的SCSI设备( sdX ),但没有缓存。

    • 系统询问设备:“你有缓存吗?” 并没有得到回应。 因此它假设没有缓存并将其置于“直写”模式。

Bug规避

该错误似乎与许多计算机具有的闪存卡读取器有关。 如果你有这样一个读者并且没有使用它,你可以使用Neal McBurnett 在这里提供的规避,来自错误报告Matthew Kaulfers在他的回答中提到了。

 sudo rmmod ums_realtek 

这种规避适用于我的笔记本电脑。

这是一个报告的错误,你需要去这里找到它。

在5月份的早期Ask Ubuntu问题中也提到了这个问题并回答: dmesg中的错误 – 测试WP失败,假设写入启用

如果最初卸载驱动程序然后在每次需要读取器时重新加载它都不是一个合适的解决方案,我建议为驱动程序指定ss_en=0选项,就像我最初在这个答案中所做的那样。

总结一下答案:

  • 在使用rmmod后手动加载模块: sudo modprobe ums_realtek ss_en=0
  • 或者使用ums_realtek ss_en=0/etc/modules指定它以使此更改成为永久更改。

我在13.10 Saucy Salamander遇到了同样的问题。 但是,上述答案对我没有帮助。 我做了以下事情:

 sudo rmmod ums_realtek sudo sh -c 'echo "options ums_realtek ss_en=0" > /etc/modprobe.d/ums-realtek.conf' sudo modprobe ums_realtek 

这样做,是删除模块,更新模块加载参数。 然后再次加载ums_realtek模块。

无需重启。

我正在使用lubuntu 14.04,其他答案对我不起作用。 我在这里找到了一个解决方法https://bugs.launchpad.net/ubuntu/+source/linux/+bug/925760/comments/70

只需在exit 0之前将rmmod ums_realtek添加到/etc/rc.local

小费

在13.10 Saucy Salamander中,这个信息不断重复。 你无法得到提示。 如果这在笔记本电脑上,你有一个备用存储卡。 坚持下去,消息消失,直到你可以应用适当的修复。 是的,这是在另一篇文章中提到的。 但它可以节省读者一点时间。

我没有SD卡仍然显示错误。 我解决这个问题的方法是从笔记本电脑中拔出电源和电池,然后等待一分钟再接通电源并重新启动。 有效。

正如其他人所解释的那样,这些警告会报告正常的预期行为。 您可以在/etc/rsyslog.conf禁止它们。 更好的是,您创建了一个文件/etc/rsyslog.d/20-suppresswarnings.conf其中包含以下规则:

 # Suppress certain messages :msg, contains, "Test WP failed, assume Write Enabled" ~ :msg, contains, "Asking for cache data failed" ~ :msg, contains, "Assuming drive cache: write through" ~