0

[转]25个实用的VMware ESXi命令

Posted by 敬一 on 2015年12月3日 in 虚拟化和LAMP |

2015-05-07 09:21  TechTarget中国

核心提示: 让我们了解一些常见的Linux shell命令。这些命令并非ESXi的专用命令,你会发现很多命令也可以在大多数的Linux发行版中使用。

vCenter Server一直是管理VMware环境的主要工具。尽管通过vCenter Server执行变更及修改操作具有诸多优势,但在每个VMware管理员的职业生涯中难免会遇到vCenter无法使用的情况。vCenter不可用时,使用vSphere client直接连接主机能够在很多方面帮到你,但仍旧有很多任务无法完成。

排除故障时,知道如何使用ESXi shell至关重要,而且对常见的Linux命令以及ESXi命令有一个基本的了解对你来说永远都不是什么坏事儿。

Linux shell命令

首先,让我们了解一些常见的Linux shell命令。这些命令并非ESXi的专用命令,你会发现很多命令也可以在大多数的Linux发行版中使用。

find/cat/grep –在试图查找指定的文件或者在某个文件中查找字符串时这三个命令非常重要。find命令可以基于文件名或者模式查找指定的文件,cat命令用于显示文件内容,grep用于在单个或多个文件内查找指定的字符串。

find /path/to/vm/folder –i name “*delta*” – 列出虚拟机所有的增量磁盘。

cat hostd.log | grep error –在hostd.log中查找所有的”error”字符串

head/tail –查看文件内容时这两个命令非常有用。尽管可以使用cat命令显示文件完整的内容,但head以及tail命令可以用于显示文件开头或结尾的部分,忽略了文件的中间内容。进行故障诊断时tail命令尤为有用,尤其是可以使用-f标记实时监控日志文件发生的变化。

tail -f /var/log/vmkernel.log – 实时查看vmkernel日志发生的变化

less –显示大文件内容时less命令非常有用。通过在cat命令的输出内容之后输入“|”less,可以分页显示输出结果,而且可以向前或向后滚动浏览。

cat /var/log/vpxa.log | less –在屏幕上分页显示vpxa.log文件的内容。

df/vdf –这两个命令显示文件系统的可用空间。df命令显示本地文件系统以及数据存储的容量、已用空间以及可用空间。为查看ESXi主机不同随机磁盘的使用情况,必须使用vdf命令。这两个命令都可以用于发现由于可用空间不足而可能导致的任何问题。

ps/kill –这两个命令分别用于查找ESXi主机内部运行的服务、强制终止这些服务。ps命令包括很多命令行开关,但最常用的是检索正在运行的进程的ID,然后就可以使用Kill命令终止相应的服务。

vi – 如果之前不熟悉vi命令,那么在学习时大多会遇到麻烦。Vi是一个文本编辑器,用于修改文件内容—vSphere管理员通过命令行shell进行故障诊断时必须要具备该技能。

ESXi专用命令

接下来让我们了解一些在ESXi命令行shell下最常用的命令。这些ESXi命令不仅能够帮助你进行故障诊断,还可以用于日常维护以及性能监控。

services.sh – Linux服务通常使用services命令管理,管理ESXi服务是通过使用services.sh命令实现的。Services.sh命令支持的参数包括stop、start、restart,通过这三个参数可以停止、启动或重启所有的ESXi服务。

services.sh restart – 重启所有的ESXi服务

/etc/init.d – 执行位于/etc/init.d目录下的脚本可以启动或停止对应的服务。如果只想重启vCenter Server Agent(vpax服务),可以运行/etc/init.d/vpxa restart 命令。而services.sh restart将重启所有服务。

/etc/init.d/vpxa restart – 重启主机上的 vCenter Agent

cat /etc/chkconfig.db – 查看所有ESXi服务的运行状态。

vmkping –我们都熟悉ping命令的用法及功能。Vmkping命令更进一步,允许使用Vmkernel的IP堆栈通过特定的接口发送ICMP数据包。这意味着你可以通过vMotion网络而非管理网络发送ping包。

vmkping –I vmk1 10.10.10.1 – 通过vmkl接口向10.10.10.1发送ICMP请求

nc –组合使用vmkping、nc命令(netcat),可以确认ESXi主机与特定IP之间的网络连通性。尽管vmkping命令通过ICMP确认连通性,但有时我们想确认是否可以访问特定的TCP端口(例如iSCSI的TCP端口是3260)。

nc –z 10.10.10.10 3260 – 测试是否能够访问10.10.10.10的3260端口。

Vmkfstools-如果需要通过命令行管理VMFS数据卷以及虚拟磁盘,那么vmkfstools命令就派上用场了。使用vmkfstools命令可以创建、克隆、扩展、重命名并删除VMDK文件。除了虚拟磁盘选项,你还可以使用vmkfstools命令创建、扩展、增大、回收文件系统的数据块。

vmkfstools –i test.vmdk testclone.vmdk – 将test.vmdk克隆为testclone.vmdk

esxtop –对ESXi主机进行性能监控以及故障诊断时,很少有工具能够提供和esxtop同样多的信息。除提供和Linux top命令类似的功能外,esxtop还可以收集很多VMware专有的指标,包括中断、内存、网络、磁盘适配器、磁盘设备以及电源管理。

vscsiStats – 需要进一步监控存储I/O的性能时,vscsiStats命令就能够派上用场了。vscsiStats命令能够帮助你收集与虚拟机磁盘I/O负载相关的性能数据。进行容量规划或者迁移后端存储时,使用vscsiStats命令收集到的数据可谓价值连城。

