ブロックデバイスにキャッシュフラッシュが必要かどうかを確認する方法

ブロックデバイスにキャッシュフラッシュが必要かどうかを確認する方法

特定のブロックデバイスがキャッシュフラッシュを必要とするかどうか疑問に思います。

~からxfs FAQ私のことを強調する):

Q: 永続書き込みキャッシュを持つストレージでバリアを有効にする必要がありますか?

多くのハードウェア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.txtLinuxカーネルのソースコードでは:

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.
  • ファイルの内容が「連続書き込み」の場合、デバイスはそれを要求します。確かにキャッシュを更新する必要があります。

  • ファイルの内容が「書き込み保存」の場合、デバイスはそれを要求します。するキャッシュを更新する必要があります。

おすすめ記事