虚拟化之群雄争霸

10月28日,一年一度的虚拟化用户大会在北京隆重举行。该大会是VMware全球客户活动的重要组成部分,是VMware 中国举办的第三届虚拟化用户大会。大会以"秉云之势,承虚而入"为主题,秉承创新的理念,主要阐述"借助虚拟化技术和云计算推动企业成功"的观点,吸引了2000多名用户、合作伙伴及EMC、IBM、Intel、HP、Cisco等赞助商的参与。

大会展示了VMware从桌面到数据中心及云计算虚拟化解决方案的创新理念,详尽地描绘了其完整的云计算策略和虚拟化路线,诠释了下一代虚拟化功能和产品的发展方向。

大会上频频提出虚拟化融合的概念,它不仅仅是服务器的整合,还包括将服务器虚拟化、存储虚拟化和网络虚拟化融合在一起,形成一个统一的整体。为适应不断变化的业务需求,未来的数据中心也将是动态的、融合的。

近来,NetApp这家业界领先的创新性存储和数据管理解决方案提供商,也向外界公开了其云计算战略,并发布了Data ONTAP 8及其它最新的技术解决方案。同时,NetAPP、Cisco和VMware三大公司也联合推出了虚拟化动态数据中心解决方案,从而允许虚拟服务器、以太网、应用和数据网络支持以尽可能有效的方式展开协作。

Oracle公司也推出了其最新版的Oracle服务器虚拟化软件Oracle VM 2.2。它具有基于Xen的最新业界标准管理程序Xen 3.4,可使运行在基于英特尔微型架构的英特尔至强5500系列处理器(代码Nehalem)及6核AMD皓龙处理器的客户系统的性能得到大幅度提升。同时,它还实现了Oracle VM与Virtual Iron技术的首次集成,从而使客户能够非常容易地将Virtual Iron虚拟机迁移到Oracle VM上。这样,客户就可以加速部署并简化企业应用的管理,以最环保和最高效的方式运行数据中心。

此外,Sun、IBM、HP、Cisco等公司也在继续开发和完善着自己的虚拟化解决方案,虚拟化领域的群雄争霸局面已经形成。

Posted in 虚拟化 | Tagged , | Leave a comment

如何使用NetBeans开发Jython程序

Jython是什么?

 维基百科:Jython程序可以和Java无缝集成。除了一些标准模块,Jython使用Java的模块。Jython几乎拥有标准的Python中不依赖于C语言的全部模块。比如,Jython的用户界面将使用SwingAWT或者SWT。 Jython可以被动态或静态地编译成Java字节码

Jython还包括jythonc,一个将Python代码转换成Java代码的编译器。这意味着Python程序员能够将自己用Python代码写的类库用在Java程序里。

可见,Jython是Python和Java的综合体,能直接运行于JVM之一。本文将介绍如何使用NetBeans 6.7进行Jython程序的开发。

 

首先需要安装NetBeans 6.7,下载地址为http://www.netbeans.org;打开NetBeans,在工具里选择插件,可用插件里可以搜索到python和jython,选中后点击安装即可。

插件安装成功后,会在工具菜单下生成Python Platforms的子菜单项,点击该菜单项,如果像图一这样拥有Jython或Python平台,则说明安装成功。

图一 Python Platform Manager

接下来就可以创建属于自己的工程了,选择文件 > 新建工程,进入以下用户界面,如图二所示:

图二 新建工程

本文用一个FeedReader工程作为Example,通过一个feedreader.py的jython程序来读取rss配置文件的内容,如图三所示:

图三 FeedReader Project

该jython程序的代码如下:

 

from java.net import URL

from java.lang import Exception

from java.lang import Object

from com.sun.syndication.io import SyndFeedInput

from com.sun.syndication.io import XmlReader

 

 

class FeedReader(Object):

def __init__(self, url):

self.inUrl = url

 

def readFeed(self):

ok = False

 

if self.inUrl != '':

rssUrl = self.inUrl

else:

rssUrl = "http://www.1blog.cn/rss.xml"

 

try:

feedUrl = URL(rssUrl)

input = SyndFeedInput()