vim-cmd –vim-cmd是构建在hostd进程之上的命令空间,允许最终用户调用几乎所有的vSphere API。Vim-cmd提供了一些ESXi子命令管理不同的虚拟基础设施,而且和vimsh相比,更容易使用。

dcui –登录到ESXi主机时,VMware直接用户控制台接口(DCUI)提供了基于菜单的主机管理功能。DCUI提供了很多不同的功能,比如root密码维护、网络维护。有时你可能只能通过SSH访问主机,但幸运的是,在命令行下执行dcui命令就可以进入基于菜单的DCUI系统。

vm-support –曾经想过收集ESXi主机所有的支持及日志信息吗?Vm-support命令恰好能够满足你的要求。如果之前与VMware的技术支持热线联系过,那么很可能用过这个命令。

esxcli命令探究

esxcli命令用途广泛,我们不能简单地将其归为单个命令。esxcli包括许多不同的命名空间,允许你控制ESXi提供的几乎所有设备。下面列出了使用最频繁(肯定不是所有)的命名空间:

esxcli hardware – 想获取ESXi主机的硬件及配置信息时,esxcli硬件命名空间就能够派上用场了。

esxcli hardware cpu list – 获取CPU信息(系列、型号以及缓存)

esxcli hardware memory get – 获取内存信息(可用内存以及非一致内存访问)

esxcli iscsi – iscsi命名空间可以被用于监控并管理硬件iSCSI及软件iSCSI设置。

esxcli iscsi software –用于启用/禁用软件iSCSI initiator。

esxcli iscsi adapter –用于设置软硬件iSCSI适配器的发现、CHAP以及其他设置

esxcli iscsi sessions – 用于列出主机上已建立的iSCSI会话。

esxcli network –需要监控vSphere网络并对如下网络组件进行调整时,包括虚拟交换机、VMkernel网络接口、防火墙以及物理网卡等,esxcli网络命名空间就派上用场了。

esxcli network nic –列出并修改网卡信息,比如名字、唤醒网卡以及速度。

esxcli network vm list – 列出有一个活动网络端口的虚拟机的网络信息。

esxcli network vswitch –检索并管理VMware的标准交换机以及分布式虚拟交换机。

esxcli network ip – 管理VMkernel端口,包括管理、vMotion以及FT网络。还可以修改主机的所有IP栈,包括DNS、IPsec以及路由信息。

esxcli software – 软件命名空间可以用于检索ESXi主机已安装的软件及驱动并可以安装新组件。

esxcli software vib list – 列出ESXi主机上已经安装的软件及驱动。

esxcli storage – 可能是最常用的esxcli命令命名空间之一,包括了管理连接到vSphere的存储的所有信息。

esxcli storage core device list – 列出当前存储设备

esxcli storage core device vaai status get –获得存储设备支持的VAAI的当前状态。

esxcli system – 通过该命令使你能够控制ESXi的高级选项,比如设置syslog并管理主机状态。

esxcli system maintenanceMode set –enabled yes/no – 将主机设置为维护模式

查看并更改ESXi高级设置(提示:使用esxcli system settings

advanced list –d 命令查看非默认设置)

esxcli system syslog –查看 Syslog 及配置信息

esxcli vm – ESXi的虚拟机命名空间用于列出运行在主机上的虚拟机的各种信息,如果需要可以强制关闭这些虚拟机。

esxcli vm process list –列出已启动的虚拟机的进程信息。

esxcli vm process kill – 停止正在运行的虚拟机的进程,关闭虚拟机或者强制关闭虚拟机电源。

esxcli vsan – ESXi的VSAN命名空间包括配置并维护VSAN的很多命令,包括数据存储、网络、默认域名以及策略配置。

esxcli vsan storage – 配置VSAN使用的本地存储,包括增加、删除物理存储并修改自动声明。

esxcli vsan cluster – 本地主机脱离/加入VSAN集群。

esxcli esxcli – esxcli命令包括一个称为esxcli的命名空间,通过使用esxcli命名空间,你可以获得更多信息。

esxcli esxcli command list – 列出所有的esxcli命令及其提供的功能。

当然,上述命令及示例并未涵盖ESXi提供的所有功能。所有的ESXi命令有多个开关及选项,提供了多种功能。通过输入-h参数可以获得相关帮助信息。

通过命令行进行故障诊断是一件很棘手的事儿,但通过对25个ESXi命令有一个深入的理解,你应该能够顺利解决大多数问题。

责任编辑:Lionel

0

买车参考资料

Posted by 敬一 on 2013年09月29日 in 生活细碎 |

各车型的安全系数,各品牌车交通事故中的死忙率可以参考

http://www.informedforlife.org/和http://www.safercar.gov/

在http://www.informedforlife.org/viewartcl.php?index=76有风险元素综合统计指数

 

日系车车祸死亡率高的六原因

转自:http://wenwen.soso.com/z/q217599409.htm

在中国,日系车车祸率最高,特别是车祸死亡率极高,这其中有六大原因。日系车的普遍特点是:看得见的东东应有尽有,模样精致;看不见的东东能省就省,省不了就换上垃圾凑数。前段时间,有位DX说日系车就好比暗媢,外表光鲜,方便实惠,开(用)起来很爽,但内质肮脏,总让人有不安的感觉,一不小心,就会小命不保。—-我完全赞同这一说法,据笔者多年查考研究:在中国,日系车车祸率最高,特别是车祸死亡率极高。——这些现象的出现,归根结底源于日系车卑鄙阴险的成本核算,也就是偷工减料。根据本人的了解,其成本运作一般有六大伎俩

