GithubHelp home page GithubHelp logo

nova-scaleio-ephemeral's Introduction

ScaleIO ephemeral backend for Nova

This project provides code patches for Nova to use EMC ScaleIO as ephemeral storage backend.

Installation

Figure out installed version of Nova (e.g. 2015.1.2). Make appropriate diff file available on a compute node dedicated to patching. In the node console type:

$ patch -p 2 -i \<path to diff file\> -d \<path to installed nova\>

E.g.:

$ patch -p 2 -i ~/2015.1.2.diff -d /usr/lib/python2.7/dist-packages/nova

It is recommended to run this command previously with --dry-run option to make sure the patch will be applied correctly. The output should look like this:

checking file nova/virt/libvirt/driver.py
checking file nova/virt/libvirt/imagebackend.py
checking file nova/virt/libvirt/sio_utils.py
checking file nova/virt/libvirt/utils.py

But not like that:

checking file nova/virt/libvirt/driver.py
Hunk #6 succeeded at 1367 with fuzz 1 (offset -13 lines).
Hunk #7 FAILED at 1403.
1 out of 14 hunks FAILED
checking file nova/virt/libvirt/imagebackend.py
Hunk #3 succeeded at 870 (offset -9 lines).
Hunk #4 succeeded at 980 (offset -9 lines).
checking file nova/virt/libvirt/sio_utils.py
checking file nova/virt/libvirt/utils.py
Hunk #2 succeeded at 476 with fuzz 2 (offset -16 lines).

If the output contains failures or fuzzes, the patch does not suit installed Nova.

You also need to install python-scaleioclient from corresponding branch (juno, kilo, etc).

After applying a patch configure (see the next chapter) and restart Nova compute service.

Configuration

Change Nova compute config to let Nova use ScaleIO as ephemeral backend. Following options are mandatory:

[libvirt]
images_type = sio

[scaleio]
rest_server_ip = <ScaleIO Gateway IP>
rest_server_username = <ScaleIO Gateway user>
rest_server_password = <ScaleIO Gateway user password>
protection_domain_name = <ScaleIO protection domain to be used for ephemeral disks>
storage_pool_name = <ScaleIO pool name to be used for ephemeral disks>
default_sdcguid = <ScaleIO SDC guid of compute host>

To get compute host's SDC guid you can use:

$ /bin/emc/scaleio/drv_cfg --query_guid

It is important to specify default_sdcguid parameter in upper case.

Also supported:

[scaleio]
provisioning_type = <Provisioning type, ThickProvisioned (default) or ThinProvisioned>
verify_server_certificate = <Verify ScaleIO Gateway SSL certificate, True or False (default)>
server_certificate_path = <Path to the certificate to validate server certificate>

Other options (for live migration, etc) depend on your installation but do not depend on ScaleIO ephemeral backend.

Flavor settings

ScaleIO related parameters of instance volumes can be customized by flavor extra spec keys:

sio:provisioning_type <thin or thick>
sio:pd_name <protection domain name>
sio:sp_name <storage pool name>

If instance flavor does not contain a key value, default value from compute host config will be used.

Flavor restriction

Since ScaleIO allows volume sizes to be multiples of 8 GB, used flavors must have appropriate disk, ephemeral, and swap sizes. So either update existing flavors, or create new ones. Otherwise any attempt to boot an instance with ephemeral device(s) will be finished with 'No valid host was found' error.

Moreover this restriction affects ephemeral and swap requests by block device mapping of images or cli calls.

Limitations

  • Impossible to use several ScaleIO storage pools from one compute node.
  • Only multiplies of 8 Gb for flavor disk sizes are supported.

nova-scaleio-ephemeral's People

Contributors

ftersin avatar eric-young avatar andrey-mp avatar alexandrelevine avatar alexey-mr avatar

Stargazers

 avatar  avatar Eamonn Power avatar

Watchers

Aaron Spiegel avatar Andrew Kutz avatar James Cloos avatar  avatar Clint Kitson avatar  avatar Jonas Rosland avatar  avatar Drew Smith (mux) avatar  avatar  avatar  avatar  avatar Steve Wong avatar  avatar  avatar  avatar

nova-scaleio-ephemeral's Issues

The nova compute service doesn't start after applying the patch

Hi folks,
I've sucessfully applied the Nova patch in a Mitaka deployment (13.1.2). After configuring Nova to use sio ephemeral disks, compute service failed to start:

CRITICAL nova [-] AttributeError: 'module' object has no attribute 'SIOGROUP'
ERROR nova Traceback (most recent call last):
ERROR nova   File "/usr/bin/nova-compute", line 10, in <module>
ERROR nova     sys.exit(main())
ERROR nova   File "/usr/lib/python2.7/site-packages/nova/cmd/compute.py", line 74, in main
ERROR nova     db_allowed=CONF.conductor.use_local)
ERROR nova   File "/usr/lib/python2.7/site-packages/nova/service.py", line 290, in create
ERROR nova     db_allowed=db_allowed)
ERROR nova   File "/usr/lib/python2.7/site-packages/nova/service.py", line 173, in __init__
ERROR nova     self.manager = manager_class(host=self.host, *args, **kwargs)
ERROR nova   File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 727, in __init__
ERROR nova     self.driver = driver.load_compute_driver(self.virtapi, compute_driver)
ERROR nova   File "/usr/lib/python2.7/site-packages/nova/virt/driver.py", line 1623, in load_compute_driver
ERROR nova     virtapi)
ERROR nova   File "/usr/lib/python2.7/site-packages/oslo_utils/importutils.py", line 62, in import_object_ns
ERROR nova     cls = import_class(import_value)
ERROR nova   File "/usr/lib/python2.7/site-packages/oslo_utils/importutils.py", line 30, in import_class
ERROR nova     __import__(mod_str)
ERROR nova   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/__init__.py", line 15, in <module>
ERROR nova     from nova.virt.libvirt import driver
ERROR nova   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 102, in <module>
ERROR nova     from nova.virt.libvirt import imagebackend
ERROR nova   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/imagebackend.py", line 47, in <module>
ERROR nova     from nova.virt.libvirt.storage import sio_utils
ERROR nova   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/storage/sio_utils.py", line 36, in <module>
ERROR nova     CONF.register_group(siolib.SIOGROUP)
ERROR nova AttributeError: 'module' object has no attribute 'SIOGROUP'
ERROR nova

The python-scaleioclient is already installed.

Any suggestion would be appreciated.

Thank you!!
Jorge.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.