Storage pools UUID endpoint overview
Updating storage pools
The PATCH operation is used to modify properties of the storage pool. There are several properties that can be modified on a storage pool. PATCH operations on a storage pool are restricted when another PATCH operation is in progress. The following is a list of properties that can be modified using the PATCH operation including a brief description for each:
-
name - Can be updated to rename the storage pool.
-
capacity.disk_count - Can be updated to increase the number of disks in a storage pool.
-
capacity.spare_allocation_units[].count - Modifying this value requires that the user specify capacity.spare_allocation_units[].node as well. Modifying this value redistributes spare cache capacity among the nodes specified in the operation When expanding a storage pool, the cache tiers of all aggregates using the storage pool's allocation units are expanded automatically.
Simulated storage pool expansion
The PATCH operation also supports simulated expansion of a storage pool. Running PATCH with the query "simulate" set to "true", and "capacity.disk_count" set to the final disk count will return a response containing the projected new capacity and the new constituent disk list for the storage pool.
Deleting storage pools
If cache capacity from a storage pool is being used in an aggregate, it cannot be deleted. See the /storage/aggregates API for details on deleting aggregates.
Examples
Retrieving a specific pool from the cluster
The following example shows the response of the requested storage pool. If there is no storage pool with the requested UUID, an error is returned.
# The API: /api/storage/pools/{uuid} # The call: curl -X GET "https://<mgmt-ip>/api/storage/pools/870dd9f2-bdfa-4167-b692-57d1cec874d4" -H "accept: application/json" # The response: { "uuid": "8255fef7-4737-11ec-bd1b-005056bbb879", "name": "new_sp", "storage_type": "ssd", "nodes": [ { "uuid": "caf95bec-f801-11e8-8af9-005056bbe5c1", "name": "node-1", }, { "uuid": "cf9ab500-ff3e-4bce-bfd7-d679e6078f47", "name": "node-2", } ], "capacity": { "remaining": 1846542336, "total": 7386169344, "spare_allocation_units": [ { "node": { "uuid": "caf95bec-f801-11e8-8af9-005056bbe5c1", "name": "node-1", }, "count": 1, "syncmirror_pool": "pool0", "size": 1846542336, "available_size": 1846542336 }, { "node": { "uuid": "cf9ab500-ff3e-4bce-bfd7-d679e6078f47", "name": "node-2", }, "count": 0, "syncmirror_pool": "pool0", "size": 1846542336, "available_size": 0 } ], "used_allocation_units": [ { "aggregate": { "uuid": "19425837-f2fa-4a9f-8f01-712f626c983c", "name": "test_a" }, "allocated_unit_count": 2, "node": { "uuid": "caf95bec-f801-11e8-8af9-005056bbe5c1", "name": "node-1", }, "capacity": 2769813504 }, { "aggregate": { "uuid": "f4cc30d5-b052-493a-a49f-19781425f987", "name": "test_b" }, "allocated_unit_count": 1, "node": { "uuid": "cf9ab500-ff3e-4bce-bfd7-d679e6078f47", "name": "node-2", }, "capacity": 1384906752 } ], "disk_count": 4, "disks": [ { "disk": { "name": "VMw-1.11" }, "usable_size": 1902379008, "total_size": 1908871168, }, { "disk": { "name": "VMw-1.12" }, "usable_size": 1902379008, "total_size": 1908871168, }, { "disk": { "name": "VMw-1.23" }, "usable_size": 1902379008, "total_size": 1908871168, }, { "disk": { "name": "VMw-1.24" }, "usable_size": 1902379008, "total_size": 1908871168, } ] }, "health": { "state": "normal", "is_healthy": true }, }
Simulating storage pool expansion
The following example shows the response for a simulated storage pool expansion based on the values of the 'capacity.disk_count' attribute passed in. The query does not modify the existing storage pool, but rather returns how it will look after the expansion. This will be reflected in the following attributes:
-
capacity.total- Total space, in bytes.
-
capacity.remaining - New remaining capacity, in bytes.
-
capacity.disks.disk - New list of constituent disks.
-
capacity.disk_count - New number of disks in the pool.
# The API: /api/storage/pools/{uuid}?simulate=true # The call: curl -X PATCH "https://<mgmt-ip>/api/storage/pools/cae60cfe-deae-42bd-babb-ef437d118314?simulate=true" -H "accept: application/json" -d "{\"capacity\": {\"disk_count\": 6}}" # The response: { "records": [ { "uuid": "cae60cfe-deae-42bd-babb-ef437d118314", "name": "new_sp", "capacity": { "remaining": 1846542336, "total": 7386169344, "used_allocation_units": [ { "aggregate": { "uuid": "19425837-f2fa-4a9f-8f01-712f626c983c", "name": "test_a" }, "current_usage": 2769813504 }, { "aggregate": { "uuid": "f4cc30d5-b052-493a-a49f-19781425f987", "name": "test_b" }, "current_usage": 1384906752 } ], "disk_count": 6, "disks": [ { "disk": { "name": "VMw-1.11" }, }, { "disk": { "name": "VMw-1.12" }, }, { "disk": { "name": "VMw-1.23" }, }, { "disk": { "name": "VMw-1.24" }, }, { "disk": { "name": "VMw-1.13" }, }, { "disk": { "name": "VMw-1.14" }, } ] } } ] }
Adding capacity to a storage pool
The following example shows the workflow of adding disks to the storage pool.
Step 1: Check the current disk count on the storage pool.
# The API: /api/storage/pools # The call: curl -X GET "https://<mgmt-ip>/api/storage/pools/19425837-f2fa-4a9f-8f01-712f626c983c?fields=capacity.disk_count" -H "accept: application/json" # The response:{ "uuid": "19425837-f2fa-4a9f-8f01-712f626c983c", "name": "sp1", "capacity": { "disk_count": 4 } }
Step 2: Update the pool with the new disk count in 'capacity.disk_count'. The response to PATCH is a job unless the request is invalid.
# The API: /api/storage/pools # The call: curl -X PATCH "https://<mgmt-ip>/api/storage/pools/19425837-f2fa-4a9f-8f01-712f626c983c" -H "accept: application/hal+json" -d "{\"capacity\": {\"disk_count\": 6}}" # The response: { "job": { "uuid": "c103d15e-730b-11e8-a57f-005056b465d6", "_links": { "self": { "href": "/api/cluster/jobs/c103d15e-730b-11e8-a57f-005056b465d6" } } } }
Step 3: Wait for the job to finish, then call GET to see the reflected change.
# The API: /api/storage/pools # The call: curl -X GET "https://<mgmt-ip>/api/storage/pools/19425837-f2fa-4a9f-8f01-712f626c983c?fields=capacity.disk_count" -H "accept: application/json" # The response: { "uuid": "19425837-f2fa-4a9f-8f01-712f626c983c", "name": "sp1", "capacity": { "disk_count": 6 } }
The following example shows the workflow to redistribute spare capacity among nodes sharing the storage pool Step 1: Check the current spare capacity distribution of the pool.
# The API: /api/storage/pools # The call: curl -X GET "https://<mgmt-ip>/api/storage/pools/f3aafdc6-be35-4d93-9590-5a402bffbe4b?fields=capacity.spare_allocation_units" -H "accept: application/json" # The response: { "uuid": "f3aafdc6-be35-4d93-9590-5a402bffbe4b", "name": "sp1", "capacity": { "spare_allocation_units": [ { "node": { "uuid": "caf95bec-f801-11e8-8af9-005056bbe5c1", "name": "node-1", }, "count": 1, "syncmirror_pool": "pool0", "size": 1846542336, "available_size": 1846542336 }, { "node": { "uuid": "cf9ab500-ff3e-4bce-bfd7-d679e6078f47", "name": "node-2", }, "count": 0, "syncmirror_pool": "pool0", "size": 1846542336, "available_size": 0 } ], } }
Step 2: Update the pool so that the spare allocation unit count is symmetrically modified for each node. The response to PATCH is a job unless the request is invalid.
# The API: /api/storage/pools # The call: curl -X PATCH "https://<mgmt-ip>/api/storage/pools/f3aafdc6-be35-4d93-9590-5a402bffbe4b" -H "accept: application/hal+json" -d '{ "capacity" : { "spare_allocation_units": [{"node": {"name": "node-1"}, "count":0}, {"node": {"name": "node-2"}, "count": 1}]}}' # The response: { "job": { "uuid": "6b7ab28e-168d-11ea-8a50-0050568eca76", "_links": { "self": { "href": "/api/cluster/jobs/6b7ab28e-168d-11ea-8a50-0050568eca76" } } } }
Step 3: Wait for the job to finish, then call GET to see the reflected change.
# The API: /api/storage/pools # The call: curl -X GET "https://<mgmt-ip>/api/storage/pools/f3aafdc6-be35-4d93-9590-5a402bffbe4b?fields=capacity.spare_allocation_units" -H "accept: application/json" # The response: { "uuid": "f3aafdc6-be35-4d93-9590-5a402bffbe4b", "name": "sp1", "capacity": { "spare_allocation_units": [ { "node": { "uuid": "caf95bec-f801-11e8-8af9-005056bbe5c1", "name": "node-1", }, "count": 0, "syncmirror_pool": "pool0", "size": 1846542336, "available_size": 0 }, { "node": { "uuid": "cf9ab500-ff3e-4bce-bfd7-d679e6078f47", "name": "node-2", }, "count": 1, "syncmirror_pool": "pool0", "size": 1846542336, "available_size": 1846542336 } ], } }