第一招,在发动机上偷梁换柱,更换劣质或过旧的发动机。

如威驰: 日本原装威驰使用VVTI发动机,一汽丰田威驰使用夏利2000发动机;又如雨燕:作为雨燕精髓的1.3升 91马力 DOHC VVT 发动机没有引进,而是采用国内羚羊使用的1.3升 85马力 SOHC 发动机。从发动机先进性,经济性,及动力输出各个角度来说,都比原装落后很多,但要号称世界同步,价格加倍.这实在是一个败笔,也是人为的故意。

第二招,在操控系统上改头换面。

操控系统最重要的是制动系统,制动系统很大程度决定汽车安全性能。现代中档以上轿车普遍都采用“碟/碟”制动系统,如伊兰特、凯越、奥迪等。注重汽车的安全性能,一定要查看是否采用了ABS(防抱死)刹车系统,ABS系统的版本是否是最新的,采用的是碟刹还是鼓刹。日系车要么均采用国外已经淘汰的早期版本的ABS系统,要么就采用前碟后鼓的制动装置,目的就是为了节约成本。如价格达17、8万的阳光等中档车就是前碟后鼓的制动方式,威驰、飞度等经济型车就更不用说了。与现在最新的ABS系统相比,无论在质还是量上都差了很多,自然成本方面也就少得多了。 还有一个容易被人们忽视的就是制动器了,也就是看车辆是碟刹还是鼓刹。鼓刹是指在车辆上采用鼓式制动器,碟刹就是指采用盘/碟式制动器。鼓刹是很久以前就已经采用的了,其优点就是价格便宜,而碟刹比起鼓刹成本要高些,但是在刹车效能方面得以提高,现在国际高档车型都全部采用四轮碟刹。

第三招,在省油技术上能骗就骗。

车辆省油除了与驾驶技术等人为因素相关外,还与发动机性能及轮胎宽度、自重大小等客观因素相关。实验证明:在一般情况下,轮胎每增加10mm,油耗上升2~3个;自重增加100kg,油耗上升1.5~2个。日系奸商大肆宣扬他们的车省油,国内普通消费者也往往不问原因大声附和—–日系车就是比其它车省1~2个,但业内专家都认为日系车其实一点都不省油。试问:如果日系车车胎再增加10mm、自重再增加50kg,它还会省油吗?一个不争的事实:排量超过2.4,那一款日系车都不省油。特别是象三菱一类的越野车,由于日系车在轮胎和自重与欧系车采用共同标准,结果每辆日系车都是油老虎。甚至面包车也是一样,如金杯面包等。

第四招,在发动机功率上能唬就唬。

日系车一般就夸耀其排量小但最大功率比人家大。其实,功率不能衡量发动机好坏。功率大不等于就认为是好车,汽车的最大功率只是评价的一个小指标而已,更重要的是看发动机的动力曲线输出,现在很多车型发动机标称的最大功率只是在极端情况下才能输出,但在正常使用区间就相当不平顺,这样其实没什么实际意义。 而且,除了这个最大功率,动力输出曲线这些软性指标、发动机采用的新技术就经常被人们所忽略。发动机成本很大程度上取决于是否是使用了这些新技术。比如发动机电控系统是否最新最先进的,是否采用了国际上最新的电子油门技术(不等同于我们通常所说的电喷技术),是否采用了成本更高但更轻巧的铝合金缸体,在进气排气系统方面是否采用新技术等等,这些新技术的采用直接关系到汽车行驶性能以及油耗和排放的降低,会对消费者日后的使用造成极大影响。

第五招,在内饰上能蒙就蒙。

日系车最热衷于在内饰的部件上迷惑消费者,当消费者坐进车内,第一眼看到的是真皮,又有这样那样的小装备,加上销售员的鼓动,很容易以为内饰部件多,看上去豪华就是好车的主要评判标准,内饰就是决定汽车价格的先决条件,从而忽视了选择一辆汽车真正应该关注的东西。 专家指出:在汽车成本计算中,汽车内饰“水分”不大。 汽车内饰方面,由于所涉及的技术含量比较低,相应的配套厂非常多,价格的弹性也很大。了解汽车用品配件市场的朋友就会知道,一套真皮座椅手工连材料从2000-5000元都有,比较好的也只是3500元左右就可以了,CD播放器方面比较不错的6碟CD播放器1000元以下就可以拿到,而这些部件的价值相对于整个车价来说可谓九牛之一毛。消费者其实只要到家具和电器市场比较一下同档次的产品,就可以知道其中的水分有多大。

第六招,在底盘悬挂上能讹就讹。

17万以下的日系车普遍采用前独立悬挂后非独立悬挂的底盘悬挂布局。我们知道,汽车的悬挂系统分为非独立式悬挂和独立式悬挂两种组成。 非独立悬挂是将非独立悬挂的车轮装在一根整体车轴的两端。采取这种悬挂系统的汽车一般平稳性和舒适性较差,但由于其构造较简单,生产成本也比较低。 独立悬挂是指车轴分成两段,每只车轮用螺旋弹簧独立地安装在车架下面,这样当一边车轮发生跳动时,另一边车轮不受波及,车身的震动大为减少,汽车舒适性也得以很大地提升,尤其在高速路面行驶时,它还可提高汽车的行驶稳定性。不过,这种悬挂构造较复杂,还会连带使汽车的驱动系统、转向系统变得复杂起来,因此成本会增加不少。 通过前面的解释,我们可以清楚地知道独立悬挂对于车辆的安全性、舒适性都比非独立悬挂系统好很多,但是成本会高些,因此有些车型就只是在前轮采用了独立悬挂,而后轮就换成了非独立的悬挂系统。说到这,读者就不会奇怪:为什么日系车普遍高速发飘了。

 

