![我可以将 dm-cache 配置为仅缓存小文件吗?](https://linux22.com/image/980230/%E6%88%91%E5%8F%AF%E4%BB%A5%E5%B0%86%20dm-cache%20%E9%85%8D%E7%BD%AE%E4%B8%BA%E4%BB%85%E7%BC%93%E5%AD%98%E5%B0%8F%E6%96%87%E4%BB%B6%E5%90%97%EF%BC%9F.png)
由于预算问题,我们正在一个小型非政府组织中部署 Active Directory 域控制器斜线文件服务器,使用 Ubuntu Server/Samba 和传统 HDD。
在下载和上传 Windows 漫游配置文件时,我担心传统旋转硬盘的 4K 随机访问率太低。因此,我正在考虑购买一个非常小的 SSD 用于缓存。网络带宽为 1G,因此超过 ~100MBps 的带宽都是浪费,因此较大的文件(更连续地访问)应该从 SSD 缓存中排除。
我们可以配置 dm-cache 以仅在缓存 SSD 上缓存低于特定文件大小的文件吗?
答案1
因此,回答我自己的问题:我在 dm-cache 的文档中找到了所需的信息,更准确地说是在 中cache-policies.txt
。
根据文献,dm-cache 开箱即用,可区分随机传输和顺序传输. 引用cache-policies.txt
:
消息和构造函数参数对是:
- ‘顺序阈值<#nr_sequence_ios>'
- ‘随机阈值<#nr_random_ios>'
- ‘阅读促进调整’
- ‘写入促销调整’
- ‘放弃提升调整’
顺序阈值表示在将流视为顺序之前所需的连续 I/O 数量。随机阈值是必须看到中间的非连续 I/O 数量,才能再次将流视为随机。
顺序和随机阈值分别默认为 512 和 4。
较大的连续 io 最好留在原始设备上,因为主轴往往具有良好的带宽。io_tracker 会计算连续的 I/O,以尝试确定 io 何时处于这些连续模式之一。
这与文件级别的区分(原始问题要求)不同,因为可能随机读取碎片大文件的块也会被缓存。但这是一个同样可行的(而且确实更强大)的解决方案。因此,原始问题错误地假设缓存解决方案适用于文件;实际上它在文件系统级别上起作用块。