ViPR 2.1 - Understanding the ViPR Block Service Powered by ScaleIO

Table of Contents


This article describes the components of ScaleIO and how ViPR creates the Block Service from those components, as well as the types of provisioning that can be performed with the ViPR Block Service.

ViPR Block is a service that creates a server-based SAN from local application server storage, and is implemented by integrating ScaleIO into ViPR. ViPR can integrate a stand-alone ScaleIO system to implement the ViPR Block Service using the UI, REST API, or CLI. ViPR can also install ScaleIO into a greenfield environment and then automatically discover the installed ScaleIO and create the necessary ViPR objects.

Back to Top

Main components of ScaleIO

ScaleIO is a commodity based, software-only block storage solution. It leverages the existing local disks of a host and exposes them as block storage that can be consumed by clients over the LAN.

The ScaleIO solution consists of software components that are installed on the application hosts. These hosts communicate with each other over the LAN to handle the clients IO request. These components can be installed on existing application hosts or in a greenfield environment:
  • Meta Data Manger (MDM) services the requests to manage the ScaleIO system.
  • ScaleIO Data Server (SDS) manages the local storage that contributes to the ScaleIO storage pool. The SDS is installed on all servers contributing storage devices to the ScaleIO system.
  • ScaleIO Data Client (SDC) is a device driver that exposes ScaleIO volumes as block devices to the application residing on the same server on which the SDC is installed.

ScaleIO Components

The ScaleIO system also has concepts of Protection Domains and Storage Pools:
  • Protection Domain
    • Collection of SDSs
    • An SDS can only belong to one protection domain at any one time.
  • Storage Pool
    • A subset of physical storage devices in a protection domain.
    • Each storage device belongs to one (and only one) storage pool.
    • Can be used to group devices of similar attributes, such as magnetic disk and SSD as singular resource, from which one can allocate volumes.

The following figure shows an example of a ScaleIO with three protection domains and two storage pools. The middle protection domain consists of seven SDSs, each with two storage devices.

ScaleIO Protection Domains and Storage Pools

Back to Top

How ScaleIO components are integrated into ViPR to provide the block service

To ViPR, ScaleIO block storage is a set of storage devices. When adding a stand-alone ScaleIO system, the storage is added as a storage provider of the type, ScaleIO.

When ViPR is pointed to the primary MDM:
  1. If the ScaleIO is stand-alone, a storage provider is created which maps to the Primary MDM.
  2. The protection domains are discovered and one storage system is created in ViPR for each ScaleIO protection domain.
  3. Storage ports are created in ViPR: one storage port in a ViPR storage system for each discovered SDS that is part of the ScaleIO protection domain that is mapped to the storage system. The name of the storage port maps to the name of the SDS ID.
  4. ViPR automatically creates a network for the ScaleIO using the SDCs, and the storage ports that were created from all of the discovered SDSs.
  5. ViPR automatically creates hosts and host initiators: one host for each SDC.

The following figure shows the ViPR objects that are automatically created by discovering the components of the ScaleIO.

ViPR Objects Automatically Created by Discovering ScaleIO Components

Once ViPR has created the storage ports, network, and hosts, then a system administrator can:
  1. Create a virtual array for the ScaleIO storage.
  2. Create a block virtual pool and associate it with the ScaleIO virtual array.

Once the virtual arrays and block virtual pools are created, the ViPR Block is available for provisioning.

Back to Top

Provisioning Services Available with the ViPR Block Service

The following provisioning services are available with the ViPR Block Service
  • Volumes and Exports
    • Create Block Volume for a Host, based on the ScaleIO virtual pool
    • Export ScaleIO volumes to SDC hosts
    • Add more ScaleIO volumes to SDC hosts
    • Remove ScaleIO volumes from SDC hosts
    • Add SDC hosts to a ScaleIO export
    • Remove SDC hosts from a ScaleIO export
    • Delete a ScaleIO export
  • Snapshots
    • Create a volume based on ScaleIO virtual pool
    • Create a snapshot of ScaleIO volume
    • Export ScaleIO volumes and snapshots to SDC hosts
    • Add more ScaleIO snapshots and volumes to SDC hosts
    • Add SDC hosts to an existing export
    • Remove SDC hosts from an existing export
    • Delete a ScaleIO export
  • Full Copy
    • Create a volume based on ScaleIO virtual pool
    • Create a full-copy of ScaleIO volume
    • Delete a full-copy of ScaleIO volume
  • Consistency Group
    • Create a consistency group
    • Add ScaleIO volumes into consistency group
    • Create a snapshot of ScaleIO consistency group
    • Delete a snapshot of ScaleIO consistency group
    • Delete consistency group
Back to Top