# Storage Pooling

BDeploy can be configured to use a dedicated object database to pool common objects from several BHives. This can be done on individual BHive basis, or be configured to automatically setup new BHives to use pooling.

# Per-BHive Pool Setup

Each BHive can have a configured pool directory, which must be non-existent or an existing object database. You can enable pooling on a single BHive from the CLI using:

bdeploy bhive --hive=</path/to/hive> --pool=</path/to/pool>

BHive Browser
BHive Browser

# Global Default Pool

BDeploy can be configured to provide a global default pool directory which is automatically configured on new BHives (e.g. new Instance Group, new Software Repository), but not on existing BHives. This setup can be performed during init:

bdeploy init --root=</path/to/root> ... --pooling [--pool=</path/to/pool>]

You can also setup the global default pool after init using:

bdeploy pool --root=</path/to/root> --defaultPool=</path/to/pool>

# Global Usage Threshold

The global usage threshold specifies how often a certain object has to be seen in BHives participating in a particular pool. Only once this threshold is reached will an object be moved to the pool. The threshold can be set on the CLI, its default value is 2:

bdeploy pool --root=</path/to/root> --usageThreshold=<threshold>

# Pooling the default BHive

The default BHive created during init will be configured to use pooling if --pooling is given. Otherwise this can be changed using the Per-BHive Pool Setup later on.

# Re-organizing Pools

Pooling works semi-offline in BDeploy. Each BHive uses its pool as read-only additional data-source. The Pool Re-organization Job will (at some configured point in time or when triggered manually) re-organize pool storage by finding all objects eligible to be moved to the pool and doing so. Thereafter those objects are removed from their origin BHives. As a last step, the job will find objects in the pool that are no longer referenced by any of the BHives, and delete them.

Jobs
Jobs

# Unpooling or disabling Pools

Pooling can be disabled for individual BHives even while pooling is currently enabled. However, this operation requires to unpool required objects from the currently set pool back into the BHive local storage. You can do this using:

bdeploy bhive pool --hive=</path/to/hive> --unpool

# Managing Pool through Administrative UI

Pooling can be enabled or disabled through the BHive Browser administrative UI. Selecting a BHive will give you the options to enable and disable pooling. This is a little less flexible compared to the CLI, as it will enable pooling only on the globally set default pool - if there is one set. Otherwise enabling through the UI is not possible.

BHive Details
BHive Details