日欧美汽车品牌事故伤亡排名

转自:http://brand.icxo.com/htmlnews/2007/07/12/1159816_0.htm

日本人和一些国人,喜欢拿出国外的用户满意度调查表,来宣扬日本汽车的品质在国际上都是数一数二的,确实如此,日本车故障少,省油,售后服务好等等,这些都比欧美车厂强。

 

那么在此,我想给大家分析一下汽车故障率和品质这两者,对日本车的安全性是否起到决定性作用?

 

首先,故障少能证明日本车安全吗?我在日本读的大学,连我的日本导师都在课堂上讲过:欧美车小故障多(诸如空调,收音机和小零部件等容易坏),但车体本身是越开越经久耐用,而日本车一到公里数多以后就几乎没有日本人敢开(日本二手车市场上的日本旧车的里程数大都不超过10万公里,可是诸如六十年代的甲壳虫,MINI,凯迪拉克等欧美旧车却形成了日本大街小巷里一道怀旧的亮丽风景线)。

 

用我的话来讲,可以说成:和欧美汽车比,日本车轻易不出病,出就要人命!所以,故障率低并不能证明车安全。

 

那么,品质(商品经济中,品质的含义不是质量,而是用户满意度),品质高能证明日本车安全吗?品质,仅仅是来自幸存用户的反馈信息。那些开日本车出车祸的外国车主,死后有没有填写用户满意调查表呢?当然不可能!所以,品质和安全之间绝划不上等号!

 

到此,我想大家应该明白汽车故障,品质这两者和安全性之间到底有无关联了吧。不过,日本车确实省油,据说还能省粮食呢。

 

最后,我想用最直接的方法和精确的数据来向大家展示日本车的安全性。

 

以下统计数字表明——在发生交通事故时,日本车的安全性

和日本车的故障率是成反比的,日本车的安全性和日本车的品质也是成反比的!!

 

 

请看下表:

 

美国HLDI (highway loss data institute) 统计的各型轿车事故伤亡率排名

 

年份2001-2003

100 代表平均值

车型事故伤亡率评价

 

中大型

 

Buick century 64 很好

Audi A4 Quattro 64 很好

Volkswagen Passat 4WD 66 很好

Volkswagen Passat 79 好

Audi A4 89 良

Toyota Camry 92 中

Honda Accord 103 中

Nissan Altima 119 差

Mazda 6 129 差

 

小型

Volkswagen Golf 87 良

Volvo S40 92 良

Volkswagen Jetta (宝来) 101 中

Honda Civic (思域) 127 差

Mazda Protégé(福美来)134 很差

Nissan Sentra (阳光) 148 很差

Toyota Corolla (花冠) 150 很差

Toyota Echo 152 很差

Hyundai Accent 176 很差

Kia Rio 187 很差

 

 六款最不安全的车,分别是:

Hyundai ELANTRA 国内的依蓝特

KIA OPTIMA 国内的远舰

Mazda 6 国内的马6

Suzuki Forenza 国内铃木

Toyota Corolla 国内的花冠

Nissan sentra相当于国内的SUNNY

0

创建一个GNU/Linux Mac OS X Windows通用的可移动大容量存储器

Posted by 敬一 on 2013年08月30日 in 计算机科学, 自由与开源, 技术类 |

我们经常会通过移动存储设备再各个操作系统之间传递文件。U盘轻便便携非常常用,但是顺畅的在以上三个主流的操作系统中通过U盘顺顺当当的共享文件还是有困难的,特别是当我们还有一些诸如给U盘分多个分区、需要支持4G以上的文件。提醒各位操作前请备份好数据。

本文中描述的信息针对操作系统本版如下:

GUN/Linux  kernel 3.2

Windows XP SP3 English

Mac OS X 10.8.4 多国语言版

涉及到的工具

dd (coreutils) 8.13,

fdisk 2.20.1 on GNU/Linux,

Disk Management Tool on Windows XP SP3,

Disk Utility on Mac OS X 10.8.4

 

本文针对U盘为可移动存储设备的情况撰写。此种情况下Windows不能给U盘分区,可以没有分区直接格式化,也可以将原来存在的一个分区格式化成FAT32.

 

最简单的情况:一个FAT32分区

描述:

分区系统类型ID   0xb

三个操作系统都能完整的支持FAT32分区格式的读写。但是受限FAT32格式本身的限制,单文件尺寸最大支持4GB (2^30Bytes).

 

在各个系统上的分区格式化方法

在Windows上直接格式化

目前新的U盘默认又一个分区,并且格式化为FAT32. 如果在Windows上需需要重新格式化可以选中U盘对应的盘符,右键单击选择format…(格式化)格式化类型只支持FAT32.

 

在OS X上 Disk Utility中分区采用Master Boot Record格式分区表

分区表不能修改,选择完分区方案点击Apply(应用)后就不能无损的修改分区表了。这就是说不能增加新分区删除原有分区,也不能修改分区大小。所以分区时需要小心点。

在Partition Layout处选择1 Partition,Options中选择分区表类型选择Master Boot Record

之后在Partition Information中选择分区类型为MS-DOS(FAT). 单击应用按钮。即可执行分区和格式化。

 

