为什么Sling / Jackrabbit使用两倍的磁盘空间来存储文件?

时间:2014-03-04 16:25:31

标签: jackrabbit sling

为什么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>

0 个答案:

没有答案