VirtualBox中的Neo4j服务器:无法创建rrd存储

时间:2013-08-22 00:59:19

标签: neo4j virtualbox

我正在尝试在运行Ubuntu的Virtualbox 中运行 Neo4j服务器。 服务器文件和数据库位于我的Windows主机中,并通过共享文件夹(vboxsf)访问。 不幸的是,我无法轻松地将数据传输到虚拟机并直接在那里运行(由于虚拟磁盘上的可用空间不足。我试图放大它但是没有用完。)

数据库已由我的队友设置和使用。现在我想访问我系统上准备好的数据。 (顺便说一下,我是neo4j的新手)我的整体设置(VM而不是本机系统)有点不同,我们无法弄清楚,实际问题是什么。

当我尝试通过控制台启动服务器时,我明白了:

don@VirtualHAL:~/Data/SharedFolder/DBs/neo4j-community-1.9$ bin/neo4j start
WARNING! You are using an unsupported Java runtime. Please use Oracle(R) Java(TM) Runtime Environment 7.
Starting Neo4j Server...WARNING: not changing user
process [7248]... waiting for server to be ready.............. Failed to start within 120 seconds.
Neo4j Server may have failed to start, please check the logs.

关于java版本的警告可能是由于我安装了Java OpenJDK 7这一事实。(我的队友使用相同的,没有任何进一步的问题)。

实际上并不需要2分钟才能显示“120秒内无法启动”消息。

当然,我检查了日志:

8/21/13 8:37:12 PM org.neo4j.server.modules.RESTApiModule INFO: Mounted REST API at [/db/data/]
8/21/13 8:37:12 PM org.neo4j.server.modules.ManagementApiModule INFO: Mounted management API at [/db/manage/]
8/21/d13 8:37:12 PM org.neo4j.server.rrd.RrdFactory SEVERE: Unable to open rrd store, attempting to recreate it**
8/21/13 8:37:12 PM org.neo4j.server.rrd.RrdFactory SEVERE: current RRDB is invalid, renamed it to /home/don/Data/SharedFolder/DBs/neo4j-community-1.9/data/rrd-invalid-1377110232712
8/21/13 8:37:12 PM org.neo4j.server.rrd.RrdFactory SEVERE: Unable to create new rrd store
8/21/13 8:37:12 PM org.neo4j.server.CommunityBootstrapper SEVERE: 
java.lang.RuntimeException: java.io.IOException: Invalid argument
    at org.neo4j.server.rrd.RrdFactory.createRrdb(RrdFactory.java:176)
    at org.neo4j.server.rrd.RrdFactory.recreateArchive(RrdFactory.java:204)
    at org.neo4j.server.rrd.RrdFactory.createRrdb(RrdFactory.java:159)

这是日志的(看似)相关部分。 Unable to create new rrd store - 这可能是什么原因? 到目前为止,搜索错误消息的任何部分都没有得到任何新信息。

2 个答案:

答案 0 :(得分:2)

在写下这个问题时,我想出了相当简单的解决方案:

没有足够的空间将数据库(几GB)放入虚拟机,但它足以运行neo4j服务器本身,只能通过共享文件夹访问数据。

所以,现在当我从Ubuntu中运行它时服务器按预期启动:

dustin@VirtualHAL:~/Software/neo4j-community-1.9$ bin/neo4j start
WARNING! You are using an unsupported Java runtime. Please use Oracle(R) Java(TM) Runtime Environment 7.
Starting Neo4j Server...WARNING: not changing user
process [7676]... waiting for server to be ready............. OK.
Go to http://localhost:7474/webadmin/ for administration interface.

然而,这可能不是上述问题的明确答案。有人可以添加有关服务器本身放置在共享文件夹中时无法正常启动(或无法设置rrd存储)的信息吗?

答案 1 :(得分:1)

也进入这个。 Neo4j使用外部库来实现RRD - rrd4j。如果你查看它的源代码,你会发现它使用了一个内存映射文件。

https://github.com/fusesource/rrd4j/blob/rrd4j-2.0.7/src/main/java/org/rrd4j/core/RrdNioBackend.java

我无法在网上找到任何内容,但我猜测Virtualbox的Guest Additions用于挂载共享文件夹并不支持内存映射。我不认为它是操作系统的东西,而是内核实现的东西。我很想知道是否属实。我的C-fu并不强大,但如果可能的话,我真的很想支持。

[编辑]

是的,它是嘉宾的补充。此票:https://www.virtualbox.org/ticket/819 - 已有7年历史。 2周前OSX上有活动。