在GNU/Linux上 分区完毕之后需要修改分区的系统ID

在fdisk中按t   change a prarition’s system id

选中相应的分区号,此时输入l可以查看各种分区系统id,输入分区id(16进制,不用输入16进制字头“0x”)。因为要分成FAT32,所以此处输入b,回车即可。最走别忘记按w保存分区。推出fdisk,执行mkfs.vfat  之后执行sync,等sync执行完毕就可以拔出U盘了。

 

复杂一点:采用exFAT格式

描述:

分区系统类型ID:7

FAT32已经是20多年前的格式了,有诸多不便。exFAT Windows XP SP2以后微软的各操作系统和现在主流的Mac OS X (10.6.5之后)都支持的格式。exFAT就是传说中的FAT64. 它突破了FAT32 4G文件大小的限制,和NTFS相比还考虑到了延长flash存储器寿命。两个系统的早期版本在存在Bug,可能会出现无法格式化,或者一个系统中格式化的分区在另一个系统中不能识别。Mac OS X在10.8之后对exFAT的支持已经很好了。如果在Windows下遭遇无法格式化或者和Mac OS X中格式化的exFAT互认请使用Windows Update更新系统。

 

微软exFAT补丁下载地址:http://search.microsoft.com/en-us/DownloadResults.aspx?q=exfat&x=-984&y=-143

For XP i386 English http://www.microsoft.com/en-us/download/details.aspx?id=19364

For XP x64 English http://www.microsoft.com/en-us/download/details.aspx?id=25026

For Server 2003 http://www.microsoft.com/en-us/download/details.aspx?id=18024

 

格式化方法参看 最简单的情况:一个FAT32分区

请将格式化的分区格式选成exFAT

 

对于GNU/Linux系统可以自行编译驱动

请到https://github.com/dorimanx/exfat-nofuse下载编译驱动即可对exFAT实现读写访问。代码是三星贡献的。

 

 

 

 

0

几篇配置SVN + Apache的文章

Posted by 敬一 on 2013年07月30日 in 自由与开源 |

征服 Apache + SVN

http://snowolf.iteye.com/blog/740347

 

选用Ubuntu Server 10.04,Apache 2.2.14,Subversion 1.6.6。

步骤:

  1. 安装SVN相关模块
  2. 配置SVN版本库
  3. 配置APACHE
  4. 简单测试

 

Subversion的应用分享—安装篇

http://tsleoou.diandian.com/post/2011-07-29/3336881

 

Apache+SVN-让用户自行修改SVN密码

http://blog.csdn.net/li_yang98/article/details/6384911

 

apache svn 403 forbidden 总提示没有访问权限

http://blog.csdn.net/lgh1117/article/details/7023989

 

iF.SVNAdmin SVN小助手

http://coregear.blog.163.com/blog/static/2140661912012102743636853/

svn后台管理系统IF.SVNadmin

http://blog.csdn.net/picture1213/article/details/8906927
CSDN游戏运维的博客

http://blog.csdn.net/picture1213

 

CentOS下SVN服务器测试版安装记录

http://www.linuxidc.com/Linux/2013-03/81007p7.htm

 

 

 

0

Subversion Edge版本控制软件在CentOS 6.4 64bit上的安装

Posted by 敬一 on 2013年07月30日 in 自由与开源, VM&VPS |

0. 概述

Collabnet Subversion Edge(下称Subversion Edge)集成了Apache, Subversion, ViewVC和一个Web管理界面。使得SVN的配置、使用、管理变得容易了许多。然而安装Subversion Edge也不容易。

软件版本

CentOS 6.4 x86_64 update to 20130729

CollabNet Subversion Edge 4.0.0

JDK jdk1.7.0_25 JRE jdk1.7.0_25/

Python 2.6.6

1. 准备工作

1.1 下载Subversion Edge和Java

Subversion Edge下载页面http://www.collab.net/downloads/subversion. 请根据你的操作系统来选取合适的版本。笔者使用的是CentOS 6.4 64bit版本,所以下载了Subversion Edge 4.0 (Linux 64-bit)。下载需要注册CollabNet账户。

1.2 准备Python、Java、系统环境

1.2.1 安装Python

Python的安装请使用CentOS自带的软件源来安装,以root权限执行

#yum install python python-libs

1.2.2 安装配置Java

去Oracle官网下载最新的Java SE JDK http://www.oracle.com/us/technologies/java/standard-edition/overview/index.html

目前(2013年7月)可以使用下面的链接
JDK 7 1.7.0_25下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

JRE 7 1.7.0_25下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html

下载不许要注册,但需要点击Accept License Agreement. 下载有多种版本可选。笔者这里选择了Linux64 rpm包

安装JDK和JRE

以root权限分别执行

#rpm -ivh jdk-7u25-linux-x64.rpm

#rpm -ivh jre-7u25-linux-x64.rpm

配置JAVA环境变量

以root权限向/etc/profile中添加如下内容

#set Java environment
export JAVA_HOME=/usr/java/default
export JRE_HOME=/usr/java/jre1.7.0_25
export CLASSPATH=./:$JAVA_HOME/lib:$JRE_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin

保存退出以root执行 #source /etc/profile 以使刚刚设置的环境变量生效。

检查Java环境变量,执行 $JAVA_HOME/bin/java -version

[root@svn ~]# $JAVA_HOME/bin/java -version
java version “1.7.0_25”
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

