我有一个带有两个硬盘(2x1TB)的服务器,运行在RAID 1( server )中。我希望通过使用flashcache来提高IO性能。使用LVM在其上运行KVM虚拟机。
关于这一点,我有以下问题:
flashcache适用于块设备,但是这些都是具有自己设置的虚拟机。flashcache会从传统的硬盘中检索文件吗?我可以简单地替换SSD吗?writeback会比writethrough和writearound快多少?不幸的是,我无法访问测试系统,所以我可以在没有卸载磁盘的情况下在活动服务器上安装flashcache吗?我找到了一个很好的教程这里,我将使用它。
发布于 2012-11-18 15:30:56
对于那些从未见过它的人来说,Flashcache是一种用SSD驱动器扩展Linux块缓存的方法。它比运行一个只有一半TB内存的服务器更便宜。
这样还行吗?
应该是这样的。Linux块缓存的工作方式是缓存访问的块,而不是文件。只要您不允许KVM机器直接访问块设备(您没有),Linux块缓存就会发挥作用。但是,如果您要让KVM机器直接访问块设备,那么答案就不那么清楚了.
如果您使用的是文件支持的虚拟磁盘,它肯定会工作的。
如果你使用的是LV支持的虚拟磁盘,我不知道。
我希望能提高多少业绩?
这是我们无法回答的问题。这取决于各种各样的事情。抽象地说,您将获得SSD比活动块集更大的最佳性能。如果您获得了完美的缓存,那么您的性能将类似于在SSD上运行整个系统。实际上你会这么做的。
SSD需要有多大?
找出你需要的确切尺寸是我们无法控制的。显然,更多更好,但是找到缓存-SSD和主存储之间的确切比率并不是一件简单的事情。
使此复杂化的是设置为立即刷新的写操作,例如某些文件系统操作和一些数据库配置。这些写入只会被短暂缓存,并且它们的性能不会受到闪存存在或不存在的任何影响。
如果SSD死了怎么办?
当您告诉Linux丢弃缓存时,也会发生同样的情况。对于drop缓存,块缓存中的任何未刷新写操作都会被刷新到磁盘上。当SSD消失时会发生什么取决于缓存模式:
写通:所有写操作都并行写入缓存和主存储,因此突然丢失SSD在VM上导致错误的可能性非常小。
写:所有的写操作都被写入主存储器,并且只在读取时缓存。在VM中没有出错的可能。
写回:所有的写操作都先写到缓存,然后写到后台的主存储中。如果SSD失败,最有可能导致VM错误的是,我不会在生产中使用这种模式。
与“通过”和“写”相比,回记的速度有多快?
这取决于你写了多少东西。如果您的写入周期性地使主存储饱和,则性能的提高可能会相当显著。如果你大部分是用一些写作来阅读的话,你就不会注意到改进了。
此外,写回是一个糟糕的政策,你正在做什么,所以不要使用它。
发布于 2012-11-21 01:30:20
是的,只要你使用正确的块设备,它就能正常工作。还有个诡计。
当LVM扫描PVs时,它应该通过实际的硬盘驱动器本身以及闪存“虚拟”设备来查看分区。
一个明显的症状应该是LVM工具抱怨重复的PV。
为了避免这些警告,更重要的是,要确保LVM2使用闪存设备,修复方法是调整/etc/lvm/lvm.conf中的筛选器。
LVM.CONF(5)手册将比我更好地解释它,但我将留下一个示例,如果所有物理卷都有闪存支持:
filter = [ "a/.*dm.*/" ]发布于 2012-11-24 01:04:25
此外,还存在来自lessfs创建者的层。这将允许您在SSD和HDD之间创建混合设备。层的性能似乎优于Flashcache。
http://www.lessfs.com/wordpress/
http://www.lessfs.com/wordpress/?p=776
//基督徒
https://serverfault.com/questions/449088
复制相似问题