我有一台带有 2 个硬盘驱动器 (2x 1 TB) 的服务器,在 RAID 1 (SW-RAID) 中运行。我想通过使用flashcache
. 上面有正在运行的 KVM 虚拟机,使用LVM
.
对此,我有以下问题:
- 这会起作用吗?
flashcache
适用于块设备,但是这些都是具有自己设置的虚拟机。 - 我希望提高性能多少?大多数虚拟机运行网站和一些主机游戏。
- SSD需要多大?由于能够缓存更多文件,拥有更大的 SSD 会提高性能吗?
- 如果 SSD 死机会怎样?会
flashcache
从传统 HDD 检索文件,我可以简单地更换 SSD 吗? - 与和
writeback
相比会快多少?writethrough
writearound
不幸的是,我无法访问测试系统,所以我可以flashcache
在不卸载磁盘的情况下安装在实时服务器上吗?我在这里找到了一个很棒的教程,我将使用它。
对于那些以前没有见过它的人来说,Flashcache 是一种使用 SSD 驱动器扩展 Linux 块缓存的方法。它比运行仅具有半 TB RAM 的服务器用于缓存要便宜。
它应该。Linux 块缓存通过缓存访问的块而不是文件来工作。只要您不让 KVM 机器直接访问块设备(您没有),Linux 块缓存就会发挥作用。但是,如果您让KVM 机器直接访问块设备,答案就不太清楚了。
如果您使用的是文件支持的虚拟磁盘,它肯定会起作用。
如果您使用的是 LV 支持的虚拟磁盘,我不知道。
这是我们无法回答的。这取决于多种因素。概括地说,将 SSD 的大小设置为大于活动块集时,您将获得最佳性能。如果您获得完美的缓存,您的性能将类似于在 SSD 上运行整个系统。你会有效地做。
找出您需要的确切尺寸是我们无法帮助的。显然,越多越好,但找到高速缓存 SSD 和主存储之间的确切比例并不是一件简单的事情。
使这变得复杂的是写入设置为立即刷新,例如某些文件系统操作和某些数据库配置。这些写入只会被短暂缓存,它们的性能不会因闪存缓存的存在或不存在而受到任何影响。
当您告诉 Linux 删除高速缓存但有一点不同时,也会发生同样的事情。使用丢弃缓存,块缓存中任何未刷新的写入都将刷新到磁盘。SSD 消失时会发生什么取决于缓存模式:
Writethrough:所有写入都并行写入缓存和主存储,因此 SSD 突然丢失导致 VM 出错的可能性非常小。
Writearound:所有写入都写入主存储,仅在读取时缓存。VM 中不会出现错误。
Writeback:所有写先到Cache,在后台写入主存。如果 SSD 出现故障,最有可能在您的虚拟机中导致错误,我不会在生产中使用这种模式。
取决于你写了多少。如果您的写入周期性地使您的主存储饱和,则性能提升可能相当显着。如果您主要是阅读和写作,您可能不会注意到改进。
此外,写回对于你正在做的事情来说是一个糟糕的政策,所以不要使用它。
是的,只要您使用正确的块设备,它就可以正常工作。还有一个窍门。
当 LVM 扫描 PV 时,它应该通过实际硬盘驱动器本身以及闪存缓存“虚拟”设备查看分区。
一个明显的症状应该是 LVM 工具抱怨重复的 PV。
为了避免这些警告,更重要的是,确保 LVM2 使用 flashcache 设备的修复是调整
/etc/lvm/lvm.conf
.联机帮助页会比我更好地解释它,
LVM.CONF(5)
但我会给你一个例子,如果所有物理卷都由闪存缓存支持:还有来自 lessfs 创建者的层。这将允许您在 SSD 和 HDD 之间创建混合设备。tier 的性能似乎优于 Flashcache。
http://www.lessfs.com/wordpress/
http://www.lessfs.com/wordpress/?p=776
//基督教
一些应用程序以非缓冲方式打开文件。
http://man7.org/linux/man-pages/man2/open.2.html
例如,这对于数据库来说很常见。因此,请仔细检查 flashcache 是否适用于这组应用程序。