虚拟机知识大盘点

上一篇 / 下一篇  2007-12-08 01:48:53 / 个人分类:Linux系统配置

KVM (for Kernel-based Virtual Machine)is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V). It consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module, kvm-intel.ko or kvm-amd.ko. KVM also requires a modifiedQEMUalthough work is underway to get the required changes upstream.51Testing软件测试网O$uo,j%C.GO
51Testing软件测试网,Hia @[%dF ?Z
Using KVM, one can run multiple virtual machines running unmodified Linux or Windows images. Each virtual machine has private virtualized hardware: a network card, disk, graphics adapter, etc.
,hD3h+BW0
1eVf"?X0The kernel component of KVM is included in mainline Linux, as of 2.6.20.
-A$U'm-@.u/qC;k:G(PW051Testing软件测试网 q%X3P+\%?,|4i(Zr?,w
KVM is open source software.
@/J,h/H i"YAZq3I"[(DM1N051Testing软件测试网fsOQa

6z!|0mb.M8S9{1K0Linux Gains Two New Virtualization Solutions51Testing软件测试网ls UT&n3y0{

51Testing软件测试网Lf7_9eIDg'y} K

The upcoming 2.6.23 kernel has gained two new virtualization solutions. According to KernelTrap, bothXenandlguest have been merged into the mainline kernel. These two virtualization solutions jointhe already merged KVM, offering Linux multiple ways to run multiple virtual machines each running their own OS.51Testing软件测试网X r Q1X4N&O'r%}

半虚拟化技术(Paravirtualization):51Testing软件测试网6zDR+rh `k

;s6|mY L_+W.JR0全虚拟化技术(Full Virtualization):51Testing软件测试网6t#\%y#K9|.x

5a6T mjF.}i |0Intel VT虚拟技术( Virtualization Technology):51Testing软件测试网3C%c"nZ9IJa l

AMD SVM(安全虚拟机, Secure Virtual Machine):

*Tx%X+s4w-rR0

Linux Tip: How to Tell if Your Processor Supports VT

N'h8L&v2Lv$Az8\Q0Virtualization Technology (VT) is a set of enhancements to newer processors that improve performance for running a virtual machine by offloading some of the work to the new cpu extensions. Both AMD and Intel have processors that support this technology, but how do you tell if your system can handle it?

:I/[P1SE9|4C0

o2vSyn)k0It's quite simple: We'll need to take a peek inside the /proc/cpuinfo file and look at the flags section for one of two values, vmx or svm.

m@6a7V[L$V,C v8s0
  • vmx- (intel)
  • svm- (amd)
51Testing软件测试网 IR?5wv"tHi9?,gkr

You can use grep to quickly see if either value exists in the file by running the following command:51Testing软件测试网sDXK:R Ns

&qA:Og5s.V)n{7l'n0egrep '(vmx|svm)' /proc/cpuinfo

,[/ZJXm!mY/W0

-mT)I^,[Gp {"F(_0If your system supports VT, then you'll see vmx or svm in the list of flags. My system has two processors, so there are two separate sections:
e_*_9|%OH&@0

Sb+~)oO)a.{1vu0
51Testing软件测试网 b1g+`9kMz K

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cplvmxest tm2 ssse3 cx16 xtpr lahf_lm51Testing软件测试网U'J3R KGt8d
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cplvmxest tm2 ssse3 cx16 xtpr lahf_lm51Testing软件测试网DO^"ym3SY2xX~1n_

2z%ukt!gD:eNQV0VT technology can still be disabled in your computer's BIOS, however, so you'll want to check there to make sure that it hasn't been disabled. The flags in cpuinfo simply mean that your processor supports it.

"XG1F@ B0

t7v"j,D3ZN0From my research, VT is required in order to run 64-bit guests under the free VMware server for linux… so it would logically follow that if you can do so, VT is enabled.

?/WRD sk051Testing软件测试网&a;W yO!lRA

32-bit VT is not enabled by default under VMware server. If you want to enable it, you need to add the following line to your *.vmx file for your virtual machine:

9_E IbM8^i0
51Testing软件测试网r]y"lD4^!d

monitor_control.vt32 = TRUE51Testing软件测试网!]9u'XXO

]8h+b'zl0VMware does not recommend that you use VT for 32-bit guests, because they say it will actually hurt performance.

tGIT]'NJ0

Ux(x9Jy V0------------------------------------------------------------------------------------

8{` dAN Pw2d051Testing软件测试网.sQ4gdNp'N

WHAT IS BOCHS?
-RNJr!W'l/Ow@051Testing软件测试网8H] a"?}[VT,a.j{
Bochs is a highly portable open source IA-32 (x86) PC emulator51Testing软件测试网&j7p;sr F:g,Y
written in C++, that runs on most popular platforms. It includes51Testing软件测试网t U{M9qA
emulation of the Intel x86 CPU, common I/O devices, and a custom
mW8X)to*@[R:p0D0BIOS. Currently, bochs can be compiled to emulate a 386, 486 or51Testing软件测试网 dS:S2L;E
Pentium CPU. Bochs is capable of running most Operating Systems51Testing软件测试网3GQV.o5H`2y8n
inside the emulation including Linux, Windows 95, DOS, and
'{!Sbf.br8\0Windows NT 4. Bochs was written by Kevin Lawton and is currently
5`1j\qjX4wARF0maintained by the Bochs project at "http://bochs.sourceforge.net".
51Testing软件测试网d6z8FK)qI

51Testing软件测试网'y6Dg[P

--------------------------------------------------------------------------------------------------------

"Tfg,_.mX&A0

About PearPC

51Testing软件测试网QkN0{%z Y^

PearPC is an architecture-independent PowerPC platform emulator capable of running most PowerPC operating system51Testing软件测试网 @+Nn7z1H+Sa;m

dU(g6|F9UB0

Features

5Fayy"i,[!mXa4F0

p7['^A6J%f I051Testing软件测试网%T,|8Ac D ^u~0L

T,s9f7| JH0
  • License:GPL
  • Programming language:C++, C and (on x86 platforms) assembler
  • Supportedhostplatforms:POSIX-X11 (Linux, ...), Win32
------------------------------------------------------------------------------------------------------------

Linux上的KVM虚拟化常见问题精彩问答

51Testing软件测试网 Z:p_j3G cht m7o

1.系统(处理器)需求?

YN&o0Z pO;z051Testing软件测试网6bs U4u%A'Io$aY

  你将需要一台运行最新Linux内核的Intel处理器(含VT虚拟化技术)或AMD处理器(含SVM安全虚拟机技术的AMD处理器, 也叫AMD-V)。51Testing软件测试网9J`.d"|8cx"\.f

51Testing软件测试网,@ ck-br

  2.什么是Intel VT/AMD-V?

n#RB4z1s M4biy0

H%Z Hx%S0  Intel VT和AMD’s AMD-V是一套与支持该技术的虚拟机监视器相结合的硬件增强特性(指令集扩展)。kvm可在原始硬件速度下通过运行完全隔离的虚拟机来执行任务。

0{2y&Sp|d6R)w0

'jP @ i.Q$f0y!^-G0  3.如何确认处理器含有Intel VT或AMD-V技术?51Testing软件测试网$c%[R}5m Y5GK~-f$^f

L!b#{2S`$J]z/Rq ~K w0  在最新的Linux内核下运行: egrep ‘^flags.*(vmx|svm)’ /proc/cpuinfo

m mJ1}8^ Clq~051Testing软件测试网Li+Yv*Q/~

  如有显示,您的处理器具有VT功能。你也可以通过厂商网站查询处理器型号的名称(在/proc/cpuinfo)。

U#VZ B2Q[+?0

#ls Q7t];J0  注:一些厂商禁止了机器BIOS中的VT选项, 这种方式下VT不能被重新打开。51Testing软件测试网LpN p%wz W0q
./proc/cpuinfo仅从Linux 2.6.15(Intel)和Linux 2.6.16(AMD)开始显示虚拟化方面的信息. 请使用uname -r命令查询您的内核版本。51Testing软件测试网w~6Bm;k K@&v1c

#z*\J @K%O|0  如有疑问, 请联系硬件厂商。

!N}oE z0H T0

7M!L4Wc*e(`7R4R)e5@0  4.kvm支持哪些用户空间工具?51Testing软件测试网 C { S4]J

p U_3a$~(I^0  kvm使用稍改动的qemu程序来创建虚拟机. 一旦运行后, 虚拟机是一个标准的进程. 你可以使用top(1),kill(1),taskset(1)和类似的工具来管理虚拟机。

]9CaWi^W5p051Testing软件测试网&T(VS{ [g

  5.kvm支持哪些虚拟磁盘格式?

X)~ E;l N-~051Testing软件测试网6E2T2a D$H$D

  kvm从qemu继承了丰富的磁盘格式, 包括裸映象(raw images), 原始qemu格式(qcow), VMware格式和更多。51Testing软件测试网\Hf)dQWsa

N*Z#B/Q2IE/D0  6.kvm和Xen有何区别?

p@L0?'Tv2i I H;L{0

7w%N s$q'p~U0  Xen是一个外部的hypervisor程序(虚拟机管理程序);它能够控制虚拟机和给多个客户机分配资源. 另一方面, kvm是linux的一部分, 可使用通常的linux调度器和内存管理. 这意味着kvm更小更易使用。

e.~ssb051Testing软件测试网 ]cB%N$i!u1u&d

  另一方面, Xen同时支持全虚拟化和半虚拟化(修改过的客户机能有更好的性能). kvm当前不支持半虚拟化。51Testing软件测试网jgL J]%`$j

51Testing软件测试网g}#a+h7@/i

  7.kvm和VMware有何区别?51Testing软件测试网.cQB*IMf j

vl ? pL(A0  VMware是一个专利产品. kvm是一个遵守GPL­的自由(开源)软件。

#noo\'e'd?)j'ni3e051Testing软件测试网W)F1T*p8tq

  8.kvm和QEMU有何区别?51Testing软件测试网$W ],C.{9qP[

51Testing软件测试网:e(nL/Y7yB]4k[

   Qemu使用模拟器; kvm使用处理器扩展实现虚拟化。

`+w$PHNv fy0

6WqB S1`k!W w;M0  9.kvm有windows上的版本吗?

_3N-H,BYh(Kv0

6BF{b.V{0  当前没有。

~}!Tw7J&Y'd0

^C6vuvK,g0  10.kvm支持哪些内核版本?51Testing软件测试网uG `K~6|jk5D`7n

b_a St r0  kvm可以运行在最新的内核版本下(2.6.16或更高, 最好是用最新的内核)

:fhvD9b#wc8C051Testing软件测试网nbA*K8r,n

  11.我需要多什么RAM(内存)才能运行kvm?51Testing软件测试网+t#Wh/` Tb/s

51Testing软件测试网AoLoWyF#h

  你需要足够的内存在主机上运行单个或多个虚拟机. 建议主机内存至少1GB。51Testing软件测试网"]/T/E3]Nk*P

51Testing软件测试网C eo&E$K({

  12.KVM上的虚拟机支持哪些操作系统?51Testing软件测试网%aRk1R_

5~:c#dE2Vt0  我们已经测试了Linux(32/64位)和Windows(32位), 其它也许能够运行或不能运行。不支持64位的Windows操作系统, 该问题会在qemu-0.83发布和整合后修复。51Testing软件测试网g.Fr9Fn
Intel处理器上几个Linux发行版在启动时候会挂起。工作区需要取消grub中的splashscreen选项。51Testing软件测试网L)MP L#d2~G

r,|0B%s {!DWO0  13.KVM支持动态迁移功能吗(在不离线的情况下把虚拟机从一个主机移到另一个主机上)?51Testing软件测试网t|u'Xt.fO

51Testing软件测试网 cE t-[r$Ev-c6F

  现在kvm支持非动态迁移,当内存数据需转移的时候,系统需要停止。动态迁移功能正在开发当中。51Testing软件测试网s-j,]u(y#x

+]dpz;o3xhvS0  14.kvm能够在64为主机上运行32位的客户机吗? 什么是PAE?

;KW@} f Sqb0

8~ LF'o3S+F ?9A#J F0  kvm支持在64位主机上运行32位客户机, 也可以是任何PAE或非PAE客户机和主机组合。但不支持在32位主机上运行64位客户机。

N(l*Y KvG:V0

I4q+QT R6Q Q0  15.如果我对一个VM进程使用kill -9将会发生什么?51Testing软件测试网:m;m}_^(l

q-y*j?(g-|0  从客户机的角度来看,就如你猛地把电源线从主机上拔出一样。从主机的角度来看,进程被杀掉,进程占用的所有资源被施放。

$|/W*D1\7^']o u2~3fmjT051Testing软件测试网Cu'm+U|p!_Fk#s

  16.kvm支持SMP主机吗?

aczeDu2f[0

4]\7[/K3D!w0  支持。

Sp_6SkRh051Testing软件测试网Y9{d4kXA

  17.如何安装windows客户机?

0AB1n Qi Lp051Testing软件测试网Yj/o"w{ur

  当前Windows客户机安装存在一点问题,问题在APIC的实现上。现在APIC由qemu来模拟, 而qemu还没有完全整合到kvm虚拟cpu中。我们正加紧在kvm中实现APIC功能。

,_5z.yb]"yKD0

F]5z1Fw\Z[0   到现在, 启动qemu请使用-no-acpi参数,如果你的客户机需使用APIC HAL,建议参考下面步骤:

#[8[0c KUI7_zMy0

#] rk.Dy;i.E0  1. 关闭kvm运行客户机(-no-kvm)51Testing软件测试网:R3I*glh;Mye7K:b(q
My Computer -> Properties -> Hardware -> Device Manager -> [Whatever under Computer] -> Properties -> Update Driver -> Not at this time -> Next -> Install from a list -> Next -> Don’t search -> Next -> Standard PC -> Next.
[J{/[/k]6d c0“Standard PC”是无acpi支持的HAL.

b!ka @z/Gmq0

#a~G-]knK0  18.Qumranet提供哪些产品?

}9U'R;?&R051Testing软件测试网HPi YU2?4L

  umranet是一家由Qequoia Capital和Norwest Venture Partners (NVP)投资的初创公司,当前公司处于准备运营当中(正在加紧开发公司的产品)。

ixvjP:P:oa!P/M0

Y$K7bOHX0------------------------------------------------------------------------------------------------------------

"]:j0xZ%TK0

Virtualization versus paravirtualization

Eq I|1w0When you create a new VM, it is allocated a chunk of RAM all to itself, and lives completely self-contained from the outside world. VMware even has a virtual BIOS to complete the illusion. If your VM wants to communicate to other VMs on the same computer, it has to do so over a TCP/IP network connection, just like any other machine. In fact, when you install an operating system on a virtual machine, it cannot even tell that itisa virtual machine because it looks identical to raw hardware.

$XH!`v.],D(LfA|0

hb@v5Ca0The problem with this type of virtualization is that it is very slow. For example, the VM has to access hardware frequently (to save files, show a display, and so on), but of course it cannot access the hardware directly because doing so would interfere with other VMs. Instead, its requests have to be translated and rerouted to the host operating system, where they are handled. Similarly, if the VM tries to execute any special CPU instructions that would reveal that the VM is actually a virtual machine, the host OS has to stop those instructions and fake the answer so that the VM is not any wiser (a technique known asbinary patching).51Testing软件测试网 S-p3vRq3l`

%I$W1?4|2t0The solution is to move from virtualization to paravirtualization -- the technique that Xen uses. Linux is open source, so the Xen developers modified the Linux source code so that Linux becomes aware of its existence as a virtual machine. When the virtual Linux needs access to the hardware, it just asks Xen for permission. The difference is huge: You can expect a normal VM to run at about 50% of the speed of a native machine, whereas a Xen virtual machine can run up to about 95%, simply by removing the need for binary patching and other virtual hacks.51Testing软件测试网z'X.shc'\$^&^f

gtF&B7pZ0b(k0The downside to Xen is that the source code has to be patched, which rules out closed-source operating systems. VMware runs Windows XP on Linux out of the box, but Xen cannot. That said, the new chips from Intel and AMD include virtualization on hardware, which enables Xen to run unmodified Windows at full speed on top of Linux. Without this technology, Xen can use only a modified, open source distribution, such as Linux, NetBSD, or FreeBSD.

]5|ji'o:Pt"@0

How Xen works

51Testing软件测试网|e o8\sqJ

Xen is actually a very small operating system that has the sole goal of managing the resources of virtual machines. On top of the Xen OS runs what would previously have been called thehostOS -- the main operating system for the machine. Unlike VMware, the host OS (known asdomain 0or justdom0in Xen terminology) is a virtual machine, but has special privileges assigned to it so that it is more responsive.

u9pNmGhk2SF0

$m I6L@)uM@0The domain 0 VM is where you control Xen, and where you start other guest VMs -- known asunprivileged domainsordomU. You can start as many as you want, with the only real limit being the amount of RAM in your machine. Because the domU OS is fully aware of its status as a Xen virtual machine, Xen lets you change the amount of RAM in a VM while it's running, with the exception that you can't go above the initial allocation of RAM.

%IoW*\2R7H*d051Testing软件测试网|*SJA^1l w

Fedora Linux specifies a minimum system requirement of 256MB RAM, which means that if you are to run Fedora on top of Fedora, you need at least 512MB RAM. Keeping in mind that Xen uses a very small amount of RAM for itself, you should ideally have at least 768MB of RAM to be able to run two operating systems side by side at full speed.

-z o\4v)f0

E5O}q&mK ]S~0Note that if you have tried Xen on old versions of Fedora, you no longer need to disable SELinux to get Xen to work.51Testing软件测试网L'FNhBt@7ZMl

Installing Xen

51Testing软件测试网{,s3dyOv9{U%QE

The first step is to convert your current OS to a virtualized guest OS. This is actually a very easy thing to do because, as discussed, domain 0 has special privileges -- such as the capability to access hardware directly. As a result, you do not have to reformat your machine: dom0 reads straight from the disk, uses the graphics card, uses the sound card, and so on.51Testing软件测试网W.M*L(k7@

;A[o S;o)n/]6L0To get started, go to Applications -> Add/Remove Software. From the window that appears, choose List view, and then select the following packages:kernel-xen,vnc, andxen. Thekernel-xenpackage provides a Linux kernel that is configured to run on top of Xen without any special privileges, as well as a Linux kernel designed to be used as dom0 so it can access hardware directly. Thevncpackage is there to make VM management much easier. Finally, thexenpackage gives you all the tools you need to create and manage virtual machines. Along with these packages, there are several other dependencies that Fedora will automatically resolve for you, so just go ahead and install all the packages.

:I}YM-z eT"v051Testing软件测试网6d IP)?*NN9bo

Because you have installed two new kernels, Fedora updates your GRUB boot configuration to make them bootable, but leaves your original, non-Xen kernel as the default. Switch to root and bring up /boot/grub/grub.conf in your favorite text editor. Look for the line"default=2"and change it to read"default=0". This might vary on your machine -- set it to the position of the Xen hypervisor kernel in the grub.conf file, remembering that Grub counts from 0 rather than 1. That is, the first OS in the list is considered to be number 0. Note that you should not set the guest kernel as the default because it willnotboot -- it is designed only to be created on top of the hypervisor (dom0).51Testing软件测试网9L8y2c!SB

u,Pn xIVQsb$u0Save your changes and reboot, making sure that your new hypervisor kernel is the one that boots. Your system should restart as normal, and you will probably not notice anything different beyond a smattering of "XEN" at the very beginning of the boot phase. But when you are back in control, open a terminal and rununame -r. It should tell you that you are running the Xen hypervisor kernel.

q?GDU?051Testing软件测试网T9I&u&cQ&i J

At this point, you are already running as a virtual machine on top of the Xen kernel, but there is no way for you to communicate with the Xen kernel and thus manipulate the virtual machines on the system. To do that you need to start the Xen daemon, which provides the link between dom0 (where you are working) and the Xen kernel underneath.51Testing软件测试网aH4T+{ G RH M

51Testing软件测试网T!K+R6{)hxQi'v

Runps aux | grep xend. If you do not seexendin the resulting listing, you need to start it yourself by switching to root withsu -and then runningservice xend start. Now run the commandxm list, which prints out a list of all the virtual machines that are running and how much RAM they have allocated -- you should seeDomain-0, which is your current system, in the list.

&F$m]b,U0

Setting up guest operating systems

51Testing软件测试网%H({1a%y&~4~

The output fromxm listprobably shows that domain 0 is taking up all the RAM on your system, which means there is no room to create a new guest OS. Fortunately, you can resize that memory usage downward to make space: Run the commandxm mem-set Domain-0 256to have domain 0 use 256MB RAM. This is the bare minimum for a Fedora install, so expect some slowdown -- if you have more than 512MB RAM, we recommend you allocate more to each VM.

M,bDr6Y+i0

G)Wi3W;d N EAD0Creating a domU VM on Fedora is handled with thexenguest-install.pyscrīpt, which you should run as root. You are asked to do the following things:

&Pi+]#@a @0
  1. 51Testing软件测试网)Ar9aK9UI,MP

    Give your virtual machine a friendly name (for example, FCUnleashed) so that you can differentiate between it and other virtual machines.51Testing软件测试网2L&T.RLf)Z

  2. -Dm!~i"[5ZD0Allocate it some RAM, with the minimum being 256MB; more is better.51Testing软件测试网sHU el j p

  3. 51Testing软件测试网8LCZV;TA;Mu!`o

    Choose where it should save its files. Xen uses a loopback filesystem so that all of a VM's files are stored in just one file on domain 0. Enter something like /home/paul/vms/fcu.img.51Testing软件测试网~.eH,`:oYG

  4. Pp4D.I y*[0Select how big the virtual disk should be. For a basic install, around 4GB should be enough.51Testing软件测试网3o+?&q]TS

  5. O7J nj Wk/S*o!W;w0Set the install location (the place from which Fedora should install). This needs to be an online resource, so enterhttp://download.fedora.redhat.com/pub/fedora/linux/core/6/i386.51Testing软件测试网 }BTW7t*v{l

zz4uL7K!i@:O_J;A!F0Now sit back and wait. Downloading the necessary files can take quite a while, depending on your connection speed.

w%T#m/?QW?0

W@?-R_GZ'NS+MY;|0Once your files have been downloaded, the normal Fedora installer (Anaconda) will start, and will ask whether you want to install using text mode or VNC -- choose Start VNC so that you have a graphical install. Xen's guests do not have direct access to the hardware, which means they have nowhere to display graphics. VNC lets you have your Xen VM render its graphics to your dom0 display inside a window, which means you can work with multiple VMs simultaneously. When you select Start VNC, you are prompted to enter a password. Click OK and you see the VNC address to which you need to connect. This address should look something like 10.0.0.1:1, where the :1 is the number of the VNC display.

t5tA5M8?0

9v%Tj&{ R0Back on dom0, you should have installed VNC Viewer at the start of this chapter, so go to Applications -> Accessories -> VNC Viewer. Now enter that address (including the :1 or whatever it is for you) and click Connect. Enter your password when prompted. VNC starts and you see the Fedora installer. Depending on the resolution of your screen, the Fedora installer might not fit entirely on the screen; in that case, you have to use the scrollbars to get around.

8t4e;?J6QT051Testing软件测试网J?$e;y@A!k.ne

The installer is as normal from here on in, except of course that it is using the virtual disk you created earlier so you have only a small amount of space. It might refer to your hard disk as something like /dev/xvda -- do not worry about that.

-z0^x^e@*e/x0

Runtime configuration

51Testing软件测试网5JYc z }-DL

Now that your guest OS is up and running, you can start trying out more of the features of thexmcommand on dom0. You have already seenxm mem-set, which alters the amount of memory allocated to a machine. This works because the domU VM is aware of its virtualized state and can therefore handle having memory taken away. This extends further: You can usexm shutdown yourvmto have Xen politely request the VM to shutdown. On Linux, this goes through the whole shutdown sequence properly, ensuring that the machine is cleanly terminated. If you want an immediate shutdown, usexm destroy yourvm, but make sure the virtual machine is in a safe state first -- if you have a text file open and unsaved, for example, it will be lost.

f;TbyGR051Testing软件测试网F?XH4VBo.UE[

Thexmcommand can also be used to save snapshots of a virtual machine, rather than just switching them off. To do this, usexm saveyourvm yourvm.state. That command essentially saves the RAM of theyourvmVM (changeyourvmto whatever you called your virtual machine) to a file and then turns off the VM. To restore a saved state, just usexm restoreyourvm.state. If you want to create a virtual machine from a configuration file, usexm create -c yourconfig. Note that Xen searches the directory /etc/xen for configuration files, and that each VM must have a unique name assigned to it and set in the configuration file.

c}x/_d_sC051Testing软件测试网(X?&r&E-y(dO

You can connect to the console of any virtual machine by runningxm console yourvm. To exit from a console, press Ctrl-] (Control + right bracket). This does not shut down the VM; the VM continues to run, but you are no longer connected to it and have to usexm connectto reconnect.51Testing软件测试网s%Y(p ZSz9V

x2q$K@l0TIP:The configuration files in /etc/xen are in text format and so are easily edited. For example, if you want to change the number of CPUs a VM sees, look for thevcpussetting. Note that these arevirtualCPUs rather than real ones -- you can set this to8and have your guest see eight CPUs, even if your actual machine has just one. This is a great way to test a cluster without going beyond your desktop!

A i7U,^1m/J_0

`-EG)i:h/J0Related Fedora and Xen commands51Testing软件测试网'L,xW1zGWD,k

51Testing软件测试网2V7V,`2K`'?*U `;c R;b

The following commands are useful for working with Xen on Fedora:

F#G8X7~/KL$SC0
  • ?$[ z$@|}(CJ0virt-manager-- Red Hat's new graphical Xen management system51Testing软件测试网m9^w}~

  • 51Testing软件测试网Hz5|wU

    vncviewer-- Lets you connect to the graphical output of a Xen VM

    9?2c;L^Qyf0
  • H jd'xG't \0xend-- Starts and stops the Xen daemon without using theservicecommand

    ,G9{,yCZA:s^1Zk0
  • Y w:Q*T8vYn0xenguest-install.py-- A helpful scrīpt that generates configuration files for you51Testing软件测试网w9{I&k2XNo%H!_n

  • f7d]nU0xm-- Lets you manipulate the state of virtual machines while they are running51Testing软件测试网%\I%hFo

51Testing软件测试网G"x oL!c%rkp

Copyright © 2007 Pearson Education. All rights reserved.

3u8T%]7{(z051Testing软件测试网q&vdLo_!V5Q8|

原文链接:http://www.linux.com/feature/11934951Testing软件测试网7j4@4I7q;@XJ%X

w6l,Za-^oN7f8EN0 51Testing软件测试网:gy#ia"ca8Ul!z)M

51Testing软件测试网w0d:@.EW:R

虚拟化技术的方法, 架构和实现概览51Testing软件测试网,rl R/k.E6G|9In^

级别: 中级
.a^*qem&Z1n|*fSb V0M. Tim Jones [mtj@mtjones.com], 顾问工程师, Emulex
,O w:K3u9s/G9j7]V:A c0原文:Virtual Linux51Testing软件测试网#qkk _-Nho2uA
译: 赵珂 cn.zhaoke.com
M$]Sdgb0http://blog.zhaoke.com/45.html51Testing软件测试网/g"|c[B7e

51Testing软件测试网CU-r-`6M2T

2006年12月29日

O%SNp|&f{0

$E#O&m.G9wi y0虚拟化技术的应用十分广泛. 当前虚拟化技术主要关注于服务器的虚拟化, 或在单个主机上寄存多个独立的操作系统. 本文首先介绍虚拟化技术的原理, 然后讨论多个虚拟化技术的实现方法. 另外介绍了一些其它的虚拟化技术, 比如Linux上操作系统级的虚拟化技术.51Testing软件测试网@DY#n~-R

Y Ql0ln}4Jx0

7J f)J7R!T@051Testing软件测试网{ xU i ?.N,v

虚拟化把事物从一种形式改变为另一种形式. 计算机的虚拟化使单个计算机看起来像多个计算机或完全不同的计算机.51Testing软件测试网sD#~B@y0aR/^*c/?

+W K;?_/R2m0虚拟化技术也可以使多台计算机看起来像一台计算机. 这叫做服务器聚合(server aggregation)或网格计算(grid computing).51Testing软件测试网;lMT5MU U+N

51Testing软件测试网:FrY+I l*i%x7g)j

首先我们回顾一下虚拟化技术的历史.

-fy i%@? {3]HF051Testing软件测试网0C[7W1`o3U;jqOCf:F

虚拟化技术的历史

^/H9f/X]#{}!s0

0f7D_ R}.`,p1WpLv0虚拟化技术不是一个新的主题; 实际上, 它已有40年的历史. 最早使用虚拟化技术的是IBM 7044计算机, 它是基于MIT(麻省理工学院)为IBM704计算机开发的分时系统CTSS(Compatible Time Sharing System), 和曼彻斯特大学的Atlas项目(世界最早的超级计算机之一), 首次使用了请求调页和系统管理程序调用.51Testing软件测试网q? w0~;t'n.EK:G

6t"__+Q'H` b3gj;g0硬件虚拟化51Testing软件测试网7@/A'\3B,t wt;T

51Testing软件测试网 c e `J^d1{$Mx

IBM早在1960年就认识到虚拟化技术的重要性, 于是开发了型号为Model 67的System/360主机. Model 67主机通过虚拟机监视器(VMM, Virtual Machine Monitor)虚拟所有的硬件接口. 在早期的计算中, 操作系统被称做Supervisor. 能够运行在其它操作系统之上的操作系统被称做hypervisor(名称首次出现在1970年).51Testing软件测试网c5]!I a'c_| bey+m

U[9V/dUoH0VMM直接运行在底层硬件上, 允许执行多个虚拟机(VMs). 每一个VM(虚拟机)运行自己的操作系统实例 -- 早期时候称为CMS, 或会话监视系统(CMS, Conversational Monitor System). 然后VM继续发展. 今天你能够在System z9主机上发现VM, 它能够向后兼容, 甚至是System/360.51Testing软件测试网3F Tya:ab9d5W9z

51Testing软件测试网!x7~m-P"q

处理器虚拟化

H1[4L,x4Z"S P051Testing软件测试网5pH!g}l,t%r.d L

另外一个早期使用的虚拟化技术, 仿真处理器, 也叫做P-code(or pseudo-code)机. P-code是一种机器语言, 运行在虚拟机上而不是实际的硬件. 知名的P-code语言在1970年由加州大学圣地亚哥分校的Pascal系统项目组开发. 它可以把Pascal程序编译成P-code代码, 然后在具有P-code功能的虚拟机上运行. P-code程序具有高度可移植性, 能够运行在任何具有P-code功能的虚拟机上.

q}v0_?/I:n&y7V0

]d^!f[01960年的BCPL语言(基本组合程序设计语言, Basic Combined Programming Language)也使用了同样的概念, 它是C语言的前身. 编译器首先把BCPL代码编译成一个中间机器代码: O-code. 然后, O-code被编译成目标机器代码. P-code模型已被广泛使用到各种编译器当中, 从而为编译器移植到新的主机架构提供了复杂性.(通过一个中间语言分成前端和后端).

EP.? cT.w*Z0

JZB4S+w y8Z0Java虚拟机(JVM)51Testing软件测试网JuQ-z,a;OD
Java虚拟机也采用了P-code模型. 从而我们可以简单通过移植JVM程序到新架构的机器上来广泛发布Java程序.

6|N s4R3l.Brs0

T/j!l&R eXhi0指令虚拟化

7@nq7] C K1t0

N#g(h,X5wd |0近来频繁出现的虚拟化概念: 指令虚拟化, 也叫做二进制翻译. 在这个模型中, 虚拟指令被动态翻译成底层硬件的物理指令. 程序执行后, 代码一段一段地被翻译. 如果出现分支, 一套新的代码指令将被引入和翻译. 这十分类似于缓存操作, 指令块从内存移动到本地的快速缓存内存中执行.

hzr5J2ntU1e/z051Testing软件测试网/u}0j[ J v Ag

近来Transmeta公司设计的Crusoe中央处理器使用了该模型. 二进制翻译由Code Morphing专利技术实现. 类似的一个实例, 全虚拟技术通过使用动态生成代码扫描来发现和重定向特权指令(解决特殊处理指令集中的问题).

,Lt,lAp'cs-@.]051Testing软件测试网Z~f!{+I'U+R

虚拟化技术的类型

4ab8hwx m-A~051Testing软件测试网M[d/K^O:r| cXD"v

现在不只存在一种虚拟化技术. 事实上有多种方法可以使用不同层次的抽象来实现同样的结果. 本章介绍Linux上三种最常用虚拟化技术的优点和弱点. 业届有时使用不同的术语来描述同一个虚拟化技术. 为了保持连续性, 下面使用的术语参考了其它的术语.51Testing软件测试网 A-i#UL/_/\E

51Testing软件测试网B6Ce M\

虚拟化技术和游戏51Testing软件测试网,{0[vv v

#z o9oF_0~G,S0一篇虚拟化技术的文章如果没有提到复合式大型电玩模拟器(MAME)就不是一篇完整的文章. MAME, 就如名字一样, 是一个能够模拟以往arcade游戏的机器模拟器(全部). 做一个补充, 整个机器是被虚拟的, 包括声音和图形还有控制硬件. MAME是一个非常棒的应用程序, 你也可以通过仔细阅读源码来了解它是如何实现的.51Testing软件测试网l'JH]6z+O-c

51Testing软件测试网-r8Z)t5`H#JiN-D

硬件模拟器51Testing软件测试网vaG8~Sj5T-Ma5G

51Testing软件测试网0ci:oFS\u

无可否认, 最复杂的虚拟化技术是硬件模拟器. 在这个方法中, 首先在主机系统上创建硬件VM, 然后模拟硬件的功能, 如图1显示:

$T`q%d-a9w0

.z!m'WytxemY0图1. 硬件模拟器: 使用VM模拟需要的硬件
*j1p$q3[z4H G2iw~0

:{^4lp['BlEE0

)LMN P!O"|3\0正如你可能猜到, 硬件模拟器的主要问题是速度极慢. 因为每一个指令在底层硬件都需模拟, 所以速度慢了100倍. 高保真模拟还包含了循环校验, 用于模拟CPU的管道和缓存行为, 实际速度会慢了1000倍.

7hYoP6ZPL051Testing软件测试网UBS Jh%U0VV&Y

硬件模拟有自己的优点. 比如, 使用硬件模拟, 你能够在基于ARM处理器的主机上模拟运行基于PowerPC未经任何修改的操作系统. 你甚至能在每个不同模拟处理器上运行多个虚拟机.51Testing软件测试网+g#eAetRO'v

51Testing软件测试网.GeYv)\#S3gw*|

模拟器和开发51Testing软件测试网*Q?}6AS|5W d

?"A6bfFR z?qJb0硬件模拟器最有意思的一个应用是firmware(固件)和硬件协作开发. firmware开发人员无需等待最新硬件的推出, 他们可以使用目标硬件的虚拟机来验证实际代码中的许多概念.51Testing软件测试网0F@6n/Y|

51Testing软件测试网F0bW pP0I_K

全虚拟化51Testing软件测试网i6Z-t8B9Ypk4U6B

51Testing软件测试网WIY^j

全虚拟化(Full virtualization), 也称为原始虚拟化技术, 是另一种虚拟化方法. 该模型使用虚拟机协调客户操作系统和原始硬件(见图2). 这里"协调"是一个关键词, 因为VMM在客户操作系统和裸硬件之间用于工作协调. 一些受保护的指令必须由Hypervisor(虚拟机管理程序)来捕获和处理. 因为操作系统是通过Hypervisor来分享底层硬件.

Bp\}+w:m N051Testing软件测试网9r;x\L?7uN#Y`

图2. 全虚拟化: 使用Hypervisor分享底层硬件
lS0O9b2D'zA0

%{[~7{C051Testing软件测试网9^7G*Mq^)U7Z

全虚拟化的运行速度要快于硬件模拟, 但是性能方面不如裸机, 因为Hypervisor需要占用一些资源. 全虚拟化最大的优点是操作系统没有经过任何修改. 它的唯一限制是操作系统必须能够支持底层硬件(比如, PowerPC).51Testing软件测试网h7Xy:WS-D@\

^ga4P[S3d0Th0老机器上的Hypervisors51Testing软件测试网 aU*Q1S:Yb4[`
一些老的硬件如x86, 全虚拟化遇到了问题. 比如, 一些敏感的指令需要由VMM来处理(VMM不能设置陷阱). 因此, Hypervisors必须动态扫描和捕获特权代码来处理问题.

&M:H;rLje*r H0

)|W+`BB3C._;[0半虚拟化51Testing软件测试网b4G!aF@,F)[

(W4^RQ[X zW2Zk;R0半虚拟化(Paravirtualization)是另一种类似于全虚拟化的热门技术. 它使用Hypervisor(虚拟机管理程序)分享存取底层的硬件, 但是它的客户操作系统集成了虚拟化方面的代码. 该方法无需重新编译或引起陷阱, 因为操作系统自身能够与虚拟进程进行很好的协作.

^.v8b9D@ x-o051Testing软件测试网,\m-? }6\0S

图3. 半虚拟化: 通过客户操作系统分享进程
+^Y$P_Rp/e#Dx0

9m%d2S(Jyx'O051Testing软件测试网 iPK%p A-E3n/@

上面提到过, 半虚拟化需要客户操作系统做一些修改(配合Hypervisor), 这是一个不足之处. 但是半虚拟化提供了与原始系统相近的性能. 与全虚拟化一样, 半虚拟化可以同时能支持多个不同的操作系统.51Testing软件测试网 z2RA%L"^%u Oo

+Oda~v0操作系统级的虚拟化51Testing软件测试网NNqJ H!xO0q

JGl6\2S5w8vf0最后一个我们需要了解的虚拟化技术是操作系统级的虚拟化(Operating system-level virtualization), 它使用不同于上面的虚拟化方法. 该技术在操作系统之上虚拟多个服务器, 支持在单个操作系统上简单隔离每一个虚拟服务器(见图4).

sMs;r{a4Z|6_(t051Testing软件测试网;I9~P-TV,gN

图4. 操作系统级的虚拟化: 隔离单个服务器51Testing软件测试网N&d!g t^QiD
51Testing软件测试网w!k8Y^`

51Testing软件测试网,vS}v"e N5P o8r4VD}

操作系统级的虚拟化需要修改操作系统内核, 它的优点是具有原始主机的性能.

K:{\+ix+|/vi0

,fuOU4I$ec0为什么虚拟技术如此重要?

'V:?9euk9aB0

-_6?Nq'Z |\)b S1@0在了解当今主流的linux虚拟化技术之前, 我们先来看虚拟化技术的优点.51Testing软件测试网4o Q(^4k1M%J} T

51Testing软件测试网Sgx2Q_lM

从商业角度来看, 使用虚拟化技术有非常多的原因. 不过大多是用于服务器加固. 简单来说, 如果你能够在单个服务上虚拟多个系统, 这样少数的几台计算机显然能够节省耗电, 空间, 冷却和管理开支. 考虑到确定服务器利用状况的困难, 虚拟化技术支持动态迁移(Live Migration). 动态迁移允许操作系统能够迁移到另一台全新的服务器上, 从而减少当前主机的负载.

$JER'l T1PW051Testing软件测试网vg&EN[$A7l5iy

虚拟化技术对开发人员来说也非常重要. Linux内核占用了一个单一的地址空间, 这意味内核或任何驱动程序错误都能导致整个操作系统停止工作. 而通过虚拟化你可以运行多个操作系统, 如果其中一个系统由于错误而宕机, Hypervisor和其它的操作系统不会受到任何影响. 这对调试内核来说就如同调试用户空间程序一样.

cXR ~%L0

b ?+},} Hr0Linux相关的虚拟化项目51Testing软件测试网C&vp6}3gu;H Cf

-j AB6DAM4d%W;z0表1显示了几个可能加入到Linux(内核)的虚拟化技术, 主要关注于开源.

.kU(g m0P M]051Testing软件测试网7V,C)QOm(D

表1. Linux相关的虚拟化项目51Testing软件测试网 E/l9JZ zv

CODE:
项目      /        类型      /      许可证
R'K&w5E)]0Bochs              模拟器          LGPL51Testing软件测试网zZ*Y1h7d C"\
QEMU              模拟器          LGPL/GPL
)am7N,A&|M0VMware           全虚拟化        闭源
W\M$M.FN0z/VM               全虚拟化        闭源51Testing软件测试网Q:{ TLn)v
Xen                半虚拟化         GPL51Testing软件测试网9TT%J+M9t`h
UML               半虚拟化         GPL51Testing软件测试网w;U5zN]7Ab2[2fT
Linux-VServer  操作系统级虚拟化  GPL
~3tZ/xt~0OpenVZ          操作系统级虚拟化  GPL
51Testing软件测试网"aSF,n-l

g!|E9VJ9E _$z0

!x~%N8wQ.l*p{ r0更多其它的虚拟化技术, 请查阅参考资料栏目.51Testing软件测试网 ~Dqg,Q

"[I#t'B5y;N0Bochs(模拟器)51Testing软件测试网tW8c5t9A W

b'v4b M@:iG7cl$z0Bochs是一个仿真x86 CPU的计算机模拟器, 它具有可移植性和可运行在多种平台上, 如x86, PowerPC, Alpha, SPARC和MIPS. Bochs的优点是不仅能模拟处理器, 而且能模拟整台计算机, 包括外设如键盘, 鼠标, 视屏图像硬件, 网卡等.

5Lh*l8?%X7hf0

] O"~g5D!O!{!Vk0Bochs能被配置成一台老的Intel 386计算机, 或更新的处理器如486, Pentium, Pentium Pro, 或64位处理器. 甚至能模拟图形指令如MMX和3DNow.51Testing软件测试网po5L*~ O#Jk

51Testing软件测试网`B7Y5y p)t \-^

你也能够通过Bochs模拟器在Linux系统上运行任何Linux发行版, 还有Microsoft® Windows® 95/98/NT/2000(和多种应用程序), 甚至是BSD操作系统(FreeBSD, OpenBSD,等).

q0Lk }s#k.Bi0

qew {| f0库级的虚拟化

]\.c*x1{M W;l/us051Testing软件测试网I;aR5Wqi$v3e

这里没有讨论另一个虚拟化技术, 它通过库来模拟操作系统的一部分. 比如Wine(一部分为linux开发的win32 API)和LxRun(一部分为Solaris开发的Linux API).51Testing软件测试网 o+}}M-MK"[-C9m SO

\d ]3g1c0cr#H0QEMU(模拟器)51Testing软件测试网SLa4].mc0ls

51Testing软件测试网v1[R6s^2y)wb

QEMU是另一个类似于Bochs的模拟器, 它有一些值得注意的地方. QEMU支持2个操作模式. 一个是全系统模拟模式. 该模式类似Bochs模拟整个计算机系统(包括处理器和外设). 而且能在合理的速度下使用动态翻译模拟一些处理器架构如X86, X86_64, ARM, SPARC, PowerPC和MIPS. 你还可以在Linux, Solaris和FreeBSD系统上模拟Windows系统(包括XP)和Linux系统. QEMU支持其它的操作系统组合(更多信息见参考资料栏目).51Testing软件测试网0b Lc^;\,Y

51Testing软件测试网1B8vY*N,I9iH

QEMU的第二个模式: 用户模式模拟. 该模式能寄存在Linux上, 不同平台的二进制程序也能运行. 比如, 一个MIPS平台上的二进制程序能够运行在x86平台上的Linux系统. 其它支持的平台包括ARM, SPARC和PowerPC, 而且还有更多正在开发的平台.

)Zw(vhla"h0

"HO~|`%IM w,x0VMware(全虚拟化)51Testing软件测试网V?PD,vL8WA h

51Testing软件测试网ln8WH4te

VMware是一个商业级的全虚拟化技术. Hypervisor是客户操作系统和硬件之间的抽象层. 该抽象层允许任何其它客户操作系统运行在主机操作系统之上.

q;_jk&YJ3{#L j0

r]\q0mq"k3[d _0VMware也能虚拟I/O硬件, 增加了高性能设备驱动到Hypervisor中.51Testing软件测试网2R(\)A/elR

!d!?"y#Bw0整个虚拟(机)环境实际上是一个单独的文件, 这意味整个系统(包括客户操作系统, 虚拟机和虚拟硬件)可以简单快速地整合到一个新的主机, 从而实现负载均衡.51Testing软件测试网#j(g^3l^[

*ST'p)})E0z/VM(全虚拟化)

+S kX]NB&td3|Z051Testing软件测试网#R*?$Ja"t5Jb

当IBM System z™是一个全新名称的时候, 事实上可以追述到1960年. System/360在1965年使用虚拟机方法实现了虚拟技术. 令人感兴趣的是System z能够与最老的System/360系列主机兼容.

d \n'p/E,_q.dT ?0

6]}5dI4[_K0z/VM®是System z操作系统的Hypervisor. 核心程序是控制程序(CP), 向客户机操作系统提供硬件资源虚拟, 包括Linux(见图5). 允许在多个客户操作系统上虚拟多个处理器和其它资源.51Testing软件测试网7K)J f1z ~

WE$v}2y\*p3~;?^p0图5. 使用z/VM的操作系统级虚拟化技术
*GMa5MH5@!|0

#|4}pT@-v0

IH&U)J3pS0z/VM可以为那些需要相互通讯的客户操作系统虚拟一个客户局域网(LAN). 整个客户局域网位于Hypervisor中, 所以很安全.51Testing软件测试网O j!I.N|lI3t

51Testing软件测试网i)\,[;e1t A

Xen(半虚拟化)

1um!W8l$Dr#^:[051Testing软件测试网)gNWBI+z

Xen由XenSource开发, 一个开源免费的操作系统级准虚拟技术. 回顾一下半虚拟技术, Hypervisor和操作系统共同协作, 虽然操作系统需要做一些修改, 但是性能上比较接近于原始性能.51Testing软件测试网 r{4h w C

0JV[!]5N0Xen需要与系统共同协作(客户操作系统需要修改), 只有打过补丁的系统才能使用Xen. 从Linux角度来看, Linux本身是开源的, 结果是Xen的性能要好于全虚拟化技术. 但是从系统支持(比如支持其它非开源的操作系统)的角度来看, 这显然是一个不足之处.51Testing软件测试网@U4Uf4O&M?/n

51Testing软件测试网,w,psn#e Jt

在Xen上可以运行Windows客户机, 但需要Intel Vanderpool或AMD Pacifica处理器的支持. 其它支持的操作系统包括Minix, Plan 9, NetBSD, FreeBSD, 和OpenSolaris.

(k-lx)vO y0n0

?4M+Q+O$P\y0用户模式Linux(半虚拟化)51Testing软件测试网Rc B3`2s#`CW(Z

/jpO6C!o+[ ada#Y0用户模式Linux(UML, User-Mode Linux)支持在linux系统的用户空间运行其它Linux操作系统. 每一个客户操作系统是主机Linux系统上的一个标准的进程(见图6). UML允许多个Linux内核(有自己的用户空间)运行在单个Linux内核之中.

+v Y d}:^y%m051Testing软件测试网-~9S,cA;MQr

图6. 用户模式Linux: Linux寄存
6XgV:Mvw051Testing软件测试网#D7L,y3\c AcV

51Testing软件测试网oCn6{h3F T:QA7V tS

在Linux 2.6内核中, UML存在于主内核树中, 但是必须打开和重新编译才能使用UML. 一些修改包括, 设备虚拟, 允许客户操作系统分享存在的物理设备, 比如块设备(磁盘, CD-ROM, 和文件系统), 控制台, 网卡, 声卡等.51Testing软件测试网n#C@8R.WEG&c

bE)sp$}(fd0注: 客户操作系统内核运行在用户空间模式, 内核必须专门编译才能在客户系统中使用(可与主机操作系统内核版本不同). 整个主机存在两套内核, 一个是主机内核(直接位于物理硬件之上), 另一个是客户内核(运行在主机内核的用户空间之中). 这些内核甚至可以相互嵌套, 允许客户机内核运行在另外一个客户机内核之中.

i!i)Eb n/kK0

*?z|/k1\A!KX!S0Linux-VServer(操作系统级虚拟化)51Testing软件测试网 \)g|s&urg*h

51Testing软件测试网[-r-Kb)?d

Linux-VServer是操作系统级的虚拟化解决方案. Linux-VServer虚拟Linux内核, 可以有多个用户空间环境, 也称做虚拟专用服务器(VPS), 各个VPS各自独立运行. Linux-VServer是通过修改Linux内核来隔离用户空间.

c$q0rM y zN XC051Testing软件测试网&M guu{(g

为了隔离每个单独的用户空间, 我们先了解上下文环境. 上下文是一个VPS进程的容器, 因此我们可以使用ps等工具来了解vps进程的状况. 系统首次初始化后, 内核定义了一个缺省的上下文, 管理端能够查看所有的上下文(所有正在执行的进程). 你会猜到, 内核和内部数据结构需做一些修改来支持虚拟化.

`3w3y#lM0x(}'Erw!Y051Testing软件测试网7ON(\!^QH?u

Linux-VServer使用chroot隔离每个VPS的root目录. 我们知道chroot允许指定新的root目录, 但需额外的功能(叫做chroot-Barrier)来限制VPS不会跨越到上级目录. 在设定一个隔离的root目录后, 每一个VPS有自己的用户列表和root口令.51Testing软件测试网P9g'b w;^(Zy

'f:y'B([6QJiZ)I0Linux 2.4和2.6内核支持Linux-VServer, 可运行在许多平台上, 包括x86, x86-64, SPARC, MIPS, ARM和PowerPC.

DKj4GvB^'H0s0

| z z i%?4Mr0OpenVZ(操作系统级虚拟化)51Testing软件测试网-\_+DhX

ke e&Z:@H0OpenVZ是一个类似于Linux-VServer的操作系级级虚拟化解决方案. 它有一些自己独特的地方. OpenVZ是一个内嵌虚拟化的内核(修改过的), 它支持用户空间隔离, 虚拟专用主机(VPS)和一套用户管理工具. 比如, 你可以通过下面命令简单创建一个新的VPS:

cvsx h{^$I!l0

"r}&q*F#|y8dYJ/C0列表1. 从命令行创建一个VPS

2]J2uVz^ qF:J0

:M(?+GxyD;E_-\o0$vzctl create 42 --ostemplate fedora-core-4
C'a_4?eH+RZ.b0Creating VPS private area 正在创建VPS专用区域
A |,fS ~_)D0VPS private area was created VPS专用区域成功创建
3G pL3b9}x0$vzctl start 42
$rn/yi:YyC^&J0Starting VPS ... 启动VPS
2zHA:hT5T0VPS is mounted 加载VPS分区51Testing软件测试网4r"P"rs@0V2f\

51Testing软件测试网rs6qTW

你也可以使用vzlist命令列出所有已创建的VPS, 这有点类似于标准的Linux命令ps(查看进程的状态).51Testing软件测试网7~'W DN5R.l

w*NFWpbW8G2T0OpenVZ包含一个两级的CPU调度器来调度进程. 首先, 调度器确定需要使用CPU的VPS. 然后第二级调度器根据进程的优先级来执行vps进程.51Testing软件测试网qkOB-K1{3r

0z[{5]$P0OpenVZ支持beancounters. 一个beancounters包含了定义vps资源属性的许多参数. 这为vps提供了控制, 定义多少可有内存, 多少可用IPC资源, 等.51Testing软件测试网]QB~i(c0i

Cw8q0E[{B0OpenVZ独特的地方是能够设置检查点和vps迁移(从一台服务器迁移到另一台服务器). 检查点能够停止正在运行vps并保存当前状态到一个文件. 该文件在迁移过程中可用于在新服务器上恢复运行VPS.

vW2v;D/QH@0

~%R5_'KFy5rU {0OpenVZ支持许多硬件结构, 包括x86, x86-64, 和PowerPC.

Lm:jh9kg,c051Testing软件测试网0S vxV1D(l S`+P7N2j&W@

全虚拟化和半虚拟化的硬件支持

$I6cR;w?"o r051Testing软件测试网4A#U%V-Z$C

回顾一下IA-32(x86)体系结构上存在的一些问题. 某个特权指令不能够引起陷阱, 可基于模式返回不同结果. 比如, x86的STR指令可以获取安全状态, 但返回值是基于特别请求者的权限级别. 当试图在不同级别虚拟不同操作系统的时候是一个问题. 比如, x86支持4环保护, 0级(最高权限)通常运行操作系统, 1和2级支持操作系统服务, 3级(最低级别)支持应用程序. 不过硬件厂商已经认识到这些问题(和其它的问题), 而且开发了新的设计来支持和加速虚拟化技术.

Ew4T&Y lg0

+d%i'FeD%R'EE2l0Intel正在开发新的虚拟技术, 能在x86(VT-x)和Itanium(VT-i)结构上支持Hypervisors. VT-x支持两个新的操作. 一个是VMM(root), 另一个是客户操作系统(非root). root方式具有最高权限, 而非root方式是非特权的(甚至ring 0). 结构方面也支持自定义指令(使用vmm)终止VM(客户操作系统)和保存处理器状态. 其它功能请查阅参考资源栏目.

qlmI*f051Testing软件测试网IHZLj#\*[3J4P

AMD也正在开发硬件级的虚拟化技术, 代号为Pacifica. Pacifica维护了一个客户操作系统的控制块(通过特殊指令保存执行状态). VMRUN指令允许虚拟机(和它相联系的客户操作系统)运行直到VMM重新获得控制权(可自定义). 可配置性允许VMM为每一个客户机自定义权限. Pacifica也能使用主机和客户机内存管理单元(MMU)表来提高地址翻译.51Testing软件测试网 [t2G l+Wgx

51Testing软件测试网{Ej2} S tp

这些硬件虚拟化技术能够应用到许多的虚拟化技术当中, 包括Xen, VMware, User-mode Linux, 和其它的.

1cq&D+R)d O051Testing软件测试网k+?"gW/Zx)i__

Linux KVM(内核虚拟机)51Testing软件测试网7@M6~8xp-X0o

2z4Ujwy0N(Wh j0最近的Linux新闻经常报道Linux 2.6.20内核增加了KVM虚拟化技术. KVM是全虚拟化的解决方案, 它的特点是系统内核通过添加内核模块使内核自身成为一个Hypervisor(虚拟机管理程序). 内核中的KVM模块通过/dev/kvm字符串设备显示被虚拟的硬件. KVM使用修改过的QEMU进程做为客户操作系统接口.51Testing软件测试网_|oO uEM#~

f8^$E_ }m7N0图7. KVM的虚拟化
*O{"b6hV q+fua/] i0

p&q T^:p051Testing软件测试网%I;d @+h1X)AX

KVM模块向内核增加了一个新的执行模式: 客户模式. 官方原始内核(vanilla kernel)支持内核和用户模式. 客户模式用于执行所有非I/O客户代码, 普通用户模式支持客户I/O.51Testing软件测试网D%TJy9[#{X R

51Testing软件测试网%CK9~(m!Re;cd

增加KVM到Linux内核是Linux发展的一个重要里程碑, 这也是第一个整合到Linux主线内核的虚拟化技术. KVM将包含于2.6.20内核数中, 现在你也可以通过内核模块方式在2.6.19内核使用kvm. 当运行在支持的硬件(需Intel VT和AMD SVM处理器)上, kvm支持Linux(32和64为)和Windows(32为)客户机. 更多KVM信息, 请查阅参考资源栏目

!U;BR*lo051Testing软件测试网mG'@?-k`Y&M8o8V:w

总结

3~pG't%Vib!}7h0

+N#IGX7x0I7L}0虚拟化技术是一个新的而且重要的领域, 如果"新"包括了过去的40年. 在过去它已经使用于许多场合, 但是现在最主要的一个焦点是服务器和操作系统的虚拟化. 比如像Linux, 虚拟化给性能, 可移植性和复杂性提供了许多选项. 这也意味者你能够为你的应用程序和项目选择最合适的虚拟化方法.51Testing软件测试网1oe*h"Z1DG-L ?&aQW

H$gyOh.]{0参考资源

a A"X+c;@vb051Testing软件测试网3o}&hOq(A

学习

g Z5S1J`&Y]0

+l8`9m"[*NC$k0您可以参阅本文在 developerWorks 全球站点上的英文原文

5Y d Z*[.oy)y0

x*P0W,_$|JJz0如果你不熟悉IBM系统,New to IBM Systems页面提供了大量有关System i, p, x, z,等的详细信息.51Testing软件测试网G2W0k&~dRT

0xc0F n!@V/{|:a0IBM的网格计算基于一套开放的标准和协议, 通过虚拟分布式的计算机来创建一个单一强大的系统.51Testing软件测试网5n]v"]gS_e

51Testing软件测试网n^%V-[$G0dQ0z

developerWorks Linux 专区中可以找到为 Linux 开发人员准备的更多资源.51Testing软件测试网XX-z2tU,a,t]

51Testing软件测试网E1m"p*M!zc$s

随时关注developerWorks 技术事件和网络广播.51Testing软件测试网[ Xs6XE#u#I

?z ^Sk!X5i9A6B,C0获得产品和技术

+v ?~v} B|8M051Testing软件测试网$Y3mtSEC

BochsQEMU是PC模拟器, 允许如Windows或Linux运行在linux操作系统的用户空间.51Testing软件测试网+m0g T9^UMw/SdR

51Testing软件测试网;j*V)u |oB

VMware是一个流行的全虚拟化解决方案, 能够虚拟无需修改的操作系统.51Testing软件测试网hf]FPy4k!x

A9Z#b ^2s"`?7Z0z/VM是一个最新的基于64位z/架构的虚拟机操作系统. z/VM提供全虚拟化和支持大多的操作系统, 包括Linux.51Testing软件测试网 J*]O-J5n+k"Mh:n

(e-eQUy2CY0dN0Xen是一个开源的半虚拟化解决方案, 需修改客户机的操作系统, 通过与hypervisor的协作能获得接近于原始系统的性能.51Testing软件测试网W:\c#{6v;}h$H

51Testing软件测试网;n?rt A*XJ

User-mode Linux是另外一个开源的半虚拟化解决方案. 每一个客户操作系统是主机操作系统的一个标准进程.

p jj4c#H0

4x9M2P0['F-H0coLinux, 或协作Linux, 是一个提供两个操作系统共同分享底层硬件的虚拟化解决方案.

r*fM)}q)r051Testing软件测试网t1dp1B-Gmr-g4a%Q

Linux-Vserver是一个linux上的操作系统级的虚拟解决方案, 每一个客户服务器都被安全的隔离开来.51Testing软件测试网 F%z rnX9{"R\

9b%w$s`m6]0OpenVZ是一个操作系统级的虚拟化解决方案, 支持检查点和动态迁移.51Testing软件测试网~(`1_s*B h.X

he.O%u:bp2OK GJL7H0Linux KVM是第一个整合到Linux主线内核的虚拟化技术. Linux内核在载入一个内核可加载模块(kvm)后, 内核自身成为了一个Hypervisor程序, 如果有合适的硬件支持(Intel VT或AMD SVM处理器), 系统可运行未修改过的linux和windows客户机操作系统.51Testing软件测试网_l }C"R!V;__d

51Testing软件测试网9o7wF/A}]^"W9J+j

订购免费的 SEK for Linux,这有两张 DVD,包括最新的 IBM for Linux 的试用软件,包括 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere®.

7oVyd y6x3M051Testing软件测试网1w4uwgX#v

在您的下一个开发项目中采用IBM 试用软件,这可以从 developerWorks 上直接下载51Testing软件测试网 B5L^2^B7ryN

51Testing软件测试网8i*p vb%j7{ R

讨论51Testing软件测试网8[!| N}x)c:^ ~5~#e6iR

)K*}e8g _%`aY.P0通过参与developerWorks blogs加入 developerWorks 社区。51Testing软件测试网;N'e2u^[n*pGrrd

~OOmb `0关于作者

-{\bFt,H-w+?"z051Testing软件测试网0o/Vk h*e)^&{3h;Y-xO ?

Tim Jones 是一名嵌入式软件工程师,他是 GNU/Linux Application Programming、AI Application Programming 以及 BSD Sockets Programming from a Multilanguage Perspective 等书的作者。他的工程背景非常广泛,从同步宇宙飞船的内核开发到嵌入式架构设计,再到网络协议的开发。Tim 是 Emulex Corp. 的一名资深软件工程师。51Testing软件测试网&t:Cx.g0X5RF

51Testing软件测试网0`|"d?g!oYB

相关文章51Testing软件测试网4q%q3b dK Q.`
KVM虚拟化常见问题
ti"st%J%LM0用户友好的Linux虚拟技术: KVM
]b5\ f@-k-y0KVM: 基于内核的虚拟驱动
*E5r9ea8b5pC0如何在具有Wifi网络的笔记本上配置Xen客户机
%~9A9G3j"G+lK0Linux内核2.6.20增加虚拟化解决方案KVM51Testing软件测试网/? Q:Z C JR!n

Dj?)| e5~6h0备注51Testing软件测试网 W&y0q| @D f3H
转载请保持文章完整性, 欢迎到blog.zhaoke.com网站与赵珂交流.51Testing软件测试网~}L/i.d2O


TAG: 虚拟机 Linux系统配置 virtualization KVM Xen lguest QEMU Bochs PearPC Multi-tenancy

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar