Volumes
An application instance is a namespace for
logical volumes. Within the context of an application instance, you can
create and implement the storage according to your needs. The
applications volumes
set of commands allows you to create, edit,
list, and delete volumes in the context of an application instance.
Creating a logical volume
A logical volume (virtual disk) is a set of blocks viewed by the
operating environment as a single disk-like storage unit. Typically,
logical volumes get their blocks from physical drives. In the S1
system, logical volumes get their blocks from pools. First, you need
to define pools; and then you allow the pools to use the physical
drives (approve drives for pools). Thus, pools get their storage from
physical disks and provide this storage (blocks) to the volumes. When
you create a logical volume, you must specify an application instance
for the logical volume. To list all application instances, run the
applications list
command. To create new logical volume, pick one
application instance and use the applications volumes create
command.
Notice: We use the terms volume and logical volume interchangeably.
Usage:
applications volumes create --application=<app_name>
--volume=<vol_name>
--capacity=<capacity>
--pools=<pname…> --n=<n> --k=<k>
[(--metadataPools=<mt_name…> --metadataN=<n…> --metadataK=<k…>)]
[(--tierPools=<tname…> --tierN=<n…> --tierK=<k…>)]
[(--tierSizes=<tierCapacity…> --evacuationThresholds=<percent…> --lowerThresholds=<percent…>)]
[--groupedVolume=<name> | --cgid=<numbers> | (--encryptionKey=<encryptionKey> [--saveEncryptedRecoveryKey])]
[--sectorSize=<sectorSize>]
[--log2StrideSectors=<numbers>]
[--snapshotCapacity=<capacity>]
[--enableSnapone]
[--disableSpaceReclamation]
Options
The applications volumes create
usage pattern is long. It has six
required options and 18 optional options.
Required
Options and arguments | Description |
---|---|
--application=<app_name> |
To specify app instance for the volume. An application instance is a namespace for volumes. Within the app instance, volumes must have a unique name. |
--volume=<vol_name> |
To name of the newly created volume. Replace <vol_name> with a name of your choice. |
--capacity=<capacity> |
To set volume capacity. Replace <capacity> with a number appended with a storage unit (MB, GB, TB, PB) |
--pools=<pname…> |
To list pools for the volume storage. Replace <pname…> with a list of pools. |
--n=<n> |
To fragment the volume data. Replace <n> with the number of fragments; the value <n> must be in powers of two, namely 1,2,4,8,… |
--k=<k> |
To specify redundancy level, namely, the number of simultaneous drive failures that the logical volume can sustain before losing data. Replace <k> with a numerical value for the redundancy level. |
Notice:
- You can list all the available app instances with the
applications list
command. - You can create a new application instance with the
applications create
command.
Optional
Metadata options
Options and arguments | Description |
---|---|
--metadataPools=<mt_name…> |
To save volume metadata. Replace <mt_name…> with a list of metadata pools. The metadata of the volume will save in the list of metadata pools. |
--metadataN=<n…> |
To specify the number of fragments; for each pool in the list of metadata pools. Replace <n> with numbers of fragments; each of the numbers of fragments must be a power of two, namely 1,2,4,8… |
--metadataK=<k…> |
To specify the number of simultaneous drive failures that each metadata storage can sustain before losing data. Replace <k> with a numerical value for the redundancy level. |
Tiering options:
- A pool can be on the upper tier if all its approved volumes are SSD drives.
- When setting an upper tier, all of the drives already specified in the
--pool
option will be on the lower tier.
Options and arguments | Description |
---|---|
--tierPools=<tname…> |
To create upper tiers for the volume, replace <tname…> with a list of pools (list of upper tiers). List the pools in ascending order of performance, where each pool is a higher tier than its predecessor. For example, if A0 is the positional argument of option --pools and we have --tierPools A1 A2 A3 , then A1 is a higher than A0, A2 is a higher tier of A1, and A3 is a higher tier of A2. |
--tierN=<n…> |
To specify the number of data fragments for each pool in the list of upper tiers. Replace <n…> with numerical values for the number of fragments for the corresponding pools in the list of upper tiers (the list of pools specified in the --tierPools option). All numerical values must be in powers of two (1,2,4,8, etc.). |
--tierK=<k…> |
To specify the redundancy level, namely, the number of simultaneous drive failures that each pool in the list of upper tiers can sustain before losing data. Replace <k…> with a list of numerical values for the redundancy level of each pool in the list (list of upper tiers). |
--tierSizes=<tierCapacity…> |
To set tier cache capacity for each of the pools in the list of upper tiers (as specified in the --tierPools option). Replace <tiercapacity> with numbers (appended with KB, MB, GB,…) that correspond to the pools in the list of upper tiers. |
--evacuationThresholds=<percent…> |
To set the maximum threshold for each pool in the list of upper tiers. When the maximum threshold is exceeded, the volume moves data to a lower tier (previous pool in the list of upper tiers). Replace <percent…> with a list of numerical values between one and 100 (appended with % ) to set the maximum threshold value of each pool in the list. |
--lowerThresholds=<percent…> |
To set minimum threshold value for each pool in the list of upper tiers . When reaching the minimum threshold, the pools stop moving data to a lower tier. Replace <percent> with a list of numerical values between one and 100, appended with % to set the minimum threshold value of each pool in the list. |
Map a volume to existing Consistency groups
A consistency group (CG) is a collection of volumes that forms a single storage entity (sharing the same data retention: primary and redundant data). The S1 system generates consistency groups automatically; users cannot create or delete consistency groups. When
creating a new volume, you may specify whether to map it to an existing consistency group. If you map a newly created volume to a consistency group, the system does not create a new consistency group for the logical volume. If
you do not add volume to a CG, the system automatically creates a new consistency group for this volume. Once the logical volume is assigned to a CG, the assignment becomes immutable.
To map a newly created volume to an existing consistency group, use
either the --groupedVolume
option or the --cgid
option.
Notice: An S1 system with no volumes has no consistency groups.
Thus, when you create your first volume, do not use the --groupedVolume
or the --cgid
options.
Options and arguments | Description |
---|---|
--groupedVolume=<name> |
To map a volume to a consistency group (CG), replace <name> with an already existing CG name. |
--cgid=<numbers> |
To map a volume to a consistency group, replace <number> with the consistency group id. |
Encrypting a Volume
NOTICE: Encrypting your volume is optional and must be handled with great care. If you opt to encrypt your volume and lose the volume encryption key, you will not be able to use your logical volume.
S1 supports both software-based encryption and self-encrypting drives (SED).
If you use SED, every time you reboot, S1 will ask you for your SED key.
IMPORTANT:
If you do not supply S1 with the SED key, you will not be able to use any of the
volumes or CGs that use this drive.
For instance, you may have five different logical volumes spread on the same six drives. If one of these drives uses SED encryption and you don’t supply S1 with its SED key, then you cannot use any of these five volumes.
Unlike SED encryption, S1 software-based encryption allows you to encrypt per volume. Using standard encryption algorithms, you can encrypt a single logical volume with a volume encryption key of your choice. Volume encryption is optional. If you encrypt a logical volume, make sure that you save the volume encryption key. You will be asked for the volume encryption key every time S1 boots. If you fail to supply S1 with the volume encryption key, you won’t be able to use that one volume.
To prevent losing a volume due to losing the volume-encryption-key, StorOne
offers you an option to store your volume encryption
key safely with StorOne. This way, StorOne can help you to recover a volume
encryption key when needed. When you use the --saveEncryptedRecoveryKey
option, your volume-encryption-key is encrypted with StorOne’s
public key and stored in your S1 management relay station database.
Options and arguments | Description |
---|---|
--encryptionKey=<encryptionKey> |
To encrypt the volume with a volume-encryption-key, replace <encrptionKey> with an encryption key of your choice. |
--saveEncryptedRecoveryKey |
To store your encryption key with StorOne. Use this option if you want to store your volume-encryption-key with StorOne. |
Notice: When you encrypt a volume V0, you encrypt its consistency group (CG). Hence, any volume you add to this consistency group will be encrypted. The encryption key is the key you used when creating volume V0.
Sector size
Options and arguments | Description |
---|---|
--sectorSize=<sectorSize> |
To set the sector size of the volume; replace <sectorsize> with either 512 bytes or 4KB. If storing on an ESX server, use 512 bytes; on any other storage platform, use 4KB. |
--log2StrideSectors=<numbers> |
To set a volume, replace <number> with the stripe unit (chunk size) in bytes. |
Snapshots and space reclamation
- The
--snapshotCapacity
option allows you to set a soft capacity threshold limit on your volume snapshot storage. When your snapshot storage exceeds the soft threshold limit, you will receive warning notices and alerts in your email. Unlike a hard capacity limit, which you cannot exceed. A soft capacity threshold limit only warns the user. - The
--enableSnapone
option activates StorOne vSnap technology on the volume. vSnap technology stores significantly more snapshots in the same storage capacity. vSnap tiers old snapshots automatically, saving storage resources without impacting performance. Having more snapshots on the same storage capacity reduces the risk of data loss. vSnap snapshots are redirect-on-write (ROW) policy-based snapshots. They are invisible to any external application until specifically restored. Hence, vSnap snapshots are more protected from ransomware and malware attacks.
Options and arguments | Description |
---|---|
--snapshotCapacity=<capacity> |
To set a soft capacity threshold limit on your snapshot storage. Replace <capacity> with a number appended with a storage unit (MB, GB, TB, PB) to set the soft capacity threshold limit on your volume snapshots. |
--enableSnapone |
To enable SnapONE on the volume. |
--disableSpaceReclamation |
To disable space reclamation (UNMAP) support for the volume. |
Examples
-
To create a volume
videos
on application instancetraining
with a capacity of 500GB over a poolsales
withn=16
data fragments andk=3
data redundancy, runapplications volumes create --application training --volume videos --capacity 500GB --pools sales --n=16 --k=3
In this example, volume
videos
has not mapped to any consistency group. Thus, S1 automatically creates a new consistency group for volumevideos
. -
Create a volume
emails
with the following configuration:- Application instance:
--application=archives
- Volume capacity:
--capacity=100GB
- Volume created over two pools,
HR
andsales
, where:- For pool
HR
withn=4
data fragments andk=1
data redundancy. - For pool
sales
withn=8
data fragments andk=3
data redundancy.
- For pool
- Pools for upper tiers
speed1
,speed2
, andspeed3
:
where:- For upper tier pool
speed1
,tierN=2
data fragments andtierK=1
data redundancy with--tierSizes=10GB
, with--evacuationThresholds=70%
and--lowerThresholds=5%
. - For upper tier pool
speed2
,tierN=16
data fragments andtierK=3
data redundancy with--tierSizes=5GB
, with--evacuationThresholds=75%
and--lowerThresholds=10%
. - For upper tier pool
speed3
,tierN=4
data fragments andtierK=1
data redundancy, and--tierSizes=2GB
, with--evacuationThresholds=80%
and--lowerThresholds=15%
- For upper tier pool
- The volume is mapped to (an already existing) consistency group id
600
.
applications volumes create --application emails --volume archives --capacity 100GB --pools HR sales --n 4 8 --k 1 3 --tierPools speed1 speed2 speed3 --tierN 2 16 4 --tierK 1 3 1 --tierSizes 10GB 5GB 2GB --evacuationThresholds 70% 75% 80% --lowerThresholds 5% 10% 15% --cgid 600
- Application instance:
Edit a volume
You can change the configurations of existing volumes with the applications volume edit
command.
Usage
applications volumes edit --application=<app_name> --volume=<vol_name> [--newname=<new_vol_name> --capacity=<capacity> --snapshotCapacity=<capacity> --tierSizes=<tierCapacity…> --evacuationThresholds=<percentage…> --lowerThresholds=<percentage…> (--enableSnapone | --disableSnapone) (--enableSpaceReclamation | --disableSpaceReclamation)]
Options
Options and arguments | Description | ||
---|---|---|---|
--application=<app_name> |
To specify the application instance, replace <app_name> with the name of the app instance of the volume. |
||
--volume=<vol_name> |
To specify the volume, replace <vol_name> with the name of the volume you want to edit. |
||
--newname=<new_vol_name> |
To change the name of the volume. Replace <new_vol_name> with a name of your choice. |
||
--capacity=<capacity> |
To edit volume capacity, replace <capacity> with a number appended with a storage unit (MB, GB, TB, PB). |
||
--snapshotCapacity=<capacity> |
To edit the soft capacity threshold of your snapshot storage, replace <capacity> with a number appended with a storage unit (MB, GB, TB, PB). |
||
--tierSizes=<tierCapacity…> |
To edit tier cache capacity for each of the pools in the upper tiers, replace <tiercapacity…> with a list of numerical storage units (appended with KB, MB, GB,…) that corresponds to the list of --tierPools . |
||
--evacuationThresholds=<percent…> |
To edit the maximum threshold for each pool in the list of upper tiers. When the maximum threshold exceeded, the volume moves data to a lower tier (previous pool in the list of upper tiers). Replace <percent…> with a list of numerical values between one and 100 (appended with % ) to set the maximum threshold value of each pool in the list. |
||
--lowerThresholds=<percent…> |
To edit the minimum threshold value for each pool in the list of upper tiers. When reaching the minimum threshold, the pools stop moving data to a lower tier. Replace <percent…> with a list of numerical values (one for each volume in the tier) between one and 100, appended with % to set the minimum threshold value of each pool in the list. |
||
--enableSnapone |
To enable SnapONE on the volume. SnapONE is a snapshot based on Vsnap technology that allows you to save more snapshots in the same space. | ||
--disableSnapone |
To disable SnapONE on the volume. SnapONE is a snapshot based on Vsnap technology that allows you to save more snapshots in the same space. | ||
--enableSpaceReclamation |
To enable space reclamation (UNMAP) support for the volume. | ||
--disableSpaceReclamation |
To disable space reclamation (UNMAP) support for the volume. |
Examples
In the following examples, we edit the volume archives
mapped to application instance emails
.
-
To rename the existing volume
archives
toactive
and to change its capacity to 800GB, run:applications volumes edit --application emails --volume archives --rename active --capacity 800GB
-
To change the capacity of the existing volume
archives
to 3TB and to disable SnapONE, run:applications volumes edit --application emails --volume archives --capacity 3TB --disableSnapone
-
Assuming that the existing volume
archives
is tiered between three pools, consider the following list of changes:- Change the capacity of the volume to 10TB
- Change tier sizes to 10GB, 4GB, and 2GB.
- Enable SnapONE.
- Enable space reclamation.
To apply the above changes on the existing volume
archives
, run:
applications volume edit --application emails --volume archives --capacity 10TB --tiersizes 10GB 4GB 2GB --enableSpaceReclamation --enableSnapone
List volumes
To list volumes, use the applications volumes list
command.
Usage:
applications volumes list [--application=<app_inst> --volume=<vol>] [--basic] [--cg] [--snapshot]
[--connectivity] [--capacity] [--fs] [--rep] [--vms]
Options:
Options and arguments | Description |
---|---|
--application=<app_inst> |
To list only volumes from the specified app instance, replace <app_inst> with the application instance. |
--volume=<vol> |
To list only the specified volume, replace <vol> with a volume name. |
--basic |
To display only volume names and their ids. |
--cg |
To display the volume consistency group within the context of the app instance. |
--snapshot |
To display the point in time (PIT) (of the volume snapshots). |
--connectivity |
To display the connectivity status of the volume. |
--capacity |
To display volume statistics (capacity usage for User Data, Upper Tier, Retention, vRAID) |
--fs |
To display file system information (“Mount State” and “Replication Metadata) |
--rep |
To display information about volume replication. |
--vms |
To display information about VMware virtual machines within the context of the app instance. |
Examples
-
To list all volumes, run:
applications volumes list
-
To list volumes from the
emails
application, run:applications volumes list --application emails
-
To list only the name and id of volume
SR
, run:applications volumes list --volume SR --basic
Delete a volume
To delete a volume, use the applications volumes delete
command.
Usage:
applications volumes delete --application=<app_name> --volume=<vol_name> [--force]
Options:
Options and arguments | Description |
---|---|
--application=<app_name> |
To specify the app instance mapped to the volume you want to delete. |
--volume=<vol_name> |
To specify the name of the volume that you want to delete. |
--force |
To delete without prompting for confirmation. |
Examples
- To delete volume
speed
that mapped to application instancearchive
, run:applications volumes delete --application archive --volume speed
- To delete volume
speed
that mapped to application instancearchive
without prompting for confirmation, run:applications volumes delete --application archive --volume speed