Jeremy Davis's picture

I have made this thread so as to consolidate and continue conversation going from ideas already discussed in this topic and this topic. A brief rundown of my vision can be found on the dev wiki. I have closely based my ideas around Proxmox VE (as I am currently using it and am very very happy with it, besides I think its a very useful model!) But Liraz has suggestioned that other existing opensource VM managment solutions be considered too, which I think is a good call. So the list I have so far stands at:

I'd like to do a bit of dev work around this when I get time but I'd like to hear whats wanted as I don't really want to go off on my own tangent only to find I'm all alone. At the end of the day Proxmox is already fulfilling my needs so I have no real need to change anything. I've just become attached to TKL and would really like my server running TKL as the host OS too!

I think some of the fundamental questions are:

  • Should it be available in 32 bit, 64 bit or both? (Obviously initially it will only be 32 bit as it will be built on TKL Core).
  • Should it be aimed specifically as a host for TKL (and other linux) VMs or should it be able to provide facility for Windows and other OSs? (ie Openvz/container only or KVM/true-virtualisation as well?)
  • Should it aim to run on hardware specifically (in which case only available as an .iso), or more VM based? (Ideally it'd be good to support both but be good to know what target market is.)
  • Should it have some additional functionality of some sort built in? Or should it just be purely a lightweight host OS? If so what functionality would be appropriate?
  • Should it be based on current TKL base (Ubuntu) or would Debian (or some other distro for that matter) be better? Why?

And I'm sure there's plenty more...

My personal inclination at this point would be to go for a 32 & 64 bit TKL/Ubuntu VM host only system using OpenVZ and KVM . I would like to see it optimised for Hardware and TKL clients but with facility for running in a virtual machine and ability to host other guest OSs too. Perhaps a couple of versions could be available? Basically I'd like to see a TKL adaptation of Proxmox (based on Ubuntu rather than Debian and available in 32 bit as well).

I note with great interest that both OpenVZ and KVM are available from the Ubuntu 8.04 repos (although most of the latest KVM improvements are only available in later kernels). Unfortunately OpenVZ dev seems to have slowed but KVM is under rapid developement. LXC (container virtualisation similar to OpenVZ) is looking like a possible improvement and/or substitute for OpenVZ (especially if developemnt stalls further). From this article about LXC (and "how to install it in 9.10) it seems LXC should be working sweet in Ubuntu 10.04 LTS (base for future versions of TKL!?)

Please post your ideas, thoughts and any other input!

- edited so it makes more sense (it was a late night last night!)

Forum: 
Liraz Siri's picture

Sorry for the late reply I somehow missed this post!

First off as stated before I think this is a terrific idea and I'd love to learn more from those in the community who have experience with the various virtualization alternatives (e.g., KVM vs OpenVZ).

A few clarifications regarding our development plan for TurnKey Linux:

  • Yes, future releases of TurnKey Linux will be based on Ubuntu 10.04 LTS
  • Debian based builds of appliances will also be supported in the future.
  • 64-bit support is planned.

In a nutshell our philosophy is to let users choose whenever possible so it's not a question of Ubuntu vs Debian, or 32-bit vs 64-bit.

We plan on supporting them all. Or rather, supporting the best options. Because really in many cases you can't say one is better than the other but rather that there are different pros and cons for each alternative and which is best depends on your circumstances.

On OpenVZ vs KVM

This is especially true with regards to virtualization technologies such as OpenVZ vs KVM. They're different approaches to the same problem. If I'm not mistaken, OpenVZ is a thin container-level virtualization solution, so you have one kernel and many userlands. OTOH, KVM is a hardware virtual machine based solution in which each virtual machine is running it's own emulated hardware stack and it's own kernel, etc. The level of isolation KVM provides you is much stronger, but you pay for it with greater overhead (e.g., RAM, CPU).

Because each is better suited for different usage scenarios if possible we want to support both.

Target the ISO build

Many virtualization solutions are designed to run on bare metal. You can theoretically nest some virtualization solutions but I don't think that's a popular usage scenario. I recommend you stick with hacking the ISO build.

Development process

What I suggest is trying to create a patch for TurnKey Core which implements a basic virtualization solution from a component you think would make a neat basis for this. Since it's a TurnKey appliance for running other appliances let's call it TurnKey Meta Core. Only once the basic, most important stuff is working well do you start to think about adding more bells and whistles, and always remembers that every additional component and feature has a cost (e.g., increased footprint, usage complexity, security risks, etc.) and that cost has to be weighed against the benefits. That's how we try and figure out what belongs in a TurnKey appliance BTW.

Starting goal: do the simplest thing that could possibly work

Simplest way to turn a bare metal machine into a platform for running other TurnKey appliances (though it doesn't have to be limited to TurnKey!).

Our target audience is technically savvy but not experts with this virtualization stuff. They like the concept and they want to run a whole collection of TurnKey appliances on that server in the closet and they want TurnKey to make it super easy for them to do that.

At the moment you shouldn't worry about the sort of extra things high-end users will want (e.g., support for hardware clusters). That's further down the road.

Experiment experiment experiment

Unless you already have extensive experience and know exactly what needs to be done there is really no point in planning too far ahead. The key here is to adopt an playful attitude and find out what works best via experimentation. That seems to work pretty well for us anyhow. Just immerse yourself in the technology and once you are really familiar with them then the right thing to do will be much easier to decide. Don't plan for the future. Let the future take care of itself.

Jeremy Davis's picture

I just wrote a big long reply but I've lost it I think I accidentally browsed away from the page - Doh! I'll try again...

Anyway the point I was making is that I agree with pretty much everything you said Liraz! Whilst I still haven't done anything concrete I have done a little research.

Name KVM OVZ Xen etc web int deb kernel
Proxmox Y Y N Y* Y Y Y
oVirt Y N N@ N Y Y N
Enormaly$ ? ? ? ? Y ? ?
Ganeti Y N Y ?+ Y Y& N
Eucalyptus Y N Y N Y Y# ?
DTC-Xen N N Y N Y Y% N
The first 4 columns refer to the Virtualisation technologies supported, 4th column web interface (which they all have so I could've left that column out!), 5th refers to binary/deb/repo availability, the final column refers to whether a kernel is provided as part of the install (assuming it is needed, KVM is included in later revisions of the kernel so no modification required).
* - Proxmox have plans to support & include LXC although no clear timeframe.
@ - oVirt are planning to implement Xen handling but no timeframe.
$ - Enormaly has a very nice web page and looks like a very attractive interface with some powerful features - unfortunatley their website is a little short on details.
+ - Ganeti will theoretically be enhanced to controll other OpenSource Virtualisation technologies but no clear indication of what or when.
& - Ganeti included in Ubuntu & Debian repos (see here)
# - In the Ubuntu 9.04 repo (not before and not sure about since) but for Debian only binaries.
% - In Debian repo apparently.
 
It appears that from my list only Proxmox supports OpenVZ. Also even though many of the others support KVM and Xen, they are mutually exclusive technologies (they can not both be running on a single machine at any one time). OpenVZ will happily run alongside of KVM (or Xen too probably) - but it does require a custom kernel (which Proxmox kindly provide).

I'm guessing you can see where this is headed! Proxmox have a Debian repo so you can install from there on Debian (and probably Ubuntu too?).

Whilst I like Xen (at least from what I've read) KVM is probably the easier technology to implement on Linux (as its already included in Debian & Ubuntu repos). It seems that whilst KVM will theoretically run on 32 bits, its not really supported (makes sense to some degree because of the RAM limitations - apparently guests on 32 bit KVM can only have max RAM of 2GB). Packages are only in 64 bit repo from what I can gather. KVM does not require a modded kernel (support is included in standard kernel).

OpenVZ is included in Debian repos but not Ubuntu. It uses on an older kernel (currently 2.26) so unless you wish to complie your own custom kernel, many of the new kernel features are unavailable (not such an issue with current TKL on 8.04 but not ideal for 10.04).

As Liraz also mentions, there is a trade off performance vs isolation. For smaller workplaces (esp non-profits like mine) its possibly a no brainer - less resource use = better VM performance on older/cheaper hardware, limited need for isolation. For larger corporate type locations or hosting services then it may be a no brainer in the other direction.

When I first started looking for a Virtualisation platform/Hypervisor I was initially leaning toward Xen, but then I found Proxmox and haven't looked back. The beauty of Proxmox is that 2 alternate (KVM & OpenVZ) technologies are available simultaneously. Even though it requires a custom kernel, Proxmox provide that. One downside of this is that they have to compromise and some of the newer KVM features are unavailable in Proxmox because of that. Hopefully this will change as it seems OpenVZ developement has picked up again (at least a little - it was stalled for some time).

Next on my agenda is to try to install the modded 32 bit deb onto TKL Core (Proxmox only provide a 64 bit deb - but someone has kindly modded it to work on 32 bit). Unfortunatley this only supports OpenVZ (no KVM) but may provide proof of concept.

In my opinion the only requirements for TKL purposes would be to hack the interface a little and add TKL VM images (KVM apparently supports VMware images so should be compatible with current TKL builds - I'll check on this)  and OpenVZ templates in the download section - that way users can directly download the images from within the web interface - pretty trick huh! Also probably want to add TKL to the page footer.

Going back to your comments Liraz - One thing I'd like to say about nested installs - for users on Desktops (esp Windows) who wish to use VirtualBox or VMware - the idea of nested OpenVZ VMs running on Meta Core would provide the funtionality that many are looking for (from reading the forums), the performance they want (using OpenVZ containers) without the resource penalty of running multiple VMs simultaneously.

Liraz Siri's picture

Kudos to JedMeister for continuing to research this stuff. I agree that OpenVZ does seem to provide a few special advantages. OTOH, sometimes you do want the benefits of "real" virtualization provided by KVM/XEN, such as when you want stronger security isolation or need to allow each instance to run its own kernel. Being able to mix and match OpenVZ's lightweight approach with a more resource intensive KVM/XEN approach seems to be a big win. ProxMox seems to be very interesting in that regard and according to your research it's the only platform that allows you to do this.

As a hosting customer I personally prefer hard virtualization technologies such as Xen because I know they are harder to oversell and I'm less likely to get a raw deal. But with a meta-TurnKey appliance which would typically be self-hosted or running inside a "hard" VPS overselling isn't really an issue because if you oversell you are overselling to yourself. So that's a nice way to squeeze more performance out of your given memory/CPU resources while still getting the benefits of security and functional isolation between appliances.

OpenVZ is also interesting because providing you can run your own kernel, it would be easier to deploy it nested inside a commodity VPS based on Xen / KVM. I know OpenVZ works under Xen at least.

Unfortunately the leading cloud provider Amazon EC2 doesn't let you run arbitrary kernels. I'm not sure they have allowed any kernels that support OpenVZ.

Jeremy Davis's picture

Because it must be a very relevant consideration for you guys but its such an appealing technology for this proposed appliance!

Oh well, that may not be a problem from April next year. Whilst 10.04 won't support OpenVZ, it will support LXC which is a very similar container type virtualisation. So standard 10.04 kernel will support both KVM and LXC. As you would hope, they will both be in the repos too.

I think that is very exciting! 2010 may well be the year of the TKL Meta Core - with both LXC and KVM support!?! I can't wait!!

Liraz Siri's picture

Amazon EC2 is a nice service, and it may end up providing a way to add more development resources via funding but our vision for TurnKey is much larger than Amazon EC2, or any other commercial service for that matter. Commercial services and market trends come and go. Open source is more resilient then that. The more I think about it the more I like the idea of making a TurnKey meta appliance with the very best components.

Sure its a shame that OpenVZ requires a special kernel, but as you correctly point out, LXC should provide equivalent functionality within the mainline kernel and allow us to provide this sort of solution everywhere without asking hosting providers for special favors. That's an exciting prospect indeed!

Alon Swartz's picture

I've heard good things about Eucalyptus from the Ubuntu guys, haven't tried it out (yet) myself, but seeing its got the same API as Amazon EC2 it should be interesting.

The only caveat I can forsee is persistent storage though...
Jeremy Davis's picture

but unfortunately I'm having some trouble getting it running on my old Ubuntu (9.10) laptop. (That's probably no great surprise as its a 5 yr old Dell with pretty sub-standard specs).

I can confirm that its in the 9.10 Ubuntu repos which could be a real bonus assuming that it will be in 10.04 too. As I think I already mentioned it supports KVM (also in repos) and Xen (requires custom kernel).

In my travels I found a handy site here re Eucalyptus setup/config amoungst the Ubuntu documentation that may be helpful if for anyone else who wants to have a look.

Considering that its not in the Ubuntu repos pre 9.04, if TKL goes the Eucalyptus route then it'll probably be best to either wait until post 10.04 release, or build some beta prototype on 9.10 or 10.04beta. It seems like there's probably too much work to bother building it on current TKL at this point.

Neil Bird's picture

I just started looking at the VoIP solutions this past week.  As I wanted to shift from the win32/Hmail server for our church I thought this would be a great time to integrate the PBX so we could do some fun things like softphone/videophone.  I initially looked at this thread following the idea of multiple individual appliances.  The PBX idea seemed like a natural idea for an appliance... until you reminded me of the hardware issue for other people, although it should still work well for the softphone idea.  

Considering it further, the need for hardware (in my situation) on the voip is not truly necessary, therefore it might be worth looking into this not as stand alone appliance, but integrating it with another appliance such as the Domain server or Zimbra.

I have decided that using Zimbra Turnkey is my most likely candidate for the mail solution, and as I researched further it appears that Zimbra has a couple of zimlets to integrate with Asterix.  With that in mind, would it be too much to ask that it possibly be included in the next release?

If I get time I will try to install it on the existing Zimbra release.  I was hoping to use the PBX for a SIP based "softphone".  I must admit, I cheated and used a win32 version of Asterix just to see how it works.  As I am not too familiar with Linux, I am not sure I can do this, but I will try to install this weekend.

Cheers!

Feel free to move this if it is not suitable in this thread.   

Liraz Siri's picture

We would consider integrating Zimbra modules to better support integration with applications such as Asterisk but we wouldn't include Asterisk itself in there because that wouldn't be very good appliance engineering.

I think a separate Asterisk appliance would be a great idea but neither Alon or I have ever used that ourselves before so for us there would be a learning curve involved and that delays how soon we'll get to it. What would help is if members of the community with more experience come forward and contribute a tklpatch we can build on.

Stas Grishin's picture

I've messed around with Asterisk before by using Trixbox (formerly asterisk@home). They provide a GPL community edition iso installer at www.trixbox.org

I don't know if it would be worth creating a separate Asterisk appliance when Trixbox has been around for many years and is the original Asterisk appliance as far as I can remember.

Of course, if anyone has the expertise and desire to recreate this in TKL form, that would be awesome.

Alon Swartz's picture

Fini Decima from LinuxBSDos.com recommended we take a look at Abiquo and EyeOS. Has anyone had experience with the above?
Jeremy Davis's picture

I have no experience with either but I just had a look at both.

eyeOS looks very interesting but unless I'm missing something, this page seems to suggest that its more of a browser based desktop rather than something suitable for the basis of TKL Meta Core. Don't get me wrong though, I really like the look of it and think its a great candidate for a TKL appliance. Its almost along the lines of Google Apps (or ProjectPier, OpenGoo etc) but laid out like a normal PC desktop (even the file manager looks like nautilus!)

I didn't have quite as close a look at abiCloud but from the screenshots on the site it looks like it has a very polished interface, which is always nice. It definately looks like something along the lines of what we are looking for.

The only thing that I'm not 100% sure about is the fact it uses VirtualBox under the hood. I think VirtualBox is great but I tend to think of it as more of a Desktop VM environment than a Server one. I know it has progressed (since I last used it) and maybe I am being unfair as I know there are some advantages eg can be run on lots more hardware than some (such as Xen or KVM).

Also Oracle's recent aquisition of Sun means who knows what direction it's developement it will take. From what I've read they're keen to take on VMware which may be great, but its still unclear how much effort they will put towards supporting OpenSource development.

[edit] I have also edited the original post to include a link to abiCloud

Liraz Siri's picture

OpenStack is a new project that has some major names behind it including RackSpace, NASA, CITRIX, and RightScale. I spoke about it the other day with Alon and he said he took a look at the architecture and was very impressed. It's implemented mostly in Python. Could be a winner!

torusJKL's picture

I use Convirt on my server.
They also have a web interface. Though I haven't used it yet.


Jeremy Davis's picture

I was almost going to start a new one. But decided to revive this old one as there is still plenty of relevant info here.

I know Adrian has been playing with OpenStack so hopefully we will hear a bit from him when he has time?

I just wanted to post about something I came across in my travels which I really like the look of and is vaguely relevant to this thread. TBH it's probably more relevant to a TKL Core appliance (desktop/GUI). It's called Virtual Machine Manager (or virt-manager for short). It's a desktop GUI written in Python for controlling local or remote VMs and as it is uses libvirt as a backend can talk to a huge range of virtualisation technologies (pretty much all the major ones) including VirtualBox, Xen, KVM/QEMU, OpenVZ, LXC, VMware and even MS Hyper-V!

Besides libvirt another cool virtualsation tool I've come across is libguestfs It looks very cool set of tools for working with all sorts of virtual-HDDs. It's not in any current Ubuntu repos, but looks like it'll be in Precise/12.04 - see here.

Add new comment