網絡依然還是計算機,Sun還是Sun!

Linux系统中虚拟化方法、技术及实现

上一篇 / 下一篇  2007-09-24 15:38:57 / 个人分类:虚拟化

IXPUB技术博客6jVzY&o0N)Z-L

IXPUB技术博客bw!zS`~wx
虚拟化方法、架构和实现概述IXPUB技术博客4B(z r)sWq1C
[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082119444.gif[/img]IXPUB技术博客8J9hD'ju D X
[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082124265.gif[/img]
FE]q0PF!f*U8F7590422[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082119444.gif[/img]
,{%P` |rv7590422级别: 中级IXPUB技术博客pC4XRq'_'\A:V
[url=http://www.ibm.com/developerworks/cn/linux/l-linuxvirt/#author][u][color=#0000ff]M. Tim Jones[/color][/u][/url] ([url=mailto:mtj@mtjones.com?subject=虚拟Linux&cc=tomyoung@us.ibm.com][u][color=#0000ff]mtj@mtjones.com[/color][/u][/url]), 顾问工程师, EmulexIXPUB技术博客.M,S x8D~T5t
2007 年 1 月 15 日
+^?L`HW7590422虚拟化的含义丰富,应用广泛。目前虚拟化技术主要关注于[i]服务器虚拟化[/i],即在一个宿主计算机上提供多个独立[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]。本文将探索虚拟化背后的思想,然后讨论实现虚拟化的一些技术。我们还将了解现有的其他一些虚拟化技术,例如 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 上[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]的虚拟化。
LXm"q-]la7590422进行[i]虚拟化[/i] 就是要将某种形式的东西以另外一种形式呈现出来。对计算机进行虚拟化就是要将计算机以多台计算机或一台完全不同的计算机的形式呈现出来。
(]6FA7h|a7590422虚拟化也可以将多台计算机组合成一台计算机的形式呈现出来。这通常称为服务器聚合或[i]网格计算[/i]。
}3ql;I3a }.I6TIp e7590422下面让我们首先来看一下虚拟化的起源。IXPUB技术博客"t:S t1MW
虚拟化的历史
;oj8n3X!M+du:[ ^_7590422虚拟化并不是什么新主题;实际上,它的存在已经超过 40 年了。虚拟化技术最早的一些用法包括 IBM® 7044、麻省理工学院(MIT)在 IBM 704 上开发的 CTSS(Compatible Time Sharing System)以及曼彻斯特大学的 Atlas 项目(世界上最早的超级计算机之一),这些都是请求页面调度和监管进程调用的先驱。IXPUB技术博客!V!J.x;S0@V2c
硬件虚拟化IXPUB技术博客E$Tca6L0[_*Z
IBM 早在 20 世纪 60 年代开发 System/360™ Model 67 大型机时就认识到了虚拟化的重要性。Model 67 通过 VMM(Virtual Machine Monitor)对所有的硬件接口都进行了虚拟化。在早期计算中,[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]被称为 [i]supervisor[/i]。能够在其他[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]上运行的[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]被称为 [i]hypervisor[/i](这个术语是在 20 世纪 70 年代出现的)。IXPUB技术博客Ld-O3y`r/D.?
VMM 可以直接在底层硬件上运行,允许运行多个[url=http://vm.cnfan.net/][color=#000099]虚拟机[/color][/url](VM)。每个 VM 都可以运行一个自己私有[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]的实例 —— 在早些时候,这称为 CMS(或 Conversational Monitor System)。之后 VM 继续发展,现在您可以在 System z9™ 大型机上发现 VM。这提供了很好的向后兼容性,甚至是对 System/360 产品线的兼容性。IXPUB技术博客&DY`l-XW&O
处理器虚拟化IXPUB技术博客$~+P(t\[G#]v|
虚拟化早期的另外一种用法(在本例中是对处理器的仿真)是 P-code(或伪码)机。P-code 是一种机器语言,运行于[url=http://vm.cnfan.net/][color=#000099]虚拟机[/color][/url]而不是实际硬件。P-code 早在 20 世纪 70 年代就已在加州大学圣地亚哥分校(UCSD)Pascal 系统上颇有名气了,它将 Pascal 程序编译成 P-code,然后在一个 P-code [url=http://vm.cnfan.net/][color=#000099]虚拟机[/color][/url]上运行。这就使 P-code 程序具有了高度的可移植性,而且,只要有可用的 P-code [url=http://vm.cnfan.net/][color=#000099]虚拟机[/color][/url],P-code 程序就可以运行。IXPUB技术博客 v$gp^^ WI
[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082119444.gif[/img]
#g9n$b9A0mrQy7590422[b]Java [url=http://vm.cnfan.net/][color=#000099]虚拟机[/color][/url](JVM)[/b]IXPUB技术博客.BqBj,o4q3_1O5U
Java™ 语言对自己的[url=http://vm.cnfan.net/][color=#000099]虚拟机[/color][/url]沿用了这种 P-code 模型。这样只需要通过简单地移植 JVM 就可以将 Java 程序广泛地分布到无数的体系架构上。
4j4tUDdCZs2`h759042220 世纪 60 年代对 BCPL(Basic Combined Programming Language)的设计中也采用了相同的概念,C 语言即由 BCPL 发展而来。在这种用法中,编译器会将 BCPL 代码编译成称为 O-code 的中间机器代码。接下来的第二个步骤是将 O-code 编译成目标机器的原始语言。现代编译器所使用的这种模型为将编译器移植到新目标体系结构上提供了很大的灵活性(通过一种中间语言将前端和后端分隔开来)。
l&j |L+k_,h}4y g7590422指令集虚拟化IXPUB技术博客&?5WK @&C*l
虚拟化最新的发展称为指令集虚拟化,或者二进制转换。在这种模型中,虚拟指令集被转换成底层硬件的物理指令集,这个过程通常都是动态的。当代码执行时,就会对代码的某个段进行转换。如果出现分支情况,就会导入新代码集并进行转换。这使它与缓存操作非常类似,后者是将指令块从内存移动到本地快速缓存中执行。IXPUB技术博客)FzL{/Nf1n
这种模型最近在 Transmeta. 设计的 Crusoe 中央处理单元(CPU)中得到了使用。二进制转换由 Code Morphing 的专利技术实现。类似的一个例子是完全虚拟化解决方案通过运行时代码扫描来查找和重定向特权指令(用来解决特定处理器指令集的一些问题)。IXPUB技术博客yEF~&L2||o X
[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082119444.gif[/img]
7g7o P_}x.x v-T7590422[b]虚拟化和游戏[/b]IXPUB技术博客`YrQH R:Pc
一篇有关虚拟化的文章如果不提一下 MAME(Multiple-Arcade Machine Emulator),就不算完整。顾名思义,MAME 就是以前很多 arcade 游戏的一个完整的机器模拟器。除了对这些游戏中使用的处理器进行虚拟化之外,还可以对整个机器进行虚拟化,包括声音、图形处理硬件和控制单元。MAME 是一个非常不错的应用程序,不过要理解它们究竟实现了哪些功能,研读一下它的源代码会非常有帮助。IXPUB技术博客%\ u:o+Se}r
虚拟化的类型IXPUB技术博客 VB$B!S9N$[0yI E
实现虚拟化的方法不止一种。实际上,有几种方法都可以通过不同层次的抽象来实现相同的结果。本节将介绍 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 中常用的 3 种虚拟化方法,以及它们相应的优缺点。业界有时会使用不同的术语来描述相同的虚拟化方法。本文中使用的是最常用的术语,同时给出了其他术语以供参考。IXPUB技术博客DcDJ/v#Hg,e0GSu
硬件仿真
,a%G~ S:c~7590422毫无疑问,最复杂的虚拟化实现技术就是硬件仿真。在这种方法中,可以在宿主系统上创建一个硬件 VM 来仿真所想要的硬件,如图 1 所示。
]gx#tq0lS7590422[b]图 1. 硬件仿真使用 VM 来模拟所需要的硬件[/b]
? Un$B.n4a|7590422[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082125983.gif[/img]IXPUB技术博客-AY2c-R H8Z5a
 
!Zd5j/qI7O7590422[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082119444.gif[/img]IXPUB技术博客X3A|ZggW
[b]仿真和开发[/b]
%vKqqa:Y S7590422硬件仿真的应用之一是进行固件和硬件的协作开发。固件开发人员可以使用目标硬件 VM 在仿真环境中对自己的实际代码进行验证,而不需要等到硬件实际可用的时候。
;H f'` r$Pn.V7590422正如您所能预见的一样,使用硬件仿真的主要问题是速度会非常慢。由于每条指令都必须在底层硬件上进行仿真,因此速度减慢 100 倍的情况也并不稀奇。若要实现高度保真的仿真,包括周期精度、所仿真的 CPU 管道以及缓存行为,实际速度差距甚至可能会达到 1000 倍之多。
&nw~ DW7590422硬件仿真也有自己的优点。例如,使用硬件仿真,您可以在一个 ARM 处理器主机上运行为 PowerPC® 设计的[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url],而不需要任何修改。您甚至可以运行多个[url=http://vm.cnfan.net/][color=#000099]虚拟机[/color][/url],每个虚拟器仿真一个不同的处理器。
S)bMT] e7590422完全虚拟化IXPUB技术博客tMx3Ts*_p
完全虚拟化(full virtualization),也称为原始虚拟化,是另外一种虚拟化方法。这种模型使用一个[url=http://vm.cnfan.net/][color=#000099]虚拟机[/color][/url],它在客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]和原始硬件之间进行协调(参见图 2)。“协调”在这里是一个关键,因为 VMM 在客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]和裸硬件之间提供协调。特定受保护的指令必须被捕获下来并在 hypervisor 中进行处理,因为这些底层硬件并不由[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]所拥有,而是由[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]通过 hypervisor 共享。IXPUB技术博客},o(i9T X ~(ee3M
[b]图 2. 完全虚拟化使用 hypervisor 来共享底层硬件[/b]
~v0d B&c9\x7590422[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082127144.gif[/img]IXPUB技术博客5a7f&ml A Q nS'j*xI
 
{YfM qdo7590422[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082119444.gif[/img]
3T [~p:V:jq7590422[b]老硬件上的 hypervisor[/b]IXPUB技术博客hXZ-[ z'~.s
有些比较老的硬件,例如 x86,会给完全虚拟化带来一些问题。例如,需要 VMM 处理的一些特定敏感指令并没有捕获。因此,hypervisor 必须要动态扫描并捕获这些特权模式代码来解决这一问题。
aki7Ju5[/m7590422虽然完全虚拟化的速度比硬件仿真的速度要快,但是其性能要低于裸硬件,因为中间经过了 hypervisor 的协调过程。完全虚拟化的最大优点是[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]无需任何修改就可以直接运行。惟一的限制是[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]必须要支持底层硬件(例如 PowerPC)。IXPUB技术博客~'Sf0?/T.H$dy
超虚拟化IXPUB技术博客L+v;tN S
超虚拟化(paravirtualization)是另外一种流行的虚拟化技术,它与完全虚拟化有一些类似。这种方法使用了一个 hypervisor 来实现对底层硬件的共享访问,还将与虚拟化有关的代码集成到了[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]本身中(参见图 3)。这种方法不再需要重新编译或捕获特权指令,因为[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]本身在虚拟化进程中会相互紧密协作。
?f |rQ!_)` q^7590422[b]图 3. 超虚拟化与客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]共享进程[/b]IXPUB技术博客R1F6M&U`m"w
[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082135247.gif[/img]IXPUB技术博客 E oDk;NvQ'W [
 
S!G;M'o(H/H3l7590422正如前面介绍的一样,超虚拟化技术需要为 hypervisor 修改客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url],这是它的一个缺点。但是超虚拟化提供了与未经虚拟化的系统相接近的性能。与完全虚拟化类似,超虚拟化技术可以同时支持多个不同的[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]。IXPUB技术博客T N1z4LWb0r
[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]级的虚拟化IXPUB技术博客 p FLk6?Q?EE
我们要介绍的最后一种技术是[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]级的虚拟化,它使用的技术与前面所介绍的有所不同。这种技术在[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]本身之上实现服务器的虚拟化。这种方法支持单个[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url],并可以将独立的服务器相互简单地隔离开来(参见图 4)。IXPUB技术博客,o,B4{+rm^9^
[b]图 4. [url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]级虚拟化实现服务器的隔离[/b]
6t Ky8]4_7590422[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082136954.gif[/img]
Pb)i4xT d Y jVm7590422 
q6a2xXBq.K8kl7590422[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]级的虚拟化要求对[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]的内核进行一些修改,但是其优点是可以获得原始性能。IXPUB技术博客[xc\"Mf[M? X
[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082137104.gif[/img]
0Sc$~T-ul'Z-Y&i7590422[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082119444.gif[/img]
+`,A t6o)zT7590422为什么虚拟化如此重要?
;I,b#X5l;a/U7590422在了解目前 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 可以使用的虚拟化方法之前,让我们先来了解一下虚拟化的优点。IXPUB技术博客(b4O1f] m(M
从商业角度来看,使用虚拟化技术有很多原因。大部分原因都可以归结于[i]服务器的巩固(server consolidation)[/i]。简单来说,如果您可以对一个服务器上多个未经充分利用的系统进行虚拟化,由于服务器的数量少了,显然可以节省大量电力、空间、制冷和管理成本。由于很难确定服务器的利用情况,虚拟化技术支持称为动态迁移的技术。[i]动态迁移(Live migration)[/i]允许[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]及其应用程序迁移到新的服务器上,从而实现负载在可用硬件上的均衡。IXPUB技术博客/_kT9UD:F'N6e3C
虚拟化技术对于开发人员来说也非常重要。[url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 内核占据了一个单一的地址空间,这意味着内核或任何驱动程序的故障都会导致整个[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]的崩溃。虚拟化技术意味着您可以运行多个[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url],如果其中一个系统由于某个 bug 而崩溃了,那么 hypervisor 和其他[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]都依然可以继续运行。这可以使内核的调试非常类似于用户空间应用程序的调试。
&VRr`^7590422IXPUB技术博客@Ym.EV9?

J!az0Xt6X4T7590422
b?u8G3Sv~7B#So)t)L({7590422与 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 有关的虚拟化项目IXPUB技术博客3c`Tmi S
表 1 给出了几个 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 系统上的虚拟化项目,并着重介绍了其中的开源解决方案。
L/IE \7Sog-Y6\-S7590422[b]表 1. 与 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 有关的虚拟化项目[/b]
(rqT7Y9H;qz7590422项目
/S{.a"B-g"Le7i8H7590422类型IXPUB技术博客]1P+|Ptgu)d2x%f
许可证IXPUB技术博客^z%B?;W+?Dr
BochsIXPUB技术博客$g8eV$c9sRq
仿真
[ d+F:MR8x&u*^3{7590422LGPL
3[;VJ:~\)q7590422QEMU
rC2ZqD-D1rK7590422仿真IXPUB技术博客*Qz{:xR8wL.]&g
LGPL/GPLIXPUB技术博客U;d g G\*e d#e2g
VMwareIXPUB技术博客I nCh:[p s
完全虚拟化
)b-]o~I0tB$z6_}7590422私有IXPUB技术博客e4d ]fE ZTO
z/VM
zV){/[u])x7590422完全虚拟化
Au;B\3P7590422私有IXPUB技术博客Tm X2^)v}T5@kB F
XenIXPUB技术博客3Jr+Vt fmVq/z
超虚拟化
-fe2M7{/xE7590422GPL
1\ F){ta4VU:G3k7590422UML
$b;F PHTPJ(k7590422超虚拟化
Xg wR#o+u7590422GPL
|3f_^t8G]Ez t7590422[url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url]-VServerIXPUB技术博客)V]ER8p7a&XN0f
[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]级虚拟化
?5CS6vK7590422GPLIXPUB技术博客%E D2{4YCk!S|W
OpenVZ
o]PG)l(YEy7590422[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]级虚拟化
/~ EIJK'@7590422GPLIXPUB技术博客6p:^-L[t-V$uj
有关其他解决方案的信息,请参看 [url=http://www.ibm.com/developerworks/cn/linux/l-linuxvirt/#resources][u][color=#0000ff]参考资料[/color][/u][/url] 部分。
[*n }LmBhQ7590422Bochs(仿真)IXPUB技术博客{0{ErI Z {
[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082119444.gif[/img]
R!j;s5YV3Pq&j7590422[b]库级虚拟化[/b]
V'P"nQ-LP1q,B\ lq7590422尽管在正文中没有讨论,库级虚拟化是另外一种可以通过库对[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]部分进行仿真的虚拟化技术。这种虚拟化技术的例子包括 Wine([url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 上使用的一个部分 Win32 API)和 LxRun(Solaris 上使用的一个部分 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] API)。IXPUB技术博客Xq k4@ Tq
Bochs 是一个 x86 计算机仿真器,它在很多平台上(包括 x86、PowerPC、Alpha、SPARC 和 MIPS)都可以移植和运行。使 Bochs 更为有趣的是它不仅可以对处理器进行仿真,还可以对整个计算机进行仿真,包括计算机的外围设备,比如键盘、鼠标、视频图像硬件、网卡(NIC)等。IXPUB技术博客:}W]#r,Qf1S6sw
Bochs 可以配置作为一个老式的 Intel® 386 或其后继处理器使用,例如 486、Pentium、Pentium Pro 或 64 位处理器。它甚至还可以对一些可选的图形指令进行仿真,例如 MMX 和 3DNow。IXPUB技术博客'RCD&K*mU
使用 Bochs 仿真器,您可以运行任何 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 上的 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 发行版、[url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 上的 Microsoft® Windows® 95/98/NT/2000(以及各种应用程序),甚至 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 上的 BSD(Berkeley Software Distribution)[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url](FreeBSD、OpenBSD 等)。
3b5i#~7QMZ:v0z8Q.T7590422QEMU(仿真)IXPUB技术博客[$]3r E ^6Q'R!a
QEMU 是另外一个仿真器,它与 Bochs 非常类似,不过也有一些值得一提的区别。QEMU 支持两种操作模式。第一种是 Full System Emulation(完全系统仿真)模式。这种模式与 Bochs 非常类似,它可以对一个具有处理器和外围设备的完整个人计算机(PC)进行仿真。这种模式可以仿真很多处理器架构,例如 x86、x86_64、ARM、SPARC、PowerPC 和 MIPS,其动态转换的速度也比较理想。使用这种模式,您可以在 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url]、Solaris 和 FreeBSD 上仿真 Windows [url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url](包括 XP)和 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url]。很多其他[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]的组合也都可以得到支持(更多信息请参看 [url=http://www.ibm.com/developerworks/cn/linux/l-linuxvirt/#resources][u][color=#0000ff]参考资料[/color][/u][/url] 部分)。IXPUB技术博客3A(i f#Ea,a5b)G
QEMU 还可以支持第二种模式,称为 User Mode Emulation(用户模式仿真)。这种模式只能宿主于 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url],在这种模式下,可以启动不同体系结构的二进制文件。例如,在 x86 平台上运行的 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 系统上可以执行为 MIPS 体系架构编译的二进制文件。这种模式支持的其他体系结构还包括 ARM、SPARC 和 PowerPC,而且还有很多尚在开发之中。IXPUB技术博客d&gtqRw
VMware(完全虚拟化)IXPUB技术博客#R&V8L/sx
VMware 是完全虚拟化的一个商业解决方案。在客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]和裸硬件之间有一个 hypervisor 作为抽象层使用。这个抽象层允许任何[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]在硬件上运行,而不需要了解任何其他客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]。IXPUB技术博客1O"]f2p]&Ui2j6q
VMware 也会对可用的 I/O 硬件进行虚拟化,并将一些高性能的设备驱动程序加入到 hypervisor 中。
O%S.V6wy{CnZ9tw7590422整个虚拟化后的环境都作为一个文件保存,这意味着整个系统(包括客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]、VM 和虚拟硬件)可以很容易地快速迁移到新宿主机器上进行负载均衡。IXPUB技术博客re.S@7Qr CH
z/VM (完全虚拟化)
*y)GPg8A+q iV7590422尽管 IBM System z™ 是一个新品牌,不过它实际上已经有很长的一段历史,可以一直追溯到 20 世纪 60 年代。System/360 在 1965 年就可以支持使用[url=http://vm.cnfan.net/][color=#000099]虚拟机[/color][/url]进行虚拟化。有趣的是,System z 保留了对之前的 System/360 产品线的向后兼容性。
7I A!P,Z D^,`#f7f4I7590422z/VM® 是 System z 上的[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url] hypervisor。其核心是 Control Program(CP),它为客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url],包括 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url],提供了物理资源的虚拟化(参见图 5)。这样,多个处理器和其他资源就可以在多个客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]上被虚拟化。
{/D;F D B7590422[b]图 5. 使用 z/VM 的[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]级虚拟化[/b]
$p!Fd^#xl0b7590422[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082137160.gif[/img]IXPUB技术博客$L EvB ]V+@1r
 
+Ds9Vf-A7590422z/VM 也可以为想要相互通信的客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]仿真一个客户局域网(LAN)。仿真完全是在 hypervisor 中进行的,因此相当安全
n#}J q"~(p7590422Xen(超虚拟化)IXPUB技术博客7Ok/GGfH
Xen 是一个来自于 XenSource 的[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]级超虚拟化的免费开源解决方案。回想一下在超虚拟化中,hypervisor 和[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]会共同协作,虽然[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]需要进行一些更改,但却可以带来接近于原始系统的性能。IXPUB技术博客[D P"q;WV1N
就像 Xen 需要进行协作(对客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]进行修改)一样,只有那些修补过的[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]才可以通过 Xen 进行虚拟化。[url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 本身就是开源的,所以从 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 角度来看,这是一个很合理的折衷,因为最终可以获得比完全虚拟化更好的性能。但是从广泛支持的角度来看(例如对其他非开源[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]的支持),这显然是一个缺点。
&UuJdRN7590422Windows 可以在 Xen 上作为一个客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]运行,但是它只能在运行 Intel Vanderpool 或 AMD Pacifica 的系统上使用。支持 Xen 的其他[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]包括 Minix、Plan 9、NetBSD、FreeBSD 和 OpenSolaris。
6}U:r#x([~7590422User-mode [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url](超虚拟化)
$qT_#P%`!}"R7590422User-mode [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url](UML)允许 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] [url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]在其他[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]的用户空间中运行。每个客户 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] [url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]都存在于宿主 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] [url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]中的一个进程中(参见图 6)。这就允许 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 内核(使用自己的相关用户空间)在单个 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 内核中运行。
-Qg$Vns+RYt a7590422[b]图 6. User-mode [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 中的 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url][/b]IXPUB技术博客2U"i$Q)m2bnb
[color=#000099]
2w d$P@eK5c7590422[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082143950.gif[/img]IXPUB技术博客"qn$V|)f$?1N/uN)h:n@
[/color]
$pt b8D2o:`7590422在 2.6 版本的 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 内核中,UML 驻留于主内核树内,但它必须提前启用,然后再重新编译才能使用。这些变化除了常见的虚拟化功能之外,还可以提供设备的虚拟化。这样一来,客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]就可以共享可用的物理设备,例如块设备(比如软盘、CD-ROM 和文件系统)、控制台、NIC 设备、声音硬件等。
5T(TS*N'DL C2F7590422注意由于客户内核是在应用程序空间中运行的,因此它们必须为这种用法而被特殊编译(不过它们可以是不同的内核版本)。这样就产生了主机内核(硬件上的内核)和客户内核(在主机内核的用户空间中运行)。这些内核甚至可以是嵌套的,这样就允许一个客户内核在另外一个运行于主机内核的客户内核上运行。IXPUB技术博客#B+[bg;k
[url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url]-VServer([url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]级虚拟化)IXPUB技术博客 e QWLY y
[url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url]-VServer 是一个[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]级虚拟化解决方案。[url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url]-VServer 对 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 内核进行虚拟化,这样多个用户空间环境 —— 又称为 [i]Virtual Private Server[/i](VPS) —— 就可以单独运行,而不需要互相了解。[url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url]-VServer 通过修改 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 内核实现用户空间的隔离。
%t&~+Z/Gn,N9Cp?7590422要将各个用户空间与其他用户空间隔离开来,就需要从上下文的概念入手。[i]上下文[/i] 是给定 VPS 进程使用的一个容器,这样通过诸如 [font=新宋体]ps[/font] 之类的工具就可以了解 VPS 的进程。内核为最初的引导定义了一个缺省的上下文。另外管理端还能查看所有的上下文(所有的执行进程)。正如您可能猜到的那样,内核和内部数据结构也需要进行修改来支持这种虚拟化方法。IXPUB技术博客 Rn0u(S^&R
[url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url]-VServer 还使用了一种 [font=新宋体]chroot[/font] 格式来为每个 VPS 隔离 root 目录。虽然 [font=新宋体]chroot[/font] 允许指定新 root 目录,但还是需要其他一些功能(称为 [i]Chroot-Barrier[/i])来限制 VPS 脱离其隔离的 root 目录回到上级目录。给定一个隔离的 root 目录之后,每个 VPS 就可以拥有自己的用户列表和 root 密码。IXPUB技术博客&Y Bz2AAm
2.4 和 2.6 版本的 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 内核支持 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url]-VServer,它可以运行于很多平台之上,包括 x86、x86-64、SPARC、MIPS、ARM 和 PowerPC。
e^/ee(U7590422OpenVZ([url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]级虚拟化)IXPUB技术博客 |,Gv1]P:j(G
OpenVZ 是另外一个[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]级的虚拟化解决方案,它与 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url]-VServer 类似,不过也有一些有趣的区别。OpenVZ 是一个支持虚拟化的内核(修改过的),可以支持用户空间隔离、VPS 和一组用户管理工具。例如,您可以简单地从命令行创建一个新的 VPS:IXPUB技术博客bPv?;o!`:^
[b]清单 1. 从命令行创建 VPS[/b]
6Ub@Ha%w0K7590422$ vzctl create 42 --ostemplate fedora-core-4IXPUB技术博客[h*b)ec%c2t8B
Creating VPS private area
F;h1c!] `7590422VPS private area was createdIXPUB技术博客2n"sGBj"|u#L
$ vzctl start 42IXPUB技术博客3i"k o*qc9T)u
Starting VPS ...
r6o9l|1nxh"fb7590422VPS is mounted
*{:UkFlk N4Jk7590422另外还可以使用 [font=新宋体]vzlist[/font] 命令显示目前创建的 VPS,该命令与标准 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] [font=新宋体]ps[/font] 命令类似。IXPUB技术博客4x[Jj&V+tp!`#kkB
为了对进程进行调度,OpenVZ 还包括了两级 CPU 调度器。首先,调度器确定哪个 VPS 应该获得 CPU。在这个步骤完成之后,第二级调度器会根据给定的标准 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 优先级挑选进程来执行。
!r/b%s{Lm$G7590422OpenVZ 还包括了所谓的 [i]beancounters[/i]。beancounter 包括很多参数,这些参数为给定的 VPS 定义了资源分配。这为 VPS 提供了一定层次上的控制,定义了有多少内存可用,有多少进程间通信(IPC)对象可用等。IXPUB技术博客}8V1k@1BeR$e'i
OpenVZ 的一个特性是检查点功能和将 VPS 从一个物理服务器迁移到其他物理服务器上的能力。[i]检查点[/i] 意味着正在运行的 VPS 的状态被冻结并存储到一个文件中。然后可以将这个文件迁移到一个新服务器上并加以还原以使 VPS 恢复运行。
dH ])m0| Ff%biT'd7590422OpenVZ 支持很多硬件体系结构,包括 x86、x86-64 和 PowerPC。IXPUB技术博客)xE+@6?3P+B
[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082137104.gif[/img]IXPUB技术博客ep G#M{;v{*jy.q
[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082119444.gif[/img]
Rj]iM:@7590422对完全虚拟化和超虚拟化的硬件支持
'Im$[n t7590422回想一下 IA-32(x86)体系结构在进行虚拟化时会产生的一些问题。特定的特权模式指令无法捕获,基于所使用的模式还可能返回不同的结果。例如,x86 [font=新宋体]STR[/font] 指令可以检索安全状态,但是所返回的值要取决于请求者特定的特权级别。在尝试在不同的层次对不同的[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]进行虚拟化时,这会出现问题。例如,x86 支持 4 环保护,其中级别 0 (最高特权)通常运行[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url],级别 1 和 2 支持[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]服务,级别 3(最低级别)支持应用程序。不过硬件供应商已经认识到了这种缺陷(以及其他一些问题),并且已经开发了一些支持并加速虚拟化的新设计。IXPUB技术博客 nS-@\X/HP
Intel 正在开发新虚拟化技术,能在 x86(VT-x)和 Itanium®(VT-i)体系架构上支持 hypervisor。VT-x 支持两种格式的操作,一种用于 VMM(root),另外一种用于客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url](非 root)。root 格式完全是特权级的,而非 root 格式是非特权级的(即使对环 0 来说也是如此)。这种体系架构支持定义指令来使 VM(客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url])退出到 VMM 和保存处理器状态。此外还添加了许多其他的功能,请参看 [url=http://www.ibm.com/developerworks/cn/linux/l-linuxvirt/#resources][u][color=#0000ff]参考资料[/color][/u][/url] 部分。
`E4A,Kc'W7590422AMD 也开发了硬件辅助虚拟化技术,称为 Pacifica。除了其他一些特性之外,Pacifica 还为在特殊指令执行时保存的客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]维护了一个控制块。[font=新宋体]VMRUN[/font] 指令允许[url=http://vm.cnfan.net/][color=#000099]虚拟机[/color][/url](及其相关的客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url])一直运行,直到 VMM 重新获得控制权为止(这也是可配置的)。这种可配置能力允许 CMM 为每个客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]定制特权指令。Pacifica 还可以使用宿主和客户内存管理单元(MMU)表来进行地址转换。IXPUB技术博客F9G:E)Y\ C)f/e
这些新技术也可以应用到此处讨论的很多其他虚拟化技术中,包括 Xen、VMware、User-mode [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 等。
L1e|*g4D8hp7590422[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082137104.gif[/img]
_|r%Q U7590422[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082119444.gif[/img]
ISYW4gk.`:QP(X7590422[url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] KVM(内核[url=http://vm.cnfan.net/][color=#000099]虚拟机[/color][/url])IXPUB技术博客vD^7U/l1n
[url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 传出的最新消息是将 KVM 合并到 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 内核中(2.6.20)。KVM 是一种完全虚拟化解决方案,它有一个方面非常独特:它将 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 内核转换为一个使用内核模块的 hypervisor。这个模块允许使用其他客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url],然后在宿主 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 内核的用户空间中运行(参见图 7)。内核中的 KVM 通过 [font=新宋体]/dev/kvm[/font] 字符设备来公开虚拟化后的硬件。客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]使用为 PC 硬件仿真修改过的 QEMU 进程与 KVM 模块接口。
#hE z2\&j7590422[b]图 7. 使用内核[url=http://vm.cnfan.net/][color=#000099]虚拟机[/color][/url](KVM)的虚拟化[/b]
,R&V~"R;{ O ~d7590422[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082149621.gif[/img]IXPUB技术博客0a$p~$q `2]5\H
 
q,m&q\ mBY r}7590422KVM 模块向内核中引入了一个新的执行模块。普通内核支持[i]内核[/i] 模式和[i]用户[/i] 模式,而 KVM 则引入了一种[i]客户[/i] 模式。客户模式用来执行所有非 I/O 客户代码,而普通用户模式支持客户 I/O。IXPUB技术博客d [Kl2e
KVM 的引入是 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 的一个有趣革新,因为它代表了作为主流 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 内核一部分的第一个虚拟化技术。它已经存在于 2.6.20 树中,不过也可以作为 2.6.19 内核的一个内核模块使用。当在支持虚拟化的硬件上运行时,KVM 支持 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url](32 位和 64 位)和 Windows(32 位)客户机。有关 KVM 的更多信息,请参看 [url=http://www.ibm.com/developerworks/cn/linux/l-linuxvirt/#Resources][u][color=#0000ff]参考资料[/color][/u][/url] 部分。IXPUB技术博客:c]9m0MX l/L"v#Ey\ k
[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082137104.gif[/img]IXPUB技术博客 \L ?)ns6hVd/[
[img]http://www.cnfan.net/Files/BeyondPic/2007-3/16/20070130082119444.gif[/img]IXPUB技术博客0c9a+lu.Bu$d|
结束语
f.KB uWW7590422如果 40 年前出现的技术还可以算是“新”技术的话,那么虚拟化就是一个重要的新技术领域。虚拟化技术已经在很多场合中应用过了,但现在主要的关注点是服务器和[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]的虚拟化。与 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 非常类似,虚拟化为性能、可移植性和灵活性提供了很多选项。这意味着您可以选择最适合于您自己应用程序的虚拟化方法。IXPUB技术博客 `&G/W} O g9Nc8ze
参考资料 [b]学习[/b]IXPUB技术博客;z3s PP]1[N0^,]4r.T
您可以参阅本文在 developerWorks 全球站点上的 [url=http://www.ibm.com/developerworks/linux/library/l-linuxvirt/?S_TACT=105AGX52&S_CMP=cn-a-l][u][color=#0000ff]英文原文[/color][/u][/url] 。
Q"RM'Q7c Q!T7590422如果 IBM System 对于您来说是全新的,那么 [url=http://www.ibm.com/developerworks/eserver/newto?S_TACT=105AGX52&S_CMP=cn-a-l][u][color=#0000ff]New to IBM Systems[/color][/u][/url] 页面将会非常有帮助。这个页面详细介绍了 System i、p、x、z 的知识以及其他更多内容。
!C;{M|+X1L7590422IBM 的 [url=http://www-1.ibm.com/grid/about_grid/index.shtml][u][color=#0000ff]网格计算[/color][/u][/url] 基于一组开放标准和协议,这些标准和协议对分布式计算机进行虚拟化来创建功能强大的单一系统。
-c%S iGSHc3qX7590422在 [url=http://www.ibm.com/developerworks/cn/linux/][color=#0000ff]developerWorks 中国网站 Linux[/color][/url][u] 专区[/u] 中可找到为 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 开发人员准备的更多资源。IXPUB技术博客:Zf5C5u+b8`}
随时关注 [url=http://www.ibm.com/developerworks/cn/offers/techbriefings/][u][color=#0000ff]developerWorks 技术活动[/color][/u][/url] 和 [url=http://www.ibm.com/developerworks/offers/techbriefings/events.html?S_TACT=105AGX52&S_CMP=cn-a-l][u][color=#0000ff]网络广播[/color][/u][/url]。IXPUB技术博客!Khi*R{ErU
[b]获得产品和技术[/b]IXPUB技术博客5b_3~~:NF
[url=http://bochs.sourceforge.net/][u][color=#0000ff]Bochs[/color][/u][/url] 和 [url=http://www.qemu.com/][u][color=#0000ff]QEMU[/color][/u][/url] 是 PC 仿真器,它们允许诸如 Windows 或 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 之类的[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]在 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] [url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]的用户空间中运行。
xA7QCiLW;o7590422[url=http://www.vmware.com/][u][color=#800080]VMware[/color][/u][/url] 是一个流行的完全虚拟化的商业解决方案,它可以对未经修改的[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]进行虚拟化。IXPUB技术博客Ji*Utl"n]
[url=http://www.vm.ibm.com/][u][color=#0000ff]z/VM[/color][/u][/url] 是 64 位 z/Architecture 使用的最新的 VM [url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]。z/VM 通过硬件辅助提供了完全虚拟化功能,并且可以支持很多[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url],包括 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url]。IXPUB技术博客2\2])F(]1a5I3}"tI
[url=http://www.xensource.com/][u][color=#0000ff]Xen[/color][/u][/url] 是一个开源的超虚拟化解决方案,它虽然需要对客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]进行修改,但可以通过与 hypervisor 的协作获得接近原始系统的性能。
-?7j8?#E ~(@7590422[url=http://user-mode-linux.sourceforge.net/][color=#0000ff]User-mode Linux[/color][/url] 是另外一个超虚拟化解决方案,也是开源的。每个客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]都是作为主机[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]的一个进程执行的。IXPUB技术博客8fHX e kB#v6]z
[url=http://www.colinux.org/][color=#0000ff]coLinux[/color][/url] 或 Cooperative [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url],是一个允许两个[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]协作式共享底层硬件的虚拟化解决方案。
`9i ` C YI#T7590422[url=http://linux-vserver.org/Welcome_to_Linux-VServer.org][color=#0000ff]Linux[/color][/url][u]-Vserver[/u] 是一个 GNU/[url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 系统使用的[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]级虚拟化解决方案,它安全地隔离了各个客户服务器。
Bel'jI f K7590422[url=http://www.openvz.org/][u][color=#0000ff]OpenVZ[/color][/u][/url] 是一个[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]级虚拟化解决方案,可以支持检查点和动态迁移。
W {"Be2v7590422[url=http://kvm.sourceforge.net/][color=#0000ff]Linux[/color][/url][u] KVM[/u] 是第一个集成到主流 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 内核中的虚拟化技术。通过一个可加载的内核模块,运行于可虚拟化的硬件上的 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 内核可以充当 hypervisor 并可支持未经修改的 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 和 Windows 客户[url=http://os.cnfan.net/][color=#000099]操作系统[/color][/url]。IXPUB技术博客:Lz]|&wjwp hhb
[url=http://www.ibm.com/developerworks/cn/offers/sek/][color=#0000ff]订购免费的 SEK for Linux[/color][/url],共包含两张 DVD,其中有用于 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 的最新 IBM 试用软件,包括 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere®。
5~6`{,ceK:s7590422利用可直接从 developerWorks 下载的 [url=http://www.ibm.com/developerworks/downloads/?S_TACT=105AGX52&S_CMP=cn-a-l][u][color=#0000ff]IBM 试用版软件[/color][/u][/url] 构建您的下一个 [url=http://os.cnfan.net/list_20.html][color=#000099]Linux[/color][/url] 开发项目。IXPUB技术博客`9q ZJe J4F@ J2M
IXPUB技术博客V9|x6fH OC OL5~ e;law


TAG:

 

评分:0

我来说两句

显示全部

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

Open Toolbar