feed = input.build(XmlReader(feedUrl))

 

print(feed)

ok = True

except Exception, e:

print 'An exception has occurred', e

if ok != True:

print 'An error has occurred in this reader'

 

if __name__== "__main__":

reader = FeedReader('')

reader.readFeed()

print 'Command Complete...RSS has been parsed'

 

需要注意的是,python及jython程序需要严格地按照其代码缩进规则,或者容易报错。此外,运行本程序还需要两个扩展包(jdom和rome),需要我们将这两个包添加到该工程的属性中,如图四所示:

图四 添加扩展包至工程属性

运行结果如图五所示:

图五 运行结果

参考文献:http://www.netbeans.org/kb/docs/python/jython-quickstart.html

Posted in Java | Tagged , , | Leave a comment

如何在xVM克隆基于ZFS的domain

如果你正在使用ZFS作为根文件系统,你就能利用其snapshot快照机制迅速克隆出相同配置的domain。通过对其根磁盘分区进行克隆,你就能轻松地得到多个相似的domain,而它们的主要差别仅仅是使用的存储空间不同而已。本文将介绍如何利用ZFS的clone技术来创建新的 domain。

首先,我们需要关闭正在运行的domain才能进行克隆,以保持硬盘快照的一致性,命令如下:
xm shutdown -w dom1
当然,你也可以在domain中运行sys-unconfig命令使新的克隆从重新配置开始。
完成以上操作后,我们就可以使用命令zfs snapshot pool/dom1-root@clone
为dom1的根磁盘分区创建一个快照了,再使用命令zfs clone pool/dom1-root@clone pool/dom2-root来克隆一个可写的snapshot快照。
这时如果你使用zfs list命令,应该能看见新创建的snapshot及clone。接下来,我们需要复制dom1的配置文件。使用如下命令将配置文件copy到一个新的文件:
virsh dumpxml domain1 >domain1.xml
cp domain1.xml domain2.xml
对copy的配置文件,至少需要作三处改变。
首先,你需要为克隆的domain重命名,若想命名为dom2,则将<name>dom1</name>更改为<name>dom2</name>即可;
其次,你需要删除UUID这一行,从而让virsh为domain生成一个新的配置文件。删除的部分如下:
<uuid>78cd98b5e7ab16594fa0cf1260826571</uuid>
接下来,我们需要为domain指定新的磁盘分区:
<source dev='/dev/zvol/dsk/export/dom1-root'/>更改为<source dev='/dev/zvol/dsk/export/dom2-root'/>
最后,告诉virsh新domain的存在。
virsh define domain2.xml
这时候,你就可以启动自己克隆的domain了。

Posted in Solaris, 虚拟化 | Tagged , , | Leave a comment

让Solaris、OpenSolaris作为xVM的Dom0

Xen是由剑桥大学开发的一个开放源代码的虚拟机管理器,是目前世界上最流行的虚拟机管理器之一,在《Virtualization:Xen and xVM Server》一文中有关于Xen和xVM Server的介绍。Sun公司也推出了自己基于Xen的虚拟化项目xVM,其最根本的区别就是Xen以Linux作为Dom0,而xVM以Solaris或OpenSolaris作为Dom0.本文将介绍如何将Solaris或OpenSolaris配置成xVM的Dom0。

在Solaris 10里已经集成了xVM项目,当你完整安装Solaris 10后,在grub启动时会发现有一个xVM的启动项,这时选择该启动项后Solaris 10就以Dom0的形式运行了。
在OpenSolaris下则需要安装相应的软件包并进行配置,具体过程如下:
如果你的OpenSolaris是build 126或者更新的版本,激活xVM只需要以下几条命令即可:
$ pfexec pkg install xvm-gui
$ pfexec svcadm enable milestone/xvm
$ pfexec reboot

如果是老版本的OpenSolaris,整个安装及配置过程就相对复杂一些。
首先使用命令beadm create -a -d xvm xvm创建一个独立的环境;
接着安装一些相应的软件包,命令如下:
$ pfexec beadm mount xvm /tmp/xvm-be
$ pfexec pkg -R /tmp/xvm-be install SUNWvirt-manager SUNWxvm SUNWvdisk SUNWvncviewer
$ pfexec beadm umount xvm

