How to create a VDC with Unified Storage
When to use this procedure
When a virtual data center (VDC) needs its own block storage: volumes are created inside the VDC, count against its quota, and are later exported to external hosts (initiator groups) over iSCSI. This procedure takes you from creating a VDC to creating the first volume.
This procedure does not apply if VDC storage is already enabled — enabling it again is rejected (one storage instance per VDC). In that case, go directly to creating a volume.
Prerequisites
- The
Enable vDC Storageprivilege for enabling storage — granted only to a cluster-level role (global scope). - The
Create vDC Volumeprivilege for creating a volume — available both at the cluster level and to a VDC administrator within their VDC. - The cluster has a storage pool that will host the VDC's root dataset.
- A portal group exists on this pool if iSCSI access is needed immediately.
- vStack Center version — 3.0.4.
Steps
Step 1. Create a VDC with storage
- Open Virtual Data Centers and start creating a VDC.
- Go through the wizard steps: General (name and description) → Resources (quotas and overcommitment) → Unified Storage → Review.
- On the Unified Storage step, fill in three fields:
- Storage name — the storage name. The target IQN is derived from it, so the name must be available within the cluster.
- Pool — the pool that will host the VDC's root dataset.
- VDC storage quota — the VDC's storage quota in GB; storage capacity equals this quota.
- Below, the step shows the pool's iSCSI readiness:
- A portal group exists on the pool → a Portal Group attached to pool block with a read-only IP address / Port table.
- No portal group exists → a hint and a Create Portal Group link. Storage can be enabled without iSCSI, and access can be configured later.
- On the Review step, check the summary and click Create.
The Unified Storage step is optional: you can skip it and enable storage later on the Storage tab of the VDC card.
The pool controller handles enablement: vStack Center creates the root ZFS dataset and associates it with the VDC. While the operation is running, the interface keeps the progress indicator displayed — storage appears in the VDC card ready to use, with no intermediate "creating" state.
Step 2. Create the first volume
- Open the VDC card → Storage tab → Volumes subtab.
- Click Create volume and complete the form:
- Volume name — 1–63 characters: lowercase Latin letters, digits, periods, and hyphens; the first and last characters must be a letter or digit. The name must be unique within this VDC's storage.
- Size — volume size, at least 1 GB.
- Protocol — iSCSI or Choose later.
- LUN ID — the number under which the volume is visible on the target; the field is preset.
- Initiator Group — an existing group, a new one, or Assign later.
- Click Create.
The pool is not selected in the form: it is taken from the VDC storage. The form does not ask for the block size either — the platform supplies the default value, which appears in the Block size column of the volume list.
The available quota is checked before the volume is created. If the requested size exceeds the remaining quota, the volume is not created, and the message shows the requested and available space: reduce Size or increase the Storage (GB) quota in the VDC settings.
Verify the result
Stay on the Volumes subtab.
Expected: the table contains a row with your volume name, the Size column shows the specified size, and the Status column shows Unmapped. On the Overview subtab, the Properties card shows the storage name, pool, root dataset, capacity, and number of volumes.
Troubleshooting
| What you see | Why | What to do |
|---|---|---|
"Storage is not enabled for VDC" (-45013) when creating a volume | The Unified Storage step was skipped or enablement did not complete | Enable storage on the Storage tab of the VDC card, then create a volume |
"Storage already enabled for VDC" (-45007) | The VDC already has storage and cannot have two storage instances | Skip enablement and proceed to volume creation |
"Storage name already taken" (-45037) | The path <пул>/<имя> is in use: the selected pool already hosts storage with this Storage name | Specify a different Storage name or select another pool; rejection occurs before contacting the controller, and the dataset is not created |
"Target already exists" (-45015) | Identical storage names were used on different pools: the paths differ, but the IQN is derived from the name and is the same. Rejection occurs during iSCSI configuration | There is no iSCSI-side workaround. The root dataset has already been created at this point, and its name cannot be changed, so specify a name unique within the cluster on the Unified Storage step from the start |
"Volume already exists" (-45018) | The volume name is already in use in this storage | Specify a different Volume name — names are unique within VDC storage, not the cluster |
"Quota exceeded" (-45017) | The volume size exceeds the VDC's available quota; the message shows the requested and available space | Reduce Size or increase the Storage (GB) quota in the VDC settings |
"Unified Storage feature is disabled" (-45001) | The Unified Storage feature is disabled in the cluster options | The cluster administrator must enable the feature; until then, storage operations are rejected, with no exception for the Cluster master role |
"Access denied" (-403) | A required privilege is missing, or the VDC is outside your scope | To enable storage, sign in with a cluster-level role; create the volume within your VDC |
See also
- VDC storage — model and architecture — the storage model, roles, and feature flag.
- How to create, read, and delete VDC volumes — the full volume lifecycle after the first volume.
- How to configure an iSCSI target and CHAP password protection — the access point for exporting volumes to external hosts.
- How to map a volume over iSCSI and remove the mapping — exporting a volume to an initiator group as a LUN.
API methods
API operations covered on this page: vdc-create, vdc-set, vdc-storage-enable,
vdc-storage-iscsi-configure, vdc-create-volume, vdc-list-volumes — see the
API reference.