可以使用SSD作为缓存吗?

可以使用SSD作为缓存吗?

我有一个 Linux 媒体服务器,主要与 plex 和 Serviio(dlna 服务器)一起使用。我有一个 t400 4GB GPU(转码)、16GB DDR4 RAM 和一个 i7-6700 CPU。现在,我有 3 个 SSD:1TB 用于电影,250GB 用于交换(我找不到更小的),还有另一个 500GB SSD 未使用。我曾想过用这个SSD作为缓存。我有两个 HDD 通过 USB 从外部连接到 PC,并在该系统上安装了一个 samba 共享(来自我的存储照片和视频的 NAS)。问题是:如何使用这个 500GB SSD 作为来自外部 HDD 和 Samba 共享的数据的缓存? (也是为了减轻我NAS的阅读量)。

答案1

如果您可以将自己限制在本地块设备上,而这些设备不必在其他 PC 上同样工作(也就是说,忽略 SMB 共享并使用 USB 磁盘,那么连接到另一台计算机以访问所包含的数据就不是一件容易的事了) ),LVM 缓存将是一个明智的选择。man lvmcache是有关该内容的阅读文档。bcache可以做类似的事情,有点旧,并且不如lvmcache.

这里的问题是缓存策略基于块设备, 不是为了文件文件系统。这使得它们不适合缓存网络访问。

从技术上讲,overlayfs可以做一些事情,比如当您通过覆盖层访问它们时,将其访问的文件“添加”到较低的文件系统中(因此,用overlayfs的说法,是copy_up在读取时,而不仅仅是在写入访问时)。但是,您需要一种机制来检测您不再访问的服务器上的底层原始文件是否已更改。难的!因此,您需要将其集成到网络文件系统驱动程序上,以便缓存了解所请求的数据,然后 overrideFS 不一定是您所需要的:

最接近的是,如果您可以容忍文件的轻松一致性(即,不会发生两个人同时尝试访问同一个文件,而其中一个或两个人都试图更改它),您可以使用这fsc CIFS 的挂载选项,并cachefilesd在 SSD 上的文件系统上运行其缓存。

所以,结论:

  • 对于本地 USB 磁盘,将它们作为物理卷添加到卷组中,将 SSD 作为另一个物理卷添加到同一组中,然后lvmcache通过首先创建一个逻辑卷,使 SSD 成为对 USB 磁盘的任何访问的缓存SSD 上的卷,然后是驻留在 USB 磁盘上的逻辑卷(可能跨越两个物理磁盘!),但会缓存在 SSD SSD 上的逻辑卷上。

  • 对于远程 SMB 文件系统,用于fsc启用文件系统缓存,运行cachefilesd配置为将缓存放在本地卷上的守护程序。 (这可以是直接在 SSD 上的卷,也可以是由 HDD 支持并由 SSD 加速的缓存加速卷,如上面的公告所示)

相关内容