然后就是对menu.lst文件的修改了,步骤如下:
1.对menu.lst文件运行如下的AWK脚本
$ awk '
/^title/ { xvm=0; }
/^title.xvm$/ { xvm=1; }
/^(splashimage|foreground|background)/ {
if (xvm == 1) next
}
/^kernel\$/ {
if (xvm == 1) {
print("kernel\$ /boot/\$ISADIR/xen.gz")
sub("^kernel\\$", "module$")
gsub("console=graphics", "console=text")
gsub("i86pc", "i86xpv")
$2=$2 " " $2
}
}
{ print }' /rpool/boot/grub/menu.lst >/var/tmp/menu.lst.xvm
2.检查该AWK脚本是否运行正常
$ tail /var/tmp/menu.lst.xvm
#============ End of LIBBE entry =============
title xvm
findroot (pool_rpool,0,a)
bootfs rpool/ROOT/xvm
kernel$ /boot/$ISADIR/xen.gz
module$ /platform/i86xpv/kernel/$ISADIR/unix /platform/i86xpv/kernel/$ISADIR/unix -B $ZFS-BOOTFS,console=text
module$ /platform/i86pc/$ISADIR/boot_archive
#============ End of LIBBE entry =============

3.替换menu.lst文件并重启
$ pfexec cp /rpool/boot/grub/menu.lst /rpool/boot/grub/menu.lst.saved
$ pfexec mv /var/tmp/menu.lst.xvm /rpool/boot/grub/menu.lst
$ pfexec reboot

最后使用命令svcadm enable -r xvm/virtd ; svcadm enable -r xvm/domains启动服务后就能在OpenSolaris上安装并启动新的虚拟机了。

Posted in Solaris, 虚拟化 | Tagged , , | Leave a comment

让Solaris 10作为zone运行于OpenSolaris

如果dtrace和mdb这些工具运行在OpenSolaris全局zone中,那么这些工具对运行在跑有Solaris 10的zone中的进程来说是无用的,主要是因为Solaris 10和OpenSolaris之间部分调试库的一些不兼容的改变,导致Solaris 10不能作为OpenSolaris的zone正常地运行。同时,由于新版本的OpenSolaris加入了Crossbow等许多非常优秀的特性,让运 行Solaris 10的zone能充分利用OpenSolaris作为全局zone的众多优势,也是非常有必要的。本文将介绍如何解决在OpenSolaris上正常运行 跑有Solaris 10的zone这个技术难题。
解决这个问题最大的难点之一,就是x86平台下Solaris 10的libc对%fs段寄存器的使用。Solaris 10的libc希望X86平台64位处理器的%fs寄存器来存储非0的selector值(如果%fs值为0,那么Solaris 10的_curthread()返回NULL),问题也由此产生了,由于OpenSolaris的内核清空了%fs,而在64位的x86机器上,libc 总是使用%fs来查找当前线程的ulwp_t数据结构,从而使运行Solaris 10的zone不能使用libdoor这些普通的类库和thr_main(3C)等关键libc函数。

整个解决方案比较复杂,因为必须保证在Solaris 10 zone中运行的所有线程开始运行时%fs寄存器的值非零。幸运的是,在Solaris 10和OpenSolaris中只有两个系统调用修改了%fs:SYS_lwp_private和SYS_lwp_create。 SYS_lwp_private是一个libc私有的系统调用,只有在一个进程执行后libc初始化时才被调用一次,用来配置FS段使其段基址在单一线程 ulwp_t结构的开始处。

具体过程如下:

1. Solaris 10的仿真库在s10_lwp_private()实现SYS_lwp_private,它把系统调用传到未改变的OpenSolaris内核,然后调用 thr_main(3C)来测试Solaris10环境下的libc在内核配置%fs后是否运行正常。如果返回-1,那么将调用一个特殊的 SYS_brand系统调用将%fs还原到过去的非零状态。