其中/usr/java/default 是指向默认的JDK的链接。该链接由JDK安装时生成。当你配置的时候请根据实际情况来调整相关路径。需要提醒的是请把JRE_HOME指向单独安装的JRE,不要指向JDK中的JRE($JAVA_HOME/jre). 前者是开发版的JRE性能比单独的JRE低。虽然配错了不影响功能使用,Subversion Edge 的 Web Sonsole用的也不多不会因为配错了浪费很多系统资源,但是还是应该配成正确的。养成好习惯,不然部署Tomcat等中间件的时候犯了这种错误就损失大了。

1.2.3 建立svn用户

Subversion Edge需要以普通用户sudo -E 来执行安装,也许要以普通用户权限执行。网上的很多关于1.x 2.x版本作为root来执行安装会导致失败。本人经过尝试4.0.0版本root安装在执行的时候出现了问题,安装成功后可以进入Web Console但是无法启动Subversion服务,虽不能完全证明不可以使用root来执行安装,但本着多一事不如少一事的原则,还是乖乖改成了用新建里的用户svnuser来执行安装。

以root权限执行建立svn用户组和成员svnuser,并为svnsuer设置密码

#groupadd svn

#useradd -g svn svnuser

#passwd svnuser

赋予svnuser用户sudo权限

以root权限执行

#vi /etc/sudoers

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

之后添加
## Allow svnuser to run any commands anywhere
svnuser ALL=(ALL)       ALL

赋予用户svnuser sudo的权限。

1.2.4 SVN库、存储和文件权限

本机使用单独的一块硬盘作为SVN的库,使用fdisk分区,建立一个住分区。格式化成ext3格式。由于ext4格式在不停地开发中,很多细节会发生变化,在硬盘崩溃恢复数据时将造成很大困难。最直观的影响是没有现成的恢复工具可用。

修改/etcfstab 将Subversion的数据仓库挂在到/srv.

以root权限执行#mount -a 使新的fstab生效。

解压缩安装文件并设置权限

进入SVN库所在分区,解压缩得到安装文件,安装文件在csvn文件中

#cd /srv
#tar zxf CollabNetSubversionEdge-4.0.0_linux-x86_64.tar.gz

更改文件夹和文件权限

#chown -R svnuser:svn csvn

 

2. 安装Subversion Edge

Subversion Edge中的SVN服务采用apache作为服务器。Subversion Edge的安装Application的过程将会完成三个部分:

Console: 一个基于Java的Web管理界面,用于执行Subversion设置、启停,SVN用户权限的建立与分撇,库的建立与维护等。

Subversion: 基于Apache运行。

ViewVC: Web界面的代码查看工具。

2.1 更改为刚才创建的用户svnuser并进入安装目录

# su svnser
$ cd /srv/csvn

2.2 执行安装

$ sudo -E bin/csvn install

安装过程将会让Subversion Edge Application的Server随系统启动。同时将JAVA_HOME和当前执行sudo命令的用户写入data/conf/csvn.conf. 必要时也可以通过手动更改这个配置文件中的JAVA_HOME和RUN_AS_USER来保证Application的正确运行。

2.3 启动Server

启动Server的时候要确保使用的是svnuser这个用户,而不是root.

$ bin/csvn start

[svnuser@svn csvn]$ bin/csvn start
Starting CSVN Console……
CSVN Console started
Waiting for application to initialize (this may take a minute)………………
CSVN Console is ready at http://localhost:3343/csvn

这个过程可能会很慢,登上一两分钟很正常。需要说明这里仅仅是启动Subversion Edge的Web 管理工具,并没有启动绑定了Subversion的Apache, 这一步成功之后SVN服务也不可用。

如果无法启动可以尝试

$ bin/csvn stop  之后再执行
$ bin/csvn start, 或者执行
$ bin/csvn restart

如果还是不行启动那么只好尝试用

$ bin/csvn console

来启动。这个命令将启动信息和错误提示输出到命令行,方便排查错误。例如:

[svnuser@svn csvn]$ bin/csvn console
Running CSVN Console…
wrapper  | –> Wrapper Started as Console
wrapper  | Java Service Wrapper Community Edition 64-bit 3.4.1
wrapper  |   Copyright (C) 1999-2010 Tanuki Software, Ltd.  All Rights Reserved.
wrapper  |     http://wrapper.tanukisoftware.org
wrapper  |
wrapper  | Command[0] : /usr/java/jdk1.7.0_25/bin/java
wrapper  | Command[1] : -XX:MaxPermSize=128m
wrapper  | Command[2] : -Djetty.home=../appserver
wrapper  | Command[3] : -Djetty.port=3343
wrapper  | Command[4] : -Djetty.ssl.port=4434
wrapper  | Command[5] : -Xms64m
wrapper  | Command[6] : -Xmx512m
wrapper  | Command[7] : -Djava.library.path=../lib
wrapper  | Command[8] : -classpath
wrapper  | Command[9] : ../lib/wrapper.jar
wrapper  | Command[10] : -Dwrapper.key=WhAVe95-geKtpI83
wrapper  | Command[11] : -Dwrapper.port=32000
wrapper  | Command[12] : -Dwrapper.jvm.port.min=31000
wrapper  | Command[13] : -Dwrapper.jvm.port.max=31999
wrapper  | Command[14] : -Dwrapper.pid=3913
wrapper  | Command[15] : -Dwrapper.version=3.4.1
wrapper  | Command[16] : -Dwrapper.native_library=wrapper
wrapper  | Command[17] : -Dwrapper.cpu.timeout=10
wrapper  | Command[18] : -Dwrapper.jvmid=1
wrapper  | Command[19] : org.tanukisoftware.wrapper.WrapperJarApp
wrapper  | Command[20] : ../appserver/start.jar
wrapper  | Launching a JVM…
jvm 1    | WrapperManager: Initializing…
jvm 1    | 2013-07-30 16:16:23.578:INFO::Redirecting stderr/stdout to /srv/csvn/data/logs/console_2013_07_30.log

