我在我的服务器上使用不同类型的磁盘。是否可以使用更快的磁盘作为SWAP并要求Linux将其用作磁盘缓存
据我了解,Linux 仅将 SWAP 用于应用程序数据而不是磁盘缓存。
但我想使用较快的磁盘作为较慢磁盘的缓存,就像我们在 dm-cache、flashcache 和enhanceIO 中所做的那样
有人可以在不使用任何第三方驱动程序的情况下建议参数或方法吗
答案1
我认为你很困惑。您不需要交换来使用较快的磁盘来缓存较慢的磁盘。交换空间与该任务完全无关,它用于增加系统可用的虚拟内存(当内核需要更多内存用于其他用途时,内核会将页面交换到交换设备 - 当然,使用快速磁盘例如 SSD 或压缩 RAM 交换设备兹拉姆比使用慢速磁盘更好)。
无论如何,忽略交换。这里无关紧要。 缓存或者闪存缓存或者dm缓存都做你想做的事。
顺便说一句,Linux 已经使用所有可用的 RAM 来缓存磁盘 - 并在程序需要时自动从缓存中释放 RAM。 RAM 缓存是很多比 SSD 缓存更快。
如果您想要缓存的数据多于 RAM 所能容纳的数据,则只需要基于 SSD 的缓存。
RAM 速度更快(目前 16GB 的价格约为 90 至 150 澳元 - 2016 年 6 月 - 取决于品牌、类型和速度),但 SSD 更大且更便宜(约 250GB 的价格约为 80 至 240 美元)。 SSD 的价格将比 RAM 更便宜、容量更大……对于 500+ GB 型号来说,它们的价格已经变得合理,甚至 2TB 三星 SSD 的价格还不到高端 7200 RPM 价格的 4 倍2TB HDD,价格不到最便宜的 2TB HDD 的 8 倍。
我预计价格差距将在未来几年内迅速缩小,从长远来看,SSD 将比 HDD 更便宜、容量更大(而且速度更快)。我很期待,我想用 SSD zpool 替换我的 HDD zpool。当然,到那时,64GB 或更大的内存条也将广泛使用,而且价格也很合理。
足够的题外话,回到缓存......
从 Debian 软件包中的描述来看:
bcache
:
Bcache允许使用SSD来缓存其他块设备。
运行时接口的文档包含在内核树中;在 Documentation/bcache.txt 中。
flashcache
:
Flashcache 是 Linux 的回写式块设备缓存。它使用 Linux 设备映射器 (DM) 提供覆盖映射器,将数据块缓存在高速缓存设备(如固态驱动器)上,以实现快速读取访问。
Flashcache支持FIFO和LRU缓存集,可配置且防错。它配备了 DKMS 内核模块和相应的用于命令和控制的用户空间。
维基百科页面摘录dm-cache
:
dm-cache 是 Linux 内核设备映射器的一个组件(更具体地说,是一个目标),它是一个用于将块设备映射到更高级别虚拟块设备的框架。
它允许一个或多个快速存储设备(例如基于闪存的固态驱动器 (SSD))充当一个或多个较慢存储设备(例如硬盘驱动器 (HDD))的缓存;这有效地创建了混合卷并提供了辅助存储性能改进。
此外,ZFS 内置支持使用快速块设备(例如 SSD)来缓存池。
我使用 ZFS,而且已经很多年没有研究过 bcache 或 fastcache,所以我不能推荐其中之一。
顺便说一句,有一篇关于这个主题的有趣的博客文章:https://www.rath.org/ssd-caching-under-linux.html,其中还提到LVM缓存和增强IO- 除了它们存在这一事实之外,我对它们一无所知。
Redhat / Fedora 开发人员 Vratislav Podzimek 在博客中发表了一个比较bcache 与 lvmcache。