2. Solaris 10的仿真库在s10_lwp_create()中实现SYS_lwp_create,使得新的线程在 s10_lwp_create_entry_point()而不是在_thrp_setup()中启动。当然,新的线程最终还是必须执行 _thrp_setup(),所以s10_lwp_create()在新线程栈中的预定位置保存_thrp_setup()的地址。 s10_lwp_create_entry_point()调用thr_main(3C)测试当%fs为零时Solaris 10的libc运行是否正常。如果thr_main(3C)返回-1,那么新的线程将调用和s10_lwp_private()一样的SYS_brand 系统调用来恢复%fs。然后,新的线程再从栈中的预定位置读取真正的入口点地址并跳转到入口点。
3. 在运行Solaris 10的zone里保证fork产生的子线程继承其父线程的%fs selector值,从而使父线程即使在调整%fs寄存器后也能保持父子线程的一致性。
4. 同时,还需要考虑对SIGCANCEL等信号的处理,以防止段错误的出现。

Posted in Solaris, 虚拟化 | Tagged , , | Leave a comment

聚焦VMworld虚拟化盛会

    IT行业独立研究公司TheInfoPro公司最近的实时数据显示,2009年安装的服务器中有50%将采用虚拟化技术,预计到2012年这个比例将增长到80%。可见,虚拟化技术正在以较快的速度增长和普及。

    万众瞩目的VMworld虚拟化大会于8月31日 至9月3日在旧金山召开。作为虚拟化领域内的领佳节又重阳导厂商,VMware今年推出了长距离VMotion技术、VMware Go、PCoIP、CapacityIQ与ConfigControl,并开放云端平台与vCenter的API接口,强化第三方软件厂商的支持。其轻松部署虚拟机的vCenter Lab Manager、可显示每个虚拟机账户信息的vCenter Chargeback等产品都让人眼前一亮。VMware公司总裁兼首席执行官Paul Maritz在大会上强调了降低IT复杂性的重要性,对VSphere这款易于管理的、并能很好地降低数据中心复杂性的虚拟化软件给出了很高的评价;VMware首席技术官Stephen Herrod作了题为《虚拟化的未来:从手机到云》的演讲,提出了VMware的移动策略,除了将手机作为瘦客户之外,还可以通过手机管理数据中心,并对手机本身实施虚拟化。其VMware View产品除了可以作为便携终端的瘦客户机之外,还可以作为vCenter的管理终端使用。同时,他还表示VMware将公布实现手机虚拟化的“VMware MVP”(Mobile Virtualization Platform)。

    与此同时,开源hypervisor之家Xen.org发布了XCP(Xen Cloud Project),旨在跨广泛的云厂商使虚拟化标准化,为Xen创建一个稳定的、定义好的API,从而加速其在企业和云里的采用。软件巨头微软专为中端市场客户推出了一系列“特殊应用的虚拟化/管理软件以及服务升级”的解决方案,如System Center Virtual Machine Manager技术等。此外,思科与VMware合作,在大会上展示了一项远程实时迁移技术,整个技术可以让远在125英里外的虚拟服务器穿过多个数据中心,从而使企业真正撤离一个数据中心。

Posted in 虚拟化 | Tagged , | Leave a comment

从何说起

陈奕迅 - 从何说起

作词:林夕 作曲:李海鹰

如梦令 从何处说起
梦一般剧情凭谁在推移
缘份在偷袭 时间在追逼
那些美好的瞬间 得来不易

在感情还能够感人的时代
为甚么有情人 还在颠沛流离

谁辜负过自己 说不上可惜
谁被世道放逐身不由己
谁曾朝不保夕 才为幸福而卖力
才舍得面对镜子 说我可以

月光光 从何处唱起
那圆缺阴晴如何不服气
际遇不讲理 命运没协议
只有从爱人怀抱寻找真理

在感情还能够感人的时代
为甚么有情人 还在颠沛流离

谁辜负过自己 说不上可惜
谁被世道放逐身不由己
谁曾朝不保夕 才会死心不息
才舍得万死不辞 说我可以

谁辜负过自己 说不上可惜
谁被世道放逐身不由己
谁曾朝不保夕 才会死心不息
难题再不成问题 说我可以

鸿爪踏雪泥
还是来得及
对重遇的人说
原来你也在这里

