【问题标题】:Sharing large mmaped data file across machines in Linux Cluster在 Linux Cluster 中跨机器共享大型 mmaped 数据文件
【发布时间】:2012-04-17 11:36:06
【问题描述】:
假设我有一个 1 TB 的数据文件,从本地安装的“主”Linux 系统的硬盘文件系统读/写到在同一“主”系统上运行的进程的虚拟地址空间。
我有 20 台专用的“从”Linux 服务器通过千兆交换机连接到“主”系统。我想通过将这些“从”服务器上的这 1 TB 以只读方式映射到它们的进程地址空间来随机读取它。
我的问题是将数据集从主系统同步(可能是懒惰)到从系统的最有效方法是什么? (例如,是否可以通过 NFS 挂载文件,然后从那里对其进行映射?如果是,这是最好的解决方案吗?如果不是,什么是解决方案?)
【问题讨论】:
标签:
linux
memory-management
network-programming
cluster-computing
mmap
【解决方案1】:
我最近在工作中一直在玩这样的想法(当然这是文件大小要小得多)。我相信 NFS 可以很好地读取,但您可能会遇到并发写入的问题。如果您只有一个“作家”,那么您的想法应该可以很好地发挥作用。如果数据文件是结构化的,我建议使用某种描述的分布式缓存,并允许在集群中分布多个数据副本(以实现冗余)。
最后,我们选择了 SAN 和集群文件系统解决方案(在我们的例子中是 Symantec VCS,但任何通用集群文件系统都可以)。我们这样做的原因是我们无法通过使用纯 NFS 获得所需的性能。您选择的集群文件系统需要正确支持 mmap 和分布式缓存。