使用挂载块存储作为Xodus数据库路径安全吗?其想法是在几个不同的主机上运行使用Xodus的应用程序。因此,每个基于Xodus的应用程序都指向相同的挂载路径(例如/mnt/xodus)。
在这种情况下,每个应用程序都会打开Xodus环境,如下所示。如果我们像这样打开环境:
@Override
public Environment getEnvironment(String xodusRoot, String instance) {
Environment environment = environmentMap.get(xodusRoot + instance);
if (environment == null) {
EnvironmentConfig config = new EnvironmentConfig();
config.setLogCacheShared(false);
Environment env = Environments.newInstance(xodusRoot + instance, config);
environmentMap.put(xodusRoot + instance, env);
}
Environment e = environmentMap.get(xodusRoot + instance);
return e;
}多个Xodus实例指向挂载路径是否安全?
发布于 2019-11-12 15:56:48
这取决于您所使用的特定块存储。例如,Xodus在Amazon上运行得很好,但是EBS不允许共享数据库文件。如果块存储是可共享的,那么任何打开的环境都将被锁定,因此您必须在主机之间以某种方式“分割”环境路径,以防止开放冲突。很可能,人们可以尝试在read-only listening mode中打开环境,但是只有当块存储能够产生合适的文件系统事件时,它才能工作。
此外,如果在单个JVM中使用多个环境,则设置config.setLogCacheShared(false)将导致OOME。
https://stackoverflow.com/questions/58775963
复制相似问题