Migrating data from on-premise to cloud storage

Last published : Jun 11, 2026
Make sure that the data you want to migrate includes regular files, not empty directories or symbolic links.
To migrate data from on-premise to cloud storage
  1. Create the policy file policy.xml.
See the Administering SmartTier chapter in the Storage Foundation Administrator's Guide - Linux.
For a sample policy file:
  1. Create a volume set with existing volumes.
    Note: Unmount the file system before creating the volume set. After creating the volume set, mount it at the same mount point.
    \# umount mount_path_of_data_volume
    \# vxvset -g dg_name make vset_name local_data_volume
    \# mount -t vxfs /dev/vx/dsk/dg_name/vset_name \
    mount_path_of_data_volume
    1. Create buckets/containers in the cloud storage namespace. See the related cloud vendor documentation for instructions.
    2. Create the cloud volume.
    For block-level data migration:
    \# vxassist -g dg_name make cloudvol_name size vxcloud=on
For file-level data migration:
\# vxassist -g dg_name make cloudvol_name size fscloud=on
  1. Configure the Cloud target.
    Connector Command
    S3 lang=bash
    \# vxcloud -g diskgroup_name \
    addcloud cloudvol_name host=host_address \
    bucket=bucket_name access_key=access_key \
    type=S3 secret_key=secret_key \
    where, secret_key and access_key are credentials to access the vendor cloud services.
    By default, https is set to true and sig_version is set to v4 .
    Glacier lang=bash
    \# vxcloud -g diskgroup_name \
    addcloud vol_name host=host_address \
    bucket=vault_name access_key=access_key \
    secret_key=secret_key type=GLACIER
    where, secret_key and access_key are credentials to access the vendor cloud services.
    Note: Only file-level tiering is supported with Amazon Glacier.
    BLOB lang=bash
    \# vxcloud -g diskgroup_name \
    addcloud cloudvol_name \
    host=host_address bucket=bucket_name \
    access_key=access_key type=BLOB \
    endpoint=account_name
    where, access_key is the credential to access the vendor cloud services and endpoint is the storage account name of the user.
    By default, https is set to true .
    Google Cloud lang=bash
    \# vxcloud -g diskgroup_name \
    addcloud cloudvol_name host=host_address \
    bucket=bucket_name type=GOOGLE \
    google_config=config.json_file_path
    where, config.json is a file that contains the private key, project_id , and client_email values for the Google service account. Download this file in the JSON format from the Service Accounts tab of the GCP Console.
    By default, https is set to true .
    Note: Veritas recommends that you associate each cloud volume with a separate bucket.
  2. Add the cloud volume to the volume set:
    \# vxvset -g dg_name addvol vset_name cloudvol_name
    1. Verify that the cloud volume is appropriately tagged.
    \# fsvoladm queryflags dataonly mount_path_of_data_volume cloudvol_name
  3. Assign placement classes to the local and cloud volumes.
    \# vxassist -g dg_name settag local_datavol_name \
    vxfs.placement_class.LOCAL
    vxassist -g dg_name settag cloudvol_name \
    vxfs.placement_class.CLOUD
    1. Assign the policy to the file systems.
    \# fsppadm assign mount_path_of_data_volume policy.xml
  4. View an analysis report of the data transfer.
    \# fsppadm analyze mount_path_of_data_volume
    1. Enforce the policy to move the data between the local volume and the cloud volume.
      Note: You can create a cron job to schedule the migration of old data onto the cloud volume.
    \# fsppadm enforce mount_path_of_data_volume
  5. Verify the location of files on the local and cloud volumes:
    \# fsmap -a list_file
    \# fsmap -a /data1/*
    Volume    Extent Type     File Offset     Extent Size     File
    localvol         Data               0         1048576     /data1/reports-2016-03
    cloudvol         Data               0         1048576     /data1/reports-2016-04
    1. Check the free space and used space across volumes in the volume set using
    \# fsvoladm list mount_path_of_data_volume
    \# fsvoladm list /data1
    devid   size                 used                 avail                name
    0       2097152              356360               1740792              localvol
    1       10737418240          40                   10737418200          cloudvol