2013-08-22 15 views
2

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

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

当我尝试通过控制台启动服务器,我得到这个:

[email protected]:~/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版本的警告propably由我安装了Java OpenJDK的事实造成7(我的队友使用相同,没有任何进一步的问题)。

直到'120秒内无法启动'消息出现,实际上并不需要2分钟。

当然,我查了日志:

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 - 这可能是什么原因? 搜索错误消息的任何部分到目前为止没有给我任何新的信息。

+0

写下这个问题时,我想出了一个相当简单的解决方案: 没有足够的空间将数据库(几GB)放入虚拟机中,但足以运行neo4j服务器本身并且只能访问数据通过共享文件夹。 尽管如此,这可能不是上述问题的明确答案。有人可以添加关于为什么当服务器本身放置在共享文件夹中时无法正确启动(或无法设置rrd存储)的信息? – glaed

回答

1

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

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

我无法找到这个网上任何东西,但我猜,对于VirtualBox的客户附加安装的共享文件夹不支持内存映射。我不认为这是一个操作系统的东西,而是一个内核实现的东西。我很想知道是否是这种情况。我的C-fu不强,但我真的很想支持这一点,如果可能的话。

是的,这是嘉宾添加。这张票:https://www.virtualbox.org/ticket/819 - 7岁。 2周前有OSX的活动。

+0

搞笑。我不会想到别人会真的遇到这个问题。感谢您的调查和分享。我想这是最接近我们的正确答案。 – glaed

+1

请注意,我们正在反向移植一个功能,以禁用rrd4j和webadmin到Neo4j 2.2.x系列并转发,并着眼于绕过此问题:https://github.com/neo4j/neo4j/pull/4780 – jakewins

2

虽然写下来的问题,我想通了相当容易的解决方案:

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

所以,现在在服务器启动预期当我从内Ubuntu的运行:

[email protected]:~/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存储)的信息?