Skip to main content

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> SpecifySpecifies the volume capacity. Replace <capacity> with a number appended with a storage unit (GB, GiB, TB, TiB, and so on).
--pool=<pool> SpecifySpecifies the storage pool for the volume.
--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,4 4, or 8.
--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
--metadataPools=metadataPool=<mt_name…pool> ToSpecifies savethe volumemetadata metadata.storage pool. Replace <mt_name…pool> with a listthe of metadata pools. The metadataname of the volumepool willto saveuse in the list offor metadata pools.storage. For best performance, always specify an SSD pool for metadata.
--metadataN=<n…n> To specifySpecifies the number of fragments;data fragments for each pool in the list of metadata pools.write operation. Replace <n> with numbersthe number of fragments;fragments. each of the numbers of fragmentsThis must be a power of two, namelysuch as 1, 2,4,8… or 4. For best results specify a value of 1 or 2.
--metadataK=<k…k> ToSpecifies specifynumber of parity fragments for each metadata write operation. This corresponds to the number of simultaneous drive failures that eachthe metadatalogical storagevolume can sustain before losingdata data.integrity Replacecan <k>be withcompromised. StorONE recommends a numericalvalue valueof 2 for themost redundancysituations. level.This provides a good balance between data protection and storage overhead.

Tiering options:

The

    following
  • Aoptions pool can be oncontrol the uppertiering tier if all its approved volumes are SSD drives.
  • When setting an upper tier, allconfiguration of the drivesvolume. alreadyFor specifiedmore ininformation about tiering, see Tiering.

    For tiered volumes, the --poolStorONE optionplatform willcurrently besupports ononly thea lowersingle upper tier.

Options and arguments Description
--tierPools=<tname…pool> ToSpecifies createthe upperstorage tierspool to use for the volume,upper replacetier. Replace <tname…pool> with athe listname of poolsthe (listSSD ofor NVMe storage pool you want to use. All incoming writes to the virtual storage container are first written to the upper tiers).tier. ListWhen the poolsevacuation inthresholds ascendingare order of performance, where each pool is a higher tier than its predecessor. For example, if A0 isexceeded, the positionalevacuation argumentprocess ofmoves optionblocks --poolsto andthe welower 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.tier.
--tierN=<n…n> To specifySpecifies the number of data fragments for each pool in the list of upper tiers.tier write operation. Replace <n…n> with numerical values for the number of fragmentsfragments. for the corresponding pools in the list of upper tiers (the list of pools specified in the --tierPools option). All numerical valuesThis must be ina powerspower of twotwo, (such as 1, 2, 4,8, etc.).or 8.
--tierK=<k…k> ToSpecifies specifynumber theof redundancyparity level,fragments namely,for each upper tier write operation. This corresponds to the number of simultaneous drive failures that each pool in the listlogical of upper tiersvolume can sustain before losingdata data.integrity Replacecan <k…>be withcompromised. StorONE recommends a listvalue of numerical values2 for themost redundancysituations. levelThis ofprovides eacha poolgood inbalance thebetween listdata (listprotection ofand upperstorage tiers).overhead.
--tierSizes=<tierCapacity…capacity> ToSpecifies set tier cachethe capacity for each of the pools in the list of upper tiers (as specified in the --tierPools option).tier. Replace <tiercapacitycapacity> with numbersa (number appended with KB,a MB,storage unit (GB,…) thatGiB, correspondTB, toTiB, and so on). This does not change the poolsoverall involume size. The tier size cannot be larger than the listvolume of upper tiers. size.
--evacuationThresholds=<percent…percent> To setSets the maximumevacuation threshold for each pool in the list of upper tiers.tier. When the maximum threshold is exceeded, the volumeevacuation process moves data blocks from the upper tier to athe lower tiertier, (previousregardless pool inof the listidleness of upperthe tiers).system. Replace <percent…percent> with either a listdecimal representation of numericala valuespercentage, betweenor onea andnumber 100 (appended with the percent symbol (%). For example, fifty percent can be represented as either 0.5 or 50%. For most situations, a threshold of 50 to set65 thepercent maximumworks threshold value of each pool in the list. well.
--lowerThresholds=<percent…percent> ToSets setthe minimumopportunistic evacuation threshold value for each pool in the listupper oftier. When this threshold is exceeded, if the system is idle, the evacuation process moves data blocks from the upper tiers . When reaching the minimum threshold, the pools stop moving datatier to athe lower tier. Replace <percent> with either a listdecimal representation of numericala valuespercentage, betweenor onea and 100,number appended with the percent symbol (%). For example, ten percent can be represented as either 0.1 or 10%. For most situations, a lower threshold of 10 to set15 thepercent minimumworks threshold value of each pool in the list.well.

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> ToSpecify mapthe aname of an existing volume to ajoin the consistency group (CG),containing replacethat <name> with an already existing CG name.volume.
--cgid=<numberscg_id> To map a volume to a consistency group, replace <number> withSpecify the consistency group idID to join. To see the consistency group IDs for your existing volumes, run the command 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.

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 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> To encryptSpecifies the volumeencryption withkey afor volume-encryption-key,the replacevolume. Replace <encrptionKey> with an encryption key of your choice.choice, and make sure you store the encryption key securely somewhere.
--saveEncryptedRecoveryKey To storeSaves your encryption key withsecurely StorONE.in Usethe thisdatabase optionof your cloud relay server. Contact StorONE if you wantneed toassistance storerecovering yourthis volume-encryption-keyencryption with StorONE.key.

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> To setSpecifies the sector size of the volume; replace <sectorsize> with either 512 bytes512b or 4KB.4K. If storingthe onvolume anwill ESXbe server,used as block storage for a VMWare VMFS datastore, use 512512b. bytes;For on anymost other storage platform, use 4KB.cases, 4K typically performs better.
--log2StrideSectors=<numbersnumber> To setconfigure a stripedstriped volume, replace <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 --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> ToSpecify set athe soft capacity threshold limit on your snapshot storage. Replace <capacity> with a number appended with a storage unit (MB,GB, GB,GiB, TB, PB)TiB, toand setso on). When snapshot storage consumption exceeds this value, the configured notification targets will receive alerts. Because this is a soft capacitylimit, thresholdno actions are taken aside from alerting. There are no hard limit onsettings yourfor volumesnapshot snapshots.
--enableSnaponeTo enable SnapONE on the volume.capacities.
--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

  1. To create a volume videos on application instance training with a capacity of 500GB2 overTB ausing the pool salesHDD-1 with n=168 data fragments and k=32 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.

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

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.

  1. To rename the existing volume archives to active and to change its capacity to 800GB, run:

    applications volumes edit --application emails --volume archives --rename active --capacity 800GB
    
  2. 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 
    
  3. 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

  1. To list all volumes, run:

    applications volumes list
    
  2. To list volumes from the emails application, run:

    applications volumes list --application emails
    
  3. 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

  1. To delete volume speed that mapped to application instance archive, run:
     applications volumes delete --application archive --volume speed 
    
  2. To delete volume speed that mapped to application instance archive without prompting for confirmation, run:
     applications volumes delete --application archive --volume speed --force