为什么Sling / Jackrabbit使用两倍的磁盘空间来存储文件,我该怎么办才能防止它这样做?
我正在开展一个项目,我们在Sling中存储文件和相关数据。出于操作原因,我们希望避免使用过多的光盘。我们遇到了一个问题,无论何时我们在Sling存储文件,所用的磁盘空间量似乎都是双倍。
例如,我有47兆的文件。当上传到Sling时,我在数据存储区中有53个megs,有很多不同的文件,所以我可以接受这个通货膨胀量。但是,如果我们查看Jackrabbit存储库的总大小,我们会看到一个不同的故事...
jackrabbit]# du -s
118688 .
jackrabbit]# du -s repository/datastore/
53296 repository/datastore/
jackrabbit]# du -s workspaces/default/blobs/
53464 workspaces/default/blobs/
现在与这些文件相关的数据非常小(<1兆字节),所以我不明白为什么工作空间存储了如此多的数据,因为它应该全部存储在数据存储区中。当我上传一个更大的文件时,这个问题变得更糟,这里我已经在上面的存储库中添加了一个277 meg的文件。
jackrabbit]# du -s
686508 .
jackrabbit]# du -s repository/datastore/
337152 repository/datastore/
jackrabbit]# du -s workspaces/default/blobs/
337320 workspaces/default/blobs/
我已经上传了几千兆字节的文件,这种行为似乎是一致的。
我正在使用Sling standalone 6在运行时创建的默认repository.xml文件,这似乎配置了FileDataStore(见下文)。我的印象是,使用FileDataStore配置的Jackrabbit不会将其文件存储在blob中,但这似乎就是这种情况。任何人都可以告诉我为什么这种行为是exibited或一种方法来禁用它?系统基本上存储文件两次似乎非常奇怪。
<Repository>
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${rep.home}/repository"/>
</FileSystem>
<DataStore class="org.apache.jackrabbit.core.data.FileDataStore"/>
<Security appName="Jackrabbit">
<SecurityManager class="org.apache.jackrabbit.core.DefaultSecurityManager" workspaceName="security">
</SecurityManager>
<AccessManager class="org.apache.sling.jcr.jackrabbit.server.impl.security.PluggableDefaultAccessManager">
</AccessManager>
<LoginModule class="org.apache.sling.jcr.jackrabbit.server.impl.security.PluggableDefaultLoginModule">
<param name="anonymousId" value="anonymous"/>
<param name="adminId" value="admin"/>
</LoginModule>
</Security>
<Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/>
<Workspace name="${wsp.name}">
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${wsp.home}"/>
</FileSystem>
<PersistenceManager class="org.apache.jackrabbit.core.persistence.db.DerbyPersistenceManager">
<param name="url" value="jdbc:derby:${wsp.home}/db;create=true"/>
<param name="schemaObjectPrefix" value="${wsp.name}_"/>
<param name="shutdownOnClose" value="false"/>
</PersistenceManager>
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${wsp.home}/index"/>
<param name="supportHighlighting" value="true"/>
</SearchIndex>
</Workspace>
<Versioning rootPath="${rep.home}/version">
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${rep.home}/version" />
</FileSystem>
<PersistenceManager class="org.apache.jackrabbit.core.persistence.db.DerbyPersistenceManager">
<param name="url" value="jdbc:derby:${rep.home}/version/db;create=true"/>
<param name="schemaObjectPrefix" value="version_"/>
<param name="shutdownOnClose" value="false"/>
</PersistenceManager>
</Versioning>
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${rep.home}/repository/index"/>
<param name="supportHighlighting" value="true"/>
</SearchIndex>
</Repository>