KVM/qemu 支持各种类型的缓存 - 无、直写、回写。
当没有指定cache=时,如何检查哪一个是默认的并且在系统上使用?
对于 RHEL6,我发现它是 writethrough - 但例如对于 sles,有时它是 writeback。
答案1
这是检查某些默认缓存模式的方法。虽然它也是一种文档,但它是“在线”的,并且您可以获得当前 QEMU 版本的默认缓存模式。正如@dokotr5000所说,这取决于版本。
运行"qemu-img -h"
并搜索该"cache"
零件。你会发现类似下面的内容。
'cache' is the cache mode used to write the output disk image, the valid
options are: 'none', 'writeback' (default, except for convert), 'writethrough',
'directsync' and 'unsafe' (default for convert)
缓存模式与各个图像文件相关联。通过这种方式获得的默认缓存模式是图像convert
文件的缓存模式rebase
,而不是您使用时的模式create
。但至少它建议了当前版本的 QEMU 最喜欢的默认值,并让您做出有根据的猜测。
我在 Ubunt 12.04、14.04 和 16.04 上尝试过此操作。全部给writeback
默认。
答案2
这取决于您运行的 kvm 版本和风格。参见例如https://www.suse.com/documentation/sles11/book_kvm/data/sect1_1_chapter_book_kvm.html它说:
缓存模式未指定
在早于 v1.2 的 qemu-kvm 版本中(例如 SLES11 SP2),不指定缓存模式意味着将使用 writethrough 作为默认值。
http://wiki.qemu.org/ChangeLog/1.2#Block_devices状态:
块设备
[...]
- 图像的默认缓存模式现在是回写。
有关各种模式之间的一些建议,请参见例如