2012年7 月月 发布的文章

CloudStack中的存储概念

出于对性能及总拥有成本考虑,CloudStack中把存储分成两类:主存储和二级存储.
主存储主要是用来保存虚拟机实例的卷,供虚拟机运行时使用.对性能要求高,最好拥有较高的IOPS; 一个主存储设备是被一个CloudStack集群内所有主机可共享访问的.主存储要支持存储分级功能.对于主存储,CloudStack支持NFS,本地存储(某些功能不可用),iSCSI,FC-SAN等存储协议,性能也是由低到高.
二级存储用来保存一次写多次读的数据,比如模板,ISO,快照等数据,二级存储对IOPS要求并非像主存储那样高,但所存储的数据比较大,因此需要较大的容量.目前二级存储只支持NFS,对于Swift的支持正在添加,长远来看有可能支持其它的分布式文件系统如HDFS,Ceph等.
CloudStack管理节点用来提供对主存储及二级存储的综合管理,配置及使用,这两种存储在云环境中的可用下图表示:

CloudStack支持的各种Hypervisor对于上述提到的主存储支持与否可见下表:

类型 XenServer ESXi KVM
本地存储 支持 支持 支持
iSCSI 支持 支持 不支持
FC-SAN 支持 支持 不支持
NFS 支持 支持 支持

 
 
 
另外,主存储通过标签来支持存储分级,这个功能会被广泛使用,特别是在公有云或混合云环境中.在CloudStack的集群中,主存储可以有多个异构的,也就是同时有NFS, iSCSI和FC-SAN,这些主存储加入到集群时可以分别打上”nfs”,”iscsi”和”fc-san”的标签,然后创建磁盘方案时选择用对应的存储标签,从而可以将创建的虚拟机指定主存储的位置.对于服务提供商来讲可以通过存储的分级来提供不同的性能,不同售价,不同SLA.

 » 转载请注明来源:CloudStack中文社区

CloudStack常用术语解释

您可能会在用户界面,帮助和文档里遇到下列术语。了解这些关键术语将对你建立私有云或混合云有莫大的帮助。
account (账户)
一个CloudStack账户是服务提供商的一个客户或一个大型组织结构中的一个部门. 账户是CloudStack里的最小隔离单元: 在一个账户里,所有的用户可以共享数据和其它资源,而这在另一账户里是不可见的.在CloudStack里账户(Account)与用户(User)是不同的概念.可以把一系列用户看成是账户的别名.在许多安装部署中并不会特别在意用户,只要保证每个账户有一个用户即可.
cluster(集群)
由一个或多个物理主机组成,它们使用指定的存储.在主机上运行Hypervisor软件.它们的存储可以是主机自身的(也就是与Hypervisor在同一台机器上),但更为常见的是使用共享存储,比如NAS,这样就可以提供更好的可靠性和高可用性(HA).
disk offering(硬盘方案)
预定义的一定量的存储空间设置,用户在创建虚拟机实例的时候可以指定一个数据盘使用这个存储设置.管理员可以定义一个或多个这样的存储设置供用户选择–比如小型,中型或大型存储空间–这里的”小型”和”大型”的不同完全由管理员决定.数据盘在整个虚拟机实例的生命周期是比较短暂的,但通过CloudStack提供的快照功能,可以提供数据盘的持久化复本.
domain(域)
一组账户属于一个域.可以认为一个域包含了有逻辑关系的一组账户.比如,一个服务提供商为几个经销商服务,可以为每个经销商创建一个域.在一个经销商内部可以有一系列的账户为这个经销商的客户服务.一个域通常会有一个或多个域管理员,域管理员拥有这个域及其子域的控制权限.
domain administrator(域管理员)
一个域管理员是整个系统中比其它用户拥有更多权限的用户.例如,域管理员可以在这个域的范围内创建新的账户.域管理员可以访问只属于管理员域的虚拟资源.
global administrator(全局管理员)
全局管理员账户是整个系统中拥有最多权限的的用户,它等同于系统中的根用户(Linux中的root).它可以使用云环境中的所有功能,包括虚拟资源和物理资源的管理,可以创建或删除系统中其它用户.
host(主机)
主机是提供虚拟机运行所需要资源的环境.通常可以认为主机包含计算机及所需的服务端软件.比如,一台安装KVM套件的Linux服务器,一台Citrix的XenServer或一台ESXi服务器都是一个主机.主机提供了虚拟机运行所需的所有的CPU,内存,存储及网络资源.它们通过高带宽的TCP/IP进行互连以及连接到因特网.它们可以驻留在不同的数据中心,可以在不同的地理位置上.它们可以有不同的能力,比如,不能的CPU主频,不同数据量的内存等.它们通常使用高性能的硬件用来保证单一主机的可靠性,但在一个大规模的部署中,是允许有部分主机有故障出现.
hypervisor(虚拟化套件)
它是一个可以监控同一主机上多个虚拟机实例的软件. VMWare的VSphere, XenServer®,以及KVM都是这类软件.这个术语并非CloudStack独有.
IaaS
基础设施即服务(Infrastructure as a Service的缩写),这个术语并非CloudStack独有. 维基百科认为IaaS是云计算的代名词,它给的定义是”通过计算机网络按需供给计算资源”.CloudStack只是提供软件而不包含硬件,所以对于CloudStack来讲定义成IMaaS或IAaaS更为合适.
注: IMaaS或IAaaS指(基础设施管理即服务).
Management Server(管理服务器)
一个管理服务器提供了管理员的用户Web界面.
管理分配到主机的虚拟机.
管理分配给账户的公有或私有IP地址.
管理分配给虚拟机映像的存储.
管理快照,模板,ISO映像,并可能在多个数据中心进行复制.
network offering(网络方案)
是通过虚拟路由器或外部网络设备提供给最终用户的一组网络功能集合描述.它不像磁盘方案或计算方案,网络方案是CloudStack定义的而非管理员定义.
offering(方案)
参照磁盘方案,计算方案和网络方案.
pod(机架)
一组集群,与一个数据中心的一个物理机架的概念相似..
role(角色)
一组预定义的功能,根据用户被授予的权限,可以对登入系统的用户提供三种角色:
全局管理员
域管理员
用户
service offering(计算方案)
一些预定义好的虚拟硬件属性,包括CPU频率,CPU核数,内存大小等,用户可以选择相应的计算方案来创建一个新的虚拟机实例或是更改一个已有虚拟机的实例.管理员可以定义一个或多个计算方案来供用户选择,比如,小型,中型或大型实例,这里的”小型”和”大型”的不同完全有管理员来决定.
template(模板)
用户创建新的虚拟机时可供选择的基础操作系统镜像. 模板由管理员创建.比如,CloudStack默认情况下包含一个CentOS的模板可供使用. 目前所有流行的Linux及Windows操作系统版本都被支持用来做模板.
user(用户)
与计算机软件交互的人.一个账户和一个用户在CloudStack中是不一样的术语.一个账户下可以创建多个用户,也就是多个用户可以同属一个账户,但通常情况下是单个用户对应一个账户.用户更像是账户的别名.同一个账户下的用户可以访问分配给这个账户的所有资源.
zone(资源域)
由一组机架组成,一个数据中心通常等同于一个资源域.
 » 转载请注明来源:CloudStack中文社区
 » 本文链接地址:http://www.cloudstack-china.org/2012/07/123.html

关注自己的健康–阻止亚健康

