Advanced Volume Operations#

Carbonio Storage: More than Meets the Eye#

At first sight, Carbonio Storage seems to be strictly dedicated to HSM. However, it also features some highly useful volume-related tools that are not directly related to HSM.

Due to the implicit risks in volume management, these tools are only available through the CLI.

Volume Operations at a Glance#

The following volume operations are available:

doCheckBlobs: Perform BLOB coherency checks on one or more volumes.

doDeduplicate: Start Item Deduplication on a volume.

doVolumeToVolumeMove: Move all items from one volume to another.

getVolumeStats: Display information about a volume’s size and number of thereby contained items/blobs.

doCheckBlobs
CLI full reference
zextras$ carbonio powerstore doCheckBlobs *start* [param \
VALUE[,VALUE]]

Parameter List

NAME

TYPE

EXPECTED VALUES

DEFAULT

action (M)

String

start

volumes (O)

String[, …]

message1,hsm[, …]

mailbox_ids (O)

Integer[, …]

2,9,27

missing_blobs_crosscheck (O)

Boolean

true|false

true

traced (O)

Boolean

true|false

false

fix_incorrect_compre ssed_digests (O)

Boolean

true|false

false

missing_blob_delete_item (O)

Boolean

true|false

false

check_digests (O)

Boolean

true|false

false

items (O)

String

files|all

all

(M) == mandatory parameter, (O) == optional parameter

Usage Example

zextras$ carbonio powerstore doCheckBlobs start

Perform a BLOB coherency check on all message volumes

Usage Example

zextras$ carbonio powerstore doCheckBlobs start volumes \
message1,hsm

Perform a BLOB coherency check on volumes message1 and hsm

Usage Example

zextras$ carbonio powerstore doCheckBlobs start mailbox_ids 2,9,27

Perform a BLOB coherency check on mailboxes 2,9 and 27

Usage Example

zextras$ carbonio powerstore doCheckBlobs start \
missing_blobs_crosscheck false

Perform a BLOB coherency check without checking on other volumes

Usage Example

zextras$ carbonio powerstore doCheckBlobs start traced true

Perform a BLOB coherency check, logging even the correct checked items

Usage Example

zextras$ carbonio powerstore doCheckBlobs start \
fix_incorrect_compressed_digests true

This option verifies if the digest (hash) of every object is correct and eventually fixes it

Usage Example

zextras$ carbonio powerstore doCheckBlobs start check_digests true

Verifies if the blob digests are correct

Usage Example

zextras$ carbonio powerstore doCheckBlobs start \
missing_blob_delete_item true

Remove entries from the database that are missing their blob file in the hsm volume

Volume names are case sensitive. Run zextras$ carbonio powerstore getAllVolumes for a complete list of the volumes.

Description and Tips

The doCheckBlobs operation can be used to run BLOB coherency checks on volumes and mailboxes. This can be useful when experiencing issues related to broken or unviewable items, which are often caused because either Carbonio cannot find or access the BLOB file related to an item or there is an issue with the BLOB content itself.

Specifically, the following checks are made:

  • DB-to-BLOB coherency: For every Item entry in Carbonio’s DB, check whether the appropriate BLOB file exists.

  • BLOB-to-DB coherency: For every BLOB file in a volume/mailbox, check whether the appropriate DB data exists.

  • Filename coherency: Checks the coherency of each BLOB’s filename with its content (as BLOBs are named after their file’s SHA hash).

  • Size coherency: For every BLOB file in a volume/mailbox, checks whether the BLOB file’s size is coherent with the expected size (stored in the DB).

doDeduplicate
CLI full reference
zextras$ carbonio powerstore doDeduplicate *volume_name* [param \
VALUE[,VALUE]]

Parameter List

NAME

TYPE

EXPECTED VALUES

DEFAULT

volume_name (M)

String[,..]

dry_run (O)

Boolean

true|false

false

(M) == mandatory parameter, (O) == optional parameter

Usage Example

zextras$ carbonio powerstore doDeduplicate secondvolume

Starts a deduplication on volume secondvolume

doVolumeToVolumeMove
CLI full reference
zextras$ carbonio powerstore doVolumeToVolumeMove \
*source_volume_name* *destination_volume_name* [param \
VALUE[,VALUE]]

Parameter List

NAME

TYPE

EXPECTED VALUES

DEFAULT

source_volume_name (M)

String

destination_volume_name (M)

String

only_files_and_chats(O)

Boolean

true|false

false

read_error_threshold (O)

Integer

policy(O)

String

none

perform_deduplicate(O)

Boolean

true|false

false

overwrite_index_destination (O)

Boolean

true|false

false

(M) == mandatory parameter, (O) == optional parameter

Usage Example

zextras$ carbonio powerstore doVolumeToVolumeMove sourceVolume \
destVolume

Moves the whole sourceVolume to destVolume

Description and Tips

This command can prove highly useful in all situations where you need to stop using a volume, such as:

  • Decommissioning old hardware: If you want to get rid of an old disk in a physical server, create new volumes on other/newer disks and move your data there.

  • Fixing little mistakes: If you accidentally create a new volume in the wrong place, move the data to another volume.

  • Centralize volumes: Centralize and move volumes as you please, for example, if you redesigned your storage infrastructure or you are tidying up your Carbonio volumes.

Hint

Starting from version 3.0.10, Carbonio Storage can also move “Index” volumes.

getVolumeStats
CLI full reference
zextras$ carbonio powerstore getVolumeStats *volume_name* [param \
VALUE[,VALUE]]

Parameter List

NAME

TYPE

EXPECTED VALUES

DEFAULT

volume_name (M)

String

show_volume_size (O)

Boolean

true|false

false

show_blob_num (O)

Boolean

true|false

false

(M) == mandatory parameter, (O) == optional parameter

Warning

BE CAREFUL the show_volume_size and show_blob_num options are I/O intensive and thus disabled by default.

Usage Example

zextras$ carbonio powerstore getVolumeStats volumeName

Shows stats for the volume with name equal to volumeName

Description and Tips

This command provides the following information about a volume:

Name

Description

id

The ID of the volume

name

The Name of the volume

path

The Path of the volume

compressed

Compression enabled/disabled

threshold

Compression threshold (in bytes)

lastMoveOutcome

Exit status of the latest doMoveBlobs operation

lastMoveTimestamp

End timestamp of the latest doMoveBlobs operation

lastMoveDuration

Duration of the last doMoveBlobs operation

lastItemMovedCount

Number of items moved to the current secondary volume during the latest doMoveBlobs operation

bytesSaved

Total amount of disk space freed up thanks to deduplication and compression

bytesSavedLast

Amount of disk space freed up thanks to deduplication and compression during the latest doMoveBlobs operation

The show_volume_size and show_blob_num options will add the following data to the output:

Option

Name

description

show_volume_size

totSize

Total disk space used

show_blob_num

blobNumber

Number of BLOB files

Moving an Account Across Servers#

Moving an account from one server to another within the same Carbonio infrastructure can be done using command carbonio powerstore mailboxMove from the CLI interface. The command will take care of moving the account including everything associated to it: e-mails, contacts, calendars, and Chats blobs.

The syntax of the command is

zextras$ carbonio powerstore mailboxMove *destination server* accounts *account name*

To move account alice@example.com to server srv-02.example.net including all its blobs, the command is

zextras$ carbonio powerstore mailboxMove srv-02.example.net accounts alice@example.com