Tuesday February 19, 2008 | Constantin's Blooog |
|
Useful stuff for your blog-reading pleasure.
All
|
General
VirtualBox and ZFS: The Perfect TeamI've never installed Windows in my whole life. My computer history includes systems like the Dragon 32, the Commodore 128, then the Amiga, Apple PowerBook (68k and PPC) etc. plus the occasional Sun system at work. Even the laptop my company provided me with only runs Solaris Nevada, nothing else. Today, this has changed. A while ago, Sun announced the acquisition of Innotek, the makers of the open-source virtualization software VirtualBox. After having played a bit with it for a while, I'm convinced that this is one of the coolest innovations I've seen in a long time. And I'm proud to see that this is another innovative german company that joins the Sun family, Welcome Innotek! Here's why this is so cool.
After having upgraded my laptop to Nevada build 82, I had VirtualBox up and running in a matter of minutes. OpenSolaris Developer Preview 2 (Project Indiana) runs fine on VirtualBox, so does any recent Linux (I tried Ubuntu). But Windows just makes for a much cooler VirtualBox demo, so I did it: After 36 years of Windows freedom, I ended up installing it on my laptop, albeit on top of VirtualBox. Safer XP if you will. To the top, you see my VirtualBox running Windows XP in all its Tele-Tubby-ish glory. As you can see, this is a plain vanilla install, I just took the liberty of installing a virus scanner on top. Well, you never know... So far, so good. Now let's do something others can't. First of all, this virtual machine uses a .vdi disk image to provide hard disk space to Windows XP. On my system, the disk image sits on top of a ZFS filesystem:
Cool thing #1: You can do snapshots. In fact I have two snapshots here. The first is from this morning, right after the Windows XP installer went through, the second has been created just now, after installing the virus scanner. Yes, there has been some time between the two snapshots, with lots of testing, day job and the occasional rollback. But hey, that's why snapshots exist in the first place. Cool thing #2: This is a compressed filesystem:
ZFS has already saved me more than half a gigabyte of precious storage capacity already! Next, we'll try out Cool thing #3: Clones. Let's clone the virus free snapshot and try to create a second instance of Win XP from it:
The clone has inherited the mountpoint from the upper level ZFS filesystem (the winxp one) and so we have everything set up for VirtualBox to create a second Win XP instance from. I just renamed the new container file for clarity. But hey, what's this?
Damn! VirtualBox didn't fall for my sneaky little clone trick. Hmm, where is this UUID stored in the first place?
Ahh, it seems to be stored at byte 392, with varying degrees of byte and word-swapping. Some further research reveals that you better leave the first part of the UUID alone (I spare you the details...), instead, the last 6 bytes: 845c3a0e1c8d, sitting at byte 402-407 look like a great candidate for an arbitrary serial number. Let's try changing them (This is a hack for demo purposes only. Don't do this in production, please):
Who needs a hex editor if you have good old friends od and dd on board? The trick is in the "
Heureka, it works! Notice that the second instance is running with the freshly patched harddisk image as shown in the window above. Windows XP booted without any problem from the ZFS-cloned disk image. There was just the occasional popup message from Windows saying that it found a new harddisk (well observed, buddy!). Thanks to ZFS clones we can now create new virtual machine clones in just seconds without having to wait a long time for disk images to be copied. Great stuff. Now let's do what everybody should be doing to Windows once a virus scanner is installed: Install Firefox:
I must say that the performance of VirtualBox is stunning. It sure feels like the real thing, you just need to make sure to have enough memory in your real computer to support both OSes at once, otherwise you'll run into swapping hell... BTW: You can also use ZFS volumes (called ZVOLs) to provide storage space to virtual machines. You can snapshot and clone them just like regular file systems, plus you can export them as iSCSI devices, giving you the flexibility of a SAN for all your virtualized storage needs. The reason I chose files over ZVOLs was just so I can swap pre-installed disk images with colleagues. On second thought, you can dump/restore ZVOL snapshots with Anyway, let's see how we're doing storage-wise:
Watch the "USED" column for the winxp1 clone. That's right: Our second instance of Windows XP only cost us a meager 138 MB on top of the first instance's 1.22 GB! Both filesystems (and their .vdi containers with Windows XP installed) represent roughly a Gigabyte of storage each (the REFER column), but the actual physical space our clone consumes is just 138MB. Cool thing #4: ZFS clones save even more space, big time! How does this work? Well, when ZFS creates a snapshot, it only creates a new reference to the existing on-disk tree-like block structure, indicating where the entry point for the snapshot is. If the live filesystem changes, only the changed blocks need to be written to disk, the unchanged ones remain the same and are used for both the live filesystem and the snapshot. A clone is a snapshot that has been marked writable. Again, only the changed (or new) blocks consume additional disk space (in this case Firefox and some WinXP temporary data), everything that is unchanged (in this case nearly all of the WinXP installation) is shared between the clone and the original filesystem. This is de-duplication done right: Don't create redundant data in the first place! That was only one example of the tremenduous benefits Solaris can bring to the virtualization game. Imagine the power of ZFS, FMA, DTrace, Crossbow and whatnot for providing the best infrastructure possible to your virtualized guest operating systems, be they Windows, Linux, or Solaris. It works in the SPARC world (through LDOMs), and in the x86/x64 world through xVM server (based on the work of the Xen community) and now joined by VirtualBox. Oh, and it's free and open source, too. So with all that: Happy virtualizing, everyone. Especially to everybody near Stuttgart.
"VirtualBox and ZFS: The Perfect Team" has been brought to you by Constantin's Blooog.
This entry was created on 2008-02-19 13:18:18.0 PST and is associated with the following tags:
cool
hack
howto
innotek
open
opensolaris
opensource
solaris
virtualbox
virtualization
windows
zfs
Post a Comment: Comments are closed for this entry. « Be a System Hero | Main | Meet Me Next Week at... » |
|
Great entry as always sir...I'll put this to good use on my U20 M2.
Posted by Wayne Abbott on February 20, 2008 at 12:23 AM CET #
Cool! I like the idea to crack the UUID.
I may have a try of VirtualBox or xVM on my desktop :) Even zfs as the root directory
Posted by robin guo on February 20, 2008 at 04:53 AM CET #
Hi Wayne, hi Robin,
thank you for your comments! I'm glad this has been useful for you.
Cheers,
Constantin
Posted by Constantin on February 20, 2008 at 10:02 AM CET #
Posted by meager on February 21, 2008 at 01:11 AM CET #
Great posting! Note that VirtualBox can do snapshots itself and via immutable VDI images, clones are possible, too. Also, changing the UUID can be accomplished using
VBoxManage internalcommands setvdiuuid
(undocumented feature)
Posted by Achim Hasenmueller on February 25, 2008 at 04:23 PM CET #
Hi Achim,
thank you for your comment!
Yes, VirtualBox can do snapshots and immutable VDI images can be mounted on multiple VMs. The ZFS approach adds the option of having a VID image that can be modified while still share storage with its sibling.
Thank you for sharing the setvdiuuid command, this is just the kind of feature I was looking for. You should make it public and documented so it can be better used for ZFS and other VDI games.
Thanks,
Constantin
Posted by Constantin on February 25, 2008 at 04:37 PM CET #
VERY nice ... question, any problems with I/O (specifically USB and more importantly Bluetooth) in the nested Windoze XP? I use a hotsync routine over bluetooth and via usb connected cradle to my Palm.
jccampb
Posted by John C. Campbell III on March 02, 2008 at 10:13 PM CET #
Hi John,
thank you for your comment. Yes, VirtualBox is supposed to have very good USB support. As good as VMWare's if not better, I hear. But USB support is not ready yet on Solaris, it seems, since it hasn't been enabled for Solaris as a host yet.
But I assume this will be added soon and it does work great on other platforms already.
Cheers,
Constantin
Posted by Constantin Gonzalez on March 03, 2008 at 01:03 PM CET #
Yeah, I'm just returning to X-86 after a 6 year hiatus to resume my OO (CORBA) development ... gave up after Ed Zander did his best to kill it (before he went on to ruin yet another company). I'm astounded that the USB support isn't 'there' yet. I hear from my Sun S.E. that the Bluetooth bits however are in 'beta' at this point. jccampb
Posted by John C. Campbell III on March 03, 2008 at 01:58 PM CET #