Download Virtualization in Software Engineering

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Process management (computing) wikipedia , lookup

OS/2 wikipedia , lookup

Distributed operating system wikipedia , lookup

Security-focused operating system wikipedia , lookup

CP/M wikipedia , lookup

Transcript
Virtualization in Software Engineering
Dennis Kalinowski
4/30/2007
What is Virtualization?
Abstraction of computer resources
Servers, operating systems, applications, or storage
devices
Technique for hiding characteristics from other
systems, applications, or users
Used to provide different interfaces or resources
Can be used to make a physical resource appear
as multiple logical resources
Or multiple physical resources appear as a single
logical resource
4/30/07
C:\Seminar\Virtualization.odp
page 2
Why Use Virtualization?
Improve portability, security, performance, reliability
Can be used in design, implementation, testing, or
deployment of systems
4/30/07
C:\Seminar\Virtualization.odp
page 3
Old Idea, Innovative Uses
Early 1970s, IBM 370 mainframe used virtualization
to run multiple operating systems
Each operating system operated as if it had exclusive
control of the hardware
Some hardware implement virtualization
Intel's Hyper-Threading Technology
Single physical processor appears as multiple logical
processors
Automatic parallelization
Two or more physical processors exposed as a single logical
processor
Executes multiple instructions from the current thread
4/30/07
C:\Seminar\Virtualization.odp
page 4
Hardware Virtualization
Virtual Machine Monitor (VMM) – aka hypervisor
Allocates system resources for each virtualized operating
system or program
Layer between software and other resources (such as
hardware)
Either sits directly on hardware or runs within an operating
system
4/30/07
C:\Seminar\Virtualization.odp
page 5
Hardware Virtualization
When run within an operating system...
Host OS controls hardware
Guest OS runs in the virtualized environment
Three types:
emulation/simulation – simulates complete hardware. (Can
host an unmodified OS for the same or different CPU)
native virtualization – simulates enough hardware so the
guest is in isolation. (Only allows unmodified OS for the
same CPU)
paravirtualization – provides an API which must be used by
the guest OS.
4/30/07
C:\Seminar\Virtualization.odp
page 6
Hardware Virtualization
Guest OS can be altered or observed during
execution
States of system can be snapshotted
Other examples of hardware virtualization
Storage devices
File systems
Accessing disk images as if they were an actual drive
Virtual memory
4/30/07
C:\Seminar\Virtualization.odp
page 7
Example 1 Usage of a VMM
Image from: [16] Intel virtualization technology.
4/30/07
C:\Seminar\Virtualization.odp
page 8
Advantages of HV
Portability
Software would not need to be rewritten for new hardware,
only the virtualization layer needs to be altered
Security
Isolated environment to restrict spread of intrusion
Guest OS can be monitored to observe for calls or
behavior that may indicate intrusion
4/30/07
C:\Seminar\Virtualization.odp
page 9
Advantages of HV
Performance
IBM 370 mainframe ran OS's that did not support
threading in parallel with OS's that did
Therefore, less CPU cycles were wasted
Virtualization may be used to maximize utilization of
resources
Possible issue: overhead
Loading a previous snapshot may be faster than a fresh
load
Reliability
Recovery – On failure or lose, an image of system's
pristine or last good state can be reloaded
Redundancy – Identical resources or software run in
parallel
Hardware example: fault tolerant CPU
Software example: share load two identical servers
4/30/07
C:\Seminar\Virtualization.odp
page 10
Example 2 Performance
Image from: [15] Performance Evaluation on Server Consolidation
Using Virtual Machines.
4/30/07
C:\Seminar\Virtualization.odp
page 11
Example 3 Reliability
Image from: [9] High performance fault tolerant computer and its
fault recovery.
Virtualization hides the true underlying system from the running
program
4/30/07
C:\Seminar\Virtualization.odp
page 12
Example 3 Reliability
Image from: [9] High performance fault tolerant computer and its
fault recovery.
4/30/07
C:\Seminar\Virtualization.odp
page 13
Use in Software Development
Virtualize hardware and/or software environments
Increase portability of software by testing in various
operating systems, architectures, or configuration
By isolating build/testing environments to virtual systems,
you do not risk contaminating your own development
system
Keep testing environments consistent or configured with
minimal software dependencies
Cheaper to run multiple virtual machines than multiple
physical computers
4/30/07
C:\Seminar\Virtualization.odp
page 14
Use in Software Development
Testing
Can observe or alter software running in virtual
environment
So, ideal for debugging OS kernels
States can be snapshotted to allow exact replication of
bugs or tests
After executing tests, can revert to initial state
Use with automated test suites to ensure consistent
environments
Test upgrade processes
Keep a snapshot of installations for all versions or varying
dependencies
4/30/07
C:\Seminar\Virtualization.odp
page 15
Example 4 Test Environment
Image from: [11] Test Optimization Using Software virtualization.
4/30/07
C:\Seminar\Virtualization.odp
page 16
Other Virtualization Technologies
Operating System Virtualization
A layer in the operating system to run servers in a
virtualized environment
Each environment is a “container”
The container can restrict resources (processor usage, file
systems, etc.)
However, there is no isolation from the kernel
If kernel has vulnerabilities, entire system can be affected
Protecting specific resources and other processes may be all
the security required for some applications
Useful for running multiple instances of a server using
different configurations
4/30/07
C:\Seminar\Virtualization.odp
page 17
Other Virtualization Technologies
Application Virtualization
“breaking the age old bond between physical hardware,
operating system, and the program which runs on top of
them”
High-Level Languages (HLL)
Java
Microsoft's Common Language Infrastructure (CLI)
Intermediate code generated by compilers get translated
into native machine code using “just in time” technology
Application only compiled once for all architectures
present and future
Only new HLL Virtual Machines are needed for new
architectures
4/30/07
C:\Seminar\Virtualization.odp
page 18
Other Virtualization Technologies
Process Virtualization
“Ghost processes” - An experiment by researchers using
Linux kernel
Duplicate processes
Migrate processes
Create process checkpoints
Revert to process checkpoints
Useful for testing and debugging
Saving and restoring processes to allow reproduction of
process states
Or use to restore process to a good state on failures
Loading from a snapshot may be quicker than a fresh load
4/30/07
C:\Seminar\Virtualization.odp
page 19
Conclusion
Abstraction to simplify use of computer resources
Represent resources in simpler or different forms
Add additional functionality or ability to resources
Improve portability, security, performance, and
reliability
Cheaper alternative to multiple computers
Excellent tool for testing
4/30/07
C:\Seminar\Virtualization.odp
page 20
References
[1] Virtualization. Retrieved April 2, 2007, from Wikipedia. Web site:
http://en.wikipedia.org/wiki/Virtualization
[2] Figueiredo, R.; Dinda, P.A.; Fortes, J. (2005, May). Guest Editors' Introduction:
Resource Virtualization Renaissance. Computer. 38(5), 28-31.
[3] Hyper-threading. Retrieved April 2, 2007, from Wikipedia. Web site:
http://en.wikipedia.org/wiki/Hyperthreading
[4] Automatic parallelization. Retrieved April 2, 2007, from Wikipedia. Web site:
http://en.wikipedia.org/wiki/Automatic_parallelization
[5] Vaughan-Nichols, S.J. (2006, Nov.). New Approach to Virtualization Is a Lightweight.
Computer. 39(11), 12-14.
[6] Smith, J.E.; Ravi Nair. (2005, May). The architecture of virtual machines. Computer .
38(5), 32-38.
[7] Litty, Lionel. (2005). Hypervisor-based Intrusion Detection. Unpublished master's
thesis. University of Toronto.
[8] Ligneris, B. (2005, May). Virtualization of Linux based computers: the Linux-VServer
project. High Performance Computing Systems and Applications, 2005. Proceedings.
19th International Symposium . 340-346.
[9] Nakamikawa, T.; Morita, Y.; Yamaguchi, S.; Ishikawa, S.; Miyazaki, Y. (1997, Dec.).
High performance fault tolerant computer and its fault recovery. Fault-Tolerant Systems,
1997. Proceedings. Pacific Rim International Symposium . 2-6.
[10] Hypervisor. Retrieved April 2, 2007, from Wikipedia. Web site:
http://en.wikipedia.org/wiki/Hypervisor
4/30/07
C:\Seminar\Virtualization.odp
page 21
References
[11] Seetharaman, S.; Krishna Murthy, B.V.S. (2006, Sept.-Oct.). Test Optimization Using
Software virtualization. IEEE Software. 23(5), 66-69.
[12] Operating system-level virtualization. Retrieved April 2, 2007, from Wikipedia. Web
site: http://en.wikipedia.org/wiki/Operating_system-level_virtualization
[13] Vallee, G.; Lottiaux, R.; Margery, D.; Morin, C. (2005, July). Ghost Process: a Sound
Basis to Implement Process Duplication, Migration and Checkpoint/Restart in Linux
Clusters. Parallel and Distributed Computing, 2005. ISPDC 2005. The 4th International
Symposium on 04-06 July 2005. 97-104.
[14] Application Virtualization. Retrieved April 2, 2007, from Wikipedia. Web site:
http://en.wikipedia.org/wiki/Application_Virtualization
[15] Hidenori Umeno; Parayno, M.L.C.; Koudai Teramoto; Masato Kawano; Hiraku
Inamasu; Shuuhei Enoki; Masato Kiyama; Tomoo Aoyama; Takafumi Fukunaga. (2006,
Oct). Performance Evaluation on Server Consolidation Using Virtual Machines. SICEICASE, 2006. International Joint Conference. October 2005. 2730-2734.
[16] Uhlig, R.; Neiger, G.; Rodgers, D.; Santoni, A.L.; Martins, F.C.M.; Anderson, A.V.;
Bennett, S.M.; Kagi, A.; Leung, F.H.; Smith, L. (2005, May). Intel virtualization technology.
Computer. 38(5), 48-56.
4/30/07
C:\Seminar\Virtualization.odp
page 22