SlideShare a Scribd company logo
1 of 44
Download to read offline
© Copyright IBM Corp. 2013. All rights reserved. ibm.com/redbooks 1
Redpaper
Using the IBM XIV Storage System in
OpenStack Cloud Environments
Cloud computing is a general term for anything that involves delivering hosted services over
the Internet. These services are broadly divided into three categories:
Infrastructure-as-a-Service (IaaS)
Platform-as-a-Service (PaaS)
Software-as-a-Service (SaaS)
OpenStack is an IaaS that allows storage to be anywhere and available for use as needed
without the confines of being in the data center.
The IBM® Storage driver for OpenStack enables OpenStack clouds to access the IBM XIV®
Storage System Gen3. The driver integrates with the OpenStack environment and enables
OpenStack applications to take advantage of the XIV enterprise-class storage.
The management driver controls the creation and deletion of volumes on the XIV Storage
System Gen3, and manages to attach or detach volumes from virtual machines (VMs)
running in OpenStack. The driver automatically creates the XIV host mappings on demand
that are required to allow running VMs on OpenStack to access the storage volumes. Access
to the XIV volumes is over an iSCSI connection protocol.
This IBM Redpaper™ provides a brief overview of OpenStack and a basic familiarity of its
usage with the IBM XIV Storage System Gen3. The illustration scenario that is presented
uses the OpenStack Folsom release implementation IaaS with Ubuntu Linux servers and the
IBM Storage Driver for OpenStack.
This paper is intended for clients and cloud administrators who look forward to integrating
IBM XIV Storage Systems in OpenStack cloud environments. The paper provides guidance in
setting up an environment for XIV with OpenStack. It is not an official support document.
Desire Brival
Bert Dufrasne
Bruce Allworth
Mark Kremkus
Markus Oscheka
Thomas Peralto
2 Using the IBM XIV Storage System in OpenStack Cloud Environments
Introduction
With the availability of the IBM Storage Driver for OpenStack, the XIV Storage System can
offer a range of capabilities that enable more effective storage automation deployments into
private or public clouds. Enabling OpenStack with XIV allows for storage to be made
available whenever needed without the traditional associated cost of highly skilled
administrators and infrastructure.
Cloud computing is defined as the use of computing services and resources (hardware and
software) that are delivered over a network, typically Ethernet. Cloud computing allows for
more economical usage of the data center hardware and software. It entrusts remote services
with a user’s data, software, and computation.
OpenStack is being developed as an industry standard cloud-computing project. It was
started by Rackspace Cloud and NASA in 2010. Currently more than 150 companies have
joined the project, including IBM.
OpenStack is a no-charge, open source software release under the terms of the Apache
License.
OpenStack has a modular architecture that encompasses three components:
Compute (Nova)
Object Storage (Swift)
Image service (Glance)
Several components are added:
OpenStack Identity Management (Keystone)
User Interface Dashboard (Horizon)
OpenStack Compute (Nova) is a cloud-computing fabric controller (the main part of an IaaS
system). It is written in Python and uses many external libraries, such as Eventlet (for
concurrent programming), Kombu (for AMQP communication), and SQLAlchemy (for
database access).
IBM XIV with the OpenStack community is on a mission to provide scalable, elastic cloud
computing for both public and private clouds, large and small. The cloud must be simple to
implement and massively scalable.
XIV Storage System with Folsom (the latest version of OpenStack at the time of writing and
referred to as OpenStack in the remainder of this paper) offers an open source cloud
implementation. This implementation allows organizations to deploy cloud-computing
capabilities on standard hardware.
There are several releases. The current release is Folsom (September 2012). For the latest
information, see the following website:
http://www.openstack.org/software/folsom/
Important: Illustrations of commands in this paper are based on the Folsom release. This
release offers two options in terms of block storage: nova-volume and Cinder. Both are
nearly identical in terms of functionality, APIs, and even the general theory of operation.
Remember, however, that nova-volume is deprecated and will be removed at the Grizzly
release.
Using the IBM XIV Storage System in OpenStack Cloud Environments 3
Concept
The OpenStack cloud connects to the XIV over an iSCSI connection. Remote cloud users
can issue requests for storage resources from the OpenStack cloud. These requests are
transparently handled by the IBM Storage Driver. The IBM Storage Driver communicates with
the XIV Storage System and controls the storage volumes on it.
Terminology
OpenStack introduced a specific terminology to describes its features and functions, including
these important terms:
User Any person, user, or administrator who wants to use cloud services or
administer tenants.
Role User, administrator, or system service within a tenant
Tenant OpenStack supports the concept of multi-tenancy as an organizational
structure. By this approach, resources are managed within a tenant
and can share services. A tenant offers the ability to correlate usage
tracking, auditing, authorization, and so on.
Service OpenStack and Linux services have some similarities. A Linux service
(formally a daemon) is a program that runs in the background and
listens to a port to respond to service requests. An OpenStack service
is a group of Linux services that work together. For example,
nova-compute and nova-scheduler are two of the Linux services that
implement the Compute service.
Hypervisor Software that allows multiple virtual images to share a single physical
machine. OpenStack Compute requires a hypervisor, and Compute
controls the hypervisors through an API server. The process for
selecting a hypervisor usually is prioritizing and deciding based on
budget and resource constraints and the inevitable list of supported
features and required technical specifications. Most developments are
done with the kernel-based virtual machine (KVM) and Xen based
hypervisors. For a detailed list of features and support across the
hypervisors, see this website:
http://wiki.openstack.org/HypervisorSupportMatrix
The types of virtualization standards that can be used with Compute
include KVM, Quick Emulator (QEMU), VMware ESX/ESXi 4.1
update 1, and Xen.
Code names Every OpenStack service has a code name as shown in Table 1 on
page 4. These code names are reflected in the names of configuration
files and command-line utility programs. For example, the Keystone
Identity service has a configuration file called keystone.conf.
Service: In this document, we use the term “service” to refer both to Linux and OpenStack
services.
4 Using the IBM XIV Storage System in OpenStack Cloud Environments
Table 1 OpenStack code name
OpenStack architecture and components
The OpenStack architecture and its components are described.
What is Nova
Nova is a global collaboration of developers and cloud-computing technologists that seek to
produce a ubiquitous IaaS open source cloud-computing platform for public and private
clouds. OpenStack was founded by Rackspace Hosting and NASA jointly in July 2010. Nova
consists of 160 companies and close to 3,000 developers.
OpenStack components
OpenStack has several components:
Swift (Object Store) provides object storage and allows users to store or retrieve files in a
blob mode.
Glance (Image) provides a catalog and repository for disk images that are mostly used in
OpenStack Compute. It has several components:
– Glance-api accepts Image API calls for discovery, retrieval, and store images
– Glance-registry stores, processes, and retrieves metadata about images (size, type,
and so on)
– A database to store the image metadata
– A data repository for the image files
Nova (Compute) provides virtual machines (VM) or instances. Nova interacts with several
OpenStack services, such as Keystone, Horizon, or Glance. The API process can upload
and query Glance while nova-compute downloads images for use in launching images.
Nova is the most complex and distributed component of OpenStack. Many processes are
involved to handle user API requests and launch virtual machines.
The following list is a summary of Nova processes:
– nova-api handles user compute API calls, synchronizes activities, and enforces policy.
– nova-compute process is a daemon that launches and ends virtual machine instances
by using the hypervisor’s APIs.
Service name Code name
Identity Keystone
Compute Nova
Image Glance
Dashboard Horizon
Object Store Swift
Block Storage Cinder
Using the IBM XIV Storage System in OpenStack Cloud Environments 5
– nova-volume manages the creation, attachment, and detachment of persistent
volumes to compute instances. It uses volumes from various providers, such as iSCSI
or Rados Block Device in Ceph. IBM provides the XIV Storage driver for OpenStack
through the nova-volume driver architecture. The OpenStack project Cinder will
probably replace nova-volume, and the XIV nova volume driver will offer full
functionality in a future release.
– nova-network manages the network by setting up bridge or changes to iptables rules.
– nova-schedule, which is implemented with RabbitMQ or Qpid, determines where
instances run based on requests that are in the message queue.
– The SQL database stores items for the cloud. The items can be a type of instances,
available networks, projects, and so on.
– nova-console and nova-consoleauth offer a proxy to access the virtual machines to
users.
Horizon (Dashboard) provides a modular web-based user interface for all the OpenStack
services. With this web GUI, you can perform most operations on your cloud. You can
create volumes, launch an instance, assign IP addresses, and set access controls.
Keystone (Identity) provides authentication and authorization for all the OpenStack
services. It also provides a service catalog of services within a particular OpenStack
cloud.
Quantum (Network) provides “network connectivity as a service” between interface
devices that are managed by other OpenStack services (most likely Nova). The service
works by allowing users to create their own networks and then attach interfaces to them.
Cinder (Block Storage) provides persistent block storage to guest VMs. This project was
born from code that was originally in Nova (the nova-volume service). The IBM Storage
Driver for OpenStack is fully supported with Cinder 2012.11 and provides “block storage
as a service” via iSCSI to VMs.
For more details about Cinder and the IBM Storage Driver for OpenStack, see this web
page:
http://wiki.openstack.org/Cinder
In addition to these core projects, there are a number of “incubation” projects that are being
considered for future inclusion in the OpenStack core.
Regarding IBM Storage, read more at this web page:
http://ibmresearchnews.blogspot.com/2012/10/storage-drivers-take-advantage-of.html
Important: The Folsom release offers two options in terms of block storage: nova-volume
and Cinder. Both are nearly identical in terms of functionality, APIs, and even the general
theory of operation. Illustrations in this paper are based on nova-volume. Remember,
however, that nova-volume is deprecated and will be removed at the Grizzly release.
6 Using the IBM XIV Storage System in OpenStack Cloud Environments
Figure 1 depicts the OpenStack services.
Figure 1 OpenStack architecture
Getting started
To successfully implement and test the OpenStack cloud environment by using the IBM
Storage Driver for OpenStack, follow these steps:
1. Install a supported Linux Distribution on every node (for example, any server that is
connected to the network where a Nova component is installed).
2. Configure separate networks: a management network, a storage network, and a service
network for public access to cloud services.
3. Install and configure a supported database to store credentials and centralized items.
4. Install and configure the cloud controller.
5. Install and configure the OpenStack components (Network, Compute, and Volume) on the
other nodes.
6. Create a storage pool for the OpenStack on the XIV Storage System
7. Install IBM Storage Driver for OpenStack on the Compute Node.
8. Install and configure the supported hypervisors.
9. Build and import operating system images to the catalog.
Important: The storage pool must be created prior to installing the storage driver for
OpenStack.
Restriction: The driver supports a single XIV Storage System. To use multiple storage
systems, multiple instances of the driver must be run.
Using the IBM XIV Storage System in OpenStack Cloud Environments 7
In the environment that we used for our experimentation, the OpenStack infrastructure is set
up with a single node that is hosted by Ubuntu Server 12.04.1 Long-Term Support (LTS). The
following key components were installed and configured:
Control Node
Image Node
Volume Node (Cinder)
Compute Node
IBM Storage Driver for OpenStack
IBM XIV Storage System Gen3
OpenStack system requirements
Before you deploy the supported infrastructure, verify that you have the appropriate
hardware. Ensure that you have the servers, SAN, and IP switches that are required to set
the environment. See Table 2.
For the latest information, see the release notes at this website:
http://pic.dhe.ibm.com/infocenter/strhosts/ic/topic/com.ibm.help.strghosts.doc/nov
a_pdfs.html
Hardware specifications
There are several ways to implement the Nova OpenStack infrastructure. Consider single
and the multiple node configurations:
Single node: We used this configuration for our test purposes (it is understood that we
cannot expect great performance from such a small environment). This configuration
cannot deliver the performance that most cloud environments require. A virtualized
environment can be enough to deploy this configuration. See Figure 2 on page 8.
Multiple nodes: In this environment, Nova components can be distributed across several
systems. Use this setup for a typical production environment. For small environments, see
Figure 3 and Table 3 on page 8. For the requirements for larger environments, see Table 4
on page 9.
Table 2 Single-node requirements
Installation and configuration: Detailed installation and configuration steps for all
required components (Linux, network, or SAN configuration, and so on) are beyond the
scope of this paper.
Nova component Minimum requirements Preferred setup
Controller
Network
Volume
Compute
IBM Storage Driver for
OpenStack
Ubuntu 12.04 or later, x64
edition
CPU: Dual-core 64 bits
RAM: 8 GB
Disk Drive: 60 GB
Network: 1 x 1 GbE
Ubuntu 12.04 or later, x64
edition
CPU: Dual-core 64 bits
RAM: 16 GB
Disk Drive: 80 GB
Network: 1 x 1 GbE
8 Using the IBM XIV Storage System in OpenStack Cloud Environments
Figure 2 Nova single node
Table 3 Multiple node (small)
Nova component Minimum requirements Preferred setup
Controller
Network
Volume
Ubuntu 12.04 or later, x64
edition
CPU: Dual-core 64 bits
RAM: 8 GB
Disk Drive: 60 GB
Network: 1 x 1 GbE
Ubuntu 12.04 or later, x64
edition
CPU: Dual-core 64 bits
RAM: 8 GB
Disk Drive: 60 GB
Network: 1 x 1 GbE
Compute Node
IBM Storage Driver for
OpenStack
Ubuntu 12.04 or later, x64
edition
CPU: Quad core
RAM: 16 GB
Disk Drive: 60 GB
Network: 2 x 1 GbE
Ubuntu 12.04 or later, x64
edition
CPU: > Quad core
RAM: > 32 GB
Disk Drive: 60 GB
Network: 1 x 1GbE +
1 x 10 GbE
SAN
IP
Nova Single Node
Contr oller, Volume, Network,
Compute Node, IBM Storage
Driver for OpenStack
iSCSI attachm ent
Nova Single Node
Contr oller, Volume, Network,
Compute Node, IBM Storage
Driver for OpenStack
Fibre Channel Attachment
XIV
SAN
IP
Nova Single Node
Controller, Volume, Network,
Compute Node, IBM Storage
Driver for OpenStack
iSCSI attachment
Nova Single Node
Controller, Volume, Network,
Compute Node
Fibre Channel Attachment
XIV
Using the IBM XIV Storage System in OpenStack Cloud Environments 9
Figure 3 Nova multiple node
Table 4 Multiple-node large environment requirements
Nova component Minimum requirements Preferred setup
Controller Node Ubuntu 12.04 or later, x64
edition
CPU: Dual core
RAM: 8 GB
Disk Drive: 60 GB
Network: 1 x 1 GbE
Ubuntu 12.04 or later, x64
edition
CPU: Dual core
RAM: 8 GB
Disk Drive: 60 GB
Network: 1 x 1 GbE
Network Node Ubuntu 12.04 or later, x64
edition
CPU: 1 x 64 bits
RAM: 1 GB
Disk Drive: 60 GB
Network: 1 x 1GbE
Ubuntu 12.04 or later, x64
edition
CPU: 1 x 64 bits
RAM: 4 GB
Disk Drive: 60 GB
Network: 1 x 1 GbE
Volume (Cinder)Node Ubuntu 12.04 or later, x64
edition
CPU: Dual core
RAM: 4 GB
Disk Drive: 30 GB
Network: 1 x 1 GbE
Ubuntu 12.04 or later, x64
edition
CPU: Dual core
RAM: 4 GB
Disk Drive: > 60 GB
Network: 1 x 1 GbE + 1 x
10 GbE
SAN: 1 Fibre Channel (FC) card
Controller Node
Contr oller Node
Compute Node
Storage Node
Storage Node
Cinder Node
IBM Storage Driver for OpenStack
XIV
External
Network
IP
SAN
10 Using the IBM XIV Storage System in OpenStack Cloud Environments
Installation
The first step is to install Ubuntu Server 12.04.1 (x64) and then to update the APT repository
with OpenStack Folsom. Then, install the MySQL Server and OpenStack components.
Repository configuration
To ensure that you have the up-to-date release of the operating system, update the system.
Add the appropriate repository for OpenStack and add the following lines to
/etc/apt/sources.list:
deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/folsom main
deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-proposed/folsom main
Then, update the system as shown in Example 1.
Example 1 APT repository
# sudo aptitude update
# sudo aptitude install ubuntu-cloud-keyring
# sudo aptitude upgrade
Configuration prerequisite
To avoid issues when you use bridging with nova-dhcpbridge or an HTTP service, consider
some optional dependencies and install the initial packages as shown in Example 2. These
packages are mandatory because they provide important utilities that you need.
Example 2 Installing initial packages
# sudo aptitude install dnsmasq-utils bridge-utils
In a multiple-node configuration, the Network Time Protocol (NTP) server must be used to
synchronize time on all OpenStack nodes. Install NTP as shown in Example 3 on page 10.
Example 3 Installing the NTP server
# sudo aptitude install ntp
Compute Node Ubuntu 12.04 or later, x64
edition
CPU: Dual-core 64 bits
RAM: 4 GB
Disk Drive: 30 GB
Network: 2 x 1 GbE
SAN: 2 x 1 Fibre Channel card
Ubuntu 12.04 or later, x64
edition
CPU: > Quad-core 64 bits with
Intel VT or AMD-V
RAM: 32 GB
Disk Drive: >60 GB
Network: 1 x 1 GbE + 2 x
10 GbE
SAN: 2 x Fibre Channel card
Important: These requirements are provided as is and are based on code that was
available at the time of writing this paper. For the latest information, see the IBM Storage
Driver for OpenStack release notes at this web page:
http://pic.dhe.ibm.com/infocenter/strhosts/ic/topic/com.ibm.help.strghosts.doc/
nova_pdfs.html
Nova component Minimum requirements Preferred setup
Using the IBM XIV Storage System in OpenStack Cloud Environments 11
Verify the service is running:
# service ntp status
* NTP server is running
MySQL database
OpenStack uses several databases to store configuration items. Nova, Keystone, and Glance
can use MySQL, PostgreSQL, or SQLite3. In our environment, we use MySQL. Follow these
steps:
1. To install MySQL, run the following command:
# sudo aptitude install mysql-server
Set a new password for the root MySQL user as requested.
2. Validate that the database can be stopped and restarted. Also, validate that the
administrator’s password that was requested during the MySQL installation can be used
as shown in Example 4.
Example 4 Validate MySQL administrator account
# mysql -u root -ppassword
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 266
Server version: 5.5.29-0ubuntu0.12.04.1 (Ubuntu)
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> quit
Bye
To start MySQL after the reboot, run this command:
# sudo chkconfig mysql on
Keystone (Identity) installation and initial configuration
Keystone is the main authentication repository for all OpenStack services. Start by installing
and configuring Keystone. Then, populate the database with users, tenants, and services.
The assumption is that the repository is set up correctly and that you have the latest
OpenStack Folsom release. To set up the repository, see “Repository configuration” on
page 10.
Install the openstack-keystone package by running the following command:
# sudo aptitude install keystone
Administrator name and password: In our example, the MySQL database
administrator is root and the password is passw0rd.
12 Using the IBM XIV Storage System in OpenStack Cloud Environments
After the Keystone installation, create a database that is named keystone. Then, create the
tables that are required to store Keystone Items.
Creating the keystone database manually
Create an empty database that is named keystone:
1. Create the keystone database with the command:
# mysql -u root -ppassw0rd -e ‘CREATE DATABASE keystone;’
2. To create the MySQL Keystone user and give full access to the keystone database that
you created, run this command:
# mysql -u root -ppassw0rd -e ‘GRANT ALL ON keystone.* TO
“keystone”@”localhost” IDENTIFIED BY “YOUR_KEYSTONE_PASSWORD”;’
Creating the keystone admin credential
To administer Keystone, you need to “source” the Keystone client’s environment variable with
the SERVICE_TOKEN and SERVICE_ENDPOINT. Follow these steps:
1. At the command prompt, enter the following commands:
# export SERVICE_TOKEN=$(openssl rand -hex 10)
# export SERVICE_ENDPOINT=http://127.0.0.1:35357/v2.0
2. Save the value of SERVICE_TOKEN in a file:
# echo $SERVICE_TOKEN > ~/keystone_admin_token
3. Update the /etc/keystone/keystone.conf file by setting the admin_token and connection
options:
# admin_token = ADMIN replaced by:
admin_token = SERVICE_TOKEN_VALUE
and
# connection = sqlite:////var/lib/keystone/keystone.db replaced by:
connection = mysql://keystone:KEYSTONE_PASSWORD@HOST_NAME/keystone
Keystone installation script: The Keystone installation script creates an SQLite database
on /var/lib/keystone/. We do not use SQLite as the main repository because the
preferred method is to use the separate MySQL installation process that we described in
“MySQL database” on page 11.
Password: In the preceding command, you created a MySQL user named “keystone”
with the password YOUR_KEYSTONE_PASSWORD. Replace YOUR_KEYSTONE_PASSWORD with
your own password and keep it in a safe place.
Tip: We use OpenSSL’s rand function, which might not be installed on your system, to
generate the Service Token Key.
Tip: Save the generated file (keystone_admin_token) in a safe place because the
content is used to configure other OpenStack components.
Using the IBM XIV Storage System in OpenStack Cloud Environments 13
Starting the Keystone service
Start the Keystone service and make it part of the system start procedure:
1. To start the Keystone service, run this command:
# sudo service openstack-keystone start
2. To make the service available after the system starts, run this command:
# sudo chkconfig openstack-keystone on
Verify that the Keystone service is running and that no errors exist in the Keystone log file:
1. Check whether the Keystone service is running. Run the command that is shown in
Example 5.
Example 5 Check Keystone service
# sudo service keystone status
keystone start/running, process 909
2. Check the error log:
# grep -i error /var/log/keystone/keystone.log
Synchronizing the keystone database
You can now synchronize the keystone database. The synchronization process creates the
required tables in the database. To synchronize the keystone database, run the
keystone-manage db_sync command in the terminal prompt as the root user.
After the database initialization, you can create users, roles, tenants, and services.
Creating users, roles, and tenants
When you install Keystone, the database tables are empty. You must create several items to
administer and allow other components to interact with Keystone. Example 6 shows how to
create a user that is called admin. Then, give that user the admin role within a defined tenant
named admin. Then, use the admin user that you created to manage Keystone.
Creating a user
Create an admin user with the Keystone user-create command as shown in Example 6.
Example 6 Keystone creating a user
# keystone user-create --name admin --pass passw0rd
+----------+----------------------------------------------------------------------
---------------------------------------------------+
| property | value
|
+----------+----------------------------------------------------------------------
---------------------------------------------------+
| email |
|
| enabled | true
|
Important: If you created the database manually, you must synchronize the database in
this way.
14 Using the IBM XIV Storage System in OpenStack Cloud Environments
| id |
c8bcbaaa5a244e49919918bda9a894a4 |
| name | admin
|
| password |
$6$rounds=40000$wo3vvujrr2vxnu.c$5d5chfsptblnnsn/bnpnxwgtwhkkwnkrwgv/wrzsp9qu4tgok
unvdboavbz1p711o.2klfyqn/cwyhipckx2t/ |
| tenantid |
|
+----------+----------------------------------------------------------------------
---------------------------------------------------+
Creating a role
Create a role with the Keystone role-create command as shown in Example 7.
Example 7 Keystone creating a role
# keystone role-create --name admin
+----------+----------------------------------+
| Property | Value |
+----------+----------------------------------+
| id | fb2c178790704412bf0cefaa66c5d01a |
| name | admin |
+----------+----------------------------------+
Creating a tenant
Create a tenant with the Keystone tenant-create command as shown in Example 8.
Example 8 Keystone creating a tenant
# keystone tenant-create --name admin
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | |
| enabled | True |
| id | e7b3098b7ac140c9ae9b0c78136ee7dc |
| name | admin |
+-------------+----------------------------------+
Add the admin user to the admin tenant with an admin role, as illustrated in Example 9.
Example 9 Keystone adding a user to a tenant with a role
# keystone user-role-add --user-id c8bcbaaa5a244e49919918bda9a894a4 
> --role-id fb2c178790704412bf0cefaa66c5d01a 
> --tenant-id e7b3098b7ac140c9ae9b0c78136ee7dc
Explanation: The IDs come from the previous commands. The user-add-role command
has no output.
Using the IBM XIV Storage System in OpenStack Cloud Environments 15
Defining an admin credential
A credential is the identification data, which is generally a user name, password, and API key,
that proves your identity. A credential is used for your authentication to the Identity service
before the Identity service issues a token to you. You can use this token with Keystone or
nova client for subsequent requests within the cloud infrastructure. The token, which is valid
for a defined duration, is required to access cloud resources.
To simplify the process, create the admin user’s credentials by using environment variables.
Table 5 describes the environment variables.
Table 5 Client environment variables
Create a credential file:
# echo export OS_USERNAME=admin >keystonerc_admin
# echo export OS_TENANT_NAME=admin >>keystonerc_admin
# echo export OS_PASSWORD=passw0rd >>keystonerc_admin
# echo export OS_AUTH_URL=http://127.0.0.1:35357/v2.0/ >>keystonerc_admin
Then, verify that the user can use the keystone client as shown in Example 10.
Example 10 Keystone validating the admin accounts
# . ~/keystonerc_admin
# keystone user-list
+----------------------------------+-------+---------+-------+
| id | name | enabled | email |
+----------------------------------+-------+---------+-------+
| c8bcbaaa5a244e49919918bda9a894a4 | admin | True | |
+----------------------------------+-------+---------+-------+
Environment variable Description
OS_USERNAME Your OpenStack user name.
OS_PASSWORD Your OpenStack user password.
OS_TENANT_NAME Your tenant name, which is provided with your
user name typically.
OS_AUTH_URL The endpoint for the Identity service (Keystone),
which the nova client uses for authentication.
Include the trailing forward slash (/) in the URL.
Otherwise, you receive a 404 error.
NOVACLIENT_DEBUG Set to 1 to show the underlying cURL (cURL is a
command-line tool for running REST API
requests with OpenSSL) commands with the
embedded API requests in the command
responses. Otherwise, omit this variable.
16 Using the IBM XIV Storage System in OpenStack Cloud Environments
Creating the Service Tenant
This special tenant contains the services to be made available through the service catalog. To
create the Service Tenant, run the Keystone tenant-create client command as shown in
Example 11.
Example 11 Keystone creating the Service Tenant
# keystone tenant-create --name service --description "Service Tenant" --enabled
true
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | Service Tenant |
| enabled | True |
| id | 8e40211618884c169e7c98166e903531 |
| name | service |
+-------------+----------------------------------+
Creating the glance user
The Glance service has many interactions with Keystone and other OpenStack services. To
allow Glance to interact and use cloud services, create the glance user in the Service Tenant.
Create the glance service user in the Service Tenant as shown in Example 12.
Example 12 Creating the service user in the Service Tenant
# keystone user-create --name glance --pass password --tenant_id
8e40211618884c169e7c98166e903531 --enabled true
+----------+----------------------------------------------------------------------
---------------------------------------------------+
| Property | Value
|
+----------+----------------------------------------------------------------------
---------------------------------------------------+
| email |
|
| enabled | True
|
| id |
39080354a8d6429da958931dab748ad4 |
| name | glance
|
| password |
$6$rounds=40000$TEM9ujWBDe/w4R30$bdmbuItECsSF3JEeGBEnMuGylTyFhItbIDvSTsF5Y4SBnPNW3
Cp62nJNBiO.Y5j3UlmnyNgwpxIfDbZjvYB1j1 |
| tenantId |
8e40211618884c169e7c98166e903531 |
+----------+----------------------------------------------------------------------
---------------------------------------------------+
Important: You must create a user in the Service Tenant for all services that are added
(Nova service user, EC2 user, and so on.)
Using the IBM XIV Storage System in OpenStack Cloud Environments 17
Grant the admin role to the glance user in the Service Tenant by using this command:
# keystone user-role-add --user-id 39080354a8d6429da958931dab748ad4 --role-id
fb2c178790704412bf0cefaa66c5d01a --tenant-id 8e40211618884c169e7c98166e903531
Creating the Nova service user
Create a Nova service user that is named nova in the Service Tenant as shown in
Example 13.
Example 13 Creating the Nova service user in the Service Tenant
# keystone user-create --tenant-id 8e40211618884c169e7c98166e903531 --name nova
--pass password --enabled true
+----------+-----------------------------------------------------------------------------+
| Property | Value
|
+----------+-----------------------------------------------------------------------------+
| email |
| enabled | True
| id |
09d138247dda46659f078c9a322901a8 |
| name | nova
|
| password |
$6$rounds=40000$7M5yTg0lPB/G3NEE$OCLxu5kwxwKO.5JCWH7Ev4gre6rU5N0ZV1emFyQEuVO8RE/XU5QgHncEXk
PZr4W4BZaS4e0tf7BGG5a37xu9/. |
| tenantId | 8e40211618884c169e7c98166e903531
|
+----------+-------------------------------------------------------------------------------
------------------------------------------+
Grant the admin role to the nova user in the Service Tenant by using this command:
# keystone user-role-add --user-id 09d138247dda46659f078c9a322901a8 --role-id
fb2c178790704412bf0cefaa66c5d01a --tenant-id 8e40211618884c169e7c98166e903531
Creating the EC2 user
Elastic Compute Cloud (EC2) is an Amazon public cloud. OpenStack has APIs that are
compatible with EC2. This compatibility support is intended to migrate client applications that
are written for Amazon Web Services to OpenStack web services. To offer this compatibility,
you must create the EC2 service.
Create an EC2 service user that is named ec2 in the Service Tenant as shown in Example 14.
Example 14 Creating the EC2 service user in the Service Tenant
# keystone user-create --tenant-id 8e40211618884c169e7c98166e903531 --name ec2
--pass password --enabled true
+----------+----------------------------------------------------------------------
---------------------------------------------------+
| Property | Value
|
+----------+----------------------------------------------------------------------
---------------------------------------------------+
| email |
|
| enabled | True
|
18 Using the IBM XIV Storage System in OpenStack Cloud Environments
| id |
edcdf01973dd44f8857896b95ecf9d09 |
| name | ec2
|
| password |
$6$rounds=40000$zxHONO76nUjXilpe$j1z318Gp49ivGaLqcQYH0w5xRa8eDfED//tSWbs4zFfy1WTnp
anuzMG2pq8Wzr3HXbnty4J9VEg232Z4wKXcJ0 |
| tenantId |
8e40211618884c169e7c98166e903531 |
+----------+----------------------------------------------------------------------
---------------------------------------------------+
Grant the admin role to the ec2 user in the Service Tenant:
# keystone user-role-add --user-id edcdf01973dd44f8857896b95ecf9d09 --role-id
fb2c178790704412bf0cefaa66c5d01a --tenant-id 8e40211618884c169e7c98166e903531
Creating the Swift user
Create a Swift service user that is named swift in the Service Tenant as shown in
Example 15.
Example 15 Creating the Swift user in the Service Tenant
# keystone user-create --tenant-id 8e40211618884c169e7c98166e903531 --name swift
--pass password --enabled true
+----------+----------------------------------------------------------------------
---------------------------------------------------+
| Property | Value
|
+----------+----------------------------------------------------------------------
---------------------------------------------------+
| email |
|
| enabled | True
|
| id |
7059a9f98c4c4e4d921e0d24de562624 |
| name | swift
|
| password |
$6$rounds=40000$rjzQRF0fqfqkcWZi$9nYH3utSrw27EejdckVA/TbzJBuJ9l3TwvcM0B.MxZc75zqhZ
B2v0axe4vPSciKQaWFWwtgUTv5hvrEDdXhwN. |
| tenantId |
8e40211618884c169e7c98166e903531 |
+----------+----------------------------------------------------------------------
---------------------------------------------------+
Grant the admin role to the swift user in the Service Tenant:
# keystone user-role-add --user-id 7059a9f98c4c4e4d921e0d24de562624 --role-id
fb2c178790704412bf0cefaa66c5d01a --tenant-id 8e40211618884c169e7c98166e903531
Example 16 on page 19 shows the user and tenant definitions that we created.
Using the IBM XIV Storage System in OpenStack Cloud Environments 19
Example 16 OpenStack items list
# keystone user-list
+----------------------------------+--------+---------+-------+
| id | name | enabled | email |
+----------------------------------+--------+---------+-------+
| 09d138247dda46659f078c9a322901a8 | nova | True | |
| 39080354a8d6429da958931dab748ad4 | glance | True | |
| 7059a9f98c4c4e4d921e0d24de562624 | swift | True | |
| c8bcbaaa5a244e49919918bda9a894a4 | admin | True | |
| edcdf01973dd44f8857896b95ecf9d09 | ec2 | True | |
+----------------------------------+--------+---------+-------+
# keystone role-list
+----------------------------------+-------+
| id | name |
+----------------------------------+-------+
| fb2c178790704412bf0cefaa66c5d01a | admin |
+----------------------------------+-------+
# keystone tenant-list
+----------------------------------+---------+---------+
| id | name | enabled |
+----------------------------------+---------+---------+
| 8e40211618884c169e7c98166e903531 | service | True |
| e7b3098b7ac140c9ae9b0c78136ee7dc | admin | True |
+----------------------------------+---------+---------+
Enabling Keystone
To enable the compatibility for Swift with the Amazon Simple Storage Service (S31) API in
Keystone, ensure that you define a filter. Enable the new filter in the
/etc/keystone/keystone.conf file:
[filter:s3_extension]
paste.filter_factory = keystone.contrib.s3:S3Extension.factory
[pipeline:admin_api]
pipeline = token_auth admin_token_auth xml_body json_body debug ec2_extension
s3_extension crud_extension admin_service
Defining services
You must perform two Keystone operations when you define an OpenStack service in the
catalog.
First, use the Keystone service-create command to enter a service item in the keystone
database. For each service, you must define a type. The following services require these
types:
Nova service type is compute.
EC2 service type is ec2.
Glance service type is image.
Keystone service type is identify.
1
Amazon S3 is a simple web services interface that can be used to store and retrieve any amount of data, at any
time, from anywhere on the web.
20 Using the IBM XIV Storage System in OpenStack Cloud Environments
Then, in a second step, with the Keystone endpoint-create command, create an endpoint
item that links back to the service that you entered. This endpoint item specifies how the
client can connect to the service.
Example 17 through Example 22 on page 22 show the definitions of an associated endpoint
for the mandatory services.
Example 17 Creating the Keystone service with its endpoint
# keystone service-create --name=keystone --type=identity
--description="Keystone Identity Service"
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | Keystone Identity Service |
| id | dbbd584177e84b2b95ff4cd4033de6b8 |
| name | keystone |
| type | identity |
+-------------+----------------------------------+
# keystone endpoint-create --region RegionOne --service_id
dbbd584177e84b2b95ff4cd4033de6b8 --publicurl 'http://172.16.104.169:5000/v2.0'
--adminurl 'http://172.16.104.169:35357/v2.0' --internalurl
'http://172.16.104.169:5000/v2.0'
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| adminurl | http://172.16.104.169:35357/v2.0 |
| id | 0ddb84d4ef534ecaaa93901836e6f58e |
| internalurl | http://172.16.104.169:5000/v2.0 |
| publicurl | http://172.16.104.169:5000/v2.0 |
| region | RegionOne |
| service_id | dbbd584177e84b2b95ff4cd4033de6b8 |
+-------------+----------------------------------+
Example 18 shows the creation of a Compute service with its associated endpoint.
Example 18 Creating the Compute service with its endpoint
# keystone service-create --name nova --type compute --description="Nova
Compute Service"
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | Nova Compute Service |
| id | bc65b85d04524b36b502cbd3f61f504c |
| name | nova |
| type | compute |
+-------------+----------------------------------+
# keystone endpoint-create --region RegionOne
--service_id=bc65b85d04524b36b502cbd3f61f504c
--publicurl='http://172.16.104.169:8774/v2/%(tenant_id)s'
--internalurl='http://172.16.104.169:8774/v2/%(tenant_id)s'
--adminurl='http://172.16.104.169:8774/v2/%(tenant_id)s'
+-------------+---------------------------------------------+
Using the IBM XIV Storage System in OpenStack Cloud Environments 21
| Property | Value |
+-------------+---------------------------------------------+
| adminurl | http://172.16.104.169:8774/v2/%(tenant_id)s |
| id | e02e542363524bf8b9288526bea1825d |
| internalurl | http://172.16.104.169:8774/v2/%(tenant_id)s |
| publicurl | http://172.16.104.169:8774/v2/%(tenant_id)s |
| region | RegionOne |
| service_id | bc65b85d04524b36b502cbd3f61f504c |
+-------------+---------------------------------------------+
Example 19 shows the creation of the Volume service with its associated endpoint.
Example 19 Creating the Volume service with its endpoint
# keystone service-create --name volume --type volume --description="Nova
Volume Service"
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | Nova Volume Service |
| id | c5826ce21c4e4268a175dee78453ec79 |
| name | volume |
| type | volume |
+-------------+----------------------------------+
# keystone endpoint-create --region RegionOne
--service_id=c5826ce21c4e4268a175dee78453ec79
--publicurl='http://172.16.104.169:8776/v1/%(tenant_id)s'
--internalurl='http://172.16.104.169:8776/v1/%(tenant_id)s'
--adminurl='http://172.16.104.169:8776/v1/%(tenant_id)s'
+-------------+---------------------------------------------+
| Property | Value |
+-------------+---------------------------------------------+
| adminurl | http://172.16.104.169:8776/v1/%(tenant_id)s |
| id | 1b6ef336a3444382b0bc87cf8012280e |
| internalurl | http://172.16.104.169:8776/v1/%(tenant_id)s |
| publicurl | http://172.16.104.169:8776/v1/%(tenant_id)s |
| region | RegionOne |
| service_id | c5826ce21c4e4268a175dee78453ec79 |
+-------------+---------------------------------------------+
Example 20 shows the creation of the Image service with its associated endpoint.
Example 20 Creating the Image service with its endpoint
# keystone service-create --name glance --type image --description="Glance
Image Service"
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | Glance Image Service |
| id | 4b4e999ea40b42f7abfdd4a88e29e72b |
| name | glance |
| type | image |
+-------------+----------------------------------+
22 Using the IBM XIV Storage System in OpenStack Cloud Environments
# keystone endpoint-create --region RegionOne
--service_id=4b4e999ea40b42f7abfdd4a88e29e72b
--publicurl='http://172.16.104.169:9292/v1'
--internalurl='http://172.16.104.169:9292/v1'
--adminurl='http://172.16.104.169:9292/v1'
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| adminurl | http://172.16.104.169:9292/v1 |
| id | 63400c355f814b00b07480de8b65ce85 |
| internalurl | http://172.16.104.169:9292/v1 |
| publicurl | http://172.16.104.169:9292/v1 |
| region | RegionOne |
| service_id | 4b4e999ea40b42f7abfdd4a88e29e72b |
+-------------+----------------------------------+
Example 21 shows the creation of the EC2 service with its associated endpoint.
Example 21 Creating the EC2 service with its endpoint
# keystone service-create --name ec2 --type ec2 --description="EC2
Compatibility Layer"
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | EC2 Compatibility Layer |
| id | d6359302111948319b0ebb48e7a42b30 |
| name | ec2 |
| type | ec2 |
+-------------+----------------------------------+
# keystone endpoint-create --region RegionOne
--service_id=d6359302111948319b0ebb48e7a42b30
--publicurl='http://172.16.104.169:8773/services/Cloud'
--internalurl='http://172.16.104.169:8773/services/Cloud'
--adminurl='http://172.16.104.169:8773/services/Admin'
+-------------+-------------------------------------------+
| Property | Value |
+-------------+-------------------------------------------+
| adminurl | http://172.16.104.169:8773/services/Admin |
| id | d0d9328cd8d843d4a5bbaeaa265437e4 |
| internalurl | http://172.16.104.169:8773/services/Cloud |
| publicurl | http://172.16.104.169:8773/services/Cloud |
| region | RegionOne |
| service_id | d6359302111948319b0ebb48e7a42b30 |
+-------------+-------------------------------------------+
Example 22 shows the creation of the Storage service with its associated endpoint.
Example 22 Creating the Storage service with its endpoint
# keystone service-create --name swift --type object-store
--description="Object Store Service"
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
Using the IBM XIV Storage System in OpenStack Cloud Environments 23
| description | Object Store Service |
| id | 4cade54c7d8c44d393dff1a887e06700 |
| name | swift |
| type | object-store |
+-------------+----------------------------------+
# keystone endpoint-create --region RegionOne
--service_id=4cade54c7d8c44d393dff1a887e06700 --publicurl
'http://172.16.104.169:8080/v1/AUTH_%(tenant_id)s' --adminurl
'http://172.16.104.169:8080/' --internalurl
'http://172.16.104.169:8080/v1/AUTH_%(tenant_id)s'
+-------------+--------------------------------------------------+
| Property | Value |
+-------------+--------------------------------------------------+
| adminurl | http://172.16.104.169:8080/ |
| id | 55b151af1377469686bad18e238e2d4e |
| internalurl | http://172.16.104.169:8080/v1/AUTH_%(tenant_id)s |
| publicurl | http://172.16.104.169:8080/v1/AUTH_%(tenant_id)s |
| region | RegionOne |
| service_id | 4cade54c7d8c44d393dff1a887e06700 |
+-------------+--------------------------------------------------+
Validating the Keystone installation with cURL
Install cURL (curl), which is a command-line tool for running REST API requests with
OpenSSL (openssl). If you are required to install cURL, run this command:
# aptitude install curl openssl
The command in Example 23 shows a query to ensure that Keystone (Identity service) is
running. In return, you receive a token for the admin user.
Example 23 Validating the Keystone installation with the cURL tool
# curl -d '{"auth": {"tenantName": "admin", "passwordCredentials": {"username":
"admin", "password": "passw0rd"}}}' -H "Content-type:application/json"
http://172.16.104.169:35357/v2.0/tokens | python -mjson.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2555 0 2452 100 103 18580 780 --:--:-- --:--:-- --:--:-- 18717
{
"access": {
"metadata": {
"is_admin": 0,
"roles": [
"fb2c178790704412bf0cefaa66c5d01a"
]
},
"serviceCatalog": [
{
"endpoints": [
{
"adminURL":
"http://172.16.104.169:8774/v2/e7b3098b7ac140c9ae9b0c78136ee7dc",
"id": "e02e542363524bf8b9288526bea1825d",
"internalURL":
"http://172.16.104.169:8774/v2/e7b3098b7ac140c9ae9b0c78136ee7dc",
24 Using the IBM XIV Storage System in OpenStack Cloud Environments
"publicURL":
"http://172.16.104.169:8774/v2/e7b3098b7ac140c9ae9b0c78136ee7dc",
"region": "RegionOne"
}
],
"endpoints_links": [],
"name": "nova",
"type": "compute"
},
{
"endpoints": [
{
"adminURL": "http://172.16.104.169:9292/v1",
"id": "63400c355f814b00b07480de8b65ce85",
"internalURL": "http://172.16.104.169:9292/v1",
"publicURL": "http://172.16.104.169:9292/v1",
"region": "RegionOne"
}
],
"endpoints_links": [],
"name": "glance",
"type": "image"
},
Another way to test Keystone is to “source” a credential as shown in Example 24. Then, run a
command by using the keystone client.
Example 24 Validating the Keystone installation with the keystone command
# cat > keystonerc_admin
export OS_USERNAME=admin
export OS_PASSWORD=passw0rd
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://127.0.0.1:5000/v2.0/
enter CTRL-D to close the file keystonerc_admin
# source keystonerc_admin
# keystone user-list
+----------------------------------+--------+---------+-------+
| id | name | enabled | email |
+----------------------------------+--------+---------+-------+
| 09d138247dda46659f078c9a322901a8 | nova | True | |
| 39080354a8d6429da958931dab748ad4 | glance | True | |
| 7059a9f98c4c4e4d921e0d24de562624 | swift | True | |
| c8bcbaaa5a244e49919918bda9a894a4 | admin | True | |
| edcdf01973dd44f8857896b95ecf9d09 | ec2 | True | |
+----------------------------------+--------+---------+-------+
Keystone client: The keystone client is installed with the Keystone packages.
Using the IBM XIV Storage System in OpenStack Cloud Environments 25
Installing Glance
After the Keystone installation, Glance (Image service) must be installed. Install the Glance
package by using this command:
# aptitude install glance
Or, you can initialize the glance database manually:
# mysql -u root -p
mysql> CREATE DATABASE glance;
mysql> GRANT ALL ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'passw0rd';
Enter quit at the mysql> prompt to exit MySQL.
Configuring Glance (Image service to use Keystone)
Keystone is the main authentication processor. Update the Glance configuration files to use
Keystone and to set the MySQL user and password. Follow these steps:
1. To update the configuration files, run the commands as shown in Example 25.
Example 25 Updating the Glance configuration files
# /etc/glance/glance-api-paste.ini
[filter:authtoken]
admin_token = $(cat ~/keystone_admin_token)
admin_tenant_name = service
admin_user = glance
admin_password = passw0rd
/etc/glance/glance-api.conf
[paste_deploy]
flavor = keystone
# Allow access to version 1 of glance api
enable_v1_api = True
# Allow access to version 2 of glance api
enable_v2_api = True
/etc/glance/glance-registry.conf
sql_connection = "mysql://glance:passw0rd@localhost/glance"
2. Synchronize the Glance database with the glance-manage command:
# glance-manage db_sync
3. Start the glance-api and glance-registry services:
# for svc in registry api ; do service glance-$svc start; done
4. Make Glance available after the reboot:
# for svc in registry api ; do chkconfig glance-$svc on; done
Attention: Depending on which python script version you use, errors might appear in the
database. In this case, delete the glance database and the glance user in MySQL, and
follow the manual Glance database initialization that is shown next.
Troubleshooting: You can troubleshoot the Image service by checking the
/var/log/glance/registry.log and /var/log/glance/api.log files.
26 Using the IBM XIV Storage System in OpenStack Cloud Environments
You can check that Glance is running correctly by issuing the Glance command:
# glance index
There is no output because Glance does not have any images yet.
Adding an image to Glance
For our example, we use an image that we created with the virt-install command. You
might want to create your own image or download the test image as shown in Example 27.
Follow these steps:
1. Create the image. Example 26 shows how to create an image from the Red Hat Linux
Server 6.3 Installation ISO DVD.
Example 26 Creating a virt-install image
# sudo virt-install -n rh-qemu-02 -r 1024 --os-type=linux -f
/tmp/red-hat-6.3-server-2.qcow2 -s 8 -c
/home/itso/RHEL6.3-20120613.2-Server-x86_64-DVD1.iso
OpenStack offers several test images that you can download from this website:
http://docs.openstack.org/trunk/openstack-compute/admin/content/starting-images
.html
In our scenario, we use the cirros image. To download the test image, run the command
that is shown in Example 27.
Example 27 External test images for Glance
# mkdir -p /home/itso/images
# cd /home/itso/images
# wget
http://smoser.brickies.net/ubuntu/ttylinux-uec/ttylinux-uec-amd64-12.1_2.6.35-2
2_1.tar.gz
--2012-10-25 07:12:11--
http://smoser.brickies.net/ubuntu/ttylinux-uec/ttylinux-uec-amd64-12.1_2.6.35-2
2_1.tar.gz
Resolving smoser.brickies.net... 173.236.255.44
Connecting to smoser.brickies.net|173.236.255.44|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 24346106 (23M) [application/x-tar]
Saving to: “ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz”
100%[==========================================================================
=========================================>] 24,346,106 370K/s in 85s
2012-10-25 07:13:37 (278 KB/s) - “ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz”
saved [24346106/24346106]
# tar -zxvf ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz
2. Now, you can load the images to Glance as shown in Example 28.
Example 28 Loading images to Glance
# glance image-create --name="tty-linuxkernel" --disk-format=aki
--container-format=aki --file=ttylinux-uec-amd64-12.1_2.6.35-22_1-vmlinuz
+------------------+--------------------------------------+
Using the IBM XIV Storage System in OpenStack Cloud Environments 27
| Property | Value |
+------------------+--------------------------------------+
| checksum | 3ed2965d3f8d877a3ee3e061fd648e9a |
| container_format | aki |
| created_at | 2013-01-28T11:45:06.620419 |
| deleted | False |
| deleted_at | None |
| disk_format | aki |
| id | f792c482-630c-4f83-b969-500d4718aece |
| is_public | False |
| min_disk | 0 |
| min_ram | 0 |
| name | tty-linuxkernel |
| owner | None |
| protected | False |
| size | 4404752 |
| status | active |
| updated_at | 2013-01-28T11:45:06.871922 |
+------------------+--------------------------------------+
# glance image-create --name="tty-linux-ramdisk" --disk-format=aki
--container-format=aki --file=ttylinux-uec-amd64-12.1_2.6.35-22_1-loader
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | 644cf7d6d9e7b41d527e30e8e8c685a4 |
| container_format | aki |
| created_at | 2013-01-28T11:47:36.597966 |
| deleted | False |
| deleted_at | None |
| disk_format | aki |
| id | 243a91a2-dd3b-486c-a7ce-fb395bb924ef |
| is_public | False |
| min_disk | 0 |
| min_ram | 0 |
| name | tty-linux-ramdisk |
| owner | None |
| protected | False |
| size | 96629 |
| status | active |
| updated_at | 2013-01-28T11:47:36.749197 |
+------------------+--------------------------------------+
# glance image-create --name="MY-Linux" --disk-format=qcow2
--container-format=bare --file=ttylinux-uec-amd64-12.1_2.6.35-22_1.img
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | 10047a119149e08fb206eea89832eee0 |
| container_format | bare |
| created_at | 2013-01-28T12:09:10.978193 |
| deleted | False |
| deleted_at | None |
| disk_format | qcow2 |
| id | 6da3fc51-be7e-4e57-ad2d-9d53b3f9b867 |
28 Using the IBM XIV Storage System in OpenStack Cloud Environments
| is_public | False |
| min_disk | 0 |
| min_ram | 0 |
| name | MY-Linux |
| owner | None |
| protected | False |
| size | 25165824 |
| status | active |
| updated_at | 2013-01-28T12:09:11.352986 |
+------------------+--------------------------------------+
3. Verify that the images are correctly loaded into the Glance database as shown in
Example 29.
Example 29 Verifying that the images are loaded in Glance
# glance image-show 6da3fc51-be7e-4e57-ad2d-9d53b3f9b867
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | 10047a119149e08fb206eea89832eee0 |
| container_format | bare |
| created_at | 2013-01-28T12:09:10.978193 |
| deleted | False |
| disk_format | qcow2 |
| id | 6da3fc51-be7e-4e57-ad2d-9d53b3f9b867 |
| is_public | False |
| min_disk | 0 |
| min_ram | 0 |
| name | MY-Linux |
| protected | False |
| size | 25165824 |
| status | active |
| updated_at | 2013-01-28T12:09:11.352986 |
+------------------+--------------------------------------+
Installing Nova Compute
Now, we can install Nova, which is also called Cloud Controller. Nova is responsible for
managing the virtual machine (VM). The Nova installation requires the installation of several
OpenStack services. The OpenStack services are qpid (messaging system), nova-compute,
and memcached (used to speed up authentication, which is done with every request and
insures proper communication with Dashboard).
Install the Cloud Controller packages by using this command:
# aptitude install nova-compute nova-volume nova-network nova-scheduler
nova-objectstore memcached qpidd
Create the Nova database:
1. Connect to the MySQL database by running the mysql -u root -p command.
2. At the MySQL prompt, enter the CREATE DATABASE nova; command.
3. At the MySQL prompt, create the MySQL user and grant access to the nova database:
GRANT ALL ON nova.* TO 'nova'@'localhost' IDENTIFIED BY ‘passw0rd’;
Using the IBM XIV Storage System in OpenStack Cloud Environments 29
4. Enter quit to quit MySQL.
5. Ensure that the owner of the /etc/nova/nova.conf file is set to root:nova. Ensure that the
mode is set to 0640 by entering the following command as the root user:
# groupadd nova
# usermod -g nova nova
# chown -R username:nova /etc/nova
# chmod 640 /etc/nova/nova.conf
6. Update the /etc/nova/nova.conf and /etc/nova/nova/api-paste.ini files:
– Make these updates in the etc/nova/nova.conf file:
[DEFAULT]
sql_connection = "mysql://nova:passw0rd@localhost/nova"
auth_strategy = keystone
network_manager = nova.network.manager.FlatDHCPManager
fixed_range = 192.168.100.0/24
public_interface = eth0
flat_interface = eth0
flat_network_bridge = br100
– Make these updates in the /etc/nova/api-paste.ini file:
[filter:authtoken]
admin_token = YOUR_keystone_admin_token_VALUE
7. Then, stop the Nova services before the database synchronization:
# for svc in api objectstore compute network volume scheduler cert; do sudo
service nova-$svc stop ; sudo chkconfig nova-$svc on ; done
8. Create the tables in the nova database by using the nova-manage command:
# nova-manage db sync
9. Restart the Nova services:
# for svc in api objectstore compute network volume scheduler cert; do sudo
service nova-$svc start ; done
Configuring Qpid
Configure and start Qpid, which provides Advanced Message Queueing Protocol (AMQP) to
the Nova services. In the /etc/qpid/qpidd.conf file, uncomment #auth=yes and set it to
auth=no as shown:
auth=no
Then, start by using these commands:
# sudo service qpidd start
# sudo chkconfig qpidd on
Installing KVM
In our environment, we use kernel-based virtual machine (KVM) as a hypervisor. Follow
these steps:
1. To install the kvm package, run this command:
# aptitude install kvm
30 Using the IBM XIV Storage System in OpenStack Cloud Environments
2. Install the other suggested virtualization packages:
# aptitude install virt-manager libvirt0
Configuring the Nova Compute service to use the KVM hypervisor
We use libvirt, which provides the hypervisor to nova-compute. The nova-compute service
interacts with the KVM through the libvirt service. Follow these steps:
1. Start the hypervisor and make it available after the reboot:
# sudo service libvirtd start
# sudo chkconfig libvirtd on
2. Update the nova.conf file to use the correct hypervisor. Change the following lines in the
/etc/nova/nova.conf file:
[DEFAULT]
connection_type = libvirt
libvirt_type = kvm
libvirt_inject_partition = -1
3. Generate the Secure Shell (ssh) key pair that is used to connect to the VM instance
through SSH.
Before you instantiate a VM, you need to create at least one key pair. This key pair is
injected into the VM so that you can use SSH to connect to the VM.
Create a key pair and add the public key to OpenStack:
# nova keypair-add oskey > oskey.priv
# chmod 600 oskey.priv
Creating the network for VM
Use the bridge br100 for the VM use. Define the network range by using 192.168.100.0/24 as
the fixed range:
# aptitude install bridge-utils
# ip link set eth0 promisc on
# nova-manage network create private --multi_host=T
--fixed_range_v4=192.168.100.0/24 --bridge_interface=br100 --num_networks=1
--network_size=256 -vlan=100
Configuring nova-volume (Cinder)
Either nova-volume or Cinder, which is responsible for handling persistent storage for VMs,
can have multiple back-end storage devices, such as IBM XIV or IBM V7000.
Set up a nova-volume group as a quick and easy way to try out persistent volumes in the
testing environment, as shown in Example 30.
Example 30 nova-volume file-backed Logical Volume Manager (LVM) volume group
# sudo truncate --size 20G ~/nova-volumes
# sudo losetup -fv ~/nova-volumes
Loop device is /dev/loop1
# sudo vgcreate nova-volumes /dev/loop1
Remember: This method must not be used in a production environment.
Using the IBM XIV Storage System in OpenStack Cloud Environments 31
No physical volume label read from /dev/loop0
Physical volume "/dev/loop0" successfully created
Volume group "nova-volumes" successfully created
# vgdisplay nova-volumes
--- Volume group ---
VG Name nova-volumes
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 20.00 GiB
PE Size 4.00 MiB
Total PE 5119
Alloc PE / Size 0 / 0
Free PE / Size 5119 / 20.00 GiB
VG UUID 11yCOi-2je7-oXgd-g0MQ-lLMn-vUr0-taygT6
Start the tgtd (SCSI target daemon) service:
# sudo service tgtd start
# sudo chkconfig tgtd on
Verify the controller installation as shown in Example 31.
Example 31 nova service control
# nova-manage service list
Binary Host Zone Status
State Updated_At
nova-cert cloud01 nova enabled
XXX None
nova-scheduler cloud01 nova enabled
XXX None
nova-compute cloud01 nova enabled
XXX None
nova-network cloud01 nova enabled
XXX None
# nova image-list
+--------------------------------------+-------------------+--------+--------+
| ID | Name | Status | Server |
+--------------------------------------+-------------------+--------+--------+
| 6da3fc51-be7e-4e57-ad2d-9d53b3f9b867 | MY-Linux | ACTIVE | |
| 243a91a2-dd3b-486c-a7ce-fb395bb924ef | tty-linux-ramdisk | ACTIVE | |
| f792c482-630c-4f83-b969-500d4718aece | tty-linuxkernel | ACTIVE | |
+--------------------------------------+-------------------+--------+--------+
32 Using the IBM XIV Storage System in OpenStack Cloud Environments
Installing the IBM Storage Driver for OpenStack
The proxy is compatible with the open source driver that is already part of OpenStack in the
Folsom release. The current IBM Storage Driver for OpenStack offers the following features:
Create or delete a volume in the XIV Storage System by using the nova volume-* or
volume-snapshot-* command.
Attach an XIV Volume to or detach an XIV Volume from a VM and make the volume
accessible via iSCSI. The iSCSI qualified name (IQN) is automatically created on the XIV
Storage System.
To install the IBM Storage Driver for OpenStack, create a pool on the XIV Storage System for
the node. In our example, we created a pool that is named OpenStack.
For the driver installation, you need the XIV IP address, admin name, and password. To
install the IBM Storage Driver for OpenStack, see the driver installation guide:
http://pic.dhe.ibm.com/infocenter/strhosts/ic/index.jsp?topic=%2Fcom.ibm.help.strg
hosts.doc%2Fnova-homepage.html
Verify that the IBM Storage Driver for OpenStack is correctly installed by checking the
nova.conf file as shown in Example 32. The SAN parameters must have the volume_driver
set to xiv_openstack.xiv.XIVDriver and the xiv_proxy set to
xiv_openstack.nova_proxy.XIVNovaProxy.
Example 32 XIV nova driver setup
# tail /etc/nova/nova.conf
libvirt_type=qemu
auth_strategy = keystone
flat_interface = eth0
public_interface = eth0
volume_driver = xiv_openstack.xiv.XIVDriver
xiv_proxy = xiv_openstack.nova_proxy.XIVNovaProxy
san_login = YOUR_XIV_ADMIN_ID
san_password = YOUR_XIV_ADMIN_PASSWORD
san_clustername = OpenStack
san_ip = ip_address
Create a volume by using IBM XIV Storage Driver for OpenStack:
# nova volume-create --display_name redbk-03 34
This command has no output. Verify the volume that we created with the nova volume-list
command (see Example 33 on page 32). The volume must have the “available” status
before it can be used.
Example 33 Verifying an XIV volume creation by using the nova command
# nova volume-list
+----+-----------+--------------+------+-------------+-------------+
| ID | Status | Display Name | Size | Volume Type | Attached to |
Important: The Folsom release offers two options in terms of block storage: nova-volume
and Cinder. Both options are nearly identical in terms of functionality, APIs, and even the
general theory of operation. The illustrations in this paper are based on nova-volume.
Remember, however, that nova-volume is deprecated and will be removed at the Grizzly
release.
Using the IBM XIV Storage System in OpenStack Cloud Environments 33
+----+-----------+--------------+------+-------------+-------------+
| 4 | available | redbk-01 | 10 | None | |
| 5 | available | redbk-03 | 34 | None | |
+----+-----------+--------------+------+-------------+-------------+
# nova volume-show 5
+---------------------+---------------------+
| Property | Value |
+---------------------+---------------------+
| attachments | [] |
| availability_zone | nova |
| created_at | 2012-10-26 09:02:27 |
| display_description | None |
| display_name | redbk-03 |
| id | 5 |
| metadata | {} |
| size | 34 |
| snapshot_id | None |
| status | available |
| volume_type | None |
+---------------------+---------------------+
Starting a virtual machine and attaching an XIV volume
To create a VM or instance, select the following information:
The “flavor” or “instance type” that is needed for that VM or instance
The image
A flavor or instance type describes the compute, memory, and storage capacity of nova
computing instances. The flavor or instance type is the size (in terms of vCPUs, RAM, and so
on) of the virtual server. In the EC2 API, these instance types are named m1.large or
m1.tiny. The OpenStack API designates these flavors with names, such as 512 MB Server.
OpenStack Image (Glance) uses predefined machine characteristics. The nova flavor-list
command prints existing machine characteristics that are defined in the Nova database. A
new flavor can be created by using the nova flavor-create command.
Example 34 shows how to start a new image that is created with the virt-install command.
Add the VM image to the catalog by using the glance add command. Then, launch the
instance with a nova boot command.
Example 34 Adding an image to Glance
# glance add name="RedHat Enterprise Server 6.3" disk_format=qcow2
container_format=bare < /tmp/red-hat-6.3-server-2.qcow2
Uploading image 'RedHat Enterprise Server 6.3'
==================================================================================
============================================[100%] 55.4M/s, ETA 0h 0m 0s
Added new image with ID: 5a7e4539-df7c-47be-8093-7da418d62e42
# nova image-list
+--------------------------------------+-----------------------+--------+--------+
| ID | Name | Status | Server |
Storage capacity: The storage capacity in the flavor-list represents local storage on the
Compute Node.
34 Using the IBM XIV Storage System in OpenStack Cloud Environments
+--------------------------------------+-----------------------+--------+--------+
| 0c5de13c-8a66-4004-9b42-797f34fa2059 | cirros-0.3.0-x86_64 | ACTIVE | |
| 53fee854-c9b6-4b66-98e6-62a8c5244d66 | tty-linuxramdisk | ACTIVE | |
| 5a7e4539-df7c-47be-8093-7da418d62e42 | RedHat Enterprise Server 6.3 | ACTIVE |
|
| a19c7ada-982b-4062-bc09-32ac618e1d4f | tty-linuxkernel | ACTIVE | |
| f6e3c2a1-8c5b-4c32-bb40-2ed45f563133 | tty-linux | ACTIVE | |
+--------------------------------------+-----------------------+--------+--------+
# nova boot --flavor 2 --key_name oskey --image
5a7e4539-df7c-47be-8093-7da418d62e42 redhat
+-------------------------------------+--------------------------------------+
| Property | Value |
+-------------------------------------+--------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-SRV-ATTR:host | None |
| OS-EXT-SRV-ATTR:hypervisor_hostname | None |
| OS-EXT-SRV-ATTR:instance_name | instance-00000003 |
| OS-EXT-STS:power_state | 0 |
| OS-EXT-STS:task_state | scheduling |
| OS-EXT-STS:vm_state | building |
| accessIPv4 | |
| accessIPv6 | |
| adminPass | JTnrCV33dT6N |
| config_drive | |
| created | 2012-10-26T16:07:28Z |
| flavor | m1.small |
| hostId | |
| id | ef6e6477-951c-4b1c-b5c8-73943800d5da |
| image | RedHat Enterprise Server 6.3 |
| key_name | oskey |
| metadata | {} |
| name | redhat |
| progress | 0 |
| status | BUILD |
| tenant_id | aedd77cd85d84c9886395c8fa8e620ae |
| updated | 2012-10-26T16:07:29Z |
| user_id | 965e7fa9579e4ceba733e9bb225aac63 |
+-------------------------------------+--------------------------------------+
# nova list
+--------------------------------------+--------+--------+----------------+
| ID | Name | Status | Networks |
+--------------------------------------+--------+--------+----------------+
| ef6e6477-951c-4b1c-b5c8-73943800d5da | redhat | BUILD | vmnet=10.0.0.3 |
| efbaa726-ab57-4d5b-ab39-741f57f0d1a3 | cirros | ACTIVE | vmnet=10.0.0.2 |
+--------------------------------------+--------+--------+----------------+
# nova show redhat
+-------------------------------------+------------------------------------------+
| Property | Value |
+-------------------------------------+------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-SRV-ATTR:host | blade11-HS21-13 |
| OS-EXT-SRV-ATTR:hypervisor_hostname | None |
Using the IBM XIV Storage System in OpenStack Cloud Environments 35
| OS-EXT-SRV-ATTR:instance_name | instance-00000003 |
| OS-EXT-STS:power_state | 1 |
| OS-EXT-STS:task_state | None |
| OS-EXT-STS:vm_state | active |
| accessIPv4 | |
| accessIPv6 | |
| config_drive | |
| created | 2012-10-26T16:07:28Z |
| flavor | m1.small |
| hostId
|d7a4f8634212269134c1f66f2447e821c128cbb445a4638bb8914200 |
| id | ef6e6477-951c-4b1c-b5c8-73943800d5da |
| image | RedHat Enterprise Server 6.3 |
| key_name | oskey |
| metadata | {} |
| name | redhat |
| progress | 0 |
| status | ACTIVE |
| tenant_id | aedd77cd85d84c9886395c8fa8e620ae |
| updated | 2012-10-26T16:17:27Z |
| user_id | 965e7fa9579e4ceba733e9bb225aac63 |
| vmnet network | 10.0.0.3 |
+-------------------------------------+------------------------------------------+
Using Horizon (Dashboard)
Installing Horizon, the OpenStack web dashboard, is simple. Install the
OpenStack-Dashboard package and then start the apache2 daemon. No additional
configuration is needed.
After the httpd daemon is running, users can log on to the Dashboard by using their
OpenStack user names and passwords at http://host_ip_addr/horizon.
Installing the Dashboard package
Follow these steps to install the Dashboard package:
1. At the terminal prompt, run this command:
# sudo aptitude install openstack-dashboard
2. Run this command to start the Dashboard:
# sudo service httpd start
3. Then, to make the Dashboard available after the reboot, run this command:
# sudo chkconfig httpd on
Another service that is named qpidd might prevent you from starting the rabbitmq-server
daemon correctly. To avoid this situation, stop the qpidd daemon before you start the
rabbitmq-server daemon. Then, restart the qpidd daemon.
Use these commands:
# service qpidd stop
# service rabbitmq-server start
# service qpidd start
36 Using the IBM XIV Storage System in OpenStack Cloud Environments
Check that the memcached service is running by using this command:
# service memcached status
If the service is not running, restart it by running this command:
# service memcached start
Load the Dashboard in a web browser to confirm that it is running. The Log In page is shown
in Figure 4.
Figure 4 Dashboard Log In window
Managing Nova by using Dashboard
In this example, the Object Store is used to create an instance. Follow these steps:
1. Log on to the catalog by providing a user name and password.
2. Select the Project tab and then select Volumes. The Volumes menu is shown in Figure 5
on page 37.
Using the IBM XIV Storage System in OpenStack Cloud Environments 37
Figure 5 Dashboard - Volumes
3. Create a volume by selecting Create Volume.
4. On the Create Volume window, enter a volume name, a size in GBs, and an optional
description. Then, click Create Volume as shown in Figure 6.
Figure 6 Dashboard - Create Volume
5. Select Launch Instance to open the window that is shown in Figure 7 on page 38.
38 Using the IBM XIV Storage System in OpenStack Cloud Environments
Figure 7 Dashboard - Images & Snapshots
6. Select the image to launch (we selected image01) and click Launch.
7. In the Launch Instance window, select a medium Flavor as shown in Figure 8. Click
Launch.
Figure 8 Dashboard - Launch Instance
8. You are returned to the Instances window, which this time displays the new instance as
shown in Figure 9 on page 39.
Using the IBM XIV Storage System in OpenStack Cloud Environments 39
Figure 9 Dashboard - Instances window that shows a new instance
9. Select the volume to attach to the instance. For our example, we selected the Vol01
volume. Then, select Edit attachment to open the window that is shown in Figure 10.
Figure 10 Dashboard - Manage Volume Attachments
10.On Figure 10, in the drop-down list, select the instance that is launched and define a
device that is named /dev/vdc/. Then, click Attach Volume. When you attach a volume
by using the XIV Nova Volume Driver, an iSCSI host is created on the XIV Storage
System.
11.Control the attachment of the created volume to the Compute Node. If the XIV Host
Attachment Kit is installed, you can run the xiv_devlist command.
12.To verify that the volume is correctly attached to the instance, connect to the instance by
running the ssh -i oskey.priv root@instance_ip_addr command.
13.List the device that is seen by the instance by using the ls /dev/vd* command.
14.You can now format the device within the instance as shown in Example 35 on page 40.
40 Using the IBM XIV Storage System in OpenStack Cloud Environments
Example 35 Formatting the virtual device
# sudo mkfs.ext4 /dev/vdc
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
2211840 inodes, 8835546 blocks
441777 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
270 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
15.Mount the formatted device as shown in Figure 11.
Figure 11 XIV Nova volume mount on the VM
16.Enter exit to leave the instance.
Using the IBM XIV Storage System in OpenStack Cloud Environments 41
The team who wrote this paper
This paper was produced by a team of specialists from around the world working at the
International Technical Support Organization, San Jose Center.
Desire Brival is a Certified Architect who works with clients and sales teams to architect
complex multi-brand solutions. He has deep knowledge of the IBM cross-brand initiatives,
such as Cloud Computing, Virtualization, IT Optimization, IBM Dynamic Infrastructure®, and
Storage Optimization Infrastructure. He has competitive knowledge of the major storage
providers, as well as converged infrastructure solution offerings (Matrix, UCS, and
Exadata/Exalogic).
Bert Dufrasne is an IBM Certified Consulting I/T Specialist and Project Leader for IBM
System Storage® disk products at the International Technical Support Organization, San
Jose Center. He worked at IBM in various I/T areas. He authored many IBM Redbooks®
publications and also developed and taught technical workshops. Before he joined the ITSO,
he worked for IBM Global Services as an Application Architect. He holds a Master’s degree in
Electrical Engineering.
Bruce Allworth is a Senior IT Specialist who works as a Client Technical Open Systems
Storage Specialist in Americas Sales and Distribution. He has over 20 years in IT and
extensive experience with midrange storage products in solution design, solution
management, advanced problem determination, and disaster recovery. He worked closely
with various IBM divisions in launching new products and creating critical documentation,
including Technical and Delivery Assessment Checklists, and developing and delivering
technical training for a wide range of audiences.
Mark Kremkus is a Senior IT Specialist in the Advanced Technical Skills organization. He
has 11 years of experience in the design of high performance, high availability solutions.
Mark achieved Consulting-level certification in Actualizing IT solutions. Mark’s areas of
expertise include enterprise storage performance analysis with emphasis on using empirical
data to perform mathematical modeling of disk storage performance, as well as integrating
storage with open systems hypervisors. He writes and presents on these topics. He holds a
BS degree in Electrical Engineering from Texas A&M.
Markus Oscheka is an IT Specialist for Proof of Concepts and Benchmarks in the Disk
Solution Europe team in Mainz, Germany. His areas of expertise include setup and
demonstration of IBM System Storage solutions in open environments. He has written
several IBM Redbooks and acted as the co-project lead for Redbooks publications, including
IBM DS8000® and IBM XIV Storage. He holds a degree in Electrical Engineering from the
Technical University in Darmstad.
Thomas Peralto is a Principal Consultant in the Storage Solutions Engineering Group. He
has extensive experience in implementing large and complex transport networks and
mission-critical data protection throughout the globe. Mr. Peralto also serves as a data
replication and data migration expert and speaks on both topics at the national and
international levels for IBM on the best practices for corporate data protection.
Special thanks to Lihi Lihi Tikolsky, IBM, for her help in preparation of this document.
Thanks to the following people for their contributions to this project:
Ohad Atia, Erik Zaadi, Miron Aloni, Anthony Vattathil, and Brian Carmody
IBM
42 Using the IBM XIV Storage System in OpenStack Cloud Environments
Now you can become a published author, too!
Here’s an opportunity to spotlight your skills, grow your career, and become a published
author—all at the same time! Join an ITSO residency project and help write a book in your
area of expertise, while honing your experience using leading-edge technologies. Your efforts
will help to increase product acceptance and customer satisfaction, as you expand your
network of technical contacts and relationships. Residencies run from two to six weeks in
length, and you can participate either in person or as a remote resident working from your
home base.
Find out more about the residency program, browse the residency index, and apply online at:
ibm.com/redbooks/residencies.html
Stay connected to IBM Redbooks
Find us on Facebook:
http://www.facebook.com/IBMRedbooks
Follow us on Twitter:
http://twitter.com/ibmredbooks
Look for us on LinkedIn:
http://www.linkedin.com/groups?home=&gid=2130806
Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks
weekly newsletter:
https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm
Stay current on recent Redbooks publications with RSS Feeds:
http://www.redbooks.ibm.com/rss.html
© Copyright International Business Machines Corporation 2013. All rights reserved.
Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by
GSA ADP Schedule Contract with IBM Corp. 43
Notices
This information was developed for products and services offered in the U.S.A.
IBM may not offer the products, services, or features discussed in this document in other countries. Consult
your local IBM representative for information on the products and services currently available in your area. Any
reference to an IBM product, program, or service is not intended to state or imply that only that IBM product,
program, or service may be used. Any functionally equivalent product, program, or service that does not
infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to
evaluate and verify the operation of any non-IBM product, program, or service.
IBM may have patents or pending patent applications covering subject matter described in this document. The
furnishing of this document does not grant you any license to these patents. You can send license inquiries, in
writing, to:
IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A.
The following paragraph does not apply to the United Kingdom or any other country where such
provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION
PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of
express or implied warranties in certain transactions, therefore, this statement may not apply to you.
This information could include technical inaccuracies or typographical errors. Changes are periodically made
to the information herein; these changes will be incorporated in new editions of the publication. IBM may make
improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time
without notice.
Any references in this information to non-IBM websites are provided for convenience only and do not in any
manner serve as an endorsement of those websites. The materials at those websites are not part of the
materials for this IBM product and use of those websites is at your own risk.
IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring
any obligation to you.
Any performance data contained herein was determined in a controlled environment. Therefore, the results
obtained in other operating environments may vary significantly. Some measurements may have been made
on development-level systems and there is no guarantee that these measurements will be the same on
generally available systems. Furthermore, some measurements may have been estimated through
extrapolation. Actual results may vary. Users of this document should verify the applicable data for their
specific environment.
Information concerning non-IBM products was obtained from the suppliers of those products, their published
announcements or other publicly available sources. IBM has not tested those products and cannot confirm the
accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the
capabilities of non-IBM products should be addressed to the suppliers of those products.
This information contains examples of data and reports used in daily business operations. To illustrate them
as completely as possible, the examples include the names of individuals, companies, brands, and products.
All of these names are fictitious and any similarity to the names and addresses used by an actual business
enterprise is entirely coincidental.
COPYRIGHT LICENSE:
This information contains sample application programs in source language, which illustrate programming
techniques on various operating platforms. You may copy, modify, and distribute these sample programs in
any form without payment to IBM, for the purposes of developing, using, marketing or distributing application
programs conforming to the application programming interface for the operating platform for which the sample
programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore,
cannot guarantee or imply reliability, serviceability, or function of these programs.
44 Using the IBM XIV Storage System in OpenStack Cloud Environments
®
Redpaper™
This document REDP-4971-00 was created or updated on March 11, 2013.
Send us your comments in one of the following ways:
Use the online Contact us review Redbooks form found at:
ibm.com/redbooks
Send your comments in an email to:
redbooks@us.ibm.com
Mail your comments to:
IBM Corporation, International Technical Support Organization
Dept. HYTD Mail Station P099
2455 South Road
Poughkeepsie, NY 12601-5400 U.S.A.
Trademarks
IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines
Corporation in the United States, other countries, or both. These and other IBM trademarked terms are
marked on their first occurrence in this information with the appropriate symbol (® or ™), indicating US
registered or common law trademarks owned by IBM at the time this information was published. Such
trademarks may also be registered or common law trademarks in other countries. A current list of IBM
trademarks is available on the Web at http://www.ibm.com/legal/copytrade.shtml
The following terms are trademarks of the International Business Machines Corporation in the United States,
other countries, or both:
DS8000®
Dynamic Infrastructure®
IBM®
Redbooks®
Redpaper™
Redbooks (logo) ®
System Storage®
XIV®
The following terms are trademarks of other companies:
Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel
Corporation or its subsidiaries in the United States and other countries.
Linux is a trademark of Linus Torvalds in the United States, other countries, or both.
Snapshot, and the NetApp logo are trademarks or registered trademarks of NetApp, Inc. in the U.S. and other
countries.
Other company, product, or service names may be trademarks or service marks of others.

More Related Content

What's hot

Linux beginner's Workshop
Linux beginner's WorkshopLinux beginner's Workshop
Linux beginner's Workshopfutureshocked
 
Performance characteristics of traditional v ms vs docker containers (dockerc...
Performance characteristics of traditional v ms vs docker containers (dockerc...Performance characteristics of traditional v ms vs docker containers (dockerc...
Performance characteristics of traditional v ms vs docker containers (dockerc...Boden Russell
 
Docker on Power Systems
Docker on Power SystemsDocker on Power Systems
Docker on Power SystemsCesar Maciel
 
GlusterFS Update and OpenStack Integration
GlusterFS Update and OpenStack IntegrationGlusterFS Update and OpenStack Integration
GlusterFS Update and OpenStack IntegrationEtsuji Nakai
 
Asiabsdcon14 lavigne
Asiabsdcon14 lavigneAsiabsdcon14 lavigne
Asiabsdcon14 lavigneDru Lavigne
 
Ceph Day LA: Building your own disaster? The safe way to make Ceph storage re...
Ceph Day LA: Building your own disaster? The safe way to make Ceph storage re...Ceph Day LA: Building your own disaster? The safe way to make Ceph storage re...
Ceph Day LA: Building your own disaster? The safe way to make Ceph storage re...Ceph Community
 
Ceph Day Chicago - Brining Ceph Storage to the Enterprise
Ceph Day Chicago - Brining Ceph Storage to the Enterprise Ceph Day Chicago - Brining Ceph Storage to the Enterprise
Ceph Day Chicago - Brining Ceph Storage to the Enterprise Ceph Community
 
INN694-2014-OpenStack installation process V5
INN694-2014-OpenStack installation process V5INN694-2014-OpenStack installation process V5
INN694-2014-OpenStack installation process V5Fabien CHASTEL
 
Lavigne bsdmag apr13
Lavigne bsdmag apr13Lavigne bsdmag apr13
Lavigne bsdmag apr13Dru Lavigne
 
Lavigne bsdmag-jan2012
Lavigne bsdmag-jan2012Lavigne bsdmag-jan2012
Lavigne bsdmag-jan2012Dru Lavigne
 
Article may11 bsdmag
Article may11 bsdmagArticle may11 bsdmag
Article may11 bsdmagDru Lavigne
 
bfarm-v2
bfarm-v2bfarm-v2
bfarm-v2Zeus G
 

What's hot (20)

Linux beginner's Workshop
Linux beginner's WorkshopLinux beginner's Workshop
Linux beginner's Workshop
 
Performance characteristics of traditional v ms vs docker containers (dockerc...
Performance characteristics of traditional v ms vs docker containers (dockerc...Performance characteristics of traditional v ms vs docker containers (dockerc...
Performance characteristics of traditional v ms vs docker containers (dockerc...
 
Docker on Power Systems
Docker on Power SystemsDocker on Power Systems
Docker on Power Systems
 
GlusterFS Update and OpenStack Integration
GlusterFS Update and OpenStack IntegrationGlusterFS Update and OpenStack Integration
GlusterFS Update and OpenStack Integration
 
Ilf2013
Ilf2013Ilf2013
Ilf2013
 
Asiabsdcon14 lavigne
Asiabsdcon14 lavigneAsiabsdcon14 lavigne
Asiabsdcon14 lavigne
 
Scale9x sun
Scale9x sunScale9x sun
Scale9x sun
 
Ceph Day LA: Building your own disaster? The safe way to make Ceph storage re...
Ceph Day LA: Building your own disaster? The safe way to make Ceph storage re...Ceph Day LA: Building your own disaster? The safe way to make Ceph storage re...
Ceph Day LA: Building your own disaster? The safe way to make Ceph storage re...
 
Ceph Day Chicago - Brining Ceph Storage to the Enterprise
Ceph Day Chicago - Brining Ceph Storage to the Enterprise Ceph Day Chicago - Brining Ceph Storage to the Enterprise
Ceph Day Chicago - Brining Ceph Storage to the Enterprise
 
Olf2013
Olf2013Olf2013
Olf2013
 
Tlf2014
Tlf2014Tlf2014
Tlf2014
 
Asiabsdcon14
Asiabsdcon14Asiabsdcon14
Asiabsdcon14
 
INN694-2014-OpenStack installation process V5
INN694-2014-OpenStack installation process V5INN694-2014-OpenStack installation process V5
INN694-2014-OpenStack installation process V5
 
Fsoss12
Fsoss12Fsoss12
Fsoss12
 
Asiabsdcon15
Asiabsdcon15Asiabsdcon15
Asiabsdcon15
 
Lavigne bsdmag apr13
Lavigne bsdmag apr13Lavigne bsdmag apr13
Lavigne bsdmag apr13
 
Barrelfish OS
Barrelfish OS Barrelfish OS
Barrelfish OS
 
Lavigne bsdmag-jan2012
Lavigne bsdmag-jan2012Lavigne bsdmag-jan2012
Lavigne bsdmag-jan2012
 
Article may11 bsdmag
Article may11 bsdmagArticle may11 bsdmag
Article may11 bsdmag
 
bfarm-v2
bfarm-v2bfarm-v2
bfarm-v2
 

Similar to Using the IBM XIV Storage System in OpenStack Cloud Environments

OpenStack - An Overview
OpenStack - An OverviewOpenStack - An Overview
OpenStack - An Overviewgraziol
 
Research Inventy : International Journal of Engineering and Science
Research Inventy : International Journal of Engineering and ScienceResearch Inventy : International Journal of Engineering and Science
Research Inventy : International Journal of Engineering and Scienceinventy
 
OpenStack or CloudStack
OpenStack or CloudStackOpenStack or CloudStack
OpenStack or CloudStackAhmed Banafa
 
Introduction Openstack
Introduction OpenstackIntroduction Openstack
Introduction OpenstackRanjith Kumar
 
Workshop - Openstack, Cloud Computing, Virtualization
Workshop - Openstack, Cloud Computing, VirtualizationWorkshop - Openstack, Cloud Computing, Virtualization
Workshop - Openstack, Cloud Computing, VirtualizationJayaprakash R
 
Openstack workshop @ Kalasalingam
Openstack workshop @ KalasalingamOpenstack workshop @ Kalasalingam
Openstack workshop @ KalasalingamBeny Raja
 
Openstack starter-guide-diablo
Openstack starter-guide-diabloOpenstack starter-guide-diablo
Openstack starter-guide-diablobabycat_feifei
 
Openstack starter-guide-diablo
Openstack starter-guide-diabloOpenstack starter-guide-diablo
Openstack starter-guide-diablo锐 张
 
Introduction to openstack
Introduction to openstackIntroduction to openstack
Introduction to openstackYaniv Zadka
 
Cloud Computing Open Stack Compute Node
Cloud Computing Open Stack Compute NodeCloud Computing Open Stack Compute Node
Cloud Computing Open Stack Compute NodePalak Sood
 
Cloud Computing OpenStack Compute Node
Cloud Computing OpenStack Compute NodeCloud Computing OpenStack Compute Node
Cloud Computing OpenStack Compute NodeNamita Arora
 
An overview of OpenStack for the VMware community
An overview of OpenStack for the VMware communityAn overview of OpenStack for the VMware community
An overview of OpenStack for the VMware communityAnthony Chow
 
Open stack
Open stackOpen stack
Open stacksvm
 
Webinar "Introduction to OpenStack"
Webinar "Introduction to OpenStack"Webinar "Introduction to OpenStack"
Webinar "Introduction to OpenStack"CREATE-NET
 
What is OpenStack and the added value of IBM solutions
What is OpenStack and the added value of IBM solutionsWhat is OpenStack and the added value of IBM solutions
What is OpenStack and the added value of IBM solutionsSasha Lazarevic
 
OpenStack - Infrastructure as a service
OpenStack - Infrastructure as a serviceOpenStack - Infrastructure as a service
OpenStack - Infrastructure as a serviceDenis Cavalcante
 

Similar to Using the IBM XIV Storage System in OpenStack Cloud Environments (20)

OpenStack - An Overview
OpenStack - An OverviewOpenStack - An Overview
OpenStack - An Overview
 
Research Paper
Research PaperResearch Paper
Research Paper
 
Research Inventy : International Journal of Engineering and Science
Research Inventy : International Journal of Engineering and ScienceResearch Inventy : International Journal of Engineering and Science
Research Inventy : International Journal of Engineering and Science
 
OpenStack or CloudStack
OpenStack or CloudStackOpenStack or CloudStack
OpenStack or CloudStack
 
Introduction Openstack
Introduction OpenstackIntroduction Openstack
Introduction Openstack
 
Introduction to OpenStack (2012)
Introduction to OpenStack (2012)Introduction to OpenStack (2012)
Introduction to OpenStack (2012)
 
Workshop - Openstack, Cloud Computing, Virtualization
Workshop - Openstack, Cloud Computing, VirtualizationWorkshop - Openstack, Cloud Computing, Virtualization
Workshop - Openstack, Cloud Computing, Virtualization
 
Openstack workshop @ Kalasalingam
Openstack workshop @ KalasalingamOpenstack workshop @ Kalasalingam
Openstack workshop @ Kalasalingam
 
Openstack starter-guide-diablo
Openstack starter-guide-diabloOpenstack starter-guide-diablo
Openstack starter-guide-diablo
 
Openstack starter-guide-diablo
Openstack starter-guide-diabloOpenstack starter-guide-diablo
Openstack starter-guide-diablo
 
Introduction to openstack
Introduction to openstackIntroduction to openstack
Introduction to openstack
 
Cloud Computing using OpenStack
Cloud Computing using OpenStackCloud Computing using OpenStack
Cloud Computing using OpenStack
 
Cloud Computing Open Stack Compute Node
Cloud Computing Open Stack Compute NodeCloud Computing Open Stack Compute Node
Cloud Computing Open Stack Compute Node
 
Cloud Computing OpenStack Compute Node
Cloud Computing OpenStack Compute NodeCloud Computing OpenStack Compute Node
Cloud Computing OpenStack Compute Node
 
Openstack 101
Openstack 101Openstack 101
Openstack 101
 
An overview of OpenStack for the VMware community
An overview of OpenStack for the VMware communityAn overview of OpenStack for the VMware community
An overview of OpenStack for the VMware community
 
Open stack
Open stackOpen stack
Open stack
 
Webinar "Introduction to OpenStack"
Webinar "Introduction to OpenStack"Webinar "Introduction to OpenStack"
Webinar "Introduction to OpenStack"
 
What is OpenStack and the added value of IBM solutions
What is OpenStack and the added value of IBM solutionsWhat is OpenStack and the added value of IBM solutions
What is OpenStack and the added value of IBM solutions
 
OpenStack - Infrastructure as a service
OpenStack - Infrastructure as a serviceOpenStack - Infrastructure as a service
OpenStack - Infrastructure as a service
 

More from IBM India Smarter Computing

TSL03104USEN Exploring VMware vSphere Storage API for Array Integration on th...
TSL03104USEN Exploring VMware vSphere Storage API for Array Integration on th...TSL03104USEN Exploring VMware vSphere Storage API for Array Integration on th...
TSL03104USEN Exploring VMware vSphere Storage API for Array Integration on th...IBM India Smarter Computing
 
A Comparison of PowerVM and Vmware Virtualization Performance
A Comparison of PowerVM and Vmware Virtualization PerformanceA Comparison of PowerVM and Vmware Virtualization Performance
A Comparison of PowerVM and Vmware Virtualization PerformanceIBM India Smarter Computing
 
IBM pureflex system and vmware vcloud enterprise suite reference architecture
IBM pureflex system and vmware vcloud enterprise suite reference architectureIBM pureflex system and vmware vcloud enterprise suite reference architecture
IBM pureflex system and vmware vcloud enterprise suite reference architectureIBM India Smarter Computing
 

More from IBM India Smarter Computing (20)

All-flash Needs End to End Storage Efficiency
All-flash Needs End to End Storage EfficiencyAll-flash Needs End to End Storage Efficiency
All-flash Needs End to End Storage Efficiency
 
TSL03104USEN Exploring VMware vSphere Storage API for Array Integration on th...
TSL03104USEN Exploring VMware vSphere Storage API for Array Integration on th...TSL03104USEN Exploring VMware vSphere Storage API for Array Integration on th...
TSL03104USEN Exploring VMware vSphere Storage API for Array Integration on th...
 
IBM FlashSystem 840 Product Guide
IBM FlashSystem 840 Product GuideIBM FlashSystem 840 Product Guide
IBM FlashSystem 840 Product Guide
 
IBM System x3250 M5
IBM System x3250 M5IBM System x3250 M5
IBM System x3250 M5
 
IBM NeXtScale nx360 M4
IBM NeXtScale nx360 M4IBM NeXtScale nx360 M4
IBM NeXtScale nx360 M4
 
IBM System x3650 M4 HD
IBM System x3650 M4 HDIBM System x3650 M4 HD
IBM System x3650 M4 HD
 
IBM System x3300 M4
IBM System x3300 M4IBM System x3300 M4
IBM System x3300 M4
 
IBM System x iDataPlex dx360 M4
IBM System x iDataPlex dx360 M4IBM System x iDataPlex dx360 M4
IBM System x iDataPlex dx360 M4
 
IBM System x3500 M4
IBM System x3500 M4IBM System x3500 M4
IBM System x3500 M4
 
IBM System x3550 M4
IBM System x3550 M4IBM System x3550 M4
IBM System x3550 M4
 
IBM System x3650 M4
IBM System x3650 M4IBM System x3650 M4
IBM System x3650 M4
 
IBM System x3500 M3
IBM System x3500 M3IBM System x3500 M3
IBM System x3500 M3
 
IBM System x3400 M3
IBM System x3400 M3IBM System x3400 M3
IBM System x3400 M3
 
IBM System x3250 M3
IBM System x3250 M3IBM System x3250 M3
IBM System x3250 M3
 
IBM System x3200 M3
IBM System x3200 M3IBM System x3200 M3
IBM System x3200 M3
 
IBM PowerVC Introduction and Configuration
IBM PowerVC Introduction and ConfigurationIBM PowerVC Introduction and Configuration
IBM PowerVC Introduction and Configuration
 
A Comparison of PowerVM and Vmware Virtualization Performance
A Comparison of PowerVM and Vmware Virtualization PerformanceA Comparison of PowerVM and Vmware Virtualization Performance
A Comparison of PowerVM and Vmware Virtualization Performance
 
IBM pureflex system and vmware vcloud enterprise suite reference architecture
IBM pureflex system and vmware vcloud enterprise suite reference architectureIBM pureflex system and vmware vcloud enterprise suite reference architecture
IBM pureflex system and vmware vcloud enterprise suite reference architecture
 
X6: The sixth generation of EXA Technology
X6: The sixth generation of EXA TechnologyX6: The sixth generation of EXA Technology
X6: The sixth generation of EXA Technology
 
Stephen Leonard IBM Big Data and cloud
Stephen Leonard IBM Big Data and cloudStephen Leonard IBM Big Data and cloud
Stephen Leonard IBM Big Data and cloud
 

Using the IBM XIV Storage System in OpenStack Cloud Environments

  • 1. © Copyright IBM Corp. 2013. All rights reserved. ibm.com/redbooks 1 Redpaper Using the IBM XIV Storage System in OpenStack Cloud Environments Cloud computing is a general term for anything that involves delivering hosted services over the Internet. These services are broadly divided into three categories: Infrastructure-as-a-Service (IaaS) Platform-as-a-Service (PaaS) Software-as-a-Service (SaaS) OpenStack is an IaaS that allows storage to be anywhere and available for use as needed without the confines of being in the data center. The IBM® Storage driver for OpenStack enables OpenStack clouds to access the IBM XIV® Storage System Gen3. The driver integrates with the OpenStack environment and enables OpenStack applications to take advantage of the XIV enterprise-class storage. The management driver controls the creation and deletion of volumes on the XIV Storage System Gen3, and manages to attach or detach volumes from virtual machines (VMs) running in OpenStack. The driver automatically creates the XIV host mappings on demand that are required to allow running VMs on OpenStack to access the storage volumes. Access to the XIV volumes is over an iSCSI connection protocol. This IBM Redpaper™ provides a brief overview of OpenStack and a basic familiarity of its usage with the IBM XIV Storage System Gen3. The illustration scenario that is presented uses the OpenStack Folsom release implementation IaaS with Ubuntu Linux servers and the IBM Storage Driver for OpenStack. This paper is intended for clients and cloud administrators who look forward to integrating IBM XIV Storage Systems in OpenStack cloud environments. The paper provides guidance in setting up an environment for XIV with OpenStack. It is not an official support document. Desire Brival Bert Dufrasne Bruce Allworth Mark Kremkus Markus Oscheka Thomas Peralto
  • 2. 2 Using the IBM XIV Storage System in OpenStack Cloud Environments Introduction With the availability of the IBM Storage Driver for OpenStack, the XIV Storage System can offer a range of capabilities that enable more effective storage automation deployments into private or public clouds. Enabling OpenStack with XIV allows for storage to be made available whenever needed without the traditional associated cost of highly skilled administrators and infrastructure. Cloud computing is defined as the use of computing services and resources (hardware and software) that are delivered over a network, typically Ethernet. Cloud computing allows for more economical usage of the data center hardware and software. It entrusts remote services with a user’s data, software, and computation. OpenStack is being developed as an industry standard cloud-computing project. It was started by Rackspace Cloud and NASA in 2010. Currently more than 150 companies have joined the project, including IBM. OpenStack is a no-charge, open source software release under the terms of the Apache License. OpenStack has a modular architecture that encompasses three components: Compute (Nova) Object Storage (Swift) Image service (Glance) Several components are added: OpenStack Identity Management (Keystone) User Interface Dashboard (Horizon) OpenStack Compute (Nova) is a cloud-computing fabric controller (the main part of an IaaS system). It is written in Python and uses many external libraries, such as Eventlet (for concurrent programming), Kombu (for AMQP communication), and SQLAlchemy (for database access). IBM XIV with the OpenStack community is on a mission to provide scalable, elastic cloud computing for both public and private clouds, large and small. The cloud must be simple to implement and massively scalable. XIV Storage System with Folsom (the latest version of OpenStack at the time of writing and referred to as OpenStack in the remainder of this paper) offers an open source cloud implementation. This implementation allows organizations to deploy cloud-computing capabilities on standard hardware. There are several releases. The current release is Folsom (September 2012). For the latest information, see the following website: http://www.openstack.org/software/folsom/ Important: Illustrations of commands in this paper are based on the Folsom release. This release offers two options in terms of block storage: nova-volume and Cinder. Both are nearly identical in terms of functionality, APIs, and even the general theory of operation. Remember, however, that nova-volume is deprecated and will be removed at the Grizzly release.
  • 3. Using the IBM XIV Storage System in OpenStack Cloud Environments 3 Concept The OpenStack cloud connects to the XIV over an iSCSI connection. Remote cloud users can issue requests for storage resources from the OpenStack cloud. These requests are transparently handled by the IBM Storage Driver. The IBM Storage Driver communicates with the XIV Storage System and controls the storage volumes on it. Terminology OpenStack introduced a specific terminology to describes its features and functions, including these important terms: User Any person, user, or administrator who wants to use cloud services or administer tenants. Role User, administrator, or system service within a tenant Tenant OpenStack supports the concept of multi-tenancy as an organizational structure. By this approach, resources are managed within a tenant and can share services. A tenant offers the ability to correlate usage tracking, auditing, authorization, and so on. Service OpenStack and Linux services have some similarities. A Linux service (formally a daemon) is a program that runs in the background and listens to a port to respond to service requests. An OpenStack service is a group of Linux services that work together. For example, nova-compute and nova-scheduler are two of the Linux services that implement the Compute service. Hypervisor Software that allows multiple virtual images to share a single physical machine. OpenStack Compute requires a hypervisor, and Compute controls the hypervisors through an API server. The process for selecting a hypervisor usually is prioritizing and deciding based on budget and resource constraints and the inevitable list of supported features and required technical specifications. Most developments are done with the kernel-based virtual machine (KVM) and Xen based hypervisors. For a detailed list of features and support across the hypervisors, see this website: http://wiki.openstack.org/HypervisorSupportMatrix The types of virtualization standards that can be used with Compute include KVM, Quick Emulator (QEMU), VMware ESX/ESXi 4.1 update 1, and Xen. Code names Every OpenStack service has a code name as shown in Table 1 on page 4. These code names are reflected in the names of configuration files and command-line utility programs. For example, the Keystone Identity service has a configuration file called keystone.conf. Service: In this document, we use the term “service” to refer both to Linux and OpenStack services.
  • 4. 4 Using the IBM XIV Storage System in OpenStack Cloud Environments Table 1 OpenStack code name OpenStack architecture and components The OpenStack architecture and its components are described. What is Nova Nova is a global collaboration of developers and cloud-computing technologists that seek to produce a ubiquitous IaaS open source cloud-computing platform for public and private clouds. OpenStack was founded by Rackspace Hosting and NASA jointly in July 2010. Nova consists of 160 companies and close to 3,000 developers. OpenStack components OpenStack has several components: Swift (Object Store) provides object storage and allows users to store or retrieve files in a blob mode. Glance (Image) provides a catalog and repository for disk images that are mostly used in OpenStack Compute. It has several components: – Glance-api accepts Image API calls for discovery, retrieval, and store images – Glance-registry stores, processes, and retrieves metadata about images (size, type, and so on) – A database to store the image metadata – A data repository for the image files Nova (Compute) provides virtual machines (VM) or instances. Nova interacts with several OpenStack services, such as Keystone, Horizon, or Glance. The API process can upload and query Glance while nova-compute downloads images for use in launching images. Nova is the most complex and distributed component of OpenStack. Many processes are involved to handle user API requests and launch virtual machines. The following list is a summary of Nova processes: – nova-api handles user compute API calls, synchronizes activities, and enforces policy. – nova-compute process is a daemon that launches and ends virtual machine instances by using the hypervisor’s APIs. Service name Code name Identity Keystone Compute Nova Image Glance Dashboard Horizon Object Store Swift Block Storage Cinder
  • 5. Using the IBM XIV Storage System in OpenStack Cloud Environments 5 – nova-volume manages the creation, attachment, and detachment of persistent volumes to compute instances. It uses volumes from various providers, such as iSCSI or Rados Block Device in Ceph. IBM provides the XIV Storage driver for OpenStack through the nova-volume driver architecture. The OpenStack project Cinder will probably replace nova-volume, and the XIV nova volume driver will offer full functionality in a future release. – nova-network manages the network by setting up bridge or changes to iptables rules. – nova-schedule, which is implemented with RabbitMQ or Qpid, determines where instances run based on requests that are in the message queue. – The SQL database stores items for the cloud. The items can be a type of instances, available networks, projects, and so on. – nova-console and nova-consoleauth offer a proxy to access the virtual machines to users. Horizon (Dashboard) provides a modular web-based user interface for all the OpenStack services. With this web GUI, you can perform most operations on your cloud. You can create volumes, launch an instance, assign IP addresses, and set access controls. Keystone (Identity) provides authentication and authorization for all the OpenStack services. It also provides a service catalog of services within a particular OpenStack cloud. Quantum (Network) provides “network connectivity as a service” between interface devices that are managed by other OpenStack services (most likely Nova). The service works by allowing users to create their own networks and then attach interfaces to them. Cinder (Block Storage) provides persistent block storage to guest VMs. This project was born from code that was originally in Nova (the nova-volume service). The IBM Storage Driver for OpenStack is fully supported with Cinder 2012.11 and provides “block storage as a service” via iSCSI to VMs. For more details about Cinder and the IBM Storage Driver for OpenStack, see this web page: http://wiki.openstack.org/Cinder In addition to these core projects, there are a number of “incubation” projects that are being considered for future inclusion in the OpenStack core. Regarding IBM Storage, read more at this web page: http://ibmresearchnews.blogspot.com/2012/10/storage-drivers-take-advantage-of.html Important: The Folsom release offers two options in terms of block storage: nova-volume and Cinder. Both are nearly identical in terms of functionality, APIs, and even the general theory of operation. Illustrations in this paper are based on nova-volume. Remember, however, that nova-volume is deprecated and will be removed at the Grizzly release.
  • 6. 6 Using the IBM XIV Storage System in OpenStack Cloud Environments Figure 1 depicts the OpenStack services. Figure 1 OpenStack architecture Getting started To successfully implement and test the OpenStack cloud environment by using the IBM Storage Driver for OpenStack, follow these steps: 1. Install a supported Linux Distribution on every node (for example, any server that is connected to the network where a Nova component is installed). 2. Configure separate networks: a management network, a storage network, and a service network for public access to cloud services. 3. Install and configure a supported database to store credentials and centralized items. 4. Install and configure the cloud controller. 5. Install and configure the OpenStack components (Network, Compute, and Volume) on the other nodes. 6. Create a storage pool for the OpenStack on the XIV Storage System 7. Install IBM Storage Driver for OpenStack on the Compute Node. 8. Install and configure the supported hypervisors. 9. Build and import operating system images to the catalog. Important: The storage pool must be created prior to installing the storage driver for OpenStack. Restriction: The driver supports a single XIV Storage System. To use multiple storage systems, multiple instances of the driver must be run.
  • 7. Using the IBM XIV Storage System in OpenStack Cloud Environments 7 In the environment that we used for our experimentation, the OpenStack infrastructure is set up with a single node that is hosted by Ubuntu Server 12.04.1 Long-Term Support (LTS). The following key components were installed and configured: Control Node Image Node Volume Node (Cinder) Compute Node IBM Storage Driver for OpenStack IBM XIV Storage System Gen3 OpenStack system requirements Before you deploy the supported infrastructure, verify that you have the appropriate hardware. Ensure that you have the servers, SAN, and IP switches that are required to set the environment. See Table 2. For the latest information, see the release notes at this website: http://pic.dhe.ibm.com/infocenter/strhosts/ic/topic/com.ibm.help.strghosts.doc/nov a_pdfs.html Hardware specifications There are several ways to implement the Nova OpenStack infrastructure. Consider single and the multiple node configurations: Single node: We used this configuration for our test purposes (it is understood that we cannot expect great performance from such a small environment). This configuration cannot deliver the performance that most cloud environments require. A virtualized environment can be enough to deploy this configuration. See Figure 2 on page 8. Multiple nodes: In this environment, Nova components can be distributed across several systems. Use this setup for a typical production environment. For small environments, see Figure 3 and Table 3 on page 8. For the requirements for larger environments, see Table 4 on page 9. Table 2 Single-node requirements Installation and configuration: Detailed installation and configuration steps for all required components (Linux, network, or SAN configuration, and so on) are beyond the scope of this paper. Nova component Minimum requirements Preferred setup Controller Network Volume Compute IBM Storage Driver for OpenStack Ubuntu 12.04 or later, x64 edition CPU: Dual-core 64 bits RAM: 8 GB Disk Drive: 60 GB Network: 1 x 1 GbE Ubuntu 12.04 or later, x64 edition CPU: Dual-core 64 bits RAM: 16 GB Disk Drive: 80 GB Network: 1 x 1 GbE
  • 8. 8 Using the IBM XIV Storage System in OpenStack Cloud Environments Figure 2 Nova single node Table 3 Multiple node (small) Nova component Minimum requirements Preferred setup Controller Network Volume Ubuntu 12.04 or later, x64 edition CPU: Dual-core 64 bits RAM: 8 GB Disk Drive: 60 GB Network: 1 x 1 GbE Ubuntu 12.04 or later, x64 edition CPU: Dual-core 64 bits RAM: 8 GB Disk Drive: 60 GB Network: 1 x 1 GbE Compute Node IBM Storage Driver for OpenStack Ubuntu 12.04 or later, x64 edition CPU: Quad core RAM: 16 GB Disk Drive: 60 GB Network: 2 x 1 GbE Ubuntu 12.04 or later, x64 edition CPU: > Quad core RAM: > 32 GB Disk Drive: 60 GB Network: 1 x 1GbE + 1 x 10 GbE SAN IP Nova Single Node Contr oller, Volume, Network, Compute Node, IBM Storage Driver for OpenStack iSCSI attachm ent Nova Single Node Contr oller, Volume, Network, Compute Node, IBM Storage Driver for OpenStack Fibre Channel Attachment XIV SAN IP Nova Single Node Controller, Volume, Network, Compute Node, IBM Storage Driver for OpenStack iSCSI attachment Nova Single Node Controller, Volume, Network, Compute Node Fibre Channel Attachment XIV
  • 9. Using the IBM XIV Storage System in OpenStack Cloud Environments 9 Figure 3 Nova multiple node Table 4 Multiple-node large environment requirements Nova component Minimum requirements Preferred setup Controller Node Ubuntu 12.04 or later, x64 edition CPU: Dual core RAM: 8 GB Disk Drive: 60 GB Network: 1 x 1 GbE Ubuntu 12.04 or later, x64 edition CPU: Dual core RAM: 8 GB Disk Drive: 60 GB Network: 1 x 1 GbE Network Node Ubuntu 12.04 or later, x64 edition CPU: 1 x 64 bits RAM: 1 GB Disk Drive: 60 GB Network: 1 x 1GbE Ubuntu 12.04 or later, x64 edition CPU: 1 x 64 bits RAM: 4 GB Disk Drive: 60 GB Network: 1 x 1 GbE Volume (Cinder)Node Ubuntu 12.04 or later, x64 edition CPU: Dual core RAM: 4 GB Disk Drive: 30 GB Network: 1 x 1 GbE Ubuntu 12.04 or later, x64 edition CPU: Dual core RAM: 4 GB Disk Drive: > 60 GB Network: 1 x 1 GbE + 1 x 10 GbE SAN: 1 Fibre Channel (FC) card Controller Node Contr oller Node Compute Node Storage Node Storage Node Cinder Node IBM Storage Driver for OpenStack XIV External Network IP SAN
  • 10. 10 Using the IBM XIV Storage System in OpenStack Cloud Environments Installation The first step is to install Ubuntu Server 12.04.1 (x64) and then to update the APT repository with OpenStack Folsom. Then, install the MySQL Server and OpenStack components. Repository configuration To ensure that you have the up-to-date release of the operating system, update the system. Add the appropriate repository for OpenStack and add the following lines to /etc/apt/sources.list: deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/folsom main deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-proposed/folsom main Then, update the system as shown in Example 1. Example 1 APT repository # sudo aptitude update # sudo aptitude install ubuntu-cloud-keyring # sudo aptitude upgrade Configuration prerequisite To avoid issues when you use bridging with nova-dhcpbridge or an HTTP service, consider some optional dependencies and install the initial packages as shown in Example 2. These packages are mandatory because they provide important utilities that you need. Example 2 Installing initial packages # sudo aptitude install dnsmasq-utils bridge-utils In a multiple-node configuration, the Network Time Protocol (NTP) server must be used to synchronize time on all OpenStack nodes. Install NTP as shown in Example 3 on page 10. Example 3 Installing the NTP server # sudo aptitude install ntp Compute Node Ubuntu 12.04 or later, x64 edition CPU: Dual-core 64 bits RAM: 4 GB Disk Drive: 30 GB Network: 2 x 1 GbE SAN: 2 x 1 Fibre Channel card Ubuntu 12.04 or later, x64 edition CPU: > Quad-core 64 bits with Intel VT or AMD-V RAM: 32 GB Disk Drive: >60 GB Network: 1 x 1 GbE + 2 x 10 GbE SAN: 2 x Fibre Channel card Important: These requirements are provided as is and are based on code that was available at the time of writing this paper. For the latest information, see the IBM Storage Driver for OpenStack release notes at this web page: http://pic.dhe.ibm.com/infocenter/strhosts/ic/topic/com.ibm.help.strghosts.doc/ nova_pdfs.html Nova component Minimum requirements Preferred setup
  • 11. Using the IBM XIV Storage System in OpenStack Cloud Environments 11 Verify the service is running: # service ntp status * NTP server is running MySQL database OpenStack uses several databases to store configuration items. Nova, Keystone, and Glance can use MySQL, PostgreSQL, or SQLite3. In our environment, we use MySQL. Follow these steps: 1. To install MySQL, run the following command: # sudo aptitude install mysql-server Set a new password for the root MySQL user as requested. 2. Validate that the database can be stopped and restarted. Also, validate that the administrator’s password that was requested during the MySQL installation can be used as shown in Example 4. Example 4 Validate MySQL administrator account # mysql -u root -ppassword Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 266 Server version: 5.5.29-0ubuntu0.12.04.1 (Ubuntu) Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> quit Bye To start MySQL after the reboot, run this command: # sudo chkconfig mysql on Keystone (Identity) installation and initial configuration Keystone is the main authentication repository for all OpenStack services. Start by installing and configuring Keystone. Then, populate the database with users, tenants, and services. The assumption is that the repository is set up correctly and that you have the latest OpenStack Folsom release. To set up the repository, see “Repository configuration” on page 10. Install the openstack-keystone package by running the following command: # sudo aptitude install keystone Administrator name and password: In our example, the MySQL database administrator is root and the password is passw0rd.
  • 12. 12 Using the IBM XIV Storage System in OpenStack Cloud Environments After the Keystone installation, create a database that is named keystone. Then, create the tables that are required to store Keystone Items. Creating the keystone database manually Create an empty database that is named keystone: 1. Create the keystone database with the command: # mysql -u root -ppassw0rd -e ‘CREATE DATABASE keystone;’ 2. To create the MySQL Keystone user and give full access to the keystone database that you created, run this command: # mysql -u root -ppassw0rd -e ‘GRANT ALL ON keystone.* TO “keystone”@”localhost” IDENTIFIED BY “YOUR_KEYSTONE_PASSWORD”;’ Creating the keystone admin credential To administer Keystone, you need to “source” the Keystone client’s environment variable with the SERVICE_TOKEN and SERVICE_ENDPOINT. Follow these steps: 1. At the command prompt, enter the following commands: # export SERVICE_TOKEN=$(openssl rand -hex 10) # export SERVICE_ENDPOINT=http://127.0.0.1:35357/v2.0 2. Save the value of SERVICE_TOKEN in a file: # echo $SERVICE_TOKEN > ~/keystone_admin_token 3. Update the /etc/keystone/keystone.conf file by setting the admin_token and connection options: # admin_token = ADMIN replaced by: admin_token = SERVICE_TOKEN_VALUE and # connection = sqlite:////var/lib/keystone/keystone.db replaced by: connection = mysql://keystone:KEYSTONE_PASSWORD@HOST_NAME/keystone Keystone installation script: The Keystone installation script creates an SQLite database on /var/lib/keystone/. We do not use SQLite as the main repository because the preferred method is to use the separate MySQL installation process that we described in “MySQL database” on page 11. Password: In the preceding command, you created a MySQL user named “keystone” with the password YOUR_KEYSTONE_PASSWORD. Replace YOUR_KEYSTONE_PASSWORD with your own password and keep it in a safe place. Tip: We use OpenSSL’s rand function, which might not be installed on your system, to generate the Service Token Key. Tip: Save the generated file (keystone_admin_token) in a safe place because the content is used to configure other OpenStack components.
  • 13. Using the IBM XIV Storage System in OpenStack Cloud Environments 13 Starting the Keystone service Start the Keystone service and make it part of the system start procedure: 1. To start the Keystone service, run this command: # sudo service openstack-keystone start 2. To make the service available after the system starts, run this command: # sudo chkconfig openstack-keystone on Verify that the Keystone service is running and that no errors exist in the Keystone log file: 1. Check whether the Keystone service is running. Run the command that is shown in Example 5. Example 5 Check Keystone service # sudo service keystone status keystone start/running, process 909 2. Check the error log: # grep -i error /var/log/keystone/keystone.log Synchronizing the keystone database You can now synchronize the keystone database. The synchronization process creates the required tables in the database. To synchronize the keystone database, run the keystone-manage db_sync command in the terminal prompt as the root user. After the database initialization, you can create users, roles, tenants, and services. Creating users, roles, and tenants When you install Keystone, the database tables are empty. You must create several items to administer and allow other components to interact with Keystone. Example 6 shows how to create a user that is called admin. Then, give that user the admin role within a defined tenant named admin. Then, use the admin user that you created to manage Keystone. Creating a user Create an admin user with the Keystone user-create command as shown in Example 6. Example 6 Keystone creating a user # keystone user-create --name admin --pass passw0rd +----------+---------------------------------------------------------------------- ---------------------------------------------------+ | property | value | +----------+---------------------------------------------------------------------- ---------------------------------------------------+ | email | | | enabled | true | Important: If you created the database manually, you must synchronize the database in this way.
  • 14. 14 Using the IBM XIV Storage System in OpenStack Cloud Environments | id | c8bcbaaa5a244e49919918bda9a894a4 | | name | admin | | password | $6$rounds=40000$wo3vvujrr2vxnu.c$5d5chfsptblnnsn/bnpnxwgtwhkkwnkrwgv/wrzsp9qu4tgok unvdboavbz1p711o.2klfyqn/cwyhipckx2t/ | | tenantid | | +----------+---------------------------------------------------------------------- ---------------------------------------------------+ Creating a role Create a role with the Keystone role-create command as shown in Example 7. Example 7 Keystone creating a role # keystone role-create --name admin +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | id | fb2c178790704412bf0cefaa66c5d01a | | name | admin | +----------+----------------------------------+ Creating a tenant Create a tenant with the Keystone tenant-create command as shown in Example 8. Example 8 Keystone creating a tenant # keystone tenant-create --name admin +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | | | enabled | True | | id | e7b3098b7ac140c9ae9b0c78136ee7dc | | name | admin | +-------------+----------------------------------+ Add the admin user to the admin tenant with an admin role, as illustrated in Example 9. Example 9 Keystone adding a user to a tenant with a role # keystone user-role-add --user-id c8bcbaaa5a244e49919918bda9a894a4 > --role-id fb2c178790704412bf0cefaa66c5d01a > --tenant-id e7b3098b7ac140c9ae9b0c78136ee7dc Explanation: The IDs come from the previous commands. The user-add-role command has no output.
  • 15. Using the IBM XIV Storage System in OpenStack Cloud Environments 15 Defining an admin credential A credential is the identification data, which is generally a user name, password, and API key, that proves your identity. A credential is used for your authentication to the Identity service before the Identity service issues a token to you. You can use this token with Keystone or nova client for subsequent requests within the cloud infrastructure. The token, which is valid for a defined duration, is required to access cloud resources. To simplify the process, create the admin user’s credentials by using environment variables. Table 5 describes the environment variables. Table 5 Client environment variables Create a credential file: # echo export OS_USERNAME=admin >keystonerc_admin # echo export OS_TENANT_NAME=admin >>keystonerc_admin # echo export OS_PASSWORD=passw0rd >>keystonerc_admin # echo export OS_AUTH_URL=http://127.0.0.1:35357/v2.0/ >>keystonerc_admin Then, verify that the user can use the keystone client as shown in Example 10. Example 10 Keystone validating the admin accounts # . ~/keystonerc_admin # keystone user-list +----------------------------------+-------+---------+-------+ | id | name | enabled | email | +----------------------------------+-------+---------+-------+ | c8bcbaaa5a244e49919918bda9a894a4 | admin | True | | +----------------------------------+-------+---------+-------+ Environment variable Description OS_USERNAME Your OpenStack user name. OS_PASSWORD Your OpenStack user password. OS_TENANT_NAME Your tenant name, which is provided with your user name typically. OS_AUTH_URL The endpoint for the Identity service (Keystone), which the nova client uses for authentication. Include the trailing forward slash (/) in the URL. Otherwise, you receive a 404 error. NOVACLIENT_DEBUG Set to 1 to show the underlying cURL (cURL is a command-line tool for running REST API requests with OpenSSL) commands with the embedded API requests in the command responses. Otherwise, omit this variable.
  • 16. 16 Using the IBM XIV Storage System in OpenStack Cloud Environments Creating the Service Tenant This special tenant contains the services to be made available through the service catalog. To create the Service Tenant, run the Keystone tenant-create client command as shown in Example 11. Example 11 Keystone creating the Service Tenant # keystone tenant-create --name service --description "Service Tenant" --enabled true +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Service Tenant | | enabled | True | | id | 8e40211618884c169e7c98166e903531 | | name | service | +-------------+----------------------------------+ Creating the glance user The Glance service has many interactions with Keystone and other OpenStack services. To allow Glance to interact and use cloud services, create the glance user in the Service Tenant. Create the glance service user in the Service Tenant as shown in Example 12. Example 12 Creating the service user in the Service Tenant # keystone user-create --name glance --pass password --tenant_id 8e40211618884c169e7c98166e903531 --enabled true +----------+---------------------------------------------------------------------- ---------------------------------------------------+ | Property | Value | +----------+---------------------------------------------------------------------- ---------------------------------------------------+ | email | | | enabled | True | | id | 39080354a8d6429da958931dab748ad4 | | name | glance | | password | $6$rounds=40000$TEM9ujWBDe/w4R30$bdmbuItECsSF3JEeGBEnMuGylTyFhItbIDvSTsF5Y4SBnPNW3 Cp62nJNBiO.Y5j3UlmnyNgwpxIfDbZjvYB1j1 | | tenantId | 8e40211618884c169e7c98166e903531 | +----------+---------------------------------------------------------------------- ---------------------------------------------------+ Important: You must create a user in the Service Tenant for all services that are added (Nova service user, EC2 user, and so on.)
  • 17. Using the IBM XIV Storage System in OpenStack Cloud Environments 17 Grant the admin role to the glance user in the Service Tenant by using this command: # keystone user-role-add --user-id 39080354a8d6429da958931dab748ad4 --role-id fb2c178790704412bf0cefaa66c5d01a --tenant-id 8e40211618884c169e7c98166e903531 Creating the Nova service user Create a Nova service user that is named nova in the Service Tenant as shown in Example 13. Example 13 Creating the Nova service user in the Service Tenant # keystone user-create --tenant-id 8e40211618884c169e7c98166e903531 --name nova --pass password --enabled true +----------+-----------------------------------------------------------------------------+ | Property | Value | +----------+-----------------------------------------------------------------------------+ | email | | enabled | True | id | 09d138247dda46659f078c9a322901a8 | | name | nova | | password | $6$rounds=40000$7M5yTg0lPB/G3NEE$OCLxu5kwxwKO.5JCWH7Ev4gre6rU5N0ZV1emFyQEuVO8RE/XU5QgHncEXk PZr4W4BZaS4e0tf7BGG5a37xu9/. | | tenantId | 8e40211618884c169e7c98166e903531 | +----------+------------------------------------------------------------------------------- ------------------------------------------+ Grant the admin role to the nova user in the Service Tenant by using this command: # keystone user-role-add --user-id 09d138247dda46659f078c9a322901a8 --role-id fb2c178790704412bf0cefaa66c5d01a --tenant-id 8e40211618884c169e7c98166e903531 Creating the EC2 user Elastic Compute Cloud (EC2) is an Amazon public cloud. OpenStack has APIs that are compatible with EC2. This compatibility support is intended to migrate client applications that are written for Amazon Web Services to OpenStack web services. To offer this compatibility, you must create the EC2 service. Create an EC2 service user that is named ec2 in the Service Tenant as shown in Example 14. Example 14 Creating the EC2 service user in the Service Tenant # keystone user-create --tenant-id 8e40211618884c169e7c98166e903531 --name ec2 --pass password --enabled true +----------+---------------------------------------------------------------------- ---------------------------------------------------+ | Property | Value | +----------+---------------------------------------------------------------------- ---------------------------------------------------+ | email | | | enabled | True |
  • 18. 18 Using the IBM XIV Storage System in OpenStack Cloud Environments | id | edcdf01973dd44f8857896b95ecf9d09 | | name | ec2 | | password | $6$rounds=40000$zxHONO76nUjXilpe$j1z318Gp49ivGaLqcQYH0w5xRa8eDfED//tSWbs4zFfy1WTnp anuzMG2pq8Wzr3HXbnty4J9VEg232Z4wKXcJ0 | | tenantId | 8e40211618884c169e7c98166e903531 | +----------+---------------------------------------------------------------------- ---------------------------------------------------+ Grant the admin role to the ec2 user in the Service Tenant: # keystone user-role-add --user-id edcdf01973dd44f8857896b95ecf9d09 --role-id fb2c178790704412bf0cefaa66c5d01a --tenant-id 8e40211618884c169e7c98166e903531 Creating the Swift user Create a Swift service user that is named swift in the Service Tenant as shown in Example 15. Example 15 Creating the Swift user in the Service Tenant # keystone user-create --tenant-id 8e40211618884c169e7c98166e903531 --name swift --pass password --enabled true +----------+---------------------------------------------------------------------- ---------------------------------------------------+ | Property | Value | +----------+---------------------------------------------------------------------- ---------------------------------------------------+ | email | | | enabled | True | | id | 7059a9f98c4c4e4d921e0d24de562624 | | name | swift | | password | $6$rounds=40000$rjzQRF0fqfqkcWZi$9nYH3utSrw27EejdckVA/TbzJBuJ9l3TwvcM0B.MxZc75zqhZ B2v0axe4vPSciKQaWFWwtgUTv5hvrEDdXhwN. | | tenantId | 8e40211618884c169e7c98166e903531 | +----------+---------------------------------------------------------------------- ---------------------------------------------------+ Grant the admin role to the swift user in the Service Tenant: # keystone user-role-add --user-id 7059a9f98c4c4e4d921e0d24de562624 --role-id fb2c178790704412bf0cefaa66c5d01a --tenant-id 8e40211618884c169e7c98166e903531 Example 16 on page 19 shows the user and tenant definitions that we created.
  • 19. Using the IBM XIV Storage System in OpenStack Cloud Environments 19 Example 16 OpenStack items list # keystone user-list +----------------------------------+--------+---------+-------+ | id | name | enabled | email | +----------------------------------+--------+---------+-------+ | 09d138247dda46659f078c9a322901a8 | nova | True | | | 39080354a8d6429da958931dab748ad4 | glance | True | | | 7059a9f98c4c4e4d921e0d24de562624 | swift | True | | | c8bcbaaa5a244e49919918bda9a894a4 | admin | True | | | edcdf01973dd44f8857896b95ecf9d09 | ec2 | True | | +----------------------------------+--------+---------+-------+ # keystone role-list +----------------------------------+-------+ | id | name | +----------------------------------+-------+ | fb2c178790704412bf0cefaa66c5d01a | admin | +----------------------------------+-------+ # keystone tenant-list +----------------------------------+---------+---------+ | id | name | enabled | +----------------------------------+---------+---------+ | 8e40211618884c169e7c98166e903531 | service | True | | e7b3098b7ac140c9ae9b0c78136ee7dc | admin | True | +----------------------------------+---------+---------+ Enabling Keystone To enable the compatibility for Swift with the Amazon Simple Storage Service (S31) API in Keystone, ensure that you define a filter. Enable the new filter in the /etc/keystone/keystone.conf file: [filter:s3_extension] paste.filter_factory = keystone.contrib.s3:S3Extension.factory [pipeline:admin_api] pipeline = token_auth admin_token_auth xml_body json_body debug ec2_extension s3_extension crud_extension admin_service Defining services You must perform two Keystone operations when you define an OpenStack service in the catalog. First, use the Keystone service-create command to enter a service item in the keystone database. For each service, you must define a type. The following services require these types: Nova service type is compute. EC2 service type is ec2. Glance service type is image. Keystone service type is identify. 1 Amazon S3 is a simple web services interface that can be used to store and retrieve any amount of data, at any time, from anywhere on the web.
  • 20. 20 Using the IBM XIV Storage System in OpenStack Cloud Environments Then, in a second step, with the Keystone endpoint-create command, create an endpoint item that links back to the service that you entered. This endpoint item specifies how the client can connect to the service. Example 17 through Example 22 on page 22 show the definitions of an associated endpoint for the mandatory services. Example 17 Creating the Keystone service with its endpoint # keystone service-create --name=keystone --type=identity --description="Keystone Identity Service" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Keystone Identity Service | | id | dbbd584177e84b2b95ff4cd4033de6b8 | | name | keystone | | type | identity | +-------------+----------------------------------+ # keystone endpoint-create --region RegionOne --service_id dbbd584177e84b2b95ff4cd4033de6b8 --publicurl 'http://172.16.104.169:5000/v2.0' --adminurl 'http://172.16.104.169:35357/v2.0' --internalurl 'http://172.16.104.169:5000/v2.0' +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | adminurl | http://172.16.104.169:35357/v2.0 | | id | 0ddb84d4ef534ecaaa93901836e6f58e | | internalurl | http://172.16.104.169:5000/v2.0 | | publicurl | http://172.16.104.169:5000/v2.0 | | region | RegionOne | | service_id | dbbd584177e84b2b95ff4cd4033de6b8 | +-------------+----------------------------------+ Example 18 shows the creation of a Compute service with its associated endpoint. Example 18 Creating the Compute service with its endpoint # keystone service-create --name nova --type compute --description="Nova Compute Service" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Nova Compute Service | | id | bc65b85d04524b36b502cbd3f61f504c | | name | nova | | type | compute | +-------------+----------------------------------+ # keystone endpoint-create --region RegionOne --service_id=bc65b85d04524b36b502cbd3f61f504c --publicurl='http://172.16.104.169:8774/v2/%(tenant_id)s' --internalurl='http://172.16.104.169:8774/v2/%(tenant_id)s' --adminurl='http://172.16.104.169:8774/v2/%(tenant_id)s' +-------------+---------------------------------------------+
  • 21. Using the IBM XIV Storage System in OpenStack Cloud Environments 21 | Property | Value | +-------------+---------------------------------------------+ | adminurl | http://172.16.104.169:8774/v2/%(tenant_id)s | | id | e02e542363524bf8b9288526bea1825d | | internalurl | http://172.16.104.169:8774/v2/%(tenant_id)s | | publicurl | http://172.16.104.169:8774/v2/%(tenant_id)s | | region | RegionOne | | service_id | bc65b85d04524b36b502cbd3f61f504c | +-------------+---------------------------------------------+ Example 19 shows the creation of the Volume service with its associated endpoint. Example 19 Creating the Volume service with its endpoint # keystone service-create --name volume --type volume --description="Nova Volume Service" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Nova Volume Service | | id | c5826ce21c4e4268a175dee78453ec79 | | name | volume | | type | volume | +-------------+----------------------------------+ # keystone endpoint-create --region RegionOne --service_id=c5826ce21c4e4268a175dee78453ec79 --publicurl='http://172.16.104.169:8776/v1/%(tenant_id)s' --internalurl='http://172.16.104.169:8776/v1/%(tenant_id)s' --adminurl='http://172.16.104.169:8776/v1/%(tenant_id)s' +-------------+---------------------------------------------+ | Property | Value | +-------------+---------------------------------------------+ | adminurl | http://172.16.104.169:8776/v1/%(tenant_id)s | | id | 1b6ef336a3444382b0bc87cf8012280e | | internalurl | http://172.16.104.169:8776/v1/%(tenant_id)s | | publicurl | http://172.16.104.169:8776/v1/%(tenant_id)s | | region | RegionOne | | service_id | c5826ce21c4e4268a175dee78453ec79 | +-------------+---------------------------------------------+ Example 20 shows the creation of the Image service with its associated endpoint. Example 20 Creating the Image service with its endpoint # keystone service-create --name glance --type image --description="Glance Image Service" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Glance Image Service | | id | 4b4e999ea40b42f7abfdd4a88e29e72b | | name | glance | | type | image | +-------------+----------------------------------+
  • 22. 22 Using the IBM XIV Storage System in OpenStack Cloud Environments # keystone endpoint-create --region RegionOne --service_id=4b4e999ea40b42f7abfdd4a88e29e72b --publicurl='http://172.16.104.169:9292/v1' --internalurl='http://172.16.104.169:9292/v1' --adminurl='http://172.16.104.169:9292/v1' +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | adminurl | http://172.16.104.169:9292/v1 | | id | 63400c355f814b00b07480de8b65ce85 | | internalurl | http://172.16.104.169:9292/v1 | | publicurl | http://172.16.104.169:9292/v1 | | region | RegionOne | | service_id | 4b4e999ea40b42f7abfdd4a88e29e72b | +-------------+----------------------------------+ Example 21 shows the creation of the EC2 service with its associated endpoint. Example 21 Creating the EC2 service with its endpoint # keystone service-create --name ec2 --type ec2 --description="EC2 Compatibility Layer" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | EC2 Compatibility Layer | | id | d6359302111948319b0ebb48e7a42b30 | | name | ec2 | | type | ec2 | +-------------+----------------------------------+ # keystone endpoint-create --region RegionOne --service_id=d6359302111948319b0ebb48e7a42b30 --publicurl='http://172.16.104.169:8773/services/Cloud' --internalurl='http://172.16.104.169:8773/services/Cloud' --adminurl='http://172.16.104.169:8773/services/Admin' +-------------+-------------------------------------------+ | Property | Value | +-------------+-------------------------------------------+ | adminurl | http://172.16.104.169:8773/services/Admin | | id | d0d9328cd8d843d4a5bbaeaa265437e4 | | internalurl | http://172.16.104.169:8773/services/Cloud | | publicurl | http://172.16.104.169:8773/services/Cloud | | region | RegionOne | | service_id | d6359302111948319b0ebb48e7a42b30 | +-------------+-------------------------------------------+ Example 22 shows the creation of the Storage service with its associated endpoint. Example 22 Creating the Storage service with its endpoint # keystone service-create --name swift --type object-store --description="Object Store Service" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+
  • 23. Using the IBM XIV Storage System in OpenStack Cloud Environments 23 | description | Object Store Service | | id | 4cade54c7d8c44d393dff1a887e06700 | | name | swift | | type | object-store | +-------------+----------------------------------+ # keystone endpoint-create --region RegionOne --service_id=4cade54c7d8c44d393dff1a887e06700 --publicurl 'http://172.16.104.169:8080/v1/AUTH_%(tenant_id)s' --adminurl 'http://172.16.104.169:8080/' --internalurl 'http://172.16.104.169:8080/v1/AUTH_%(tenant_id)s' +-------------+--------------------------------------------------+ | Property | Value | +-------------+--------------------------------------------------+ | adminurl | http://172.16.104.169:8080/ | | id | 55b151af1377469686bad18e238e2d4e | | internalurl | http://172.16.104.169:8080/v1/AUTH_%(tenant_id)s | | publicurl | http://172.16.104.169:8080/v1/AUTH_%(tenant_id)s | | region | RegionOne | | service_id | 4cade54c7d8c44d393dff1a887e06700 | +-------------+--------------------------------------------------+ Validating the Keystone installation with cURL Install cURL (curl), which is a command-line tool for running REST API requests with OpenSSL (openssl). If you are required to install cURL, run this command: # aptitude install curl openssl The command in Example 23 shows a query to ensure that Keystone (Identity service) is running. In return, you receive a token for the admin user. Example 23 Validating the Keystone installation with the cURL tool # curl -d '{"auth": {"tenantName": "admin", "passwordCredentials": {"username": "admin", "password": "passw0rd"}}}' -H "Content-type:application/json" http://172.16.104.169:35357/v2.0/tokens | python -mjson.tool % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2555 0 2452 100 103 18580 780 --:--:-- --:--:-- --:--:-- 18717 { "access": { "metadata": { "is_admin": 0, "roles": [ "fb2c178790704412bf0cefaa66c5d01a" ] }, "serviceCatalog": [ { "endpoints": [ { "adminURL": "http://172.16.104.169:8774/v2/e7b3098b7ac140c9ae9b0c78136ee7dc", "id": "e02e542363524bf8b9288526bea1825d", "internalURL": "http://172.16.104.169:8774/v2/e7b3098b7ac140c9ae9b0c78136ee7dc",
  • 24. 24 Using the IBM XIV Storage System in OpenStack Cloud Environments "publicURL": "http://172.16.104.169:8774/v2/e7b3098b7ac140c9ae9b0c78136ee7dc", "region": "RegionOne" } ], "endpoints_links": [], "name": "nova", "type": "compute" }, { "endpoints": [ { "adminURL": "http://172.16.104.169:9292/v1", "id": "63400c355f814b00b07480de8b65ce85", "internalURL": "http://172.16.104.169:9292/v1", "publicURL": "http://172.16.104.169:9292/v1", "region": "RegionOne" } ], "endpoints_links": [], "name": "glance", "type": "image" }, Another way to test Keystone is to “source” a credential as shown in Example 24. Then, run a command by using the keystone client. Example 24 Validating the Keystone installation with the keystone command # cat > keystonerc_admin export OS_USERNAME=admin export OS_PASSWORD=passw0rd export OS_TENANT_NAME=admin export OS_AUTH_URL=http://127.0.0.1:5000/v2.0/ enter CTRL-D to close the file keystonerc_admin # source keystonerc_admin # keystone user-list +----------------------------------+--------+---------+-------+ | id | name | enabled | email | +----------------------------------+--------+---------+-------+ | 09d138247dda46659f078c9a322901a8 | nova | True | | | 39080354a8d6429da958931dab748ad4 | glance | True | | | 7059a9f98c4c4e4d921e0d24de562624 | swift | True | | | c8bcbaaa5a244e49919918bda9a894a4 | admin | True | | | edcdf01973dd44f8857896b95ecf9d09 | ec2 | True | | +----------------------------------+--------+---------+-------+ Keystone client: The keystone client is installed with the Keystone packages.
  • 25. Using the IBM XIV Storage System in OpenStack Cloud Environments 25 Installing Glance After the Keystone installation, Glance (Image service) must be installed. Install the Glance package by using this command: # aptitude install glance Or, you can initialize the glance database manually: # mysql -u root -p mysql> CREATE DATABASE glance; mysql> GRANT ALL ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'passw0rd'; Enter quit at the mysql> prompt to exit MySQL. Configuring Glance (Image service to use Keystone) Keystone is the main authentication processor. Update the Glance configuration files to use Keystone and to set the MySQL user and password. Follow these steps: 1. To update the configuration files, run the commands as shown in Example 25. Example 25 Updating the Glance configuration files # /etc/glance/glance-api-paste.ini [filter:authtoken] admin_token = $(cat ~/keystone_admin_token) admin_tenant_name = service admin_user = glance admin_password = passw0rd /etc/glance/glance-api.conf [paste_deploy] flavor = keystone # Allow access to version 1 of glance api enable_v1_api = True # Allow access to version 2 of glance api enable_v2_api = True /etc/glance/glance-registry.conf sql_connection = "mysql://glance:passw0rd@localhost/glance" 2. Synchronize the Glance database with the glance-manage command: # glance-manage db_sync 3. Start the glance-api and glance-registry services: # for svc in registry api ; do service glance-$svc start; done 4. Make Glance available after the reboot: # for svc in registry api ; do chkconfig glance-$svc on; done Attention: Depending on which python script version you use, errors might appear in the database. In this case, delete the glance database and the glance user in MySQL, and follow the manual Glance database initialization that is shown next. Troubleshooting: You can troubleshoot the Image service by checking the /var/log/glance/registry.log and /var/log/glance/api.log files.
  • 26. 26 Using the IBM XIV Storage System in OpenStack Cloud Environments You can check that Glance is running correctly by issuing the Glance command: # glance index There is no output because Glance does not have any images yet. Adding an image to Glance For our example, we use an image that we created with the virt-install command. You might want to create your own image or download the test image as shown in Example 27. Follow these steps: 1. Create the image. Example 26 shows how to create an image from the Red Hat Linux Server 6.3 Installation ISO DVD. Example 26 Creating a virt-install image # sudo virt-install -n rh-qemu-02 -r 1024 --os-type=linux -f /tmp/red-hat-6.3-server-2.qcow2 -s 8 -c /home/itso/RHEL6.3-20120613.2-Server-x86_64-DVD1.iso OpenStack offers several test images that you can download from this website: http://docs.openstack.org/trunk/openstack-compute/admin/content/starting-images .html In our scenario, we use the cirros image. To download the test image, run the command that is shown in Example 27. Example 27 External test images for Glance # mkdir -p /home/itso/images # cd /home/itso/images # wget http://smoser.brickies.net/ubuntu/ttylinux-uec/ttylinux-uec-amd64-12.1_2.6.35-2 2_1.tar.gz --2012-10-25 07:12:11-- http://smoser.brickies.net/ubuntu/ttylinux-uec/ttylinux-uec-amd64-12.1_2.6.35-2 2_1.tar.gz Resolving smoser.brickies.net... 173.236.255.44 Connecting to smoser.brickies.net|173.236.255.44|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 24346106 (23M) [application/x-tar] Saving to: “ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz” 100%[========================================================================== =========================================>] 24,346,106 370K/s in 85s 2012-10-25 07:13:37 (278 KB/s) - “ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz” saved [24346106/24346106] # tar -zxvf ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz 2. Now, you can load the images to Glance as shown in Example 28. Example 28 Loading images to Glance # glance image-create --name="tty-linuxkernel" --disk-format=aki --container-format=aki --file=ttylinux-uec-amd64-12.1_2.6.35-22_1-vmlinuz +------------------+--------------------------------------+
  • 27. Using the IBM XIV Storage System in OpenStack Cloud Environments 27 | Property | Value | +------------------+--------------------------------------+ | checksum | 3ed2965d3f8d877a3ee3e061fd648e9a | | container_format | aki | | created_at | 2013-01-28T11:45:06.620419 | | deleted | False | | deleted_at | None | | disk_format | aki | | id | f792c482-630c-4f83-b969-500d4718aece | | is_public | False | | min_disk | 0 | | min_ram | 0 | | name | tty-linuxkernel | | owner | None | | protected | False | | size | 4404752 | | status | active | | updated_at | 2013-01-28T11:45:06.871922 | +------------------+--------------------------------------+ # glance image-create --name="tty-linux-ramdisk" --disk-format=aki --container-format=aki --file=ttylinux-uec-amd64-12.1_2.6.35-22_1-loader +------------------+--------------------------------------+ | Property | Value | +------------------+--------------------------------------+ | checksum | 644cf7d6d9e7b41d527e30e8e8c685a4 | | container_format | aki | | created_at | 2013-01-28T11:47:36.597966 | | deleted | False | | deleted_at | None | | disk_format | aki | | id | 243a91a2-dd3b-486c-a7ce-fb395bb924ef | | is_public | False | | min_disk | 0 | | min_ram | 0 | | name | tty-linux-ramdisk | | owner | None | | protected | False | | size | 96629 | | status | active | | updated_at | 2013-01-28T11:47:36.749197 | +------------------+--------------------------------------+ # glance image-create --name="MY-Linux" --disk-format=qcow2 --container-format=bare --file=ttylinux-uec-amd64-12.1_2.6.35-22_1.img +------------------+--------------------------------------+ | Property | Value | +------------------+--------------------------------------+ | checksum | 10047a119149e08fb206eea89832eee0 | | container_format | bare | | created_at | 2013-01-28T12:09:10.978193 | | deleted | False | | deleted_at | None | | disk_format | qcow2 | | id | 6da3fc51-be7e-4e57-ad2d-9d53b3f9b867 |
  • 28. 28 Using the IBM XIV Storage System in OpenStack Cloud Environments | is_public | False | | min_disk | 0 | | min_ram | 0 | | name | MY-Linux | | owner | None | | protected | False | | size | 25165824 | | status | active | | updated_at | 2013-01-28T12:09:11.352986 | +------------------+--------------------------------------+ 3. Verify that the images are correctly loaded into the Glance database as shown in Example 29. Example 29 Verifying that the images are loaded in Glance # glance image-show 6da3fc51-be7e-4e57-ad2d-9d53b3f9b867 +------------------+--------------------------------------+ | Property | Value | +------------------+--------------------------------------+ | checksum | 10047a119149e08fb206eea89832eee0 | | container_format | bare | | created_at | 2013-01-28T12:09:10.978193 | | deleted | False | | disk_format | qcow2 | | id | 6da3fc51-be7e-4e57-ad2d-9d53b3f9b867 | | is_public | False | | min_disk | 0 | | min_ram | 0 | | name | MY-Linux | | protected | False | | size | 25165824 | | status | active | | updated_at | 2013-01-28T12:09:11.352986 | +------------------+--------------------------------------+ Installing Nova Compute Now, we can install Nova, which is also called Cloud Controller. Nova is responsible for managing the virtual machine (VM). The Nova installation requires the installation of several OpenStack services. The OpenStack services are qpid (messaging system), nova-compute, and memcached (used to speed up authentication, which is done with every request and insures proper communication with Dashboard). Install the Cloud Controller packages by using this command: # aptitude install nova-compute nova-volume nova-network nova-scheduler nova-objectstore memcached qpidd Create the Nova database: 1. Connect to the MySQL database by running the mysql -u root -p command. 2. At the MySQL prompt, enter the CREATE DATABASE nova; command. 3. At the MySQL prompt, create the MySQL user and grant access to the nova database: GRANT ALL ON nova.* TO 'nova'@'localhost' IDENTIFIED BY ‘passw0rd’;
  • 29. Using the IBM XIV Storage System in OpenStack Cloud Environments 29 4. Enter quit to quit MySQL. 5. Ensure that the owner of the /etc/nova/nova.conf file is set to root:nova. Ensure that the mode is set to 0640 by entering the following command as the root user: # groupadd nova # usermod -g nova nova # chown -R username:nova /etc/nova # chmod 640 /etc/nova/nova.conf 6. Update the /etc/nova/nova.conf and /etc/nova/nova/api-paste.ini files: – Make these updates in the etc/nova/nova.conf file: [DEFAULT] sql_connection = "mysql://nova:passw0rd@localhost/nova" auth_strategy = keystone network_manager = nova.network.manager.FlatDHCPManager fixed_range = 192.168.100.0/24 public_interface = eth0 flat_interface = eth0 flat_network_bridge = br100 – Make these updates in the /etc/nova/api-paste.ini file: [filter:authtoken] admin_token = YOUR_keystone_admin_token_VALUE 7. Then, stop the Nova services before the database synchronization: # for svc in api objectstore compute network volume scheduler cert; do sudo service nova-$svc stop ; sudo chkconfig nova-$svc on ; done 8. Create the tables in the nova database by using the nova-manage command: # nova-manage db sync 9. Restart the Nova services: # for svc in api objectstore compute network volume scheduler cert; do sudo service nova-$svc start ; done Configuring Qpid Configure and start Qpid, which provides Advanced Message Queueing Protocol (AMQP) to the Nova services. In the /etc/qpid/qpidd.conf file, uncomment #auth=yes and set it to auth=no as shown: auth=no Then, start by using these commands: # sudo service qpidd start # sudo chkconfig qpidd on Installing KVM In our environment, we use kernel-based virtual machine (KVM) as a hypervisor. Follow these steps: 1. To install the kvm package, run this command: # aptitude install kvm
  • 30. 30 Using the IBM XIV Storage System in OpenStack Cloud Environments 2. Install the other suggested virtualization packages: # aptitude install virt-manager libvirt0 Configuring the Nova Compute service to use the KVM hypervisor We use libvirt, which provides the hypervisor to nova-compute. The nova-compute service interacts with the KVM through the libvirt service. Follow these steps: 1. Start the hypervisor and make it available after the reboot: # sudo service libvirtd start # sudo chkconfig libvirtd on 2. Update the nova.conf file to use the correct hypervisor. Change the following lines in the /etc/nova/nova.conf file: [DEFAULT] connection_type = libvirt libvirt_type = kvm libvirt_inject_partition = -1 3. Generate the Secure Shell (ssh) key pair that is used to connect to the VM instance through SSH. Before you instantiate a VM, you need to create at least one key pair. This key pair is injected into the VM so that you can use SSH to connect to the VM. Create a key pair and add the public key to OpenStack: # nova keypair-add oskey > oskey.priv # chmod 600 oskey.priv Creating the network for VM Use the bridge br100 for the VM use. Define the network range by using 192.168.100.0/24 as the fixed range: # aptitude install bridge-utils # ip link set eth0 promisc on # nova-manage network create private --multi_host=T --fixed_range_v4=192.168.100.0/24 --bridge_interface=br100 --num_networks=1 --network_size=256 -vlan=100 Configuring nova-volume (Cinder) Either nova-volume or Cinder, which is responsible for handling persistent storage for VMs, can have multiple back-end storage devices, such as IBM XIV or IBM V7000. Set up a nova-volume group as a quick and easy way to try out persistent volumes in the testing environment, as shown in Example 30. Example 30 nova-volume file-backed Logical Volume Manager (LVM) volume group # sudo truncate --size 20G ~/nova-volumes # sudo losetup -fv ~/nova-volumes Loop device is /dev/loop1 # sudo vgcreate nova-volumes /dev/loop1 Remember: This method must not be used in a production environment.
  • 31. Using the IBM XIV Storage System in OpenStack Cloud Environments 31 No physical volume label read from /dev/loop0 Physical volume "/dev/loop0" successfully created Volume group "nova-volumes" successfully created # vgdisplay nova-volumes --- Volume group --- VG Name nova-volumes System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 20.00 GiB PE Size 4.00 MiB Total PE 5119 Alloc PE / Size 0 / 0 Free PE / Size 5119 / 20.00 GiB VG UUID 11yCOi-2je7-oXgd-g0MQ-lLMn-vUr0-taygT6 Start the tgtd (SCSI target daemon) service: # sudo service tgtd start # sudo chkconfig tgtd on Verify the controller installation as shown in Example 31. Example 31 nova service control # nova-manage service list Binary Host Zone Status State Updated_At nova-cert cloud01 nova enabled XXX None nova-scheduler cloud01 nova enabled XXX None nova-compute cloud01 nova enabled XXX None nova-network cloud01 nova enabled XXX None # nova image-list +--------------------------------------+-------------------+--------+--------+ | ID | Name | Status | Server | +--------------------------------------+-------------------+--------+--------+ | 6da3fc51-be7e-4e57-ad2d-9d53b3f9b867 | MY-Linux | ACTIVE | | | 243a91a2-dd3b-486c-a7ce-fb395bb924ef | tty-linux-ramdisk | ACTIVE | | | f792c482-630c-4f83-b969-500d4718aece | tty-linuxkernel | ACTIVE | | +--------------------------------------+-------------------+--------+--------+
  • 32. 32 Using the IBM XIV Storage System in OpenStack Cloud Environments Installing the IBM Storage Driver for OpenStack The proxy is compatible with the open source driver that is already part of OpenStack in the Folsom release. The current IBM Storage Driver for OpenStack offers the following features: Create or delete a volume in the XIV Storage System by using the nova volume-* or volume-snapshot-* command. Attach an XIV Volume to or detach an XIV Volume from a VM and make the volume accessible via iSCSI. The iSCSI qualified name (IQN) is automatically created on the XIV Storage System. To install the IBM Storage Driver for OpenStack, create a pool on the XIV Storage System for the node. In our example, we created a pool that is named OpenStack. For the driver installation, you need the XIV IP address, admin name, and password. To install the IBM Storage Driver for OpenStack, see the driver installation guide: http://pic.dhe.ibm.com/infocenter/strhosts/ic/index.jsp?topic=%2Fcom.ibm.help.strg hosts.doc%2Fnova-homepage.html Verify that the IBM Storage Driver for OpenStack is correctly installed by checking the nova.conf file as shown in Example 32. The SAN parameters must have the volume_driver set to xiv_openstack.xiv.XIVDriver and the xiv_proxy set to xiv_openstack.nova_proxy.XIVNovaProxy. Example 32 XIV nova driver setup # tail /etc/nova/nova.conf libvirt_type=qemu auth_strategy = keystone flat_interface = eth0 public_interface = eth0 volume_driver = xiv_openstack.xiv.XIVDriver xiv_proxy = xiv_openstack.nova_proxy.XIVNovaProxy san_login = YOUR_XIV_ADMIN_ID san_password = YOUR_XIV_ADMIN_PASSWORD san_clustername = OpenStack san_ip = ip_address Create a volume by using IBM XIV Storage Driver for OpenStack: # nova volume-create --display_name redbk-03 34 This command has no output. Verify the volume that we created with the nova volume-list command (see Example 33 on page 32). The volume must have the “available” status before it can be used. Example 33 Verifying an XIV volume creation by using the nova command # nova volume-list +----+-----------+--------------+------+-------------+-------------+ | ID | Status | Display Name | Size | Volume Type | Attached to | Important: The Folsom release offers two options in terms of block storage: nova-volume and Cinder. Both options are nearly identical in terms of functionality, APIs, and even the general theory of operation. The illustrations in this paper are based on nova-volume. Remember, however, that nova-volume is deprecated and will be removed at the Grizzly release.
  • 33. Using the IBM XIV Storage System in OpenStack Cloud Environments 33 +----+-----------+--------------+------+-------------+-------------+ | 4 | available | redbk-01 | 10 | None | | | 5 | available | redbk-03 | 34 | None | | +----+-----------+--------------+------+-------------+-------------+ # nova volume-show 5 +---------------------+---------------------+ | Property | Value | +---------------------+---------------------+ | attachments | [] | | availability_zone | nova | | created_at | 2012-10-26 09:02:27 | | display_description | None | | display_name | redbk-03 | | id | 5 | | metadata | {} | | size | 34 | | snapshot_id | None | | status | available | | volume_type | None | +---------------------+---------------------+ Starting a virtual machine and attaching an XIV volume To create a VM or instance, select the following information: The “flavor” or “instance type” that is needed for that VM or instance The image A flavor or instance type describes the compute, memory, and storage capacity of nova computing instances. The flavor or instance type is the size (in terms of vCPUs, RAM, and so on) of the virtual server. In the EC2 API, these instance types are named m1.large or m1.tiny. The OpenStack API designates these flavors with names, such as 512 MB Server. OpenStack Image (Glance) uses predefined machine characteristics. The nova flavor-list command prints existing machine characteristics that are defined in the Nova database. A new flavor can be created by using the nova flavor-create command. Example 34 shows how to start a new image that is created with the virt-install command. Add the VM image to the catalog by using the glance add command. Then, launch the instance with a nova boot command. Example 34 Adding an image to Glance # glance add name="RedHat Enterprise Server 6.3" disk_format=qcow2 container_format=bare < /tmp/red-hat-6.3-server-2.qcow2 Uploading image 'RedHat Enterprise Server 6.3' ================================================================================== ============================================[100%] 55.4M/s, ETA 0h 0m 0s Added new image with ID: 5a7e4539-df7c-47be-8093-7da418d62e42 # nova image-list +--------------------------------------+-----------------------+--------+--------+ | ID | Name | Status | Server | Storage capacity: The storage capacity in the flavor-list represents local storage on the Compute Node.
  • 34. 34 Using the IBM XIV Storage System in OpenStack Cloud Environments +--------------------------------------+-----------------------+--------+--------+ | 0c5de13c-8a66-4004-9b42-797f34fa2059 | cirros-0.3.0-x86_64 | ACTIVE | | | 53fee854-c9b6-4b66-98e6-62a8c5244d66 | tty-linuxramdisk | ACTIVE | | | 5a7e4539-df7c-47be-8093-7da418d62e42 | RedHat Enterprise Server 6.3 | ACTIVE | | | a19c7ada-982b-4062-bc09-32ac618e1d4f | tty-linuxkernel | ACTIVE | | | f6e3c2a1-8c5b-4c32-bb40-2ed45f563133 | tty-linux | ACTIVE | | +--------------------------------------+-----------------------+--------+--------+ # nova boot --flavor 2 --key_name oskey --image 5a7e4539-df7c-47be-8093-7da418d62e42 redhat +-------------------------------------+--------------------------------------+ | Property | Value | +-------------------------------------+--------------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-SRV-ATTR:host | None | | OS-EXT-SRV-ATTR:hypervisor_hostname | None | | OS-EXT-SRV-ATTR:instance_name | instance-00000003 | | OS-EXT-STS:power_state | 0 | | OS-EXT-STS:task_state | scheduling | | OS-EXT-STS:vm_state | building | | accessIPv4 | | | accessIPv6 | | | adminPass | JTnrCV33dT6N | | config_drive | | | created | 2012-10-26T16:07:28Z | | flavor | m1.small | | hostId | | | id | ef6e6477-951c-4b1c-b5c8-73943800d5da | | image | RedHat Enterprise Server 6.3 | | key_name | oskey | | metadata | {} | | name | redhat | | progress | 0 | | status | BUILD | | tenant_id | aedd77cd85d84c9886395c8fa8e620ae | | updated | 2012-10-26T16:07:29Z | | user_id | 965e7fa9579e4ceba733e9bb225aac63 | +-------------------------------------+--------------------------------------+ # nova list +--------------------------------------+--------+--------+----------------+ | ID | Name | Status | Networks | +--------------------------------------+--------+--------+----------------+ | ef6e6477-951c-4b1c-b5c8-73943800d5da | redhat | BUILD | vmnet=10.0.0.3 | | efbaa726-ab57-4d5b-ab39-741f57f0d1a3 | cirros | ACTIVE | vmnet=10.0.0.2 | +--------------------------------------+--------+--------+----------------+ # nova show redhat +-------------------------------------+------------------------------------------+ | Property | Value | +-------------------------------------+------------------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-SRV-ATTR:host | blade11-HS21-13 | | OS-EXT-SRV-ATTR:hypervisor_hostname | None |
  • 35. Using the IBM XIV Storage System in OpenStack Cloud Environments 35 | OS-EXT-SRV-ATTR:instance_name | instance-00000003 | | OS-EXT-STS:power_state | 1 | | OS-EXT-STS:task_state | None | | OS-EXT-STS:vm_state | active | | accessIPv4 | | | accessIPv6 | | | config_drive | | | created | 2012-10-26T16:07:28Z | | flavor | m1.small | | hostId |d7a4f8634212269134c1f66f2447e821c128cbb445a4638bb8914200 | | id | ef6e6477-951c-4b1c-b5c8-73943800d5da | | image | RedHat Enterprise Server 6.3 | | key_name | oskey | | metadata | {} | | name | redhat | | progress | 0 | | status | ACTIVE | | tenant_id | aedd77cd85d84c9886395c8fa8e620ae | | updated | 2012-10-26T16:17:27Z | | user_id | 965e7fa9579e4ceba733e9bb225aac63 | | vmnet network | 10.0.0.3 | +-------------------------------------+------------------------------------------+ Using Horizon (Dashboard) Installing Horizon, the OpenStack web dashboard, is simple. Install the OpenStack-Dashboard package and then start the apache2 daemon. No additional configuration is needed. After the httpd daemon is running, users can log on to the Dashboard by using their OpenStack user names and passwords at http://host_ip_addr/horizon. Installing the Dashboard package Follow these steps to install the Dashboard package: 1. At the terminal prompt, run this command: # sudo aptitude install openstack-dashboard 2. Run this command to start the Dashboard: # sudo service httpd start 3. Then, to make the Dashboard available after the reboot, run this command: # sudo chkconfig httpd on Another service that is named qpidd might prevent you from starting the rabbitmq-server daemon correctly. To avoid this situation, stop the qpidd daemon before you start the rabbitmq-server daemon. Then, restart the qpidd daemon. Use these commands: # service qpidd stop # service rabbitmq-server start # service qpidd start
  • 36. 36 Using the IBM XIV Storage System in OpenStack Cloud Environments Check that the memcached service is running by using this command: # service memcached status If the service is not running, restart it by running this command: # service memcached start Load the Dashboard in a web browser to confirm that it is running. The Log In page is shown in Figure 4. Figure 4 Dashboard Log In window Managing Nova by using Dashboard In this example, the Object Store is used to create an instance. Follow these steps: 1. Log on to the catalog by providing a user name and password. 2. Select the Project tab and then select Volumes. The Volumes menu is shown in Figure 5 on page 37.
  • 37. Using the IBM XIV Storage System in OpenStack Cloud Environments 37 Figure 5 Dashboard - Volumes 3. Create a volume by selecting Create Volume. 4. On the Create Volume window, enter a volume name, a size in GBs, and an optional description. Then, click Create Volume as shown in Figure 6. Figure 6 Dashboard - Create Volume 5. Select Launch Instance to open the window that is shown in Figure 7 on page 38.
  • 38. 38 Using the IBM XIV Storage System in OpenStack Cloud Environments Figure 7 Dashboard - Images & Snapshots 6. Select the image to launch (we selected image01) and click Launch. 7. In the Launch Instance window, select a medium Flavor as shown in Figure 8. Click Launch. Figure 8 Dashboard - Launch Instance 8. You are returned to the Instances window, which this time displays the new instance as shown in Figure 9 on page 39.
  • 39. Using the IBM XIV Storage System in OpenStack Cloud Environments 39 Figure 9 Dashboard - Instances window that shows a new instance 9. Select the volume to attach to the instance. For our example, we selected the Vol01 volume. Then, select Edit attachment to open the window that is shown in Figure 10. Figure 10 Dashboard - Manage Volume Attachments 10.On Figure 10, in the drop-down list, select the instance that is launched and define a device that is named /dev/vdc/. Then, click Attach Volume. When you attach a volume by using the XIV Nova Volume Driver, an iSCSI host is created on the XIV Storage System. 11.Control the attachment of the created volume to the Compute Node. If the XIV Host Attachment Kit is installed, you can run the xiv_devlist command. 12.To verify that the volume is correctly attached to the instance, connect to the instance by running the ssh -i oskey.priv root@instance_ip_addr command. 13.List the device that is seen by the instance by using the ls /dev/vd* command. 14.You can now format the device within the instance as shown in Example 35 on page 40.
  • 40. 40 Using the IBM XIV Storage System in OpenStack Cloud Environments Example 35 Formatting the virtual device # sudo mkfs.ext4 /dev/vdc mke2fs 1.41.14 (22-Dec-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 2211840 inodes, 8835546 blocks 441777 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 270 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 26 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. 15.Mount the formatted device as shown in Figure 11. Figure 11 XIV Nova volume mount on the VM 16.Enter exit to leave the instance.
  • 41. Using the IBM XIV Storage System in OpenStack Cloud Environments 41 The team who wrote this paper This paper was produced by a team of specialists from around the world working at the International Technical Support Organization, San Jose Center. Desire Brival is a Certified Architect who works with clients and sales teams to architect complex multi-brand solutions. He has deep knowledge of the IBM cross-brand initiatives, such as Cloud Computing, Virtualization, IT Optimization, IBM Dynamic Infrastructure®, and Storage Optimization Infrastructure. He has competitive knowledge of the major storage providers, as well as converged infrastructure solution offerings (Matrix, UCS, and Exadata/Exalogic). Bert Dufrasne is an IBM Certified Consulting I/T Specialist and Project Leader for IBM System Storage® disk products at the International Technical Support Organization, San Jose Center. He worked at IBM in various I/T areas. He authored many IBM Redbooks® publications and also developed and taught technical workshops. Before he joined the ITSO, he worked for IBM Global Services as an Application Architect. He holds a Master’s degree in Electrical Engineering. Bruce Allworth is a Senior IT Specialist who works as a Client Technical Open Systems Storage Specialist in Americas Sales and Distribution. He has over 20 years in IT and extensive experience with midrange storage products in solution design, solution management, advanced problem determination, and disaster recovery. He worked closely with various IBM divisions in launching new products and creating critical documentation, including Technical and Delivery Assessment Checklists, and developing and delivering technical training for a wide range of audiences. Mark Kremkus is a Senior IT Specialist in the Advanced Technical Skills organization. He has 11 years of experience in the design of high performance, high availability solutions. Mark achieved Consulting-level certification in Actualizing IT solutions. Mark’s areas of expertise include enterprise storage performance analysis with emphasis on using empirical data to perform mathematical modeling of disk storage performance, as well as integrating storage with open systems hypervisors. He writes and presents on these topics. He holds a BS degree in Electrical Engineering from Texas A&M. Markus Oscheka is an IT Specialist for Proof of Concepts and Benchmarks in the Disk Solution Europe team in Mainz, Germany. His areas of expertise include setup and demonstration of IBM System Storage solutions in open environments. He has written several IBM Redbooks and acted as the co-project lead for Redbooks publications, including IBM DS8000® and IBM XIV Storage. He holds a degree in Electrical Engineering from the Technical University in Darmstad. Thomas Peralto is a Principal Consultant in the Storage Solutions Engineering Group. He has extensive experience in implementing large and complex transport networks and mission-critical data protection throughout the globe. Mr. Peralto also serves as a data replication and data migration expert and speaks on both topics at the national and international levels for IBM on the best practices for corporate data protection. Special thanks to Lihi Lihi Tikolsky, IBM, for her help in preparation of this document. Thanks to the following people for their contributions to this project: Ohad Atia, Erik Zaadi, Miron Aloni, Anthony Vattathil, and Brian Carmody IBM
  • 42. 42 Using the IBM XIV Storage System in OpenStack Cloud Environments Now you can become a published author, too! Here’s an opportunity to spotlight your skills, grow your career, and become a published author—all at the same time! Join an ITSO residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base. Find out more about the residency program, browse the residency index, and apply online at: ibm.com/redbooks/residencies.html Stay connected to IBM Redbooks Find us on Facebook: http://www.facebook.com/IBMRedbooks Follow us on Twitter: http://twitter.com/ibmredbooks Look for us on LinkedIn: http://www.linkedin.com/groups?home=&gid=2130806 Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter: https://www.redbooks.ibm.com/Redbooks.nsf/subscribe?OpenForm Stay current on recent Redbooks publications with RSS Feeds: http://www.redbooks.ibm.com/rss.html
  • 43. © Copyright International Business Machines Corporation 2013. All rights reserved. Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 43 Notices This information was developed for products and services offered in the U.S.A. IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service. IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to: IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A. The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you. This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice. Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk. IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you. Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurements may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment. Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental. COPYRIGHT LICENSE: This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs.
  • 44. 44 Using the IBM XIV Storage System in OpenStack Cloud Environments ® Redpaper™ This document REDP-4971-00 was created or updated on March 11, 2013. Send us your comments in one of the following ways: Use the online Contact us review Redbooks form found at: ibm.com/redbooks Send your comments in an email to: redbooks@us.ibm.com Mail your comments to: IBM Corporation, International Technical Support Organization Dept. HYTD Mail Station P099 2455 South Road Poughkeepsie, NY 12601-5400 U.S.A. Trademarks IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. These and other IBM trademarked terms are marked on their first occurrence in this information with the appropriate symbol (® or ™), indicating US registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at http://www.ibm.com/legal/copytrade.shtml The following terms are trademarks of the International Business Machines Corporation in the United States, other countries, or both: DS8000® Dynamic Infrastructure® IBM® Redbooks® Redpaper™ Redbooks (logo) ® System Storage® XIV® The following terms are trademarks of other companies: Intel, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. Linux is a trademark of Linus Torvalds in the United States, other countries, or both. Snapshot, and the NetApp logo are trademarks or registered trademarks of NetApp, Inc. in the U.S. and other countries. Other company, product, or service names may be trademarks or service marks of others.