亚健康是介于健康和疾病之间的一种游离状态,如果保健得当,有希望回到健康状态,任其发展就会导致疾病发生。所以,大家千万要重视亚健康状态。许多疾病在早期的表现或者说是先兆都表现在亚健康的状态之中,例如慢性疲劳、不明原因的疼痛等。通俗点说,就是大家所说的“到医院检查不出毛病,自己难受自己知道”的那种状态。针对亚健康状态,我们要首先找出原因,合理保健,才能有效改善亚健康状态。
现代人工作忙,竞争激烈,下班后回了家又有孩子、老人、家务在等着你,也很忙。工作与生活的双重压力,常常把自己逼得无路可退,无处可息,疯狂工作不注意休息的人真是太多了,这种不尊重健康的现象不仅在中国,在全球都是如此。
如果这种失调持续发展,可进入“潜临床”状成,在35岁以上的人群中比例徒增。他们的表现比较错综复杂,可为慢性疲劳或持续的心身失调,各种症状持续2个月以上,且常伴有慢性咽痛、反复感冒、精力不支等。有专家将其错综复杂的表现归纳为3种减退:活力减退、反应能力减退和适应能力减退。从临床检测来看,城市里的这类群体比较集中地表现为“三高一低”倾向,即存在着接近临界水平的高血脂、高血糖,高血粘度和免疫功能偏低。
这类拼命工作的亚健康状态的另一种最直接更可怕的称呼是“过劳死”。
“过劳死”一词缘自日本,最早出现于日本20世纪七、八十年代经济繁荣时期,它并不是临床医学病名,而是属于社会医学范畴。在日本它被定义为:由于过度的工作负担(诱因),导致高血压等基础性疾病恶化,进而引起脑血管或心血管疾病等急性循环器官障碍,使患者死亡。在过去的5年,日本有几位市长因严重的疲劳而“过劳死”。有人统计,日本每年有1万人因过劳而猝死。
专家预言:“过劳死”正向中国蔓延,高峰期为2002~2004年。可见,“过劳死”就在我们身边,为我们敲响了警钟。
造成“过劳死”的根本原因是长期的高强度、超负荷的劳心劳力,加上缺乏及时的恢复和足够的营养补充,导致肌体细胞的超前老化,这种老化一旦超过一定的限度就会爆发“过劳死”。日本“过劳死”预防协会列有“过劳死”二十大信号:
1、“将军肚”早现。30~50岁的人,大腹便便,是成熟的标志,也是高血脂、脂肪肝、高血压、冠心病的伴侣。
2、脱发、斑秃、早秃。每次洗发都有一大堆头发脱落,这是工作压力大、精神紧张所致。
3、频频去洗手间。如果你的年龄在30~40岁之间,排泄次数超过正常人,说明消化系统和泌尿系统开始衰退。
4、性能力下降。中年人过早地出现腰酸腿痛,性欲减退或男子阳痿、女子过早闭经,都是身体整体衰退的第一信号。
5、记忆力减退,开始忘记熟人的名字。
6、心算能力越来越差。
7、做事经常后悔、易怒、烦躁、悲观,难以控制自己的情绪。
8、注意力不集中,集中精力的能力越来越差。
9、睡觉时间越来越短,醒来也不解乏。
10、想做事时,不明原因地走神,脑子里想东想西,精神难以集中。
11、看什么都不顺眼,烦躁,动辄发火。
12、处于敏感紧张状态,惧怕并回避某人、某地、某物或某事。
13、为自己的生命常规被扰乱而不高兴,总想恢复原状。对已做完的事,已想明白的问题,反复思考和检查,而自己又为这种反复而苦恼。
14、身上有某种不适或疼痛,但医生查不出问题,而仍不放心,总想着这件事。
15、很恼烦,但不一定知道为何烦恼;做其他事常常不能分散对烦恼的注意,也就是说烦恼好像摆脱不了。
16、情绪低落、心情沉重,整天不快乐,工作、学习、娱乐、生活都提不起精神和兴趣。
17、易于疲乏,或无明显原因感到精力不足,体力不支。
18、怕与人交往,厌恶人多,在他人面前无自信心,感到紧张或不自在。
19、心情不好时就晕倒,控制不住情绪和行为,甚至突然说不出话、看不见东西、憋气、肌肉抽搐等。
20、觉得别人都不好,别人都不理解你,都在嘲笑你或和你作对。事过之后能有所察觉,似乎自己太多事了,钻了牛角尖。
我们可以对照以上“信号”自我检查,具有上述两项或两项以下者,则为“黄灯”警告期,目前尚无需担心,具有上述3~5项者,则为一次“红灯”预报期,说明已经具备“过劳死”的征兆;6项以上者,为二次“红灯”危险期,可定为“疲劳综合征”———“过劳死”的“预备军”。另有三种人易“过劳死”:一是有钱(有势)的人,特别是只知道消费不知道保养的人;二是有事业心的人,特别是称得上“工作狂”的人;三是有遗传早亡血统又自以为身体健康的人。

大数据时代:Hadoop认证变身高薪敲门砖

众所周知,积极的参加各类的培训并获得相关的认证是IT专业人士的显著特征。而在2012年哪种技术会成为热点?毫无疑问是Hadoop。Apache Hadoop作为开源数据管理软件主要用来在分布式环境中的分析大量的结构化和非结构化数据。Hadoop已被用在包括Yahoo,Facebook,LinkedIn和eBay等众多流行的网站之中。
Hadoop大潮正在逐渐席卷所有美国的垂直行业,包括金融、传媒、零售、能源、以及制药等。Hadoop在树立大数据概念的同时,还对海量数据进行实时分析,并从分析得出的数据发现趋势,以提高企业赢利的能力。
IT专业人士对一些Hadoop开发和管理培训课程以及认证非常感兴趣。同时,IT经理(如CIO或CTO)也可以从大数据相关课程中受益良多。包括Cloudera、Hortonworks、IBM、MapR和Informatica都提供了相关的Hadoop培训。总部设在加州一家公司则提供四个不同受众(程序员、数据库分析师、系统管理员以及IT经理)的Hadoop相关课程。
Cloudera产品副总裁Charles Zedlewski表示Hadoop正在影响越来越的的行业。Cloudera所提供Hadoop服务已经持续了三年,同时也为自身企业级Hadoop软件做出了有力的补充。在过去几个月中,通过Cloudera Hadoop培训的相关人才极其抢手。相比于2011年第一季度,2012年第一季度参与培训的人预计会增长4倍。
Cloudera培训服务总监Sarah Sproehnle表示“公司也在努力聘请Hadoop人才,我们的Hadoop培训已经进行了一段时间。我们将最佳实践融入到我们课程之中,这驱使我们可以加快Hadoop从业人员快速成长。获得我们认证的从业人员也受到很多企业的欢迎,在企业中他们负责管理PB级数据”。Cloudera的Hadoop培训持续4天,大约需要2000美元费用。
事实上Cloudera的培训课程的名额在去年十一月纽约举行的第三次Hadoop全球年度大会(近2000人出席了会议)上被抢购一空。在过往的三年内,Cloudera已经培训超过10000名技术从业者。Cloudera计划在2012年底再培训10000名。
Hortonworks在二月也推出了被称为Hortonworks大学的Hadoop培训项目,并为IT专业人士提供标准课程和认证。Hortonworks的Hadoop认证分为开发人员认证与管理员认证。Hadoop开发者认证培训需要4天,费用约为2500美元。Hadoop管理员培训需要两天,费用大约1400美元。
“我们看到相关的Hadoop培训的需求在成倍增长,企业开始将收集的信息细化(客户信息、交易信息),企业都在争先恐后的寻找缩减成本的方法。”Hortonworks全球服务领域高级总监Bob Mahan说道。
相关的Hadoop开发培训需要被培训人具备Java编程经验,而对于Hadoop管理培训而言则需要被培训人具备Linux或Unix的管理经验。IT人员争先恐后参加Hadoop认证培训无非是想获取更高的薪资。据Mahan预测在未来3-5年,全球将有一半的数据通过Hadoop处理。
而IBM则提出了新的倡议,IBM呼吁在大学时代开始培养本科生和研究生,旨在让他们在大学时期就接触大数据概念以及Hadoop。IBM这一倡议自去年十月以来已经吸引了14000学生参与其中。IBM提供了六个在线课程,涉及Hadoop基础上下篇。IBM表示,在庞大的注册人群中,约有1成学生在5个月内完成了相关资格认证。
与此同时,MIT更要求计算机系的学生使用Hadoop MapReduce构建程序。而加州伯克利分校更是使用Hadoop致力于数据科学领域的研究。
最后Cloudera产品副总裁Charles Zedlewski表示“现今Hadoop所处的状况让我想起了1995年时的Java”。

互联网协议入门

我们每天使用互联网,你是否想过,它是如何实现的?
全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?
互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。
下面就是我的学习笔记。因为这些协议实在太复杂、太庞大,我想整理一个简洁的框架,帮助自己从总体上把握它们。为了保证简单易懂,我做了大量的简化,有些地方并不全面和精确,但是应该能够说清楚互联网的原理。

一、概述
1. 1 五层模型
互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。
用户接触到的,只是最上面的一层,根本没有感觉到下面的层。要理解互联网,必须从最下层开始,自下而上理解每一层的功能。
如何分层有不同的模型,有的模型分七层,有的分四层。我觉得,把互联网分成五层,比较容易解释。

如上图所示,最底下的一层叫做”实体层”(Physical Layer),最上面的一层叫做”应用层”(Application Layer),中间的三层(自下而上)分别是”链接层”(Link Layer)、”网络层”(Network Layer)和”传输层”(Transport Layer)。越下面的层,越靠近硬件;越上面的层,越靠近用户。
它们叫什么名字,其实并不重要。只需要知道,互联网分成若干层就可以了。
1. 2 层与协议
每一层都是为了完成一种功能。为了实现这些功能,就需要大家都遵守共同的规则。
大家都遵守的规则,就叫做”协议”(protocol)。
互联网的每一层,都定义了很多协议。这些协议的总称,就叫做”互联网协议”(Internet Protocol Suite)。它们是互联网的核心,下面介绍每一层的功能,主要就是介绍每一层的主要协议。
二、实体层(Physical Layer)
我们从最底下的一层开始。
电脑要组网,第一件事要干什么?当然是先把电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式。

