← Back to team overview

openstack team mailing list archive

Re: ZFS/ZVol + iscsi for volume

 

Nicolas,

it makes a lot of sense what you want to do. ZFS+iSCSI is a perfect fit for
vm storage, some other IaaS solutions already use this combination (and I
have developed some). Keep in mind that Nexenta is only a distro based upon
OpenSolaris: OpenIndiana, FreeBSD... there are a lot of options with ZFS.

There are several things you should consider to implement this feature:
1) The code that matters is mostly in nova/virt/libvirt/connection.py for
libvirt
2) You need to implement a new storage type: iscsi (
http://libvirt.org/storage.html#StorageBackendISCSI)
3) You need to implement a feature to block-copy the source image to the
backend iscsi storage
4) _cache_image method and most of _create_image should be developed
thinking in 3)

I think the only reason to implement this feature is to develop a highly
scalable storage system for instances, so a single storage system does not
make sense. It should be able to manage a list storage systems as a pool
and load balance them.

Some quick thoughts, good luck!
Diego

 --
Diego Parrilla
<http://www.stackops.com/>*CEO*
*www.stackops.com | * diego.parrilla@xxxxxxxxxxxx** | +34 649 94 43 29 |
skype:diegoparrilla*
* <http://www.stackops.com/>
*

*




On Sun, Jun 10, 2012 at 11:15 AM, Nicolas de BONFILS <
openstack@xxxxxxxxxxxxxxxxxxx> wrote:

> **
>
> Hi Stackers,
>
> I got an idea/question about iscsi volume.
>
> Actually the workflow is :
>
>
>    1. create an LVM pool
>    2. create a volume in this pool (with nova command or horizon UI)
>    3. share it with an iscsi target (the compute/volume node)
>    4. attach it with an iscsi initiator (the VM)
>
> I use zfs for other project, and I'm very interested in using it
> everywhere (when possible). One functionality zfs bring is zvol : it allows
> to create a block device from a zfs pool (a zfs property allow to share
> this device with iscsi).
> With this, a new workflow will be :
>
>    1. create a zfs pool (zpool create <name> <device>)
>    2. create a zvol block device (zfs create -V <size>
>    <poolname>/<volumename>)
>    3. set the zfs property to share it with iscsi (zfs set shareiscsi=on
>    <poolname>/<volumename>)
>    4. attach it with an iscsi initiator (the VM)
>
> From what I read, the Nexenta guys do a lot of work around zfs, but for
> volume use I only found code to plug a Nexenta san (I do not have the
> hardware to build a san), but no solution to use zfs drive/pool directly.
> So my 2 questions are :
>
>    1. are some people interested in it ?
>    2. does it seem possible to do it (maybe some one already try) ? Nova
>    volume driver [github.com<https://github.com/openstack/nova/blob/master/nova/volume/driver.py>]
>    got subclasses for specific cases, maybe a new zfs one.
>
>
>
> Please discuss, submit ideas !
>
> --- Nicolas
>
> _______________________________________________
> Mailing list: https://launchpad.net/~openstack
> Post to     : openstack@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~openstack
> More help   : https://help.launchpad.net/ListHelp
>
>

Follow ups

References