Virtuozzo Storage Cluster Components

Virtuozzo Storage is a solution, which allows transforming low-cost hardware and network equipment into protected enterprise-level storage. It is optimized for storing large amounts of data and provides replication, high-availability, and self-healing features for the data.

The basic element of VZStorage is a cluster. Virtuozzo Storage cluster consists of bare-metal servers, and each one can be assigned any combination of the following 3 roles:
  • Metadata service (MDS), which stores metadata about chunk servers and controls how files are keeping the contents of virtual machines, how containers are split into chunks, and where these chunks are located.
  • Chunk service, which stores all the data on local disks of the server (including the contents of virtual machines and containers) in the form of fixed-size chunks and provides access to them. For better I/O load balancing and to ensure fault tolerance and HA availability in case of chunk servers' failure, data replication for Cloud Storage shall be set to 3:2 or higher.
  • Clients - servers, where the VZ-based containers and virtual machines are running, and which consume the storage from Virtuozzo Storage cluster chunk services.

virtuozzo storage cluster requirements

For better understanding, please check the Virtuozzo Storage documentation. In case you have any questions remained, please contact Jelastic Operations team.

And below, the following information regarding the VZStorage installation is presented:

General Requirements

For Virtuozzo Storage cluster itself, you need to provide at least 5 bare-metal servers (9 or more servers are recommended) with a separate internal network, entirely dedicated to the Virtuozzo Storage, and with some specific requirements configured for disks and networking. Each server can be assigned any combination of the abovementioned 3 roles, but the following rules should be followed:

1. Chunk services should be run on at least 5 servers (9 or more recommended for better performance).

2. MDS services should be run on roughly 3 or 5 servers:
  • for clusters up to 15 servers with chunk service roles, MDS service role can be combined with chunk service and/or clients (i.e. some servers can be shared between MDS and chunk service role)
  • for larger clusters, MDS service role should be run on dedicated servers (i.e. with no roles combining)

3. Chunk service role and MDS service role can be combined with client role on the same server. Please remember that in case of large clusters, MDS service should be run on separate servers.

4. A separate network for Virtuozzo Storage traffic should be provided, meeting the following requirements:
  • network should operate at least at 10 Gbps speed
  • ethernet switches should be non-blocking
  • please also check the network sizing guidelines below

5. On each server with MDS service, 1 GB of RAM should be added per each 100 TB of the total storage in the cluster.

Note: While single Virtuozzo Storage cluster node can share Chunk, MDS and Client roles, it’s strongly recommended not to share Client roles with Chunk and MDS and run last at dedicated storage nodes.

Storage and Storage Devices Requirements

Each server in the cluster, regardless of which VZStorage role it is assigned, should have 100-120 GB of reliable RAID1 level storage (or similar in terms of reliability - 2 disks for Linux LVM mirror) for the Virtuozzo 7 operating system installation.

Servers with chunk services export local directories as an internal storage backend for the VZStorage cluster, and data chunks are stored in these directories. In every such directory, the separate ext4 file system should be mounted. This ext4 filesystem should fill exactly one disk, and this disk should not be shared with other file systems. No RAID1 / RAID5 / RAID6 / LVM / dmraid configuration should be used for these file systems; however, RAID controllers still can be used to export individual disks as separate single-disk RAID 0 arrays or JBOD block devices.

Consider the following regarding the RAID controllers usage:
  • configure passthrough for each drive to be exported for chunk service
  • if it is not supported by the RAID controller, configure separate RAID0 for every drive (do not include other drives in this RAID0)
  • make sure RAID controller cache is battery-protected

SSD drives considerations:
  • SSD drives are recommended for caching purposes on VZStorage clients. In this case, SSDs usage might increase overall cluster performance by up to 10 and more times
  • if you use HDD drives for Virtuozzo Storage backend on chunk servers, SSD drives are recommended for write journaling on chunk services
    • this might increase overall cluster performance up to 2 and more times
    • there might be more than one SSD drive needed, which depends on the number of HDDs and the speed of SSDs you have
    • for proper sizing, please contact Jelastic Operations team
  • SSD drives can be used for data chunk file systems (you will not need another SSDs for journaling purposes in this case)
  • consider server-grade SSDs
  • consider SSD drives with support for data protection on power loss

Please, contact the Jelastic Operations team if you have questions.

Network considerations:
  • use a separate network for the Virtuozzo Storage traffic
  • network should operate at least at 10 Gbps; 25 Gbps is recommended
  • Ethernet non-blocking switches usage is recommended
  • network bonding is recommended for better reliability

Storage sizing guidelines
  • usually, each data chunk is stored in several replicas as a pre-requirement for HA, achieving redundancy and IO load balancing
  • to roughly calculate the usable data in the cluster, refer to Virtuozzo documentation

VM Usage

Running Virtuozzo Storage cluster on virtual machines instead of bare-metal servers will result in severe performance degradation of your storage; hence such a configuration can be applied only for evaluation purposes.