[svnuser@svn csvn]$ bin/csvn stop
Stopping CSVN Console…
Waiting for CSVN Console to exit…
Waiting for CSVN Console to exit…
Stopped CSVN Console.

3 Subversion Edge首次登录和设置

你必需登录CollabNet Subversion Edge基于Web的Console来做些设置,之后才能启动Edge中负责SVN的Apache. Web Console的登录信息:

Address: http://localhost:3343/csvn
或者 https://localhost:4434/csvn (使用自签名SSL证书)
Username: admin
Password: admin

你也可以在Web Console中设置强制使用SSL方式访问Console,这时候对3343端口的访问将会被重定向到安全端口4434. 如果本机没有X桌面,就需要通过网络访问。需要将localhost更改为Subversion Edge服务器的IP地址,同时设置防火墙来保证能够访问到。

3.1 首次设置

首次访问会显示Getting Started向导,提醒你更改admin密码、更改Server Setting、链接Coldorge. 服务器设置中主机名和端口两项比较重要,如设置不当可能导致Subversion无法启动。

假设主机名设置成了svn.example.com, 那么本机在启动Subversion的时候会解析svn.example.com, 如果解析不正确服务就无法启动。保险的做法是在/etc/hosts中加入127.0.0.1       svn.example.com, 同时更改/etc/sysconfig/network中HOSTNAME=svn.example.com. 如果是公网服务请设置域名的解析记录,内网的话可设可不设。

端口号默认是80, 但是设置成80会导致Subversion服务不能启动。原因是Linux要求只有root才能使用端口号小于1024的端口,而Subversion Edge必需要以非root权限运行。当你把端口号设置80的时候,Subversion Edge也会提醒你需要做额外的设置。你现在面临两个选择,要么指定一个大于等于1024的端口,要么进行额外的设置。具体如下:

chown root:svn /srv/csvn/lib/httpd_bind/httpd_bind
chmod u+s /srv/csvn/lib/httpd_bind/httpd_bind

svn是Subversion Edge执行用户svnuser所在的组。

 

3.2 验证并设置Subversion服务随系统启动

推荐在Web Console中成功启动Subversion后再设置Subversion服务随系统启动。在Web Console的主界面中点击Start/启动按钮。

可以尝试创建用户和版本库,从客户端Check代码,编写提交代码,验证整个系统安装的正确定。

在操作系统的shell中执行

$ cd csvn
$ sudo bin/csvn-httpd install

配置好了重新启动一下整个操作系统,看看一切是否正常。

4. 问题和解决

可以通过Shell终端和Web Console来查看log来帮助解决问题。Shell中访问log的位置csvn/data/logs, Web Console中可以通过左侧的MAINTENANCE菜单中Server Logs中查看。

4.1 命令行无法启动Applicaion

console log

2013-07-30 11:34:14,154 [WrapperJarAppMain] ERROR ehcache.Cache  - Unable to set localhost. This prevents creation of a GUID. Cause was: vweb-01.example.com: vweb-01.example.com: 没有与主机名关联的地址
java.net.UnknownHostException: vweb-01.spiralsgame.com: vweb-01.spiralsgame.com: 没有与主机名关联的地址
	at java.net.InetAddress.getLocalHost(InetAddress.java:1466)
	at net.sf.ehcache.Cache.<clinit>(Cache.java:143)
	at net.sf.ehcache.config.ConfigurationHelper.createCache(ConfigurationHelper.java:463)
	at net.sf.ehcache.config.ConfigurationHelper.createDefaultCache(ConfigurationHelper.java:369)
	at net.sf.ehcache.CacheManager.configure(CacheManager.java:445)
	at net.sf.ehcache.CacheManager.init(CacheManager.java:302)
	at net.sf.ehcache.CacheManager.<init>(CacheManager.java:260)

...

解决办法参考:2.4 Subversion Edge首次登录和设置

4.2 Web Console中无法启动Subversion服务 域名问题 和 <1024端口问题

2013-07-30 11:50:32,695 [qtp484971778-86] ERROR console.CommandLineService  - Exit status=1 Process err output: sudo:抱歉,您必须拥有一个终端来执行 sudo(sorry, you must have a tty to run sudo)

解决办法参考:2.4 Subversion Edge首次登录和设置

4.3 防火墙Appand新规则出现问题

CentOS默认防火墙INPUT Chain规则是默认允许然后是允许必要的协议和端口通过。如icmp协议和ssh的tcp 22端口。在这些规则的最后一条加上一条

REJECT     all  —  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

如果使用 iptables -A INPUT添加了允许Web Console所使用的3343, 4434和Subversion所使用的80和443, 新添加的规则会在上边的REJECT规则之后。iptables在匹配防火墙规则的时候有优先顺序。匹配到那一条REJECT的时候就会让tcp 3343 4434 80 443无法通讯。

解决办法是使用# iptables -I INPUT <REJECT规则的序号> 来添加规则。例:

