Apache CloudStack is designed to work with a vast range of commodity and enterprise-grade storage platforms. It can also leverage local disks on hypervisor hosts if supported by the hypervisor. CloudStack defines two types of storage: Primary and Secondary. Primary storage can be accessed using iSCSI, FC (Fibre Channel), Local Disk, NFS (Network File System), or SDS (Software Defined Storage) technologies. Direct attached storage can also be used. Secondary storage can only be accessed using NFS.
In this article, we present a detailed review of the CloudStack storage options.
The Foundation of Cloud: Storage Solutions
In the era of cloud computing and emerging data, storage is not just a necessity: it’s the bedrock upon which cloud services are built. As data grows exponentially, the demand for reliable, scalable, and cost-effective storage has never been higher. Storage for cloud environments has to be carefully selected based on several criteria:
- Data Persistence: Ensuring that data remains intact and accessible, even in case of hardware failures or other unforeseen challenges.
- Scalability: As organizations grow, so does their data. Data storage solutions must be able to scale seamlessly to accommodate increasing data volumes without compromising performance.
- Performance: Quick data access and low latency are crucial. The right storage solution can significantly impact the performance of applications and services hosted on top.
- Data Protection and Security: With cyber threats on the rise, storage solutions must offer robust security features, including encryption, access controls, and regular backups, to safeguard sensitive data.
- Cost-Efficiency: As data volumes increase, so do storage costs. Modern storage solutions aim to optimize the costs through techniques like deduplication, compression, and tiered storage.
CloudStack Storage Types: An Overview
In the CloudStack environment, storage plays an important role in ensuring the smooth operation of Instances and the availability of essential resources. CloudStack categorizes its storage into two main types: Primary and Secondary Storage. Each serves a distinct purpose and is crucial for the efficient functioning of the cloud infrastructure.
Primary Storage
Primary storage is the main storage repository for all user Instances in CloudStack. Depending on the hypervisor in use, Primary Storage can be associated with a Cluster or a Zone.
Purpose: Primary Storage is responsible for hosting Instance root disks and any additional data disks. It’s the storage that Instances access directly for their operations.
Characteristics: There should be low latency and high IOPS to ensure optimal Instance performance. When integrated with specific storage plugins, CloudStack can perform additional operations directly with the storage, such as controlling IOPS, managing storage tiers, optimizing data deduplication, and more. In scenarios where there isn’t direct integration with the storage technology, IOPS control can also be managed at the hypervisor level, providing a form of storage QoS.
Types: CloudStack supports various types of Primary Storage, including local storage (using the disk on the host machine) and shared storage (accessible by multiple hosts in a cluster, such as iSCSI, SDS, or NFS).
Management with Tags: Administrators can use “Storage Tags” to categorize and allocate Primary Storage based on specific criteria, such as performance levels or location. This ensures that Instances are allocated storage that best fits their operational requirements.
Secondary Storage
Secondary Storage provides different functionality in CloudStack, acting as a repository for resources that aren’t in active use by user Instances but are essential for cloud operations.
Purpose: Secondary Storage stores Templates (pre-configured OS images), ISO images (bootable disk images), and Snapshots (point-in-time copies of Instance volumes).
Usage Scenarios: When deploying a new Instance, CloudStack uses Templates stored in Secondary Storage. Similarly, when an Instance is backed up, the Snapshot is saved to Secondary Storage.
Scale: Given its role as a repository for Templates, ISOs, and Snapshots, Secondary Storage typically requires enough capacity to store this data. It’s designed for scalability and long-term data retention.
Types: NFS is commonly used as Secondary Storage in CloudStack due to its simplicity and compatibility. However, CloudStack also supports integration with object storage solutions for scalable and durable storage of Templates and Snapshots.
CloudStack Disk Offerings
In CloudStack, Disk Offerings enable administrators to manage storage with attributes like size, IOPS, and other performance-related parameters. These offerings can be customized to cater to the unique needs of users for various workloads and applications.
To illustrate, we present an infrastructure with three distinct types of storage and their respective offerings, each with its unique characteristics, such as disk type, storage capacity and IOPS:
When creating disk volumes, users are presented with a range of Disk Offerings. These offerings are not just about storage size; they encapsulate various performance metrics, including IOPS, throughput, and latency. By allowing users to select the Disk Offering that aligns best with their specific needs, CloudStack ensures that instances and applications run efficiently. Whether it’s a data-intensive analytics task, a high-transaction database, or a standard web application, users have the power to choose the storage performance that matches their workload demands.
For Administrators, Disk Offerings are more than just a technical specification. By segmenting Disk Offerings based on performance and other attributes, administrators can create tiered storage solutions, that can be priced differently, reflecting the value and performance they deliver.
For example, a premium Disk Offering with high IOPS and ultra-fast response times can be priced higher than a standard offering. This not only allows for better resource allocation but also opens monetization avenues. Users who require top-tier performance for their critical applications can opt for the premium tier, understanding the value it brings, while others with less demanding applications can choose a more cost-effective tier.
Furthermore, by monitoring the consumption of these Disk Offerings, administrators can gain insights into user preferences and workload requirements. This data can be invaluable for future infrastructure planning and optimization.
The Disk Offerings feature in CloudStack exemplifies the platform’s commitment to flexibility and customization. By balancing user needs with administrative control and monetization opportunities, CloudStack fosters an environment where both parties benefit from optimized storage solutions.
Self-Service Storage Operations in CloudStack
CloudStack offers a suite of self-service operations related to storage. This empowers users to manage their storage resources without relying on administrative intervention, promoting agility and efficiency.
For Instance, if a user anticipates a higher data influx due to an upcoming event or project, they can proactively resize their storage volume to accommodate the additional data. Similarly, for backup and recovery purposes, users can take snapshots of their volumes, ensuring data safety and availability.
Furthermore, the self-service model is not just about operational flexibility; it’s also about cost management. Users can monitor their storage consumption, adjust as needed, and ensure they optimise their resource usage for cost-effectiveness.
Hypervisor Support Matrix for Primary Storage
Hypervisor | VMware vSphere | XCP-ng / XenServer | KVM |
Format for Disks, Templates and Snapshots | VMDK | VHD | QCOW2 |
iSCSI | VMFS | Clustered LVM | Shared Mountpoint |
Fiber Channel | VMFS | Existing SR | Shared-Mountpoint |
NFS | Yes | Yes | Yes |
Local Storage | Yes | Yes | Yes |
Storage Over-provisioning | NFS and iSCSI | NFS | NFS |
Ceph/RBD | No | No | Yes |
Dell PowerFlex | No | No | Yes |
StorPool | No | No | Yes |
SolidFire/NetApp | Yes | Yes | Yes |
Pure Storage | Yes | No | No |
LINBIT | No | No | Yes |
CloudStack Integrated Storage Platforms
As well as CloudStack’s ability to use the broad range of common storage types listed above, several platforms have advanced integration, giving performance advantages and more. These may include enhanced data management, improved I/O operations, streamlined storage provisioning, robust data protection, and seamless scalability. Additionally, they may offer superior snapshot management, efficient resource utilization, and optimized storage traffic, ensuring a reliable and high-performing storage environment within CloudStack.
Below is a list of platforms with such integration:
Vendor | Storage Type | Storage Media | Available Operations |
StorPool | SDS | Block | Create, attach, detach, delete, migrate, provision, snapshots, thin provisioning, cloned provisioning, QoS policies, cloning, resizing |
Ceph | SDS | Block | Create, attach, detach, delete, migrate, provision, snapshots, VM Snapshot, thin provisioning, QoS policies, cloning, resizing |
SolidFire/NetApp | Traditional | Block | Create, attach, detach, delete, migrate, provision, snapshots, thin provisioning, QoS policies, cloning, resizing |
Pure Storage | Traditional | Block | Create, attach, detach, delete, migrate, provision, snapshots, thin provisioning, QoS policies, cloning, resizing |
Dell PowerFlex | SDS | Block | Create, attach, detach, delete, migrate, provision, snapshots, thin provisioning, QoS policies, cloning, resizing |
LINBIT | SDS | Block | Create, attach, detach, delete, migrate, provision, snapshots, thin provisioning, cloned provisioning, QoS policies, cloning, resizing |
Introducing the CloudStack Object Storage Framework
Apache CloudStack 4.19 introduces a new feature, the CloudStack Object Storage Framework, an enhancement that integrates object storage as a first-class resource, directly meeting end-user needs. Historically, while CloudStack has proficiently catered to numerous IaaS cloud requirements, a discernible void existed in its capabilities, particularly when user applications necessitated object storage dependencies. Users often found themselves navigating through external solutions, occasionally venturing outside their CloudStack Zone, where their Instances and containers resided. This not only introduced increased latency but also inadvertently impacted application performance.
Empowering Both Operators and Users
With this new feature, CloudStack aims to empower both operators and users:
- For Operators: The introduction of the CloudStack Object Storage Framework in version 4.19 brings several key advantages for operators by allowing them to easily integrate any S3-compliant object storage technology and make it easily accessible through CloudStack’s API and UI. The first vendor to take advantage of this framework is MinIO and Cloudstack 4.19 ships this provider giving seamless integration.
- For Users: The feature is designed with user-centricity in mind. Users will have the capability to create and manage their own object buckets or spaces, directly in their Cloudstack environments This means they can easily add or remove files and objects as per their requirements. Furthermore, billing is made transparent and straightforward, with users or projects being billed based on aggregate data storage on a per-bucket basis.
Underlying Object-Storage Provider Responsibilities
The underlying object-storage provider will have a set of requirements to ensure the system’s efficiency and reliability:
- Flexible Storage Management: As data grows, the storage solution should be able to scale seamlessly without any hitches.
- Data Growth: The provider should be capable of handling exponential data growth, ensuring that the system doesn’t experience any slowdowns or crashes.
- Multi-site Replication: For disaster recovery and data availability, the provider should support multi-site replication.
- Security: Security is paramount. The provider should offer robust security features to protect data.
- Backup: Regular backups should be a standard feature to prevent any data loss.
Apache CloudStack integrates a robust storage management system, ensuring data persistence, scalable I/O performance, and data protection, while adhering to cost-efficiency principles, thereby offering organizations a comprehensive range of different storage solutions.
The introduction of the CloudStack Object Storage Framework marks a significant enhancement, refining its storage architecture and offering a cohesive, integrated data management alternative for the users and their applications.
CloudStack’s integration with various storage platforms, the implementation of a user-centric operational approach along with the introduction of the CloudStack Object Storage Framework underscores CloudStack’s commitment to providing reliable and adaptable storage solutions, whilst addressing the practical and complex needs of data management and storage in cloud environments.
Marco Sinhoreli is a seasoned Technical Marketing Manager at ShapeBlue, with over 25 years of IT experience. As an Apache CloudStack expert and committer, he specializes in creating and delivering technical marketing content that bridges the gap between technology and business. Marco has consulted major companies on implementing IaaS solutions with CloudStack, focusing on delivering cloud infrastructure that supports both immediate and long-term business needs. When he’s not diving into cloud solutions, Marco loves playing guitar, exploring new places, and staying updated on politics.