如何设置缓存网络共享的NFS服务器?


14

用户数据存储在两个相当大的(> 1 PB)OpenStack Swift存储集群中。让他们成为集A集B

此外,还有一些PoP需要与该数据进行交互。这些PoP中的服务器实际上是无盘的,这意味着没有用户数据存储在它们上或从未下载到它们。PoP点可分为一般世界地区(如北美南非中欧等)。

一些PoP距离任何集群的Swift端点都相距很远,从而导致了不希望的延迟。为了减轻这种情况,我想在每个区域中设置一个缓存网关服务器,该服务器将r / w请求缓存到最近的集群。

当前,任何PoP中的客户端都通过永久安装的swift虚拟文件系统(该FUSE模块将Swift Object Storage作为块设备(或多或少)安装)访问用户数据。但是,svfs最初并不稳定,将来,客户端应通过NFS访问缓存服务器。

这是所需架构的一个分支的示意图:

+------------------+                +------------------+    NFS   +------------------+
|    Cluster A     |     SVFS       |  Region 1 Cache  +---------->  R1 PoP a Client |
|                  +---------------->                  |          |                  |
|Persistent Storage|                |Ephemeral  Storage+----+     |Generates R/W Load|
+-----------------++                +------------------+    |     +------------------+
                  |                                         |
                  |                 +------------------+    | NFS +------------------+
                  |      SVFS       |  Region 2 Cache  |    +----->  R1 PoP b Client |
                  +----------------->                  |          |                  |
                                    |Ephemeral  Storage|          |Generates R/W Load|
                                    +------------------+          +------------------+

我熟悉设置NFS和svfs 的基础知识

问题是:在写svfs挂载点之前,如何设置缓存服务器以使用所有可用资源(指定的缓存分区,RAM)来积极地缓存尽可能多的数据?基本上可以归结为:如何在Linux中缓存目录?

如果可能的话,应该合并读写操作,并且在可能的情况下,FUSE请求中的块大小至少应为128k,以便在高速缓存需要写入群集时最大程度地提高吞吐量并最小化延迟。

附录1:我已经在一些服务器上将集群安装模块从svfs切换到S3QL。S3QL的缓存稍微提高了性能。我将尝试获取一些性能数据以确保完整性。


您可以尝试在nfs客户端上启用fs缓存:cyberciti.biz/faq/…–
kofemann

请查看serverfault.com/a/441443/345699。也许这将有助于在你的追求
史蒂芬K7FAQ

Answers:


1

如果固有的linux机制(如cachefsaka cachefilesd)不起作用并且您有预算,则可以考虑使用WAFS(广域文件服务)。这些设备设计用于主动缓存NFS(和CIFS),以尝试隐藏WAN链路通常涉及的延迟。


1

我真的不是这方面的专家(但是肯定很有趣!)。

我最近一直在寻找的主要是用于LVM的dm-cache,以及用于其缓存部分的SSD。这是来自readhat的示例文本,具有很好的概述,但并不局限于RH:https ://www.redhat.com/en/blog/improving-read-performance-dm-cache

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.