# iptables -I INPUT 5 -m state –state NEW -m tcp -p tcp –dport 3343 -j ACCEPT
# iptables -I INPUT 5 -m state –state NEW -m tcp -p tcp –dport 4434 -j ACCEPT
# iptables -I INPUT 5 -m state –state NEW -m tcp -p tcp –dport 443 -j ACCEPT
# iptables -I INPUT 5 -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

 

得到

[root@svn logs]# service iptables status
表格:filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  —  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2    ACCEPT     icmp —  0.0.0.0/0            0.0.0.0/0
3    ACCEPT     all  —  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     tcp  —  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5    ACCEPT     tcp  —  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:80
6    ACCEPT     tcp  —  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:443
7    ACCEPT     tcp  —  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:4434
8    ACCEPT     tcp  —  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:3343 9    REJECT     all  —  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

4.4 保存防火墙规则失败——iptables save与/etc/rc.d/init.d/iptalbes save

直接执行iptables save新修改(包括添加、删除,下同)的规则生效,但是重启iptables之后规则失效。如果向保存应该执行/etc/rc.d/init.d/iptalbes save.

直接执行iptables save时,执行的是/sbin/iptables链接指向的iptables程序/sbin/iptables-1.4.7(在我的机器上)。/etc/rc.d/init.d/iptalbes save是一个Shell脚本可以将新修改的规则保存到iptables配置文件。

/etc/init.d/iptables与/etc/rc.d/init.d/iptalbes等价,因为在这个系统上/etc/init.d 是指向/etc/rc.d/init.d的链接

4.5 Web Console启动时找不到Java

JAVA_HOME设置有误。很多网上查到的资料显示GNU/Linux下java的位置是/usr/local/java, 这个不是一成不变的。你可以使用whereis javac, 或 find / -name javac的方式间接找到正确的JAVA_HOME

5. 参考资料

CentOS搭建SVN(CollabNet Subversion Edge)服务器

http://www.linuxidc.com/Linux/2012-06/62291.htm

非常简洁,但是解释的内容偏少。CentOS 5.7 x64 + Subversion Edge 2.3

 

CentOS 6 安装JDK及系统配置

http://os.51cto.com/art/201208/351895.htm

 

Subversion Edge 使用经验之谈 — 服务器配置篇

http://tsleoou.diandian.com/post/2011-07-21/3079158

 

Subversion Edge 2.x迁移说明

http://blog.csdn.net/pkrobbie/article/details/7220420

0

SVN命令行客户端的使用

Posted by 敬一 on 2013年07月30日 in 自由与开源 |

来源:转载 http://www.2cto.com/os/201204/125966.html 原标题《CentOS SVN客户端应用》作者:龙上

SVN客户端命令
1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co
2、往版本库中添加新的文件
svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)
3、将改动的文件提交到版本库
svn commit -m “LogMessage“ [-N] [–no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)
例如:svn commit -m “add test file for my test“ test.php
简写:svn ci
4、加锁/解锁
svn lock -m “LockMessage“ [–force] PATH
例如:svn lock -m “lock test file“ test.php
svn unlock PATH  www.2cto.com
5、更新到某个版本
svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up
6、查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st
7、删除文件
svn delete path -m “delete test fle“
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”
或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种
简写:svn (del, remove, rm)
8、查看日志
svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化
 9、查看文件详细信息
svn info path
例如:svn info test.php
 10、比较差异
svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di  www.2cto.com
11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
12、SVN 帮助
svn help
svn help ci
——————————————————————————
以上是常用命令,下面写几个不经常用的
——————————————————————————
13、版本库下的文件和目录列表
svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svn ls
14、创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法: 1、mkdir PATH…
2、mkdir URL…
创建版本控制的目录。
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增
调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。
在这两个情况下,所有的中间目录都必须事先存在。
 15、恢复本地修改
svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert:
用法: revert PATH…
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录
 16、代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法: 1、switch URL [PATH]
2、switch –relocate FROM TO [PATH…]
1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将
服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的
方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动
(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用
这个命令更新工作副本与仓库的对应关系。
 17、解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH…
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的
相关文件,然后让 PATH 可以再次提交。  www.2cto.com
 18、输出指定文件或URL的内容。
svn cat 目标[@版本]…如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)
新建并初始化版本库
1.新建代码仓库
# svnadmin create /home/myrepos
这样,我们就在/home目录下新建了版本库myrepos。
2.初始化代码仓库
#mkdir -p code/{branches,tags,trunk}
按照svn手册上的建议,我们版本库的布局采用branches/tags/trunk这样的三个目录。然后可以将代码直接拷贝的trunk目录,也可以随后采用svn add的方式添加。
#svn import code file: ///home/myrepos
将我们构造好的版本库布局(以及代码,如果已经拷贝到trunk下的话)提交到版本库。由于这里我们是在本地操作,因此可以直接使用file协议方式提交。格式为:file:// + 版本库绝对的路径
OK,到这里我们已经构建了一个本地版本库,可以再本地使用svn ci的方法得到版本库的副本了。如果前面只是提交了版本库布局,而没有提交代码的话,则可以通过如下命令,提交版本代码:
#svn co file: ///home/myrepos/trunk repos
通常只从主线目录trunk下取出源码,放在了新建的repos目录。然后可以将源码拷贝到repos目录。
执行以下两条命令将代码添加的版本库。
#svn add *
#svn ci * -m “Committed codes”
首先需要将拷贝的代码加入到当前的副本中,然后将代码提交到版本库。

Copyright © 2008-2018 敬一日志 All rights reserved.
This site is using the Desk Mess Mirrored theme, v2.5, from BuyNowShop.com.