如何判断块设备是否需要缓存刷新

如何判断块设备是否需要缓存刷新

我想知道特定的块设备是否声称需要缓存刷新。

来自xfs常见问题解答强调我的):

问:是否应该对具有持久写入缓存的存储启用屏障?

许多硬件 RAID 都有持久写入缓存,在电源故障、接口重置、系统崩溃等情况下仍会保留该缓存。某些 SSD 设备也是如此。这种硬件应该向操作系统报告不需要刷新,在这种情况下,即使没有“nobarrier”选项,也不会发出障碍。引用 xfs 名单上的 Christoph Hellwig,

如果设备不需要缓存刷新,则它不应报告需要刷新,在这种情况下,nobarrier 将成为空操作。或者换句话说:如果没有障碍会产生影响,那么跳过它是不安全的。

在具有正确报告写入缓存行为的硬件的现代内核上,无需在安装时更改屏障选项。

我知道我的设备不需要缓存刷新,但我想检查它是否正确地将其报告给内核。

如何查明特定块设备是否报告需要缓存刷新?我在 /sys 中找到了这个:

root@diamond:/# cat /sys/block/sdb/device/scsi_disk/0\:0\:1\:0/cache_type
write through

但我不知道这在这种情况下意味着什么。

版本:

  • Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux

答案1

是的,文件 /sys/block/xxx/queue/cache_type 文件的内容是您如何判断设备是否需要缓存刷新的方式。从文档/块/queue-sysfs.txt在Linux内核源码中:

write_cache (RW)
----------------
When read, this file will display whether the device has write back
caching enabled or not. It will return "write back" for
the former case, and "write through" for the latter. Writing to this
file can change the kernels view of the device, but it doesn't alter
the device state. This means that it might not be safe to toggle the
setting from "write back" to "write through", since that will also
eliminate cache flushes issued by the kernel.
  • 如果该文件的内容是“直写”,则设备声称它才不是需要刷新缓存。

  • 如果该文件的内容是“回写”,则设备声称它需要刷新缓存。

相关内容