200 likes | 320 Views
The use of Virtualization for Software Development and Testing. Xenios Papademetris Departments of Diagnostic Radiology and Biomedical Engineering Yale University. Structure of Presentation. Part I Review supplement project progress Part II Describe virtualization
E N D
The use of Virtualization for Software Development and Testing Xenios Papademetris Departments of Diagnostic Radiology and Biomedical Engineering Yale University
Structure of Presentation • Part I • Review supplement project progress • Part II • Describe virtualization • Show how we use it at Yale
Supplement Grant Background • Yale PET Center database system has been developed over last 5 years (Yale/NIH) • Keeps track of • Images • Processing Details • Charging • Amount of Injections each patient has had • Integrated with Scanners for direct import of DICOM data • Enables the management of large studies and the reporting on the current state of the analysis
Aims of Supplement • Generalize server to better handle fMRI data as well as PET • Document server • Provide a VTK-based library for interfacing to the server • Distribute server setup as a virtual machine for turn-key installation • Key Note: The server stores image filenames not images, hence total storage demands are low (<30MB for Yale PET Center)
Library Mostly Done • A number of custom classes to map key tables • E.g. vtkbisPatient, vtkbisInjection • Leverages vtkMySQL interface • Demo Application below is about 100 lines of TCL
Virtual Server Applicance • Our goal is to (as an option) Distribute server setup as a virtual machine for turn-key installation • Database server installation is complex • Many dependencies • Virtual machines allow a completely configured server to be downloaded in “a box”
Virtualization • Allows a “guest” machine to run inside a “host” machine • Most commonly used setup is VMware (server/player/workstation) • Other options • Parallels (especially on Mac OS X) • Microsoft Virtual PC • XEN • QEMU • KVM
How does it work in practise? • Easiest and cheapest way (i.e. free) • Install VMware Server (preferably on Linux) • Within this create virtual machine with virtual processors, virtual memory , virtual disk etc. • Install guest OS in virtual machine • This last process if practically identical to installing OS on actual computer (only faster)
Our Testing Setup This is our test database server
Virtualization Selling Points (From vmware.com) • Host legacy applications and overcome platform migration issues • Configure & test new software or patches in an isolated environment • Automate tasks for software development and testing • Demonstrate multi-tier configurations on a single PC
Benefits I • Virtual Machines allow for completely controlled environments • Minimal software installation • (e.g. Windows 2000, Visual Studio 2003.NET, Emacs, Subversion, base libraries) • No unnecessary stuff that might interfere with development (especially on Windows) • Easy backup (a set of files) • Snapshots etc • Try upgrade if fails, can revert back to original config
Benefits II • Allow for complex setups to become hardware independent and move from server to server • BioImage Suite subversion server runs off a virtual machine • If we need to migrate it to a more powerful server the virtual machine can simply be “copied” over preserving all its configuration as is. • Upgrades to base server do not affect virtual server.
Benefits III • Allows for testing/development on more OS than one has machines available or desire to have on a desktop • E.g. we still compile on Windows 2000 but have no physical Windows 2000 machine around • Multiple versions of Linux – our cluster runs Centos 5 but we have Debian/Ubuntu/Fedora/RedHat virtual machines • Nobody wants Solaris on a desktop …
Limitations • Accelerated Graphics • No Open GL acceleration in a virtual machine hence display is slow • Solution (for Unix) – set the DISPLAY variable to point to a “real” machine • No MacOS X guests possible (Apple license is horribly restrictive) • Possible workaround – use OpenDarwin as a platform – this is painful however • Still naturally need legal licenses for Windows virtual machines.
Uses of Virtualization in BioImage Suite • Testing -- most of the dashboard below comes from various virtual machines • Development – e.g. different compilers • Problem Solving (e.g. User reports that BioImage Suite will not run of Fedora Core 8)
Uses in the Community • FSL on windows ships as a virtual machine • i.e. instead of FSL for windows you get FSL on Linux bundled with a linux virtual machine • Lots of appliances (e.g. safe browsing applicance etc)
Conclusions • Virtualization is a powerful tool for software development • Can save on number of machines needed for proper testing • Useful for “controlled” software development • Little or not cost, easy learning curve • Can also be very useful in server partitioning http://www.virtualization.info/
Acknowldgments • R01EB006494