Storage Nodes

OnApp storage nodes are self-managing, self-discovering and self-contained hot-pluggable units. Each storage node manages its own content in the most efficient way possible, without loss of performance, using a thin-provisioning layer for storage space efficiency and overcommit. This ensures that data is stored optimally across the whole environment, while maintaining data replication and drive resiliency properties. There is no centralized management system to fail, and each node can make decisions about data synchronization and load balancing without depending on a central controller.

The list of storage nodes can be found in the Storage > Nodes menu.

NBD paths

The number of NBD paths available for your virtual disks depends on the amount of RAM available to the storage node. You can use the following formula to calculate the maximum number of NBD paths, N:
N = (Controller memory size - 128) ÷ 4, where: 
Controller memory size = the memory assigned to the storage controller (the default is 1024MB). 
128 = amount of system memory reserved for the storage controller
4 = the amount of memory needed per NBD server

So by default:
(1024 -128) = 896 MB for NBD servers
896 ÷ 4 = 224 NBD paths available

Each stripe in a datastore needs 1 NBD path, so the total number of vDisks, D, you can have is given by:
D = N ÷ (SxR)
where: S = the number of stripes in the datastore
R = the number of replicas

Free space per storage node

In order to calculate free space per storage node we use the next two formulas:

a) Formula for overcommit scheme: physical_disk_size + overcommit_value_in_percentage - allocated_space

b) Formula without overcommit: physical_disk_size  - allocated_space

For example:

Our physical disk which is mounted to controller has size 558.6GB:

Allocated space for it - 659 GB

Overcommit - 20%

So: 558.6+20%-659=11.32 or 11 GB

The same calculation is done for the second formula but without using overcommit value.

  • Enabling overcommit and running out of physical space is a dangerous condition and should always be avoided. It is strongly recommended that you create data stores with overcommit = none for production purposes.
  • These calculations will not make sense for overcommit unlimited. We can use them only when we have a specific value of overcommit (for instance 20% 50% etc).