Volumes
A volume is a collection of blocks presented to the operating environment as a single disk-like storage unit. In many systems, including Linux and Windows, a logical volume can span multiple physical disk drives. In the StorONE (S1) system, the underlying blocks for a volume are similarly allocated from a pool of physical disk drives.
The S1 storage engine provides the ability to customize many attributes of a volume, also called a virtual storage container (VSC). For more information, see Virtual Storage Containers.
Creating a volume
When you create a volume, you must specify an application instance for the logical volume. To list all application instances, run the applications list
command. If you do not have any existing applications, you must create one before you can create a volume.
To create a volume, use the applications volumes create
command.
Usage:
applications volumes create --application=<name>
--volume=<name>
--capacity=<capacity>
--pool=<name> --n=<n> --k=<k>
[(--metadataPool=<name> --metadataN=<n> --metadataK=<k>)]
[(--tierPools=<name...> --tierN=<n...> --tierK=<k...>)]
[(--tierSizes=<tierCapacity...> --evacuationThresholds=<thresholds...> --lowerThresholds=<thresholds...>)]
[--groupedVolume=<name>|--cgid=<numbers>|(--encryptionKey=<encryptionKey> [--saveEncryptedRecoveryKey])]
[--sectorSize=<sectorSize>]
[(--stripedPools=<name...> [--stripedMetadataPools=<name...> --log2StrideSectors=<numbers>])]
[--snapshotCapacity=<capacity>]
[--disableSpaceReclamation]
[--force]
Options
Due to the extensive customizability of a virtual storage container in the S1 system, the applications volumes create
command has many options. To improve the readability, the following sections group the options into required and optional options, as well as subgroups based on functionality.
Required
Options and arguments | Description |
---|---|
--application=<app_name> |
Specifies the application to assign the volume to. Applications are namespaces for volumes. |
--volume=<vol_name> |
Specifies the name for the volume. Replace <vol_name> with a name of your choice. This name must be unique within the specified application. |
--capacity=<capacity> |
<capacity> with a number appended with a storage unit (GB, GiB, TB, TiB, and so on). |
--pool=<pool> |
|
--n=<n> |
Specifies the number of data fragments for each write operation. Replace <n> with the number of fragments. This must be a power of two, such as 1, 2, |
--k=<k> |
Specifies number of parity fragments for each write operation. This corresponds to the number of simultaneous drive failures that the logical volume can sustain before data integrity can be compromised. StorONE recommends a value of 2 for most situations. This provides a good balance between data protection and storage overhead. |
For more information on the N and K values, see Data resiliency in VSCs.
Optional
Metadata options
Options and arguments | Description |
---|---|
-- |
< with a |
--metadataN=< |
<n> with |
--metadataK=< |
be |
Tiering options:
The
- following
Aoptionspool can be oncontrol theuppertieringtier if all its approved volumes are SSD drives.When setting an upper tier, allconfiguration of thedrivesvolume.alreadyForspecifiedmoreininformation about tiering, see Tiering.For tiered volumes, the
StorONE--pooloptionplatformwillcurrentlybesupportsononlythealowersingle upper tier.
Options and arguments | Description |
---|---|
--tierPools=< |
< with to
|
--tierN=< |
< with
|
--tierK=< |
be |
--tierSizes=< |
< with |
--evacuationThresholds=< |
< with either a % ). For example, fifty percent can be represented as either 0.5 or 50% . For most situations, a threshold of 50 to |
--lowerThresholds=< |
<percent> with either a % ). For example, ten percent can be represented as either 0.1 or 10% . For most situations, a lower threshold of 10 to |
Map a volume to existing Consistency groupsgroup options
A consistency group (CG) is a collection of volumesvirtual storage containers that formsare consistent with each other at any given point in time. This is particularly important for snapshots and recovery for applications that use multiple volumes. The most common example of this is a singledatabase that uses separate volumes for the database storage entity (sharingand the sametransaction datalogs. retention:If primarythe database and redundanttransaction data).logs are recovered separately and are not consistent with each other, the restored database is not usable.
The S1 system generates consistency groups automatically;automatically. usersYou cannot create or delete consistency groups.groups manually. When creating a new volume, you maycan specify whether to map it to an existing consistency group. If you map a newly created volumegroup to a consistency group, the system does not create a new consistency group for the logical volume.join. If you do not addspecify volumean toexisting aconsistency CG,group, the system automatically creates a new one. Because the assigned consistency group for this volume. Once the logicala volume iscannot assignedbe modified after creation, if you need to add a volume to a CG,consistency group, you must create a new volume and specify the assignmentconsistency becomesgroup immutable.
to join.
To mapcreate a newly created volume towithin 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> |
|
--cgid=< |
applications volumes list --consistencyGroups . |
Encryption options
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 notlose be ableaccess to usethe yourencrypted logicaldata. You can only enable encryption on a new volume. You cannot encrypt an existing volume.
S1The StorONE system supports both software-based encryption and self-encrypting drives (SED). IfWhen youusing use SED,SEDs, every time you reboot, the S1 system will askprompt you for your SED key.
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 thisthe drive.
encrypted drives. For instance,example, if you may have five different logicalvirtual volumesstorage spreadcontainers onusing thea samestorage sixpool drives.with If one of these drives uses SED encryptionSEDs, and you don'tcannot supplyprovide the S1 system with itsthe SEDencryption key, then you cannot use any of thesethose five volumes.
UnlikeIn SED encryption,contrast, S1 software-based encryption allows you to encrypt peron volume.a Usingper-volume basis, using standard encryptionAES-256 algorithms,encryption. youYou can encryptspecify a single logical volume with a volumean encryption key offor youreach choice.volume.
Volume encryption is optional. If you encryptenable a logical volume,encryption, make sure that you save the volume encryption key. You will be asked for the volume encryption key every time S1the boots.system is restarted. If you faildo tonot supply S1 withprovide the volume encryption key, you won't be able tocannot use that onethe volume..
To prevent losing a volume due to losing the volume-encryption-encryption key, StorONE offersprovides you anthe option to store your volume encryption key safely with StorONE. ThisIf way,you use this option, StorONE can help you to recover a volume encryption key whenif needed. When you use the --saveEncryptedRecoveryKey
option, yourthe volume-encryption-encryption key is encrypted with StorONE'sthe StorONE public key and stored in your S1 managementcloud relay station database.
Options and arguments | Description |
---|---|
--encryptionKey=<encryptionKey> |
<encrptionKey> with an encryption key of your |
--saveEncryptedRecoveryKey |
Notice:All volumes in a consistency group are encrypted with the same encryption key. When you encryptcreate a new volume V0,in youan encrypt itsexisting consistency groupgroup, (CG).the Hence, anynew volume youis addencrypted to this consistency group will be encrypted. The encryption key iswith the key you used whento creatingencrypt volumethe V0.original volume.
Sector size options
If you are creating a block volume for use with VMWare ESXi, make sure to set the sector size to `512b`. VMWare block storage datastores do not support a 4K sector size.
Options and arguments | Description |
---|---|
--sectorSize=<sectorSize> |
<sectorsize> with either 512b or 4K . If 512b . 4K typically performs better. |
--log2StrideSectors=< |
To <number> with the base 2 exponent for the stripe unit (chunk size) in bytes. For example, specify 20 for a 1MB chunk size (2^20 = 1048576). |
Snapshots and space reclamation options
The--snapshotCapacityoption 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--enableSnaponeoption 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-basedsnapshots. 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> |
<capacity> with a number appended with a storage unit ( |
| |
--disableSpaceReclamation |
To disable space reclamation (UNMAP) support for the volume. This can improve performance for some volumes, but when data is deleted, the space reclamation is not reflected in the volume until you manually run the space reclamation process (using the applications filesystems fstrim run command). |
Volume Examplescreation examples
-
To create a volume videos
on application instance training
with a capacity of 500GB2 overTB ausing the pool salesHDD-1
with n=16
8 data fragments and k=3
2 dataparity redundancy, runfragments:
applications volumes create --application training --volume videos --capacity 500GB2T --pools salesHDD-1 --n=16n 8 --k=3k 2
In this example, volume videos
has not mapped to any consistency group. Thus, S1 automatically creates a new consistency group for volume videos
.
-
CreateTo create a volume emailsexchange
with the following configuration:
- Application instance:
--application=archives
- Volume capacity:
--capacity=100GB
- Volume created over two pools,
HR
and sales
, where:
- For pool
HR
with n=4
data fragments and k=1
data redundancy.
- For pool
sales
with n=8
data fragments and k=3
data redundancy.
- Pools for upper tiers
speed1
, speed2
, and speed3
:
where:
- For upper tier pool
speed1
, tierN=2
data fragments and
tierK=1
data redundancy with --tierSizes=10GB
, with
--evacuationThresholds=70%
and --lowerThresholds=5%
.
- For upper tier pool
speed2
, tierN=16
data fragments and
tierK=3
data redundancy with --tierSizes=5GB
, with
--evacuationThresholds=75%
and --lowerThresholds=10%
.
- For upper tier pool
speed3
, tierN=4
data fragments and tierK=1
data
redundancy, and --tierSizes=2GB
, with
--evacuationThresholds=80%
and --lowerThresholds=15%
- The volume is mapped to (an already existing) consistency group id
600
.
applications volumes create --application emailsexchange --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
Edit a volume
To create a volume videos
on application instance training
with a capacity of 500GB2 overTB ausing the pool
with salesHDD-1
8 data fragments and n=16
2 k=3dataparity redundancy, runfragments:
applications volumes create --application training --volume videos --capacity 500GB2T --pools salesHDD-1 --n=16n 8 --k=3k 2
In this example, volume videos has not mapped to any consistency group. Thus, S1 automatically creates a new consistency group for volume videos.
CreateTo create a volume
with the following configuration:emailsexchange
- 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 emailsexchange --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
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 --force