Storage Repositories#

The spaces backend stores payload in one or multiple storage repositories. Currently supported are:

  • proxy: meta-repository that can direct requests to other repositories
  • sfs: simple file system, to be used on single node installations
  • strongbox: uses a separate strongbox-installation

An object can exist in only one repository at any time, with the exception of an ongoing migration.

Proxy repository#

The proxy must be used if more than one repositories are enabled. It will attempt to direct requests for existing objects to the repository where the object is stored. New objects are created in a preferred repository.

Configuration#

parameter type default value allowed values
proxy.enabled boolean true true, false
proxy.preferredBackend string sfs sfs, cassandra

To use the proxy, at least one of the real backends must be enabled. The preferredBackend value must reference an enabled backend.

Simple File System repository#

The SFS stores objects as chunks of 4MiB size in the file system of the application server.

/srv/spaces/data                           <-- config.getSfsBaseDir()
              /{suffix}/{uid}              <-- object home
                      /manifest.json             <-- manifest location
                        /chunks                    <-- chunks home
                          /{partition}/{chunkId}   <-- chunk location
  • uid: object id
  • suffix: last three characters of uid; used to reduce elements in a directory
  • chunkId: integer 0..{max}
  • partition: chunkId / 100

Configuration#

parameter type default value allowed values
sfs.enabled boolean false true, false
sfs.baseDir string /srv/spaces/data any existing directory in the file system
sfs.chunkSize number 4194304 0 .. max file size
sfs.minimumAvailableDiskspaceMB number 1000 >0

The sfsBaseDir must exist already, and the application server unix user must have ownership of the directory (or at least read/write permissions).