这就叫做”实体层”,它就是把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送 0 和 1 的电信号。
三、链接层(Link Layer)
3. 1 定义
单纯的 0 和 1 没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义?
这就是”链接层”的功能,它在”实体层”的上方,确定了 0 和 1 的分组方式。
3. 2 以太网协议
早期的时候,每家公司都有自己的电信号分组方式。逐渐地,一种叫做”以太网”(Ethernet)的协议,占据了主导地位。
以太网规定,一组电信号构成一个数据包,叫做”帧”(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。

“标头”包含数据包的一些说明项,比如发送者、接受者、数据类型等等;”数据”则是数据包的具体内容。
“标头”的长度,固定为 18 字节。”数据”的长度,最短为 46 字节,最长为 1500 字节。因此,整个”帧”最短为 64 字节,最长为 1518 字节。如果数据很长,就必须分割成多个帧进行发送。
3. 3 MAC 地址
上面提到,以太网数据包的”标头”,包含了发送者和接受者的信息。那么,发送者和接受者是如何标识呢?
以太网规定,连入网络的所有设备,都必须具有”网卡”接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做 MAC 地址。

每块网卡出厂的时候,都有一个全世界独一无二的 MAC 地址,长度是 48 个二进制位,通常用 12 个十六进制数表示。

前 6 个十六进制数是厂商编号,后 6 个是该厂商的网卡流水号。有了 MAC 地址,就可以定位网卡和数据包的路径了。
3. 4 广播
定义地址只是第一步,后面还有更多的步骤。
首先,一块网卡怎么会知道另一块网卡的 MAC 地址?
回答是:有一种 ARP 协议,可以解决这个问题。这个留到后面介绍,这里只需要知道,以太网数据包必须知道接收方的 MAC 地址,然后才能发送。
其次,就算有了 MAC 地址,系统怎样才能把数据包准确送到接收方?
回答是:以太网采用了一种很”原始”的方式,它不是把数据包准确送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。

上图中,1号计算机向 2 号计算机发送一个数据包,同一个子网络的 3 号、4号、5号计算机都会收到这个包。它们读取这个包的”标头”,找到接收方的 MAC 地址,然后与自身的 MAC 地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。这种发送方式就叫做”广播”(broadcasting)。
有了数据包的定义、网卡的 MAC 地址、广播的发送方式,”链接层”就可以在多台计算机之间传送数据了。
四、网络层(Network Layer)
4. 1 网络层的由来
以太网协议,依靠 MAC 地址发送数据。理论上,单单依靠 MAC 地址,上海的网卡就可以找到洛杉矶的网卡了,技术上是可以实现的。
但是,这样做有一个重大的缺点。以太网采用广播方式发送数据包,所有成员人手一”包”,不仅效率低,而且局限在发送者所在的子网络。也就是说,如果两台计算机不在同一个子网络,广播是传不过去的。这种设计是合理的,否则互联网上每一台计算机都会收到所有包,那会引起灾难。
互联网是无数子网络共同组成的一个巨型网络,很像想象上海和洛杉矶的电脑会在同一个子网络,这几乎是不可能的。

因此,必须找到一种方法,能够区分哪些 MAC 地址属于同一个子网络,哪些不是。如果是同一个子网络,就采用广播方式发送,否则就采用”路由”方式发送。(”路由”的意思,就是指如何向不同的子网络分发数据包,这是一个很大的主题,本文不涉及)遗憾的是,MAC 地址本身无法做到这一点。它只与厂商有关,与所处网络无关。
这就导致了”网络层”的诞生。它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做”网络地址”,简称”网址”。
于是,”网络层”出现以后,每台计算机有了两种地址,一种是 MAC 地址,另一种是网络地址。两种地址之间没有任何联系,MAC 地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。
网络地址帮助我们确定计算机所在的子网络,MAC 地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理 MAC 地址。
4. 2 IP 协议
规定网络地址的协议,叫做 IP 协议。它所定义的地址,就被称为 IP 地址。
目前,广泛采用的是 IP 协议第四版,简称 IPv4。这个版本规定,网络地址由 32 个二进制位组成。

习惯上,我们用分成四段的十进制数表示 IP 地址,从 0.0.0.0 一直到 255.255.255.255 。
互联网上的每一台计算机,都会分配到一个 IP 地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机。比如,IP 地址 172.16.254.1,这是一个 32 位的地址,假定它的网络部分是前 24 位(172.16.254),那么主机部分就是后 8 位(最后的那个1)。处于同一个子网络的电脑,它们 IP 地址的网络部分必定是相同的,也就是说 172.16.254.2 应该与 172.16.254.1 处在同一个子网络。
但是,问题在于单单从 IP 地址,我们无法判断网络部分。还是以 172.16.254.1 为例,它的网络部分,到底是前 24 位,还是前 16 位,甚至前 28 位,从 IP 地址上是看不出来的。
那么,怎样才能从 IP 地址,判断两台计算机是否属于同一个子网络呢?这就要用到另一个参数”子网掩码”(subnet mask)。
所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于 IP 地址,也是一个 32 位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP 地址 172.16.254.1,如果已知网络部分是前 24 位,主机部分是后 8 位,那么子网络掩码就是 11111111.11111111.11111111.00000000,写成十进制就是 255.255.255.0。
知道”子网掩码”,我们就能判断,任意两个 IP 地址是否处在同一个子网络。方法是将两个 IP 地址与子网掩码分别进行 AND 运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。
比如,已知 IP 地址 172.16.254.1 和 172.16.254.233 的子网掩码都是 255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行 AND 运算,结果都是 172.16.254.0,因此它们在同一个子网络。
总结一下,IP 协议的作用主要有两个,一个是为每一台计算机分配 IP 地址,另一个是确定哪些地址在同一个子网络。
4. 3 IP 数据包
根据 IP 协议发送的数据,就叫做 IP 数据包。不难想象,其中必定包括 IP 地址信息。
但是前面说过,以太网数据包只包含 MAC 地址,并没有 IP 地址的栏位。那么是否需要修改数据定义,再添加一个栏位呢?
回答是不需要,我们可以把 IP 数据包直接放进以太网数据包的”数据”部分,因此完全不用修改以太网的规格。这就是互联网分层结构的好处:上层的变动完全不涉及下层的结构。
具体来说,IP 数据包也分为”标头”和”数据”两个部分。

“标头”部分主要包括版本、长度、IP 地址等信息,”数据”部分则是 IP 数据包的具体内容。它放进以太网数据包后,以太网数据包就变成了下面这样。

IP 数据包的”标头”部分的长度为 20 到 60 字节,整个数据包的总长度最大为 65,535 字节。因此,理论上,一个 IP 数据包的”数据”部分,最长为 65,515 字节。前面说过,以太网数据包的”数据”部分,最长只有 1500 字节。因此,如果 IP 数据包超过了 1500 字节,它就需要分割成几个以太网数据包,分开发送了。
4. 4 ARP 协议
关于”网络层”,还有最后一点需要说明。
因为 IP 数据包是放在以太网数据包里发送的,所以我们必须同时知道两个地址,一个是对方的 MAC 地址,另一个是对方的 IP 地址。通常情况下,对方的 IP 地址是已知的(后文会解释),但是我们不知道它的 MAC 地址。
所以,我们需要一种机制,能够从 IP 地址得到 MAC 地址。
这里又可以分成两种情况。第一种情况,如果两台主机不在同一个子网络,那么事实上没有办法得到对方的 MAC 地址,只能把数据包传送到两个子网络连接处的”网关”(gateway),让网关去处理。
第二种情况,如果两台主机在同一个子网络,那么我们可以用 ARP 协议,得到对方的 MAC 地址。ARP 协议也是发出一个数据包(包含在以太网数据包中),其中包含它所要查询主机的 IP 地址,在对方的 MAC 地址这一栏,填的是 FF:FF:FF:FF:FF:FF,表示这是一个”广播”地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出 IP 地址,与自身的 IP 地址进行比较。如果两者相同,都做出回复,向对方报告自己的 MAC 地址,否则就丢弃这个包。
总之,有了 ARP 协议之后,我们就可以得到同一个子网络内的主机 MAC 地址,可以把数据包发送到任意一台主机之上了。
五、传输层(Transport Layer)
5. 1 传输层的由来
有了 MAC 地址和 IP 地址,我们已经可以在互联网上任意两台主机上建立通信。
接下来的问题是,同一台主机上有许多程序都需要用到网络,比如,你一边浏览网页,一边与朋友在线聊天。当一个数据包从互联网上发来的时候,你怎么知道,它是表示网页的内容,还是表示在线聊天的内容?
也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做”端口”(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。
“端口”是 0 到 65535 之间的一个整数,正好 16 个二进制位。0 到 1023 的端口被系统占用,用户只能选用大于 1023 的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。
“传输层”的功能,就是建立”端口到端口”的通信。相比之下,”网络层”的功能是建立”主机到主机”的通信。只要确定主机和端口,我们就能实现程序之间的交流。因此,Unix 系统就把主机+端口,叫做”套接字”(socket)。有了它,就可以进行网络应用程序开发了。
5. 2 UDP 协议
现在,我们必须在数据包中加入端口信息,这就需要新的协议。最简单的实现叫做 UDP 协议,它的格式几乎就是在数据前面,加上端口号。
UDP 数据包,也是由”标头”和”数据”两部分组成。

“标头”部分主要定义了发出端口和接收端口,”数据”部分就是具体的内容。然后,把整个 UDP 数据包放入 IP 数据包的”数据”部分,而前面说过,IP 数据包又是放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:

UDP 数据包非常简单,”标头”部分一共只有 8 个字节,总长度不超过 65,535 字节,正好放进一个 IP 数据包。
5. 3 TCP 协议
UDP 协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。
为了解决这个问题,提高网络可靠性,TCP 协议就诞生了。这个协议非常复杂,但可以近似认为,它就是有确认机制的 UDP 协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。
因此,TCP 协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。
TCP 数据包和 UDP 数据包一样,都是内嵌在 IP 数据包的”数据”部分。TCP 数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常 TCP 数据包的长度不会超过 IP 数据包的长度,以确保单个 TCP 数据包不必再分割。
六、应用层(Application Layer)
应用程序收到”传输层”的数据,接下来就要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。
“应用层”的作用,就是规定应用程序的数据格式。
举例来说,TCP 协议可以为各种各样的程序传递数据,比如 Email、WWW、FTP 等等。那么,必须有不同协议规定电子邮件、网页、FTP 数据的格式,这些应用程序协议就构成了”应用层”。
这是最高的一层,直接面对用户。它的数据就放在 TCP 数据包的”数据”部分。因此,现在的以太网的数据包就变成下面这样。

至此,整个互联网的五层结构,自下而上全部讲完了。这是从系统的角度,解释互联网是如何构成的。下一次,我反过来,从用户的角度,自上而下看看这个结构是如何发挥作用,完成一次网络数据交换的。
七、一个小结
先对前面的内容,做一个小结。
我们已经知道,网络通信就是交换数据包。电脑A向电脑B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑之间的通信。数据包的结构,基本上是下面这样:

发送这个包,需要知道两个地址:
对方的 MAC 地址
对方的 IP 地址
有了这两个地址,数据包才能准确送到接收者手中。但是,前面说过,MAC 地址有局限性,如果两台电脑不在同一个子网络,就无法知道对方的 MAC 地址,必须通过网关(gateway)转发。

上图中,1 号电脑要向 4 号电脑发送一个数据包。它先判断 4 号电脑是否在同一个子网络,结果发现不是(后文介绍判断方法),于是就把这个数据包发到网关A。网关A通过路由协议,发现 4 号电脑位于子网络B,又把数据包发给网关B,网关B再转发到 4 号电脑。
1号电脑把数据包发到网关A,必须知道网关A的 MAC 地址。所以,数据包的目标地址,实际上分成两种情况:
场景
数据包地址
同一个子网络
对方的 MAC 地址,对方的 IP 地址
非同一个子网络
网关的 MAC 地址,对方的 IP 地址
发送数据包之前,电脑必须判断对方是否在同一个子网络,然后选择相应的 MAC 地址。接下来,我们就来看,实际使用中,这个过程是怎么完成的。
八、用户的上网设置
8. 1 静态 IP 地址
你买了一台新电脑,插上网线,开机,这时电脑能够上网吗?
通常你必须做一些设置。有时,管理员(或者 ISP)会告诉你下面四个参数,你把它们填入操作系统,计算机就能连上网了:
本机的 IP 地址
子网掩码
网关的 IP 地址
DNS 的 IP 地址
下图是 Windows 系统的设置窗口。

这四个参数缺一不可,后文会解释为什么需要知道它们才能上网。由于它们是给定的,计算机每次开机,都会分到同样的 IP 地址,所以这种情况被称作”静态 IP 地址上网”。
但是,这样的设置很专业,普通用户望而生畏,而且如果一台电脑的 IP 地址保持不变,其他电脑就不能使用这个地址,不够灵活。出于这两个原因,大多数用户使用”动态 IP 地址上网”。
8. 2 动态 IP 地址
所谓”动态 IP 地址”,指计算机开机后,会自动分配到一个 IP 地址,不用人为设定。它使用的协议叫做 DHCP 协议。
这个协议规定,每一个子网络中,有一台计算机负责管理本网络的所有 IP 地址,它叫做”DHCP 服务器”。新的计算机加入网络,必须向”DHCP 服务器”发送一个”DHCP 请求”数据包,申请 IP 地址和相关的网络参数。
前面说过,如果两台计算机在同一个子网络,必须知道对方的 MAC 地址和 IP 地址,才能发送数据包。但是,新加入的计算机不知道这两个地址,怎么发送数据包呢?
DHCP 协议做了一些巧妙的规定。
8. 3 DHCP 协议
首先,它是一种应用层协议,建立在 UDP 协议之上,所以整个数据包是这样的:

(1)最前面的”以太网标头”,设置发出方(本机)的 MAC 地址和接收方(DHCP 服务器)的 MAC 地址。前者就是本机网卡的 MAC 地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。
(2)后面的”IP 标头”,设置发出方的 IP 地址和接收方的 IP 地址。这时,对于这两者,本机都不知道。于是,发出方的 IP 地址就设为0.0.0.0,接收方的 IP 地址设为 255.255.255.255。
(3)最后的”UDP 标头”,设置发出方的端口和接收方的端口。这一部分是 DHCP 协议规定好的,发出方是 68 端口,接收方是 67 端口。
这个数据包构造完成后,就可以发出了。以太网是广播发送,同一个子网络的每台计算机都收到了这个包。因为接收方的 MAC 地址是 FF-FF-FF-FF-FF-FF,看不出是发给谁的,所以每台收到这个包的计算机,还必须分析这个包的 IP 地址,才能确定是不是发过自己的。当看到发出方 IP 地址是0.0.0.0,接收方是 255.255.255.255,于是 DHCP 服务器知道”这个包是发过我的”,而其他计算机就可以丢弃这个包。
接下来,DHCP 服务器读出这个包的数据内容,分配好 IP 地址,发送回去一个”DHCP 响应”数据包。这个响应包的结构也是类似的,以太网标头的 MAC 地址是双方的网卡地址,IP 标头的 IP 地址是 DHCP 服务器的 IP 地址(发出方)和 255.255.255.255(接收方),UDP 标头的端口是 67(发出方)和 68(接收方),分配给请求端的 IP 地址和本网络的具体参数则包含在 Data 部分。
新加入的计算机收到这个响应包,于是就知道了自己的 IP 地址、子网掩码、网关地址、DNS 服务器等等参数。
8. 4 上网设置:小结
这个部分,需要记住的就是一点:不管是”静态 IP 地址”还是”动态 IP 地址”,电脑上网的首要步骤,是确定四个参数。这四个值很重要,值得重复一遍:
本机的 IP 地址
子网掩码
网关的 IP 地址
DNS 的 IP 地址
有了这几个数值,电脑就可以上网”冲浪”了。接下来,我们来看一个实例,当用户访问网页的时候,互联网协议是怎么运作的。
九、一个实例:访问网页
9. 1 本机参数
我们假定,经过上一节的步骤,用户设置好了自己的网络参数:
本机的 IP 地址:192.168.1.100
子网掩码:255.255.255.0
网关的 IP 地址:192.168.1.1
DNS 的 IP 地址:8.8.8.8
然后他打开浏览器,想要访问 Google,在地址栏输入了网址:www.google.com

这意味着,浏览器要向 Google 发送一个网页请求的数据包。
9. 2 DNS 协议
我们知道,发送数据包,必须要知道对方的 IP 地址。但是,现在,我们只知道网址 www.google.com,不知道它的 IP 地址。
DNS 协议可以帮助我们,将这个网址转换成 IP 地址。已知 DNS 服务器为 8.8.8.8,于是我们向这个地址发送一个 DNS 数据包(53端口)。

然后,DNS 服务器做出响应,告诉我们 Google 的 IP 地址是 172.194.72.105。于是,我们知道了对方的 IP 地址。
9. 3 子网掩码
接下来,我们要判断,这个 IP 地址是不是在同一个子网络,这就要用到子网掩码。
已知子网掩码是 255.255.255.0,本机用它对自己的 IP 地址 192.168.1.100,做一个二进制的 AND 运算(两个数位相同,结果为1,否则为0),计算结果为 192.168.1.0;然后对 Google 的 IP 地址 172.194.72.105 也做一个 AND 运算,计算结果为 172.194.72.0。这两个结果不相等,所以结论是,Google 与本机不在同一个子网络。
因此,我们要向 Google 发送数据包,必须通过网关 192.168.1.1 转发,也就是说,接收方的 MAC 地址将是网关的 MAC 地址。
9. 4 应用层协议
浏览网页用的是 HTTP 协议,它的整个数据包构造是这样的:

HTTP 部分的内容,类似于下面这样:
GET / HTTP/1.1
Host: www.google.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1) ……
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: … …
我们假定这个部分的长度为 4960 字节,它会被嵌在 TCP 数据包之中。
9. 5 TCP 协议
TCP 数据包需要设置端口,接收方(Google)的 HTTP 端口默认是 80,发送方(本机)的端口是一个随机生成的 1024-65535 之间的整数,假定为 51775。
TCP 数据包的标头长度为 20 字节,加上嵌入 HTTP 的数据包,总长度变为 4980 字节。
9. 6 IP 协议
然后,TCP 数据包再嵌入 IP 数据包。IP 数据包需要设置双方的 IP 地址,这是已知的,发送方是 192.168.1.100(本机),接收方是 172.194.72.105(Google)。
IP 数据包的标头长度为 20 字节,加上嵌入的 TCP 数据包,总长度变为 5000 字节。
9. 7 以太网协议
最后,IP 数据包嵌入以太网数据包。以太网数据包需要设置双方的 MAC 地址,发送方为本机的网卡 MAC 地址,接收方为网关 192.168.1.1 的 MAC 地址(通过 ARP 协议得到)。
以太网数据包的数据部分,最大长度为 1500 字节,而现在的 IP 数据包长度为 5000 字节。因此,IP 数据包必须分割成四个包。因为每个包都有自己的 IP 标头(20字节),所以四个包的 IP 数据包的长度分别为 1500、1500、1500、560。

9. 8 服务器端响应
经过多个网关的转发,Google 的服务器 172.194.72.105,收到了这四个以太网数据包。
根据 IP 标头的序号,Google 将四个包拼起来,取出完整的 TCP 数据包,然后读出里面的”HTTP 请求”,接着做出”HTTP 响应”,再用 TCP 协议发回来。
本机收到 HTTP 响应以后,就可以将网页显示出来,完成一次网络通信。

这个例子就到此为止,虽然经过了简化,但它大致上反映了互联网协议的整个通信过程。
http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

vbox 与 kvm 的区别

vbox 与 kvm 的区别:
vbox 是由 qemu 改写而成,包含大量 qemu 代码。可以使用于 不支持 虚拟化的cpu。值得说的一点:vbox 在图形方面比较好,能进行2D 3D加速。cpu控制不理想(估计是因为图形支持的缘故)。操作上有独立的图形界面,易于上手。
kvm 是linux内核包含的东西,使用qemu作为上层管理(命令行)。cpu 必须支持虚拟化。性能,作为服务器很好,可是图形能力十分的差。即使放电影,图像也是像刷油漆一样,一层一层的。cpu使用率控制很好。 控制上比较简洁,功能比较丰富:比如使用 “无敌功能”所有更改指向内存,你的镜像永远保持干净。 “母镜像”功能让你拥有n个独立快照点。 还有很多参数。另外,kvm作为内核级的虚拟机,刚开始发展关注的公司比较多——但是还没有达到商业应用的水平。
总体而言:在支持 虚拟化的情况下,vbox 和 kvm 的性能差不多,主要是面向对象不同:kvm使用于服务器,vbox使用于桌面应用。
***********************************************
关于kvm:
kvm是开源软件,全称是kernel-based virtual machine(内核级虚拟机)。是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的linux 全虚拟化 解决方案。它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko 或 kvm-AMD.ko)。
kvm还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。
kvm能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(ps:它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)。
在主流的linux内核,如2.6.20以上的内核均包含了kvm核心。
KVM官方地址: http://kvm.qumranet.com/kvmwiki
KVM的Changelog: http://kvm.qumranet.com/kvmwiki/ChangeLog, 可以知道最新的版本是多少,做了那些改变。
KVM下载地址在sourceforge.net上: http://sourceforge.net/project/showfile … _id=180599
KVM的Howto文档: http://kvm.qumranet.com/kvmwiki/HOWTO
Kqemu: http://sourceforge.net/projects/kqemu/
Qemu: http://fabrice.bellard.free.fr/qemu/index.html
**************************入门篇(基于ubuntu9.10)
基本知识:
qemu是独立虚拟软件,能独立运行虚拟机(根本不需要kvm)。kqemu是该软件的加速软件。kvm并不需要qemu进行虚拟处理,只是需要它的上层管理界面进行虚拟机控制。虚拟机依旧是由kvm驱动。
所以,大家不要把概念弄错了,盲目的安装qemu和kqemu。
安装准备:
查看你的硬是否支持虚拟化。
命令:
egrep ‘(vmx|svm)’ /proc/cpuinfo
要有 vmx 或 svm 的标识才行。总的说来,AMD在虚拟化方面作得更好一些。
使用intel cpu的朋友还需要进入bios进行设置——因为我的是AMD,所以设置方法不敢乱说。
安装kvm:
打开新立得软件库,安装kvm。系统会自动安装相关的软件包,包括qemu-kvm。什么kvm-AMD 或 kvm-intel模式系统都自动处理好了。现在大多文章都是2008年写的,已经过时了,可惜好多人只知道复制,好多设置已经不需要了,有些跟官方的完全冲突。
创建虚拟镜像:
命令(先cd 到你要保存镜像的位置):
kvm-img create xxx.img 2G
由于是要安装xp精简系统,2G已经足够大了(安装下来只要700M)。xxx 代表名字,想取什么都可以。最好是连续的英文.默认格式为raw,当然你可以自己设定,比如(-f qcow2)加在 create 后面即可。(.img这个后缀是我随便编的,kvm对后缀名没有要求)
其它格式如下:
Supported formats: cow qcow vmdk cloop dmg bochs vpc vvfat qcow2 parallels nbd host_cdrom host_floppy host_device raw tftp ftps ftp https http
安装虚拟机系统:
命令(先cd 到你要保存镜像的位置):
kvm -hda xxxx.img -cdrom /path/to/boot-media.iso -boot d -m 512
说明几点:/path/to/boot-media.iso 只是个举例。具体为你的系统盘镜像位置。-m 为虚拟机内存大小,单位是M默认(不写这个选项)为128M。当然,自己看着给吧。
建议如果虚拟的是xp系统,把页面缓存给关了。
使用虚拟机最简单的命令:
命令(先cd 到你要保存镜像的位置):
kvm -m 1024 -hda xxx.img
由于默认内存是128M,所以不得不指定一下,要不连-m 1024都可以省了。此时是没有声卡的,当然也可加上声音选项。cpu默认是一颗,网络默认启动(为net-内部端口映射)(可以上网,但是主机识别不了,它也无法连接主机)。
你可以使用:
kvm -m 1024 -hda /xxx/xxx/xxx.img
你也可以把它作为桌面“创建启动器”的命令使用。每次轻轻一点就可使用了。
****************************中级篇
命令:
kvm –help
命令:
kvm-img –help
看看具体的选项说明,需要什么功能就在“最简单命令”后面加就是了——特别简单、功能又很多。用的满意了,可以做成“程序启动器”。或者打开gedit,把命令保存进去,把文件名改为xxx.sh。再把属性改为“可执行”,要用就点击。
比如:kvm -m 1024 -hda xxx.img -xxx xx -xxxx xxx -xxxxxx -xxx
现在分功能讲解
1,文件共享
我们希望虚拟机能和主机对一些文件夹进行共享操作。类似于vbox的共享文件夹。
首先安装 samba 。这是linux的共享功能软件,支持windows系统的访问。记住不是samba4
然后,新建一个文件夹,属性。共享选项,把所有选项开启。应用。接受系统的权限的更改。
好了,默认在虚拟机的网上邻居,就能找见了。没有?看看整个网络(侧边任务)。
简单吧,kvm早已升级了。根本不需要什么配置。
关于权限:你是否有“无法访问,权限不够……”的问题?主机无法修改共享文件“你不是该文件的创建者”?
那是因为linux的权限相当的严格,必须要放权别人才能访问、修改。
如果上级文件夹(无论哪个)不让读取(比如: 其它;文件夹访问 无),那么就会出现无法访问的情况。你要设置上级文件夹权限为(其它;文件夹访问 访问文件)就可以了,不必完全放权。
因为安全考虑,我的用户文件夹(其它;文件夹访问 无)。所以一开始就出了权限问题。我的解决办法是使用命令:
sudo gnome-open /home/
在home中再新建一个文件夹,在属性上,把创建者改为非root(改为经常使用的普通用户),组群:sambashare。权限全为:创建和删除。
经测试,外网虽然能显示共享文件夹,却无法访问——保证只有虚拟机可以访问。(我使用了ufw防火墙)
windows虚拟机在共享文件夹中创建的文件,主机是无法更改的。要设置权限:
我的电脑-打开-工具-文件夹选项-查看
把“使用简单的文件共享”选项去掉。在文件(夹)属性——安全:知道怎么弄了吧。
linux的文件夹系统权限作的十分的好。比如你把其它非受权文件夹的链接复制到共享文件夹,依然无法访问。windows那种权限的随意性,看见就想哭。
多说一点:我的电脑右键,可以把共享文件夹设置为网络硬盘。相当于移动硬盘,可以方便的安装软件,保存资料。
2。无敌模式(-snapshot)
-snapshot write to temporary files instead of disk image files
意思是不更改镜像文件,启动后的所有改动均不会往镜像文件上写。临时文件存放在内存中了,具体是cached。
同样的功能,在vbox要独立安装软件。效率可想而知……
在命令后面空格加上:
-snapshot
即可
3.高速网络(-net nic,model=virtio -net user)
表 2. 虚拟网络模块的性能差异
虚拟网络模块 网络传输速度(ssh) 客户机操作系统 网络状态
rtl8029 200-300KB/s SLES10SP2 (kernel 2.6.16-60) 不稳定
e1000 4.8-5.4MB/s SLES10SP2 (kernel 2.6.16-60) 稳定
virtio 10.6-11.1MB/s SLES11 (kernel 2.6.27-19) 稳定
驱动下载地址:
http://sourceforge.net/projects/kvm/files/
名字是 kvm-driver-disc 的 NETKVM-20081229.iso
具体可能有变化,使用命令:
kvm -m 1024 -hda xp.img -cdrom /home/cat650/linux/kvm/NETKVM-20081229.iso -enable-kvm -net nic,model=virtio -net user
其中:-cdrom是加载光驱的意思。网络默认设置是 (-net nic -net user) 这里由于要指定virtio模块所以要把命令加上。然后自动安装驱动就行了。听说速度接近真实网卡——明显是为打造虚拟服务器配置的。
以后在启动虚拟机命令后面加上-net nic,model=virtio -net user就可以了。
4.高速虚拟
VirtIO paravirtual 是 Linux 虚拟机平台上统一的虚拟 IO 接口驱动。通常主机为了让客户机像在真实环境中一样运行,需要为客户机创建各式各样的虚拟设备,如磁盘,网卡,显卡,时钟,USB 等。这些虚拟设备大大降低了客户机的性能。如果客户机不关注这些硬件设备,就可以用统一的虚拟设备代替他们,这样可以大大提高虚拟机的性能。这个统一的标准化接口在 Linux 上就是 VirtIO 。需要注意的是 VirtIO 运行在 kernel 2.6.24 以上的版本中才能发挥它的性能优势。另外 KVM 项目组也发布了 Windows 平台上的 VirtIO 驱动,这样 windows 客户机的网络性能也可以大大提高了。
下载地址:http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers
viostor是磁盘的虚拟驱动。
带图片的参考:http://www.linux-kvm.org/page/WindowsGuestDrivers/viostor/installation
命令:把-hda xxx.img 替换为-drive file=/home/cat650/virt/xp.img,if=virtio,boot=on
意思是使用virtio磁盘系统,并作为启动盘(默认是boot=off,作为附加的第二硬盘)。第一次使用的时候记得挂载viostorXXXX.img,来安装驱动。
5.使用金手指“母镜像”功能
要求,镜像格式为 qcow2 。作用:在“母镜像”的基础上,建立一个新的镜像。虚拟机操作这个新镜像时不会对“母镜像”进行任何更改(只读“母镜像”),新镜像只保存由于操作产生的与“母镜像”的数据差异(大小很小)。由此实现超越“快照”“还原点”的金手指功能(数量没有限制)。
命令(先cd 到你要保存镜像的位置):
kvm-img create -b xp.img -f qcow2 xp.test
其中xp.img是“母镜像”(参数 -b xxx),xp.test是新镜像——只能用 qcow2 格式。
新镜像的使用:正常使用即可。
6.镜像格式转换,镜像信息查询
能转换的格式有:raw,qcow2,qcow,cow,vmdk,cloop
如果你记不清你创建的镜像是什么格式的,可以使用命令(先cd 到你要保存镜像的位置):
kvm-img info xxx.img
关于格式的优缺点,请参看高级篇
转换命令(先cd 到你要保存镜像的位置):
kvm-img convert -f raw -O qcow2 xp.img xp.qco
注意:-O是字母o的大写。
这条命令举例的意思是:把名为xp.img格式为raw的镜像转换成新镜像xp.qco格式为qcow2
其它格式”vmdk”是 VMware 3 / 4 兼容镜像格式。
*******************************深入了解
1.kvm-img 命令
用法:kvm-img 后续命令 [命令选项]
后续命令如下
check [-f fmt] filename
create [-F base_fmt] [-b base_image] [-f fmt] [-o options] filename [size]
commit [-f fmt] filename
convert [-c] [-f fmt] [-O output_fmt] [-o options] [-B output_base_image] filename [filename2 […]] output_filename
info [-f fmt] filename
snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename
部分内容详解:
filename
镜像的文件名(比如:xp.img cat.raw……后缀名随便取,或者不取)
base_image
只读的镜像——有点像“母镜像”。在“母镜像”基础上创建的镜像只储存对“母镜像”的修改。
output_base_image
forces the output image to be created as a copy on write image of
the specified base image; “output_base_image” should have the same
content as the input’s base image, however the path, image format,
etc may differ
base_fmt
base_image(母镜像) 的格式. 参考 fmt
fmt
指镜像格式。建议大多数情况让系统自动选择(不使用该选项)。
主要格式如下:
“raw”
Raw disk image format (默认).该格式精简,易被多种虚拟机接受。
如果你的系统支持 holes (如 linux 的 ext2 ext3 ext4? windows 的 NTFS),那么它将有效节约空间(比如你创建的磁盘是2G,虚拟系统只使用了800M,那么它实际也只占用800M的空间)。使用命令“kvm-img info 镜像文件名”,将显示实际使用的大小。linux用户还可以使用“ls -ls”命令直接查看。
“qcow2”
QEMU 镜像格式, 使用最多的格式. 创建的镜像比较小(用多少就占多少),对于系统文件不支持 holes 的(比如windows系统下使用qemu)很有帮助。可进行AES加密,zlib基本压缩,并支持多种VM的快照(snapshots)。
“qcow”
古老的 QEMU 镜像格式. Left for compatibility.
“cow”
User Mode Linux Copy On Write image format. Used to be the only
growable image format in QEMU. It is supported only for
compatibility with previous versions. It does not work on
win32.不能运行win32.
“vmdk”
VMware 3 / 4 兼容镜像格式
“cloop”
Linux Compressed Loop image, useful only to reuse directly
compressed CD-ROM images present for example in the Knoppix CD-
ROMs.
size
镜像文件的大小比特. 一般单位使 “M” (megabyte, 1024k) 、 “G” (gigabyte, 1024M)、 T (terabyte, 1024G) 。 “b” is ignored.
output_filename
生成的镜像文件名
output_fmt
生成的镜像文件格式

