Cloudian HyperStore Technical Whitepaper
Cloudian HyperStore Technical Whitepaper
Technical Guide
Cloudian HyperStore is available as a stand-alone software or fully integrated with hardware as a Cloudian
HyperStore appliance. It easily scales to limitless capacities and offers multi-datacenter storage. HyperStore
also has fully automated data tiering to all major public clouds, including AWS, Azure and Google Cloud
Platform. It fully supports S3 applications and has flexible security options. HyperStore deployment models
include on-premises storage, distributed storage, storage-as-a-service or even other combinations as
illustrated below.
S3 COMPATIBLE
With Amazon setting the cloud storage standard making it the largest object storage environment, and
Amazon S3 API becoming the de facto standard for developers writing storage applications for cloud, it is
imperative that every cloud, hybrid storage solution be S3 compliant. Cloudian HyperStore, in addition to
being S3 compliant, also offers the flexibility to be on-prem object storage and integrate as a hybrid tier to
public cloud providers such as AWS, Microsoft Azure and Google Cloud.
SECURITY
Cloudian HyperStore takes safeguarding your data very seriously. Two server-side encryption methods
(SSE/SSE-c, Keysecure) are implemented to ensure that the data is always protected. HyperStore also
supports the option of using a third-party Key Management System to generate and manage the encryption
key (KMS). This relieves administrators from the burden of encryption key management and eliminates the
risk of data loss occurring due to lost keys. Encryption can be managed very granularly—either at a bucket
level or down to an individual object.
MULTI-TENANCY
Advanced identity and access managed features allow system administrators to provision and manage
groups and users, define specific classes of service for groups and users and configure billing and charge-
back policies. Multiple credentials per user are also supported. Configurable group and user level QoS rate
limits ensure groups and users do not exceed storage quotas and allows for multi access in a way that
bandwidth is not throttled affecting other tenants.
HOW WE DO IT
Cloudian HyperStore solution is built on open scalability of S3 and Cassandra, an architecture that
originated at large scale cloud companies like Google, Facebook and Amazon.
VIRTUAL NODES
Cloudian’s vNode technology enhances data redundancy and availability a step further. The disk resources
within a single node can be subdivided into smaller IO devices called vNodes. This allows for greater IO
parallelism and hence greater storage IO performance across the HyperStore system. vNodes also enhance
availability. With virtual nodes if a drive or a node fails, recovery processes can be distributed in parallel
across all the drives within a node/appliance.
AUTO-TIERING
Cloudian enables seamless integration with on-premise HyperStore cloud storage and the public cloud. In
particular, HyperStore supports an auto-tiering feature whereby objects can be automatically moved from
local HyperStore storage to a remote storage system on a defined schedule. HyperStore supports auto-tiering
from a local HyperStore bucket to any of several types of destinations systems including S3-compliant
systems: Amazon S3, Amazon Glacier, Google Storage Cloud, a HyperStore region or system, or a different
S3-compliant system of your choosing. In addition, HyperStore supports auto-tiering to Microsoft Azure and
Spectra Logic Black Pearl. Auto-tiering is configurable on a per-bucket basis and can be enabled to happen
immediately, called Bridge Mode or on a defined daily and/or weekly schedule.
REGIONS
Like Amazon S3, the Cloudian HyperStore system supports the implementation of multiple “service regions”.
Setting up the Cloudian HyperStore system to use multiple service regions is optional.
The main benefits of deploying multiple service regions are:
• Each region has its own independent Cloudian HyperStore geo-cluster for S3 object storage. Consequently,
deploying multiple regions is another means of scaling out your overall Cloudian HyperStore storage
system (beyond using multiple nodes and multiple datacenters to scale out a single geo-cluster). Note that
in a multi-region deployment, entirely different S3 datasets are stored in each region. Each region has its
own token space and there is no data replication across regions.
• With a multi-region deployment, your service users can choose the service region in which their storage
buckets will be created. Users may, for example, choose to store their S3 objects in the region that’s
geographically closest to them; or they may choose one region rather than another for reasons of regulatory
compliance or corporate policy.
SERVICES
The Cloudian HyperStore system supports several types of services each of which plays a role in
implementing the overall Cloudian HyperStore S3 object storage service:
Cloudian HyperStore As an object store, Cassandra provides a wealth of valuable built-in functionality
Service and the including data partitioning, automatic replication, easy cluster expansion, quorum
HSFS calculations, and so on.
The Cloudian HyperStore system uses a hybrid storage solution where
Cassandra can optionally be used for small S3 data objects while the Linux
filesystem on Cassandra nodes is used for larger S3 data objects. The area of
the Linux filesystem where S3 object data is stored is called the Cloudian
HyperStore File System (HSFS).
In Cloudian HyperStore, Cassandra capabilities are used to determine the
distributed data management information such as the nodes that a specific key
should be written to and replicated.
HSFS is used as the storage layer to store S3 object data. Within HSFS, objects
can be stored and protected in two ways; replicated and erasure coded.
Redis DB Services The Cloudian HyperStore system uses the lightweight, open source
Redis key-value data store to store a variety of data that supports Cloudian
HyperStore S3 service features. There are two types of Redis databases (DBs)
in a Cloudian HyperStore deployment:
The Redis Credentials DB stores user credentials and additional S3
operation supporting data such as multi-part upload session information and
public URL access counters.
The Redis QoS DB stores user-level and group-level QoS settings that have
been established by system administrators. The DB is also used to keep count of
user requests, so that QoS limits can be enforced by the system.
The S3 Service, Administrative Service, and Cloudian HyperStore Service are
the clients to these two Redis databases. Communication is through a protocol
called Redis Serialization Protocol (RESP).
Administrative Service The Cloudian HyperStore Administrative Service implements a RESTful HTTP
API through which you can perform administrative operations such as:
• Provisioning groups and users.
• Managing QoS controls.
• Creating and managing rating plans.
• Generating usage data reports.
The Cloudian Management Console (CMC) is a client to the Administrative
Service. Building your own client is also an option.
The Administrative Service is closely integrated with the S3 Service. Both
leverage Jetty technology and are installed together. Both are started and
stopped together by the same commands.
Supporting Services Services that play a supporting role for the Cloudian HyperStore system include:
Cloudian Monitoring Agent — The Cloudian Monitoring Agent runs on each
Cloudian HyperStore node and monitors node health and performance statistics.
The Agent also plays a role in the triggering of event notification emails to
system administrators. System and node statistics are viewable through the
CMC; and you can configure event notification rules through the CMC as well.
Cloudian Monitoring Data Collector — The Cloudian Monitoring Data Collector
runs on one node in each of your service regions, and regularly collects data
from the Monitoring Agents. The Monitoring Collector writes its collected node
health statistics to Cassandra’s “Monitoring” key space.
Puppet — As part of the Cloudian HyperStore software installation, the Cloudian
HyperStore installer installs the open source version of Puppet and uses it to
implement initial Cloudian HyperStore system configuration. Cloudian
HyperStore also uses Puppet for support of ongoing configuration management.
Dnsmasq — Dnsmasq is an optional lightweight domain resolution utility suitable
for small networks. This utility is bundled with Cloudian HyperStore software
distribution. The Cloudian HyperStore interactive installation wizard automatically
installs and configures dnsmasq based on user input to resolve Cloudian
HyperStore service domains; specifically, the S3 service domain, the S3 website
endpoint domain, and the CMC domain.
USER MANAGEMENT
User groups and individual users can be provisioned through the Cloudian HyperStore Administrative
API or through the CMC, these are the users or groups that are authorized to use the Cloudian
HyperStore S3 service. The Cloudian HyperStore system can support millions of groups and users.
Groups are provisioned first, and then once one or more groups exist you can add individual users to each
group. All users must belong to a group. As a HyperStore system administrator you can act on groups in a
variety of ways:
• Each group can be assigned QoS limits that will enforce upper bounds on the service usage levels. Each
group can also be assigned default user-level QoS controls that will limit the service usage of individual
users within the group. If desired, assign and enforce per-user QoS limits that will supersede the default.
• You can generate service usage reports for groups (and also for individual users).
• Each group can be assigned a default rating plan which will determine how users in that group will be
charged for Cloudian HyperStore service usage. If desired, you can also assign per-user rating plans that
will supersede this default.
• Hyperstore offers selective IAM user supports (IAM API "actions"). For the list of supported actions, please
refer to the online help.
• HyperStore system administrators cannot access and use the IAM API under their system administrator
account. Only HyperStore group administrators and HyperStore regular users can use the IAM API
functions to create IAM groups and IAM users and perform other IAM tasks.
SINGLE DC EC:
This configuration requires a minimum 6 nodes across a single Data Center. In order to support the minimum
data and parity fragments of (4+2) where 2 is the parity this is a requirement. Below is a table of the default
EC configuration and the minimum number of nodes required in a single DC.
Note: Cloudian also supports 5 nodes EC as EC3+2. This requires a customized storage policy.
Nodes in the DC EC
6 4+2
8 6+2
10 8+2
12 9+3
16 12+4
Replicated EC:
This configuration requires a minimum of two DCs. Each DC must consist of minimum of 3 nodes each. This
supports the minimum data and parity fragments of (2+1) where 1 is the parity. Below is a table of the default
replicated EC configuration and the default number of nodes per DC.
Distributed EC:
Cloudian’s Distributed EC solution implements the new ISA-L Erasure Codes which is vectorized and fast.
ISA-L is the Intel library containing functions to improve erasure coding.
The Cloudian Distributed Data Center with EC configuration requires a minimum of 3 Data Centers with 4
nodes each for a total of 12 nodes. Distributed EC configuration offers the same level of protection as the
Cloudian also supports customizable EC to meet specific needs by setting a flag. Please contact your local
sales team if you are interested in an EC configuration which is not listed in the defaults.
SMART REPAIR
Smart repair ensures data integrity and availability through proactive actions. Replicated data in a Cloudian
HyperStore storage cluster is assessed and updated regularly to ensure that each data object has the
configured number of replicas across the cluster, and that all replicas are current. If EC is enabled in a
storage policy, it’s also important that erasure coded data be regularly evaluated and repaired so that each
object has the correct number of fragments throughout the cluster and all fragments are up-to-date. These
actions are key foundation of data durability. To achieve true data durability, smart repair occurs at different
times during an object lifetime. Cloudian HyperStore uses three smart repair mechanisms; repair-on-read,
proactive repair and auto-repair.
Cloudian HyperStore uses a repair-on-read feature. When a read request is processed for a replicated object
in the Cloudian HyperStore File System, all replicas of the object are checked, and any missing or out-of-date
replicas are replaced or updated. A similar process is performed for EC objects and for metadata in
Cassandra. This check is applied randomly to about 20% of EC object reads and about 10% of Cassandra
data reads for each request. Since this mechanism repairs only data that is read. It is necessary to have
additional mechanisms that regularly checks all data in the system and implement repairs as needed.
HyperStore proactive repair works by reading a list of failed write attempts for objects from Cassandra when a
node was unavailable. Working from this object list, proactive repair streams in any locally missing replicas by
copying them from nodes where they do exist. For erasure coded objects, the proactive repair process re-
generates the locally missing fragment.
Third, regular repair of all data is accomplished by the Cloudian HyperStore auto-repair feature which
automatically executes repair jobs on each node in the cluster on scheduled basis. The schedule is
customizable by an admin if desired. Separate repair jobs are run for Cassandra data. That is, object
metadata and service usage data that’s replicated across the cluster and stored in Cassandra, replica data
AUTO TIERING
As mentioned earlier, the Cloudian HyperStore system supports an auto-tiering feature whereby objects can
be automatically moved from a source Cloudian HyperStore storage to a private or public destination storage
system on a predefined schedule. Cloudian HyperStore also has a bridge feature where objects can be tiered
immediately. Auto-tiering is configurable on a per-bucket basis and can be configured to use popular public
cloud sites as well as on-premise systems as a destination. Auto-tiering is configurable on a per-bucket basis.
Cloudian HyperStore administrators can specify:
• The auto-tiering destination such as a public cloud storage site or on-premise storage system
• Object filters. For example, auto-tiering can apply to all objects in the bucket or only to objects for which the
full object name starts with a particular prefix
• The tiering schedule, which can be implemented in any of these ways. Move objects X number of days after
they’re created. Move objects if they go X number of days without being accessed. Move objects on a fixed
date — such as December 31, 2018
• Bridge mode which defines moving objects immediately after they're created
The destination storage system can be any of the following locations:
• Amazon S3
• Amazon Glacier
• Google Storage Cloud
• HyperStore region or system
• Different S3-compliant system
• In addition, HyperStore supports auto-tiering to Microsoft Azure and Spectra Logic Black Pearl.
By default, auto-tiering is not enabled for any bucket, and the CMC functionality for activating auto-tiering is
obscured. Also note auto-tiering restrictions apply to some of these destinations. For more information about
configuring auto-tiering in the system and on individual buckets please see the online user guide.
Note that once you enable this feature, this type of usage data will be tracked and available for reporting from
that point in time forward. There will not be any per-bucket usage data from prior to that time. Be aware that
enabling this feature results in additional data being stored in Cassandra, and additional work for the cron
jobs that roll up usage data into hourly, daily, and monthly aggregates.
VNODES IN DETAIL
Traditionally, hash-based storage schemes are assigned just one token per physical node. This optimized
design assigns a large number of tokens (up to a maximum of 256) to each physical host. In essence, the
storage cluster is composed of very many virtualized nodes. Multiple virtual nodes reside on each physical
host.
The HyperStore system goes much further by assigning a different set of tokens (virtual nodes) to each disk
on each physical host. With this architecture, each disk on a host is responsible for a different set of object
replicas, and if a disk fails it affects only the object replicas on that one disk. Other disks in the host can
continue operating and supporting their own data storage operations.
For example, consider a geo-cluster of six Cloudian HyperStore hosts each of which has four disks
designated for S3 object storage. Suppose that each physical host is assigned 32 tokens. And suppose that
there is a simplified token space ranging from 0 to 960, and the values of the 192 tokens in this system (six
hosts times 32 tokens each) are 0, 5, 10, 15, 20, and so on up through 955.
Working with the same cluster and simplified token space, we can next consider a second object replication
example that illustrates an important vNode feature: no more than one of an object’s replicas will be stored on
SERVER-SIDE ENCRYPTION
Like Amazon S3, the Cloudian HyperStore system supports server-side encryption (SSE) to protect the
confidentiality of data at rest. The Cloudian HyperStore system can perform the encryption, and subsequent
decryption upon object retrieval. Like Amazon S3, this is either with a system-generated encryption key
(regular SSE) or a customer-provided encryption key (SSE-C).
• The object upload and download requests must be submitted to the system via HTTPS, not regular HTTP.
• The system does not store a copy of the encryption key.
• The user is responsible for managing the SSE-C encryption key. If an object is uploaded to Cloudian
HyperStore system and encrypted with a user-provided key, the user will need to provide that same key
when later requesting to download the object. If the user loses the key, the encrypted object will not be
downloadable.
WORM
The HyperStore mechanism for implementing WORM is called a bucket lock. To apply a lock to a bucket, the
bucket must first have versioning enabled. When versioning is enabled on a bucket, each version of objects
in the bucket is retained. For example, if you upload a newly created document, and then on two subsequent
occasions you revise the document and upload it again, the system will retain all three versions of the
document.
Amazon S3 commands twice the market share of all its closest competitors combined and it will likely be the
storage platform of choice for on-premises hybrid or private cloud deployments. Companies and developers
implementing S3 depend significantly on compatibility with S3. With no standards enforced for claiming S3
compatibility, choosing the right storage platform can be tenuous.
When looking at deploying an open-hybrid cloud and/or moving data between storage and the private cloud, it
is of utmost importance to understand the level of S3 compatibility a storage platform claims versus its actual
compatibility. S3 is quickly becoming the object storage standard and will not disappear anytime soon.
Choosing the right storage platform for the hybrid or private cloud can save organizations money and shave
months off of the time to deploy. In essence, compatibility matters.
To make S3 simple for applications to access, Amazon continues to refine the operations available to
applications through the S3 API. The API enables operations to be performed on the S3 Service, S3 Buckets,
and S3 Objects; there are more than 50 operations available today. Compatibility is based on a storage
platform’s ability to perform some, many, or all of the S3 API features.
ADVANCED S3 COMPATIBILITY
For organizations and developers that want assurance that their applications are S3 compatible and/ or all +
S3 compatible applications will continue to work seamlessly with their hybrid or on-premises cloud, choosing
a storage platform that boasts advanced compatibility with the S3 API is vital. Of the 50+ operations
available through the S3 API, more than 25 of them are considered advanced. To be considered compatible
with S3, a storage platform needs work with the majority of the advanced operations. Cloudian Hyperstore is
continually tested against all S3 operations to maintain 100% compatibility.
VIRTUAL BUCKETS
A virtual bucket is a bucket of unlimited size for which object storage spans multiple regions. The virtual
bucket feature is applicable only for a multi-region Cloudian HyperStore deployment. Its purpose is to
accommodate buckets with larger capacities than service providers may wish to allow in a single region.
After an S3 client creates a bucket in a particular region, the client can request that the bucket be
implemented as a virtual bucket. An S3 extension API method is available to enable (or subsequently disable)
virtualization on a specific bucket. When a bucket is virtualized, objects PUT into that bucket may be stored in
the same region in which the bucket was created, or in any other region in the Cloudian HyperStore service
deployment.
Subsequent requests to retrieve (or delete) an object stored in a virtual bucket will be routed to the correct
region by the S3 server receiving the request. After request processing, the request-receiving S3 Server will
return a response to the client. For purposes of QoS enforcement and billing, all usage data for the bucket is
tracked at the region in which the bucket was created. This is regardless of which region a virtualized bucket’s
objects are stored.
TRANSITION RULES
You can configure schedule-based automatic transition (also known as “auto-tiering”) from Cloudian
HyperStore storage to Amazon S3 storage, Amazon Glacier storage, Storage in a different Cloudian
HyperStore service region.
USER MANAGEMENT
The user management implementation allows administrators to retrieve a user’s profile, list users, create new
users, manage S3 credentials, and configure a rating plan.
USAGE REPORTING
Allows administrators to retrieve S3 service usage data for a Cloudian HyperStore user or for a user group.
Cloudian HyperStore usage reporting complies with Amazon S3 in that data transfer and storage activity is
always attributed to the bucket owner, regardless of who owns individual objects within the bucket or who
submits object-related requests.
BILLING SERVICE
API implementation allows access to retrieve a user’s bill after it is generated. Bills are available for retrieval
only for a completed month.
SYSTEM SERVICES
The system services API methods allow administrators to gather license information and system attributes.
Also, audit data can be retrieved to gather usage information on the cluster.
DEVELOPING S3 APPLICATIONS
In nearly every way, developing a client application for the Cloudian HyperStore storage service is the same
as developing a client application for Amazon S3. Consequently, when designing and building S3 applications
for the Cloudian HyperStore service you can leverage the wealth of resources available to Amazon S3
developers.
The best place to turn for resources for developing Amazon S3 and Cloudian HyperStore S3 applications is
the Amazon S3 web site. Through that site, Amazon Web Services (AWS) Developer Centers are available
for a variety of development technologies:
• AWS Java Developer Center
• AWS Windows/.NET Developer Center
• AWS PHP Developer Center
• AWS Python Developer Center
• AWS Ruby Developer Center
CONFIGURABLE
The Cloudian HyperStore system has lots of options to meet your specific needs. Basic system configuration
is implemented by the interactive Cloudian HyperStore installation script. For the majority of ongoing
management, settings can be modified CMC. Beyond that, a wider range of settings can be modified by
editing configuration file templates on the Puppet master node. Puppet is then used to propagate the changes
throughout the Cloudian HyperStore cluster and then restarting the services from a simple menu selection.
CAPACITY EXPLORER
With the CMC's Capacity Explorer page, you can view your available S3 object data storage capacity by
region, by data center, and by node. First (if you have a multi-region system) choose a region tab at the top of
the page. Then, in the graphical display:
STORAGE POLICIES
Central to Cloudian’s data protection are its storage policies. These polices protect data that ensure data
durability and high availability to users. The Cloudian HyperStore system lets you pre-configure one or more
storage policies and are applied on a per-bucket basis. Users when they create a new storage bucket can
The configuration settings page allows for globally modifying and updating the configuration files, requiring no
service restart.
CLOUDIAN, INC.
177 Bovet Road, Suite 450, San Mateo, CA 94402
Tel: 1.650.227.2380 | cloudian.com
©2018 Cloudian, Inc. Cloudian, the Cloudian logo, HyperFile, and HyperStore are registered trademarks or trademarks of Cloudian, Inc.
All other trademarks are property of their respective holders. BPG-HYP-1018