[openstack-dev] FreeBSD host support

Daniel P. Berrange berrange at redhat.com
Mon Oct 20 08:08:59 UTC 2014


On Sat, Oct 18, 2014 at 09:04:20PM +0400, Roman Bogorodskiy wrote:
> Hi,
> 
> In discussion of this spec proposal:
> https://review.openstack.org/#/c/127827/ it was suggested by Joe Gordon
> to start a discussion on the mailing list.
> 
> So I'll share my thoughts and a long term plan on adding FreeBSD host
> support for OpenStack. 
> 
> An ultimate goal is to allow using libvirt/bhyve as a compute driver.
> However, I think it would be reasonable to start with libvirt/qemu
> support first as it will allow to prepare the ground.

Agreed, I'd avoid the temptation to try to do everything at once. Taking
an iterative approach of attacking small chunks of work at a time is much
more practical.  So by targetting libvirt+qemu you are able to focus on
just identifying the Linux specific bits of the existing libvirt+qemu
support. Once complete, then you can focus on the separate task of porting
to the libvirt+bhyve driver.

> High level overview of what needs to be done:
> 
>  - Nova
>   * linux_net needs to be re-factored to allow to plug in FreeBSD
>     support (that's what the spec linked above is about)

Yep, this is biggest piece of Linux specific code in Nova codepaths
for VM startup at least. So makes sense to deal with this.

>   * nova.virt.disk.mount needs to be extended to support FreeBSD's
>     mdconfig(8) in a similar way to Linux's losetup

Broken file injection isn't a show-stopper for booting VMs
but is obviously nice to have and shouldn't be too difficult
as we already have a decent abstraction layer here.

>  - Glance and Keystone
>     These components are fairly free of system specifics. Most likely
>     they will require some small fixes like e.g. I made for Glance
>     https://review.openstack.org/#/c/94100/

Glance & Keystone are obviously core things to get working in order
to be able to boot a VM. 

>  - Cinder
>     I didn't look close at Cinder from a porting perspective, tbh.
>     Obviously, it'll need some backend driver that would work on
>     FreeBSD, e.g. ZFS. I've seen some patches floating around for ZFS
>     though. Also, I think it'll need an implementation of iSCSI stack
>     on FreeBSD, because it has its own stack, not stgt. On the other
>     hand, Cinder is not required for a minimal installation and that
>     could be done after adding support of the other components.

I wouldn't worry about doing anything in Cinder until you have the
rest of Nova almost fully functional on FreeBSD.

There are bound to be a number of other things that we can't think of
right now that will appear as you do the work & get to test more and
more functional areas.  I wouldn't bother trying to imagine what these
are right now nor create specs for them. Instead I'd very much recommend
taking an iterative approach to specs + bugs. ie when you come across
new problems wrt porting, just file new specs (for big problems needing
refactoring) or bugs (for minor problems easily fixed) to deal with the
issues as you see fit at the time.

IOW I'd just encourage you to jump right into the networking refactor
work. That mess badly needs cleaning up even if we don't do FreeBSD
work, so is a very worthwhile thing to work on for Kilo regardless.

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|



More information about the OpenStack-dev mailing list