我想我已经活到了一个尴尬的年龄

我想我已经活到了一个尴尬的年龄
作者:他城
以前听说,人的长大是突然之间的事儿。我并不知道什么是所谓的长大、成熟,但是我突然清楚地意识到自己不再年轻。昨天还以为自己的未来还有无限的可能,像是还没有分化的细胞,可以分裂成任意器官。今天就发现很多世界冠军都比自己年轻很多、那些不大自己几岁的人已经坐上了现在还不敢想的位子。还在考虑着如何把前浪拍在沙滩上,突然自己就已经被后浪拍在沙滩上。
在25岁这个年纪,每隔几步就一个路口,少有人知道该走哪一边,像是吃饭的时候要选人多的餐馆一样,很多人挤向本来就人满为患的路。偏偏很前方的路口又很窄,千军万马去闯独木桥,想来世上已无阳关道。公务员、事业单位这些香饽饽让意气风发的年轻人们明争暗斗,为的不是什么理想、自我价值,只是稳定的一个月几千块的皇粮。干什么不重要,拿多少才重要。工资不重要,福利才是王道。
话又说回来,这并不是我们的错,我们也是被诅咒的一代。
一、梦想
好久没听人说过这个词,也很久没有见过这个词了。谁的心里没有梦想的种子?可偏偏这个时代使用这种文字的地方不是一块肥沃的土壤。在这片土地上,如何生长不重要,长成什么样不重要,唯一重要的是结了什么样的果实。每每当我看到国外很多作家简介里有哲学家这个称谓时,我总是感到无比的同情:这个职业的人如何生存啊……在咱这个全球第二大经济体,干这行的人估计比省长还少,因为咱不需要哲学家,哲学家还不如妓女能拉动GDP。
太久没有看见身边的谁实现他的梦想,也太久没有听见谁实现了梦想,因为看看身边的人,都梦归梦想归想,该干嘛还是干嘛。所以我在想,到底有没有梦想这种东西?它会不会像小时候不盖好被子睡觉时,妈妈说的会吃脚丫子的怪兽一样,只是童年时让我们按照某种方式成长的工具。长大后我们在课本上学到其实没有会吃脚丫子的怪兽,可是没有人告诉我们其实也没有什么梦想。
我听过很多人对我说,真希望你能实现自己的梦想,像是把最后的希望寄托给我一样。后来我看新闻听说有人打算开始环游世界,我内心非常希望他能走完。那一瞬间我才发现,原来藏在心底的那些很难实现的愿望,总是需要找个寄托。
如果单说梦想本身,那是一件十分美好的事物。俞敏洪说每条河流都有一个梦想,那就是奔向大海。多么令人向外啊!可以穿过森林、越过石头、飞跃瀑布,在这个国家甚至还有可能冲开大坝,然后流过良田……最后进入大海。我终于明白为什么如海子这样能写出“为每一棵树取一个温暖的名字”的诗人,如梵高这样能画出最明亮的黄的画家,最后都选择结束自己的生命。
大海很遥远,但并没有遥不可及,只是我们的生命过于沉重。
二、房
如果进行“中国最重的字”评选活动,这个字应当是毫无悬念的胜出。如果说“不要迷恋哥,哥只是个传说”这样的话语是一种洒脱的话,那么“不要迷恋哥,哥没有房”一定是最黑色的幽默。记得两年前我刚毕业的时候,成天算着怎么才能买房子,可左算右算不吃不喝都得20来年。正当在这个梦魇中挣扎之际,一条手机报拯救了我,报上明确指出北京房价5环均价已经过万,而且今后只会涨不会跌。突然之间,世界一片光明,那是我到北京几年天空最蓝的一天,空气最好的一天。因为我终于不用再痛苦,我清楚的知道自己不会搭上环游世界的钱去买一个厨房。
不买归不买,可难免受到身边人的影响,尤其是可能是未来丈母娘的广大中年妇女们。当去年某专家抛出“丈母娘需求”是刚性需求的时候,我这两个蛋疼的啊、两个乳酸的啊。那段时间对于丈母娘这个物种的普遍印象跌倒了历史最低点,后来社会上的某个群体让我找到了阿Q的点,这个群体就是传说中的小三。我发现虽然丈母娘都要求有房子,但是基本都只要一套,而现在的情况是有一套房子就可以有一个女人。想到此,我心情开朗许多。虽然我对女人商品化一直不能接受,但是至少这让我看到在社会主义市场经济的调节下,男性同胞们可以有更多选择,而这完全是一个买方市场。
如果我没记错的话中国男女比例大概是110:100,也就是说按照理论,每110个男人就有10个没有配对的女人。但实际情况是GAY比LES多,也就是说男同胞们可以内部消化一部分,所以从性向选择来说这个比例基本是合适的。但是如果把那些有多套房的老总们纳入考虑范围的话,还是会有一部分男人没有老婆。简而言之,大龄单身汉的数量和有钱人们多余房子的数量成正比。
无论你是以一套房为目标,还是以多套房为目标,你都绕不开”房”这个字。每一滴水都背负着一块砖的重量,怎么还能激情的奔向大海。
三、城市
与梦想最相关的,应该是度过时间的方式,即生活方式。没有什么生活方式是一定正确的,每个人都责无旁贷的要去考虑并选择自己的生活方式。这个时候“城市”的选择就成了如今大多数北漂青年最纠结的话题。一线城市节奏快、刺激、机会多、牛人多、帅哥多、美女多、吃的多、玩儿的多……总之就是选择多。而现代社会有一个物质发展解决不了的社会问题,就是面对多元化选择的时候,人如何能够从选择中获得最大的幸福感和满足感。因为从经济学角度来说,选择多意味着机会成本大。简单而言就是,如果某天晚上有两个朋友约你,一个去逛街,一个去聊天,那么你的选择只会造成一个机会的丢失。可当某天晚上有10个朋友约你干不同的事的时候,你就会开始痛苦,每一个约会都有你想要的方面,这时候你得到的是1,失去的机会是9。而最痛苦莫过于恋爱的时候,其实每个人都会是真爱,问题是你俩有没有真正去爱。吃着碗里的看着锅里的是人类的本性,只不过不同的人有不同的骑驴找马的资本,不同人有不同的骑驴不找马的淡定。
我一直觉得我向往小城市的生活。在这样一个城市有另一个我,可以每天下班陪家人吃饭,然后看看书,写写字,和朋友出去聚聚……不用挤地铁,不用每天用两个小时“在路上”。到底有什么东西是我放不下的呢?或许只是一个自命不凡的平凡人对自己不平凡的期望。每种价值观背后一定都有某种哲学思想的倾向。
四、哲学
很早的时候刚开始接触哲学书籍时看到过一句话:哲学是一场危险的旅行,在救赎之前会有很长的迷失。现在我懂了,因为我已迷失在各种观点之中。正如也许你不知道弗洛伊德是谁,但是你一定知道“潜意识”这个词,你也许不知道柏拉图所描绘的世界是什么样,但是你一定或多或少受到他的影响。柏拉图是苏格拉底的学生,而苏格拉底就是那个成天在街上与人辩论,最后由于坚持自己的理念而被处死的那个爱智慧的人。他几乎没有留下任何著作,而他所有的哲学思想都是通过柏拉图写的对话来表达的(这个很像中国的孔老夫子)。柏拉图认为世界存在原型,每个事物都有原型,而目前盛行的“柏拉图式爱情”毫无疑问是对爱情原型的谬误,我甚至一度认为这种谬误和饭岛爱大姐那本书有因果关系。
哲学讨论的是人,更多关注的是人的本质,存在的意义。而每种观点都能够催生出截然不同的人和生活方式。可以说每种向往背后都有一种哲学取向在左右,就算是没有看过任何哲学书籍的人。因为哲学不是一门科学,需要专门的学习,而是一门对于世界看法的学科,每个人都可以有意见。
中国的古代史是贯穿了儒、道、佛的历史,尤其儒家思想是整个民族思想上最深的烙印。如今,儒家思想在与成功学的对垒中屡屡挫败,三十而立指的不再是思想上有明确的方向,坚定而果敢,而是有房有车。看过一则研究表明,长时间在高强度、高压力环境下工作会使人的性功能退化。如果继续本着以经济建设为中心的指导思想,那么“三十而立、四十不惑”将成为最具幽默感的社会现象,那时候年轻小伙子将成为市场上的抢手货,但是目前看这篇文章的人都已经老了。
初中的时候我们只知道好好读书是为了上好高中,然后上好大学,然后找好工作,当毕业了才开始去思考:什么是好工作?当我们还不能理清思绪,就得被迫接受一个巨大的标准:收入。然后就有各种各样的广告,告诉你有钱的好处,然后就一头扎进经济浪潮之中。生活理想、生活方式、自我价值统统抛在后面。不知道自己想要什么,不知道真正要追求的是什么,本着打哪指哪的态度蜗居在城市之中。
在国外思想家纷纷研究”中庸”的时候,我们自己对这种思想却一知半解,很多人甚至觉得中庸是一种消极退让的思想。相比起古代,现代社会我们面临的抉择和冲击更多,如果说以前是多多益善,那么现在则是越多越乱。我一直挺佩服金庸的,因为他的武侠小说里有很多深刻的哲学思想。比如天龙八部里扫地僧对萧峰和慕容复老爹说,少林每一门绝学都有副作用,需要修相应的佛法才能化解。当你掌控的外在越多,想要保证没有负面作用,那么你内心就要相应的强大。所以说不怕人有钱,就怕有钱人没文化,没文化的人有更不受束缚的想象力,同时却缺乏一定的道德感。中国很多有钱人造成的悲剧、闹剧正源于此。
如果你是一滴水,你有一个奔向大海的梦想,你是想有一颗矛盾的心,还是一个盲目的目标?
五、恋爱
这绝对是史上最能乐此不疲的老生常谈。十几岁的时候如果听到“最美的不是下雨天,是和你一起躲过雨的屋檐”,眼前一定会浮现某个面孔,然后内心激动的一塌糊涂。而到了我这个年纪听到这句词,眼前浮现的只是一个模糊的样子,像是给每个过去分一个权重,然后取了加权平均后计算出的样子。前几天我在文化巷突逢倾盆大雨,雨暴躁地下了1个多小时,我就无奈的在屋檐下站了一个多小时。一开始是很烦躁的,后来慢慢的平静下来,最后甚至开始欣赏雨打在不同材质上的声音,欣赏雨划过每一种颜色的透亮。然后我突然明白,从来不曾有什么屋檐,最美的始终是下雨天。顺便说一下,对于方文山这种30来岁的老男人还能够写出如此单纯的句子,我感到十分开心,想想咱们人才济济的大陆居然“亲爱的你慢慢飞”都能响彻大街小巷,我顿时对台湾的社会氛围刮目相看。
前段时间流行一个签名“我想早恋,可是已经晚了”。看到的时候,我和众多人一样报之一笑,再之后我认真想过这句话。我们怀念的不是早恋,而是为了爱情冲破禁忌的激情和勇气。以前总是听说大学里的爱情有多单纯,当时不相信,毕业了才知道。当爱情被作为一件华丽的旗袍掩盖在种种利益之上放在台面上讨价还价的时候,你才会知道单车后座上那紧贴背的拥抱是多么的真实。我不否认,我羡慕,甚至嫉妒那些从大学走过来的爱情。
当我们这个年纪的人进入准婚年龄,单纯的”爱情”却已束之高阁。很多实际的问题浮出水面,我并不是排斥这些东西,可是似乎我们走的有点儿远了。参加过很多婚礼,每场婚礼上都会有誓词:“无论贫穷、疾病巴拉巴拉……,我都愿意和你在一起”。可真正包含泪水说出誓言的并不多。陆川在参加完刘烨婚礼时说,西式的婚礼和葬礼都能让人思考很多,关于生命、关于意义,而中式的就是图个热闹。当我们什么都想要,硬把西式婚礼加入仪式时,并没有看到人家精华的东西,而是照虎画猫的学了个形式。当誓言都只是一个过场,我们还能把什么当真。
前几天去民政局开未婚证明,有一个窗口没人,我屁颠屁颠的跑过去办。那位大叔悠闲的看着报纸,但是又聚精会神,我叫了两声才会过头来。我说,师傅我要开一个未婚证明,他随口即问,结婚了没。我一时被问傻了……要是结婚了,我开个P的未婚证明啊。然后他递给我一张单子说,填好了隔壁办。当我填好单子后,隔壁的女士很热情的招呼我,小伙子过来这边办。我还纳闷儿为啥服务态度这么好,她随即接着说,他那难得今天清闲,让他休息一下吧,平时忙得不行。我这才仔细看了他的窗口,有一个其实很显眼的牌子上写着”离婚手续办理”。我顿时就乐了,听说过结婚排不上号的,原来离婚也得排队啊。而与他一桌之隔的是”结婚手续办理”。临走时又看了一眼那位大叔,作为一个纳税人,能养这样一个闲人,也未尝不好。
虽然爱情是不分阶级的,但是我如今真有“Too poor to love”的感觉。我不排斥也不反对物质的享受,可是如果物质消费是为了填补内心缺乏的安全感、存在感、关注感,那你将把自己活生生变成一个黑洞。我一直很赞同孔子“素其位”的说法,素富贵、行乎富贵。前几天还和朋友说,有钱了也不能买宝马,会被当成为富不仁的暴发户。当然我承认对于马啊、驴啊我还处于意淫阶段。西方社会有宗教可以帮助人们解决、至少缓解内心和外界的冲突,他们富余的精神活动也并不简单是建立在高度发达的物质基础上。中国没有大范围的宗教信仰,所以解决内心与外界的关系是个很复杂的问题。早期蔡元培校长提出过”美育代替宗教”的救赎思想,如今考艺术的很多是为了成名,而有些则是肚子里没什么墨水,写不出什么字。记得有哲学家说过,爱情说穿了是一种信仰——相信,相信他/她是爱你的,相信你们终会在一起。而如今爱情更像是一场囚徒困境的博弈。
不过,倘若你敢牵我的手,我还是敢拉着你一直走到坟墓。
六、社会
有些事情,明白了是很可怕的。比如对于这个社会的理解,其实从古至今人性变化不大,在我有生之年也不会有重大转折。所以我想是时候停止去独善其身了,没有书生一个国家照样发展。以前我相信文字、图片虽然不能改变世界,但是能改变人们对世界的看法。现在我不这么觉得了,人不经历刻骨铭心的痛就不会反思,欧洲悲剧的意义正在于此。而在这片土地上,有一个很有意思的现象。当某个社会事件独立出现时是一场悲剧,而一旦成风就成为了潜规则式的喜剧。前段时间老郭被封杀我就想,以前翻墙看到的都是悲剧,以后翻墙终于有可能看到喜剧了。
我们从小就学习很多规则,长大以后会发现,越是剑走偏锋越容易成事。规则就像是火锅里的菜,有的人一直告诉你菜好吃,但是他拼命夹肉。我也终于明白当初辞职时老板跟我说的那些束缚着我的东西究竟是什么。我们似乎处于一个突破道德底线无所谓,甚至游走在法律边缘也可以的社会。对于那位西太平洋博士的“宽容”显示的并不是我们民族博大的胸怀,而是极度的功利态度。马云说,一旦你成功了,那你说什么都是对的。他是有智慧的,因为这句话是对这个社会现象较为和谐和华丽的形容。在此问题上韩寒是很识时务的,及时把自己的学历从高中改到了初中,大有大势难违之意。
一个愤青变得不愤青其实是一件很“可怕”的事情,因为他知道的太多了……

