By Fat Bloke on Jun 09, 2009
Even though you may be away from the office attending a conference, the rest of the world moves on and you quite often need to keep up with your day job. At JavaOne this year, Sun provisioned 21,000 Virtual Desktops for the attendees to use to stay on top of things. This blog entry describes briefly how this was done using VirtualBox and Sun VDI...
Dotted around the Moscone Center were hundreds of Sun Rays. These were in the Lobby Areas,
Underpass between North and South Halls,
and Cyber Lounge areas in the Pavilion.
Every JavaOne attendee was given a smartcard as part of their Welcome Kit on registration. And all you needed to do to get your Virtual Desktop was insert this into the nearest free Sun Ray.
The user can then choose which type of Virtual Desktop they want from:
- Windows 7
- Ubuntu 8.10
- OpenSolaris 2009.06
Under the hood:
The first time you make this choice your Virtual Desktop virtual machine (vm) is created based on a template in Sun VDI. The virtual machine configuration is held in a MySQL database and the virtual disk image is quickly cloned from the template using a feature of ZFS which underpins the Sun Storage 7000 servers that were in use. Then Sun VDI chooses a VirtualBox server (based on load) and launches the new vm on that server, with the configuration and iSCSI target id that uniquely identifies the new virtual disk.
When you pull your card out the vm suspends after a short period which means resources can be freed up for other users.
When you re-insert your card and launch a previously created Virtual Desktop, the vm is restored from disk (note that this can be to a different VirtualBox server than the original session ) and you are good to go.
Here is my Windows 7 Virtual Desktop.
To manage the 21,000 virtual desktops we had 2 guys (admittedly smart guys).
And the whole thing was powered by a single rack:
The rack consisted of:
- 4 VDI servers - 4 Sun Fire X4450, each with 4 CPUs and 64 GB memory.
- 5 VirtualBox servers - 5 Sun Fire X4450 servers, each 4 CPUs, 6 cores per CPU and 64 GB of memory.
- 3 Storage servers - 3 \* 7210 Unified Storage servers.
This was vastly over-spec'ed as we could see using the Analytics of the storage servers:
Thanks to Christian and Thomas (our architects and admins for the week) and kudos to Dirk's and Achim's teams.