Posted in 娱乐天地 | Tagged , | Leave a comment

在OpenSolaris 2009.06共享ZFS文件系统

ZFS文件系统是由Sun公司开发的第一个128位 的文件系统,也是目前世界上最先进的文件系统,所以被称为“终极文件系统”。由于资源共享已经成为互联网领域的核心内容,服务器及PC机的文件共享也成为 一个非常重要的话题。本文将介绍在OpenSolaris 2009.06上共享ZFS文件系统的几种方式。

第一种方式:

  选择 系统 -> 系统管理 -> 共享的文件夹,添加共享目录或文件并以NFS方式共享。

  可以通过指定主机名、IP地址、网络等来配置允许访问该共享目录或文件的主机,并可设置主机操作权限为只读或读写。

第二种方式:

  使用share命令。

这个命令和在Linux下的使用差不多,在OpenSolaris下使用share命令除了可以共享ZFS文件系统外,还可以共享UFS等其它文件系统。当然,需要修改/etc/dfs/dfstab配置文件。

第三种方式:

  使用ZFS命令,这种方式只能共享ZFS文件系统。

 ZFS 可以通过使用sharenfs 属性来自动共享文件系统,而不必修改/etc/dfs/dfstab 文件。在sharenfs 属性中,如果sharenfs=on,则由zfs控制其自动共享文件系统。如果sharenfs=off 表示文件系统不由ZFS 管理,就跟普通的文件系统共享方式一样,但可通过传统方法(如/etc/dfs/dfstab 文件)来管理。在引导过程中将共享sharenfs 属性不是off 的所有文件系统。你可以通过命令zfs get all查看所有zfs的属性。ZFS设置共享的命令如下:
#zfs set sharenfs=rw=@192.168.203.0/24 rpool/test

#share

-@rpool/test    /test    sec=sys,rw=@192.168.203.0/24   ""

Posted in Solaris | Tagged , , | Leave a comment

ZFS snapshot高级篇之快照备份

ZFS snapshot是OpenSolaris的一个非常强大的技术,它就像Windows的还原点一样,能让你的系统还原到你想要的状态。在《OpenSolaris下的snapshot及基于zfs的系统恢复》一文中,我对snapshot的使用及恢复做了较详细的介绍,本文将介绍如果对snapshot快照进行备份(包括增量备份),从而来保证数据的完整性。

首先通过一个简单的demo来重温一下snapshot的原理:

1.       在rpool存储池中创建一个test文件系统:

haiou@opensolaris:~# zfs create rpool/test

haiou@opensolaris:~# zfs list

NAME                      USED  AVAIL  REFER  MOUNTPOINT

rpool                    4.52G  1.01G  79.5K  /rpool

rpool/ROOT               3.84G  1.01G    19K  legacy

rpool/ROOT/opensolaris   3.84G  1.01G  3.58G  /

rpool/cifsdemo             99K  1.01G    19K  /rpool/cifsdemo

rpool/export              698M  1.01G    21K  /export

rpool/export/home         698M  1.01G    23K  /export/home

rpool/export/home/haiou   697M  1.01G   391M  /export/home/haiou

rpool/test                 19K  1.01G    19K  /rpool/test

2.       在test文件系统下创建几个新文件:

haiou@opensolaris:/rpool/test# cd /rpool/test

haiou@opensolaris:/rpool/test# echo “How are you?” > f1

//创建一个f1文件,内容为How are you?

haiou@opensolaris:/rpool/test# echo “I am fine” > f2    //创建一个f2文件

3.       接下来为rpool/test文件系统创建一个快照:

haiou@opensolaris:/rpool/test# zfs snapshot rpool/test@1

//为rpool/test文件系统创建一个快照

haiou@opensolaris:/rpool/test# echo “ok” > f3           //创建一个f3文件

haiou@opensolaris:/rpool/test# ls

f1  f2  f3

4.       使用创建的快照对rpool/test 文件系统进行恢复:

haiou@opensolaris:/rpool/test# zfs rollback rpool/test@1

haiou@opensolaris:/rpool/test# ls

f1  f2