linux下用rpm安装mysql

下载地址:http://dev.mysql.com/downloads/mysql/5.1.html,打开网址,找到linux generic项,里面找到5.5.25_x86_64版本下载,需下载两个文件:
MySQL-client-5.5.25a-1.linux2.6.x86_64
MySQL-server-5.5.25a-1.linux2.6.x86_64
1、安装server端:
[root@host127 mysql_5.5.25]# rpm -ivh MySQL-server-5.5.25a-1.linux2.6.x86_64.rpm
Preparing… ########################################### [100%]
ls: cannot access /var/lib/mysql/*.err: No such file or directory
ls: cannot access /var/lib/mysql/*.err: No such file or directory
1:MySQL-server ########################################### [100%]
有以上信息显示为数据库安装成功。
测试是否成功可运行netstat看Mysql端口是否打开,如打开表示服务已经启动,安装成功。Mysql默认的端口是3306。
[root@host127 mysql]# netstat -nat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:55982 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5672 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 248 172.21.48.127:22 172.21.35.203:1930 ESTABLISHED
tcp 0 0 172.21.48.127:22 172.21.35.203:2163 ESTABLISHED
tcp 0 0 :::111 :::* LISTEN
tcp 0 0 :::35056 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 ::1:631 :::* LISTEN
tcp 0 0 :::12865 :::* LISTEN
2、安装client端
[root@host127 mysql_5.5.25]# rpm -ivh MySQL-client-5.5.25a-1.linux2.6.x86_64.rpm
Preparing… ########################################### [100%]
package MySQL-client-5.5.25a-1.linux2.6.x86_64 is already installed
有以上信息,也表示数据库client端安装成功。
3、登陆Mysql
用下面的命令连接mysql,测试是否成功。
登陆Mysql的命令是mysql,mysql的初始管理账号是root,没有密码。
[root@host127 mysql_5.5.25]# mysql
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 3
Server version: 5.5.25a MySQL Community Server (GPL)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.
mysql>

linux下安装JDK

1、通过官网下载软件
版本:jdk-6u31-linux-x64-rpm.bin
2、在cd /usr下生成jdk1.6.0_31文件夹,并将软件上传到此文件夹
给jdk-6u31-linux-x64-rpm.bin添加执行权限:chmod +x jdk-6u31-linux-x64-rpm.bin
执行文件:./jdk-6u31-linux-x64-rpm.bin
生成文件:jdk-6u31-linux-amd64.rpm
给jdk-6u31-linux-amd64.rpm添加执行权限:chmod +x jdk-6u31-linux-amd64.rpm
安装jdk-6u31-linux-amd64.rpm,提示安装成功。(默认的安装位置,在/usr/java/下,即/usr/java/jdk1.6.0_31)
3、设置环境变量
#vi /etc/profile
在最后面加入:
JAVA_HOME=/usr/java/jdk1.6.0_31
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME PATH
保存后退出。
4、重启
reboot后,通过java -version查看版本
[root@host127 ~]# java -version
java version “1.6.0_31”
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
表明JDK安装成功。
5、卸载JDK
找到JDK安装目录的_uninst子目录;
在shell终端执行./uninstall.sh即可卸载JDK。

Linux下安装tomcat

Linux下安装tomcat
先从官网下载安装包:apache-tomcat-6.0.32.tar
1、在usr下建文件夹为tomcat6.0.23,将tar文件放入文件夹中。然后进行解压缩:
tar -zxvf apache-tomcat-6.0.32.tar
解压后生成文件夹tomcat-6.0.23
2、设置环境变量
设置两个环境变量CATALINA_HOME和CATALINA_BASE。
vi ~/.bashrc,加入export CATALINA_BASE=/usr/tomcat6.0.23/tomcat-6.0.23
export CATALINA_HOME=/usr/tomcat6.0.23/tomcat-6.0.23
3、保存后重启
查看下是否设置成功:
[root@127]# echo $CATALINA_HOME
/usr/tomcat6.0.23/tomcat-6.0.23
[root@127]# echo $CATALINA_BASE
/usr/tomcat6.0.23/tomcat-6.0.23
4、运行tomcat
[root@127]# cd /usr/tomcat6.0.23/tomcat-6.0.23/bin
在此目录下,执行startup.sh文件
[root@host127 bin]# ./startup.sh
Using CATALINA_BASE: /usr/tomcat6.0.23/tomecat-6.0.32
Using CATALINA_HOME: /usr/tomcat6.0.23/tomecat-6.0.32
Using CATALINA_TMPDIR: /usr/tomcat6.0.23/tomecat-6.0.32/temp
Using JRE_HOME: /usr/java/jdk1.6.0_31
Using CLASSPATH: /usr/tomcat6.0.23/tomecat-6.0.32/bin/bootstrap.jar
5、验证tomcat
登陆http://localhost:8080查看是否可以登陆tomcat的web界面。