Skip to main content
Version: 3.2

Scale Portworx in OpenShift vSphere

As your cluster's data storage demands grow, you might face capacity limitations. To address this, you have two primary methods to scale your storage capacity.

A. Expanding Portworx Storage Pools

When storage demands increase, expanding your Portworx storage pools is essential. Portworx provides two methods for this, allowing online expansion (with certain exceptions):

Methods to Expand Storage Pools

  1. resize-drive: Using this method, you can vertically expand the storage pool size by increasing the size of the existing drives. All drives in the pool need to be resized to the same size for this operation. If the underlying infrastructure or the cloud provider supports resizing drives, this is the preferred option, as resizing disks involves no data movement and ensures zero downtime.

  2. add-drive: Using this mode, you can horizontally expand the storage pool by adding drives. The new drive(s) will need to match the existing drives in size and IOPS properties (if available). This operation might involve a significant amount of data movement, since the existing data needs to be restriped. This operation can also be performed online and requires no downtime. Note that the pool runs in degraded mode during the add-drive operation.

    Limitations:

    • If the pool is at or greater than 90% of its capacity, this operation can only be performed in pool maintenance mode.
note

If a pool to be resized contains an auto journal device, Portworx automatically performs data partition resizing as part of the expansion operation.

Expansion Process

  1. Identify the storage pool to expand by listing all pools.

  2. Use the pxctl service pool expand command with these details:

    • UUID: Found in the POOL column when listing pools.
    • SIZE: The minimum new required size of the storage pool in GiB.
    • OPERATION-TYPE: Either resize-drive (resizing existing VMDKs) or add-drive (adding and rebalancing onto new VMDKs).
    pxctl service pool expand -u <UUID> -s <SIZE> -o <OPERATION-TYPE>
  3. Once you submit the command, Portworx will expand the storage pool in the background. You can list the storage pools periodically to check if they have finished expansion.

    pxctl cluster provision-status
  4. When invoked on the Portworx node where the storage pool resides, the following command provides detailed information about the status of the pool expand process.

    pxctl service pool show

B. Expanding ESXi Datastore(s) or Datastore Cluster(s)

When do I need this?

You would need this when the existing datastores being used by Portworx are filling up and there is no space left to increase storage capacity of individual nodes.

Understanding ESXi Datastores and Datastore Clusters

  • Datastore: A VMFS-formatted storage unit in ESXi for virtual machines, compatible with SAN and NAS systems.
  • Datastore Cluster: A group of datastores managed together, utilizing Storage DRS for balanced storage space and I/O distribution.

Expansion Methods

This can be done in one of 2 ways. Once the datastore(s) or datastore cluster(s) are expanded, Portworx can use the increased capacity to provision new VMDKs or resize existing VMDKs.

1. Resize existing ESXi datatores: You can expand the drives backing the datastore in your storage array and then increase datastore capacity from the vSphere web client.

2. Add new datastore(s) to the Datastore cluster: If you provided the prefix of a datastore cluster names to Portworx during installation, you can dynamically add new datastores to the datastore cluster. This will increase the capacity of the datastore cluster.

Volume resize limitations

This limitation is specific to the ext4 filesystem and does not apply to volumes using the XFS filesystem.

When using the ext4 filesystem with Portworx, there is a limitation on the maximum size to which a volume can be resized. This limitation is due to the inode constraints of the ext4 filesystem and not specific to Portworx.

ext4 default configuration limit

For volumes formatted using the default ext4 configuration, where the bytes-per-inode ratio is 16384, the maximum size to which a volume can be resized is 65535 GiB. This restriction is due to the ext4 filesystem's maximum allowable inode count, which is capped at 2³² - 1 inodes.

Custom ext4 formatting limit

If custom formatting options are used for the ext4 filesystem, the maximum volume size can vary based on the selected bytes-per-inode ratio. To determine whether a volume can be resized to a desired size with custom formatting, follow these steps:

  1. Use the tune2fs command on the Portworx device to retrieve the Inode count, Block size, and Block count:
    tune2fs -l /dev/pxd/pxdxxx | grep "Inode count:"
    tune2fs -l /dev/pxd/pxdxxx | grep "Block count:"
    tune2fs -l /dev/pxd/pxdxxx | grep "Block size:"
  2. Calculate the bytes-per-inode ratio using the following formula:
    bytesperinode = (blocksize * blockcount) / inodecount
  3. Calculate the number of inodes required for the desired volume size in bytes:
    numofinodes = desiredvolumesizeinbytes / bytesperinode
  4. If the calculated number of inodes exceeds 2³² - 1, the volume cannot be resized to the desired size, and the requested size should be reduced. If the number of inodes is within the limit, the volume can be resized accordingly.

Detailed Instructions

Was this page helpful?