这样系统就成功恢复到了创建快照rpool/test@1之前的状态。

在创建快照以后,为了保证数据的完整性,我们也可以对快照进行备份。可以备份在同一个存储池的另一个文件系统,也可以备份到不同的存储池里;同时,我们还可以通过iSCSI、ssh等技术将其备份到远程的物理机器上。

我们可以使用以下的命令来备份rpool/test@1这个快照:

# zfs send rpool/test@1 | zfs receive rpool/rtest
使用zfs list命令可以发现在rpool存储池里创建了一个新的文件系统rtest,且文件系统的内容和test一模一样。同时,在创建rtest的同时,还创建了一个rpool/rtest@1的快照。
在对一个文件系统创建了多个快照以后,我们可以采用增量备份的方式。假设我们又对rpool/test文件系统创建了一个新的快照rpool/test@2,采用增量备份的方式就会只将两个快照之间的差别传送到rtest文件系统里。得注意一点,就是在增量备份之前需要将rtest文件系统设为只读,命令如下:
# zfs set readonly=on rpool/rtest
# zfs send -i rpool/test@1 rpool/test@2 | zfs receive -F rpool/rtest
当然,当我们为一个文件系统创建了多个快照之后,可以将各个快照分别备份到不同的文件系统,命令如下:
# zfs send rpool/test@1 | zfs receive rpool/rtest1
# zfs send rpool/test@1 | zfs receive rpool/rtest2
# zfs send rpool/test@1 | zfs receive rpool/rtest3
如果能将它们都备份到远程的服务器上,就更好地保证了数据的完整性。
Posted in Solaris | Tagged , | Leave a comment

自由软件日——华科站成功举办

华中科技大学SFD

活动地点:华中科技大学东九楼C401
活动时间:2009年9月21日 19:00~22:00
听众人数:150左右
活动内容及形式:主题演讲+互动问答

演讲嘉宾名单和演讲内容:
Speaker 1: 19:00 - 19:40
淮晋阳
瑞脑消金兽言人简介:
中科红旗教育学院副院长,教育拓展经理,高级讲师
主题:开源–软件的发展趋势
内容:Web2.0、云计算以及开源技术引发的各种变革

Speaker 2: 19:40 - 20:30
蒋海鸥
瑞脑消金兽言人简介:
华中科技大学计算机学院,集群与网格计算湖北省重点实验室&服务计算技术与系统教育部重点实验室硕士研究生。主要研究方向是虚拟化。
主题: OpenSolaris 2009.06 overview
内容:OpenSolaris中的ZFS、DTrace、xVM虚拟化等独有的技术以及2009.06版本的新特征。

Speaker 3:20:30 - 21:00
张兰
瑞脑消金兽言人简介:
IBM(中国)公司院校合作项目专员,大中华区应用开发商合作部
主题:加入先锋部落,尽展IT精彩人生
内容:IBM公司98年来的发展历程以及IBM教育学院如何与各大高校开展合作。

Speaker 4: 21:00 - 21:30
陈华才
瑞脑消金兽言人简介:
华中科技大学计算机学院,集群与网格计算湖北省重点实验室&服务计算技术与系统教育部重点实验室博士研究生。主要研究方向是虚拟化。
龙芯俱乐部武汉分部负责人。
主题:操作系统启动过程探秘
内容:PC/X86以及龙芯电脑上各种操作系统(包括DOS, Windows 9X, Windows NT, Linux等)启动过程的解析与对比。

Speaker 5: 21:30 - 22:00
龚文茂
瑞脑消金兽言人简介:
武汉大学学生,武汉大学Firefox校园大使
主题:属于你的Firefox
内容:Web浏览器的发展历程,两次浏览器大战,以及Firefox的各种先进特性。

Q&A   蒋海鸥,淮晋阳,张兰,陈华才,龚文茂

整个活动到场观众150人左右,虽没达到预期的200人,但讲座过程中观众基本上都保持着较好的情绪,中途离场者甚少。我们的听众主要部分是真正的自由软件爱好者和有一定知识基础的学生,纯粹看热闹的少,所以讲座的气氛及效果较好。

me

Posted in C/C++/Others | 2 Comments