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.
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).
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
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.
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