Skip to main content

VDC: isolation, roles, and quotas

A VDC (virtual data center) is the unit used to divide a cluster among consumers. The cluster provides the hardware: nodes, storage pools, and physical networks. A VDC defines the boundary within which a consumer works with their virtual machines, networks, datasets, and volumes. One cluster hosts many VDCs, and objects in one VDC are not visible from another.

The boundary applies to both visibility and permissions. In the Virtual Data Centers list, users see only the VDCs for which they have grants; the others do not exist from their perspective. A role is assigned separately for each VDC, so one account can be an administrator in one VDC and an observer in another: the role is tied to the "user + VDC" pair, rather than to the account as a whole.

The same list shows capacity usage. The Running VMS, CPU (Cores) used of quota, RAM (GB) used of quota, and Storage (GB) used of quota columns display "used / allowed" pairs, so a single screen answers the question of how much a VDC has used and how much it is allowed, without inspecting individual objects. The second number is replaced by "∞" for a VDC with no limit set for that resource.

Resources enter a VDC in three different ways, which is key to understanding isolation. Virtual machines, datasets, and volumes are created within a VDC and belong to it. A network is a cluster-level object: it enters a VDC through assignment on the Networks tab of the VDC card, and one network can be assigned to several VDCs. Each VDC↔network pair has a separate address limit, shown in the Addrs limit column on the IP Data subtab, so a shared network does not mean a shared address pool. OS images follow a third model: an image has an owning VDC, and other VDCs can see the image through a visibility grant.

Permissions for the VDC itself are held by a cluster-level role. Creating, modifying, and deleting a VDC, setting a network address limit, and viewing assigned roles are available only to the Cluster master role. VDC-level roles, starting with vDC admin and below, operate within a VDC. Assigning and unassigning a network is the only operation in this list with a less restrictive rule: it can be performed by either a Cluster master or a vDC admin who created the network.

The boundary also applies to deletion. An empty VDC is deleted immediately. A VDC containing objects cannot be deleted: vStack Center rejects the request and identifies what is blocking deletion—assigned networks, ports, virtual machines, datasets, volumes, or owned OS images. This prevents VDC deletion from silently destroying someone else's work. If VDC storage is enabled, deletion becomes a long-running operation: before the VDC record is removed, the iSCSI target, portal groups, initiator groups, CHAP credential sets, and root ZFS dataset are removed in a cascade.

What belongs to a VDC​

ObjectHow it enters a VDCBehavior when the VDC is deleted
Virtual machinesCreated within the VDCBlock deletion ("VDC has assigned VMs")
NetworksAssigned from the cluster on the Networks tabBlock deletion ("VDC has assigned networks")
Network portsAppear when a VDC network is connected to a VMBlock deletion ("VDC has assigned ports")
DatasetsCreated on cluster storage poolsBlock deletion ("VDC has assigned datasets")
SDS volumesCreated in VDC storageBlock deletion ("VDC has assigned volumes")
Owned OS imagesUploaded to the VDC, which owns themBlock deletion; vStack Center lists the images that prevent it
OS images with a visibility grantMade visible from another VDC, which owns themDo not block deletion: grants are removed automatically
VDC storageEnabled on a storage poolRemoved in a cascade before the VDC record is deleted

Who can do what​

OperationLocation in the interfaceAccess
List available VDCsSite → Virtual Data Centers tabAny user; the list is limited by their grants
Create a VDCVirtual Data Centers tab → Actions → Create a VDCCluster master
Change the name, description, and quotasVDC card → Settings sectionCluster master
Delete a VDCVDC card → Actions → Delete VDCCluster master
Assign a network to a VDCVDC card → Networks tab → Primary → Assign columnCluster master or the network creator with the vDC admin role
Unassign a network from a VDCSame locationSame requirements as assignment
Networks assigned to a VDCVDC card → Networks tab → PrimaryAny user; the list is limited to accessible VDCs
Address limit for a VDC↔network pairNetworks tab → IP Data → Addrs limit columnCluster master
Roles assigned in a VDCVDC card → VDC roles sectionCluster master

The division is straightforward: cluster-level roles control the VDC boundary, while VDC-level roles operate within it. The full list of roles and scopes is in the roles and privileges reference.

Quotas as a capacity contract​

A quota is the upper limit of a resource for a VDC. There are five quotas, arranged in two groups on the VDC card: Quotas contains CPU (cores), RAM (GB), and Storage (GB); Secondary limits contains CPU frequency and Snapshots. An empty field means no limit is set for that resource; the VDC list displays such a resource as "∞".

Next to the quotas is the Oversubscription factor group, with oversubscription factors for CPU, RAM, and Storage. The factor is deliberately separate from the quota: the capacity boundary and the allowed oversubscription can be changed independently.

Usage is shown in the same place, on the card: the Running VMS counter, three CPU, Memory, and Storage indicators labeled with the current quota, and the Quotas, Oversubscription, and Limits summary rows. For a VDC without a quota, relative usage is not calculated: there is no value to divide by. The exact set of fields and types is listed in the VDC quotas and resources reference.

Lifecycle​

A VDC goes through three states. Creation sets the name and, optionally, quotas; the web interface guides you through a four-step wizard. The VDC then operates and changes: the Settings section on its card lets you edit the name, description, quotas, and oversubscription factors, each field separately. You can leave a value unchanged, clear it, or set a new one. Decommissioning uses Delete VDC in the Actions menu and succeeds only after all objects have been removed from the VDC.

Step-by-step procedures for all three states are in How to create, modify, and delete a VDC.

API methods​

The API operations covered on this page are vdc-list, vdc-create, vdc-set, vdc-delete, vdc-assign-network, vdc-deassign-network, vdc-networks, vdc-network-addr-limit, and vdc-roles. See the API reference.

See also​