Jump to: navigation, search

Difference between revisions of "NexentaVolumeDriver"

Line 46: Line 46:
 
* nexenta_user - name of user at Nexenta appliance with REST API access (e.g. admin);
 
* nexenta_user - name of user at Nexenta appliance with REST API access (e.g. admin);
 
* nexenta_password - password for that user.
 
* nexenta_password - password for that user.
 +
 +
Example config following:
 +
 +
<pre><nowiki>
 +
--volume_driver=nexenta.volume.NexentaDriver
 +
--nouse_local_volumes
 +
--nexenta_host=172.16.1.10
 +
--nexenta_volume=nova
 +
--nexenta_user=admin
 +
--nexenta_password=secrete
 +
</nowiki></pre>
 +
  
 
=== User Experience ===
 
=== User Experience ===

Revision as of 07:07, 21 November 2011

Summary

We would like to introduce the NexentaStor support for the nova-volume service. This blueprint proposes the driver based on the iSCSI driver already integrated into the OpenStack nova-volume service, with the basic capabilities to create, export and delete volumes and snapshots.

The driver can interact with the NexentaStor Appliance using its REST API, or using DBus API. The default API is REST, and the DBus requires patched libdbus to function properly.

The proposal is to add NexentaStor driver to the nova-volume service.

Release Note

NexentaStor Appliance is NAS/SAN software platform designed for building reliable and fast network storage arrays. The NexentaStor is based on the OpenSolaris and uses ZFS as a disk management system. NexentaStor can serve as a storage node for the OpenStack and provide block-level volumes for the virtual servers via iSCSI protocol.

Requirements

  • Openstack nova-volume service installed
  • NexentaStor Appliance installed and configured
  • Dedicated ‘volume’ object created on appliance

Rationale

NexentaStor Appliance provides reliable block-level volumes which are easy to manage via simple REST interface. It automates many common storage administration tasks. It is intended to be used with commodity hardware and basically is vendor-independent. This makes NexentaStor Appliance software useful as a base for storage nodes in IaaS clouds.

User stories

User installs nova-volume service on the Openstack node and configures volume_driver, specifies communication transport and IP address of the NexentaStor appliance. Additional parameters for volumes can be specified in the flag file, i.e. block size. User can then create volumes with standard Nova API calls.

Nexenta Appliance Configuration

To get the volumes stored to the Nexenta appliance, it has to be configured appropriately. Configuration of appliance includes the following steps:

  • install and configure NexentaStor software via management console and web interface using initial configuration wizard;
  • use management console or web interface to create ZFS volume, for example, ‘nova’;
  • specify base volume name in the nova.conf on the Openstack node that runs nova-volume.

OpenStack Nova configuration

You can set up the driver by setting following flags in nova.conf:

  • volume_driver - should be set to nexenta.volume.NexentaDriver;
  • nouse_local_volumes - this is necessary for all SAN drivers;
  • nexenta_host - should be hostname or IP address of Nexenta appliance;
  • nexenta_volume - should be set to the name of ZFS volume that should contain all Nova volumes;
  • nexenta_user - name of user at Nexenta appliance with REST API access (e.g. admin);
  • nexenta_password - password for that user.

Example config following:

--volume_driver=nexenta.volume.NexentaDriver
--nouse_local_volumes
--nexenta_host=172.16.1.10
--nexenta_volume=nova
--nexenta_user=admin
--nexenta_password=secrete


User Experience

The NexentaStor appliance using SAS disk drives and connected to the Compute node by 1Gbps Ethernet provides following input and output rates:

  • up to 60 Mbytes per second on sequential writes
  • up to 132 Mbytes per second on random reads
  • up to 1000 volumes per appliance tested

Assumptions

This driver assumes user has installed NexentaStor software on at least one appliance and configured it to have a logical volume dedicated to Openstack volumes.

Design

Driver extends iSCSI driver in the same way as all SAN drivers. All operations are performed using one of two transport modules: either D-Bus or JSON RPC transport supported.

Volumes Back-End

ZFS zvols are used as base for exported volumes. Zvol is a ZFS entity that essentialy is virtual block device. Its flexible configuration allows block sizes from 512 bytes to 128 Kbytes, and use of advanced ZFS specific features like built-in integrity control, deduplication and caching. Zvols can be sparse and consume only so much disk space as the size of actually written data.

The driver supports the following features of underlying ZFS zvols:

  • block size can be specified in bytes or Kbytes with --nexenta_blocksize flag;
  • use of sparse volumes can be configured with --nexenta_sparse flag;

Volumes Export

Common iSCSI initiator-target scheme is used for export. Each volume is exported through dedicated target which is placed in separate target group to ensure correct iSCSI LUN numbering.

Implementation

Driver functionality is separated into three modules. Two modules implement transports: nexenta.jsonrpc for JSON RPC and nexenta.NZA for D-Bus. Latter requires patched libdbus installed in the system. The nexenta.volume module contains the driver code.

Minor exception handling issue was fixed in the main nova code to enhance the behavior of the driver.

Code Changes

Nexenta driver code should be included as package under nova.volume package.

Test/Demo Plan

This need not be added or completed until the specification is nearing beta.

Unresolved issues

  • Currently one cannot delete a snapshot if there is a volume created from it due to Nexenta limitations.

External links