博文

目前显示的是 四月, 2010的博文

2010-04-30

今天看了下thttpd的实现,总之不算很好。比如,p=realloc(p,….) 这样的写法,比如,它在启动的时候根据最大可打开的文件句柄数就预先把一些资源分配好,不过那些数据结构很小。再比如,它为什么不能处理2G以上的文件?因为它对于每个静态文件请求,是把该文件mmap到内存里,然后根据最后引用时间和refcount来清理。那么在32位平台下,很容易就把地址空间给塞爆了。还有,假如在执行stat和mmap之间,文件大小被缩短了,那么带来的结果是完全难以预知的,很有可能会导致 thttpd 崩溃。而,在不关闭http服务的情况下更新文件,是很正常的啊。还有,thttpd 在bsd下会优先采用kqueue,但是在linux下,至今不支持epoll。

查了好久,原来是groovy自己的错

groovy的eclipse插件有个问题:http://jira.codehaus.org/browse/GRECLIPSE-482我写了一个很简单的脚本,proxy = new WSClient("http://www.webservicex.net/WeatherForecast.asmx?WSDL", this.class.classLoader)
proxy.initialize()但是initialize之后,proxy并没有得到新的方法。为此我查了好久啊!用各种方法debug。公司的开发机不能上外网,我的笔记本今天早上还进水了。最后发现,单独从命令行运行就没有问题。这是插件自己的错

一行小改动让代码效率有几十倍的提升

上个版本是这样的: String charset=”utf-8”; javax.xml.stream.XMLStreamWriter writer = null; try { writer = javax.xml.stream.XMLOutputFactory.newInstance().createXMLStreamWriter( new FileOutputStream(fileName), charset); writer.writeStartDocument(charset, "1.0"); writer.writeCharacters("\n"); writer.writeStartElement("RecordSet"); writer.writeAttribute("version", String.valueOf(getDataXMLVerion())); writer.writeCharacters("\n"); for (final String[] records : rs.getRecords()) { writer.writeEmptyElement("record"); //用writer.writeAttribute写属性 ... writer.writeCharacters("\n"); } writer.writeEndElement(); writer.writeCharacters("\n"); writer.writeEndDocument(); } 执行一次需要大概7、8分钟。今天我把初始化writer的方式改成writer = javax.xml.stream.XMLOutputFactory.newInstance().createXMLStreamWriter(new java.io.PrintWriter(fileName,charset)); …

UFS with journaling

之前在kernel中UFS已经有了对journaling的支持,不过是在geom上做的。# Gjournal-based UFS journaling support.
options UFS_GJOURNALjeff今天加进去的是soft-updates journaling(svn rev 207141),我正在diff看改了什么。more information at here:http://jeffr-tech.livejournal.com/

2010-04-22

今天被xen折磨死了。我在机器A上装了一套系统,想挪到机器B上去。我在机器B上用xe vm-clone,发现其它都复制了,但是sr还是机器A的那个sr。我所有机器的sr都是用lvm over scsi的方式做的,用的都是本地硬盘。于是我就想把vdi文件用xe vdi-copy的方式复制到本地的sr中来。不料copy总是无法成功,说这个新sr没有pbd。可是怎么可能呢,不仅我用xe sr-param-list看是有的,并且我用xe vdi-create也能在这个sr上创建虚拟盘。折磨了好久,文档少的可怜,xen.org上xen的文档居然还是3.0版本的,xcp的那几本pdf手册里也没有详细说到这个,只是说可以用vdi-copy把一个vdi复制到另外一个sr中。最后我发现了一个很好用的命令,xe vm-export/vm-import。先装好一个系统,叫mytemplate。我把这个vm导出成一个3G多的文件,然后把原来的vm给destory掉,然后在新的系统上import,vm名字还是原来的名字。然后启动,把IP设置成新的IP。然后把vm的名字从mytemplate改成实际的名字。然后继续import,继续做下面的系统。非常的爽啊!clone一个系统也就是几秒钟的事情,在新机器上import一个也不超过3分钟。非常爽!但是吧,destory一个vm的时候并不会把它的vdi也给释放掉,也就是说硬盘空间并没有被真的释放出来。而从vdi的参数又看不出它属于哪个vm,只有用xe vbd-list vm="xx"这样把所有的vbd都列出来(这个列表中也包含vdi的uuid),然后destory vm,然后把vdi挨个释放。但是vm很多的时候,要查出哪个vdi是不被任何vm引用的,也挺麻烦的,得自己写个脚本来做。然后今天在内网建了一个yum repos。主要是为了解决这样的问题:安装系统的时候并不是把所有软件都装上了,之后需要装软件,那么要么用的时候再把光盘挂上,使用yum localinstall去光盘的目录里安装,要么干脆就建一个yum repos,把默认的repos全部都删掉,就留我自己建的这一个。只是我还不明白怎么从外网下更新包然后挪到内网我建的repos里去,但这个不是大问题,应该很快就能解决。不过centos 5.5迟迟没有消息,不知道会不会跳过…

CPU不同不能加到同一个resource pool里

今天又给一台机器装了xen cloud platform,但是这个机器是2个xeon 5110,是2个双核的。其它机器都是2个5410,是2个4核的。于是就不能放在同一个resource pool里面。唉。。。
reference手册中这么说:
The CPUs on the server joining the pool are the same (in terms of vendor, model, and
features) as the CPUs on servers already in the pool.

jdk自带的xml库真烂!

首先,我最初是先构造dom树,然后用javax.xml.transform.Transformer 输出,执行速度很快,什么都好,但是输出的结果不理想。首先,xml的声明后面没有换行符,我不知道为什么。其次,它把属性的顺序打乱,它的理由貌似是对于xml而言,属性的顺序是无关紧要的。可是,对于逻辑是如此,对于实际应用而言,我希望这次输出的xml和上次输出的xml尽可能的保持一致,这样我在进行 diff的时候很容易找出修改了哪些内容。xml毕竟是要给人读的,而属性的顺序,尽管没有逻辑差别,但是还是有阅读差别的。为了进行更精确的控制,我采用了XMLStreamWriter,可这么一来,执行的速度居然降低到原来的1/10都不到。怪哉怪哉,逻辑更简单更直接了,为什么执行的更慢了?

4台xcp上架

今天把4台dell 1950装上xen cloud platform上架到机房了。xcp的文档太缺了,那个xe command tool,网上很少有人写怎么用。我一直不知道我的bootloader用的到底是传统的pygrub还是PV-grub,按我的实验是,引导盘的mbr是很无所谓的,xen不会真的模拟一个bios去执行mbr里面的引导程序。我拿了一个新盘,直接把/boot目录复制过去,照样能启动。缺点是,我想把引导程序改成grub2,是不可能的。并且,貌似引导盘不能是xfs这样的特殊的文件系统,好像只支持ext2/ext3。总之,把很多台机器做成一个大的resource pool看着很爽。等把应用挪过来之后,把剩下的机器接着挨个铲掉。今天又被那个破电梯卡住了。我去6楼机房装机器,然后回2楼。进电梯之后,还有一对男女也在里面。然后电梯门关了,电梯像平时那样动了一下,开始下降。
那个男的说,刚才那一下我怎么感觉是往上走。其实我也有这样的感觉,但是因为液晶屏幕上的数字是5、4、3、2这样减小的,我们相互笑了笑,没在意。可是,可是,就在数字变成2的时候,卡住了,不动了。所有灯都灭了,然后我们开始慌。打电话?
然后那个男的随手按了下2层,电梯又亮了。显示我们现在在9层,然后开始往下走。我才明白,刚开始那一下不是错觉。最近很多软件都出新版本了。gcc出4.5.0,而jdk在我刚装完update19后,立马又出了update 20。而我的机器装jdk总是有问题,可能是因为我需要装32/64两个版本的,但是卸载的顺序有问题,于是卸载的时候就报告:“错误 1723。Windows Installer 程序包有问题。此安装需要的 DLL 不能运行。请与您的支持人员或程序包开发商联系。操作: UninstallJRE, 项目: MSIUninstallJRE, 库: D:\jdk32\jre\bin\regutils.dll”。而我去看,D:\jdk32\jre这个目录早就空了。

存在性谬误

所有的男人都是人所有的人都是动物所以,有男人是动物。这个推理哪里错了呢?在传统的亚里士多德的逻辑里,是没错的。但是有人说它错了。因为犯了存在性谬误。两个全称命题不能推出一个特称命题。全称命题不标明主项和谓项任何存在性,比如,这个世界上真的有人吗?而特称命题表明着存在性。存在性不能凭空的生出来。开头的例子,就是一个AAI-1格式(无效)的三段论,A命题成立,但是它的主项的外延可能是空。

meego的联盟又多了一个巨头:腾讯

腾讯携英特尔推广下一代移动互联网平台MeeGo http://tech.qq.com/a/20100413/000271.htm看来我的手机有希望运行QQ了。唉,第一个手机,飞利浦的,彻底不能装什么第三方软件上个手机,palm,得不到QQ的官方支持,最后第三方的也不能用。第三个,我花了好多钱买的n900啊!目前还是不能用,腾讯对pidgin的打击力度还是蛮大的

明天买个串口线来玩交换机

今天搞了台H3C的48口的交换机。其实我就4-5台机器,给个8口的就足够用了。好高级啊,以前在学校的时候也就听老师讲怎么配交换机,没怎么真的配过。在学校的时候,有cisco 65xx的交换机可以玩啊!可惜了。。。比较郁闷的是,我刚发现我笔记本没串口,并且,我的台式机也没有。我寄回老家的那个废弃不用的台式机倒是有。唉……去京东买了一个usb转串口的线。顺便买了个microsd,准备放手机里做双启动

freebsd翻译成中文怎么说?

不翻译成中文,不能上cctv啊!

2010-04-09

xen 4.0发了,大概是这周或者上周的事情.挺悄无声息的.对meego很失望,刷回maemo pr 1.1。虽说1.2出了,还支持超频,但是我找不到在哪里下。元大都的垂丝海棠据说已经开了,据说已经快谢完了。我还没来得及去看。去年没赶上,今年又是。某人在云大拍的垂丝海棠,我还留着。时间过的真快啊

在Xen Cloud Platform中安装CentOS

首先,建立一个iso repos创建一个空目录
# mkdir -p /export/opt/xen/iso_import
然后把iso放进去
然后创建sr。这里的location指向的是刚刚创建的目录
# xe sr-create name-label=isoimport type=iso device-config:location=/export/opt/xen/iso_import/ device-config:legacy_mode=true content-type=iso
dd4d4ee2-6c24-ddec-69ca-72c1ab4ee293
上面的输出就是sr的uuid。手动执行下sr-scan
# xe sr-scan uuid=dd4d4ee2-6c24-ddec-69ca-72c1ab4ee293
然后用cd-list看是不是iso都找到了。其中xs-tools.iso是装xen的时候内置的。后面2个是我放的
# xe cd-list
uuid ( RO) : 9e351690-7cbc-4d90-9774-f24a65ef79c2
name-label ( RW): xs-tools.isouuid ( RO) : 220ee334-c5db-4d8c-b129-c7898fcfeb1f
name-label ( RW): CentOS-5.4-x86_64-bin-DVD.isouuid ( RO) : 4f4361e3-7101-4cb3-a298-6e551794831d
name-label ( RW): ubuntu-9.10-desktop-amd64.iso把刚才创建的sr设置成共享的
# xe sr-param-set shared=true uuid=dd4d4ee2-6c24-ddec-69ca-72c1ab4ee293 然后根据现成的模板创建一个vm
# xe vm-install template="CentOS 5.4 x64" new-name-label=centos1
然后根据vm的uuid找到硬盘的uuid
#xe vbd-list vm-uuid=ddccf3d3-cf79-53e3-28b0-7eaa1d8659bd userdevi…

2010-4-6

今天下了centos 5.4和xen cloud platform的盘,在dell的机器上装。xen cloud platform的iso用ultraiso就可以直接刻到U盘上用。但是centos 5.4是不行的。然后我下了一个叫unetbootin的软件,看起来很强大,支持很多很多种OS,但是我还没试。xen已经装好了,但是我不知道root filesystem怎么那么小,才4G,我想放个centos的dvd都放不下,我咋装系统啊。然后我就只好重新划盘重做RAID,明天继续搞。我目前用的是最简单的方式,用local disk做Storage Repository. dell 1950好像只能插2块硬盘?其实没看出来xen cloud platform在分布式上做了什么。

Xen Cloud Platform学习笔记

图片
云计算被炒的火热,而我对它一无所知。总觉得它并没有什么新技术,无非就是把以前的一些老东西拿出来换个新名字交给市场部门去宣传去卖。不过话说回来,ajax也没有用到什么新技术,反正就是突然就火了,然后就流行了这么长时间了。Xen最让我着迷的就是它所谓的30秒迅速迁移。一台机器坏了,没关系,30秒内立刻迁移到另一台机器上。据说迁移速度主要取决于网络速度和domU的RAM大小。Xen Cloud Platform (XCP)无非也就是把以前的那些工具整合了起来。多台xen物理主机,组成一个resource pool,然后再配合上监控、负载均衡、灾难发生时自动迁移工具。做resource pool,难点在于storage上。先抛开XCP不谈,传统的、最简单的做法就是做统一中央存储。例如N个dell 1950加一个Netapp的盘阵。domU的存储都在盘阵上。如果某个主机down了,那么我们损失的仅仅是CPU、网卡、内存而已。XCP的Storage部分,有这么几个基本概念:PBD:物理块设备VBD:虚拟块设备VDI:虚拟磁盘镜像文件SR:Storage Repositories ,VDI的集合。关系如下:为SR提供资源的硬件可以是本地的硬盘(IDE/SATA/SAS/SCSI/…),也可以是网络存储如(iSCSI、NFS、远端的SAS、远端的光纤)。SR和VM之间的关系是多对多的关系。一个SR可以为多个VM服务,一个VM也可以从多个SR获取存储。VDI可以是基于VHD或是基于LUN的。我比较关注后者,因为它效率最高。比如这样:采购一批差不多一样的主机,本机先做好raid1,然后把它们用iscsi导出,然后把这些iscsi硬盘组成一个sr,然后再往上装VM。但是我有个疑问,它会优先使用本地的iscsi硬盘吗?如果不,会有多大程度的效率差别?困,明天在ubuntu下试下

connman的文档在哪?

今天终于找到了为什么我一开机,resolve.conf就 被设置成127.0.0.1
# Generated by Connection Manager
options edns0
nameserver 127.0.0.1
终于找到了那个奇怪的程序: connmand,以及它的官方网站:http://connman.net/downloads
无文档,而我现在又没有它的图形界面。它会去操作wpa_supplicant和网卡,而我的网络一直莫名奇妙的up、down、up、down。郁闷
/var/log/messages里全是这样的日志:
Apr 1 13:43:25 localhost connmand[303]: wlan0 {update} flags 4099 <UP>
Apr 1 13:43:25 localhost connmand[303]: wlan0 {newlink} index 5 address 00:1F:DF:54:E6:19 mtu 1500
Apr 1 13:43:25 localhost connmand[303]: wlan0 {newlink} index 5 operstate 2 <DOWN>
Apr 1 13:43:26 localhost connmand[303]: wlan0 {update} flags 69635 <UP,LOWER_UP>
Apr 1 13:43:26 localhost connmand[303]: wlan0 {newlink} index 5 address 00:1F:DF:54:E6:19 mtu 1500
Apr 1 13:43:26 localhost connmand[303]: wlan0 {newlink} index 5 operstate 5 <DORMANT>
Apr 1 13:43:26 localhost connmand[303]: wlan0 {RX} 2 packets 330 bytes
Apr 1 13:43:26 localhost connmand[303]: wlan0 {TX} 2 packets 284 bytes
Apr 1 13:43:26 localhost connmand[303]: wlan0 {u…

拔牙记

思摩再三,决定还是去北大口腔医院拔,我觉得它比中日友好医院要专业些。本来的计划是这样,从上周日开始吃5天消炎药,然后这周五去拔牙,然后在家一动不动休息三天。因为在网上看,据说拔牙很恐怖的。北大口腔医院的号也很难挂的,于是我就把闹钟上到5点。然后睡的迷迷糊糊的,被太阳晒醒了,自言自语了一句:“5点钟天就这么亮了啊”,才突然发觉不对。赶紧刷牙起床,然后打车过去。主要是那破手机害的,我刷了新系统(meego),然后就不能打电话了,然后就换回以前的手机,好就不用,不熟悉,然后设置闹铃设置错了。到口腔医院的时候恰好7点整。队伍恰好从挂号口排到大厅门口。据我观察,大部分人都是7点以前来的,7点以后很少有新进来人挂号。排到我的时候快8点了,已经没有专家号了,我问有没有100的那种特需号,结果被告知特需的不管拔牙这种小事儿,那就挂普通的吧。然后就去隔壁的面包房吃了一个肉松面包一杯牛奶,一边吃一边感叹,该吃点啥吃点啥吧,最后一顿了。拔牙在6层,流程非常简单,排队,拍片子,然后就上椅子拔。这里是比中日友好医院要高级,完全就像一个大车间,流水线一样,很多小间。主治大夫,递工具的若干副手。给我拔的是一个很年轻的小姑娘,我一直在猜是不是实习生。不过她技术蛮好的。整个过程只有用针打麻药的时候有点疼,就是普通打针那么疼。然后我在椅子上躺着,和他们有一搭没一搭的聊天。等嘴唇开始发麻,明显的感觉到左右嘴唇不一样的感觉,然后就开始拔。拔牙的时候我一点感觉都没有,闭着眼眯了一会儿,医生塞个纱布进来让我咬着,然后就起来了。我都不知道什么时候拔下来的。反正没有开刀,不需要封针拆线,没有像他们说的满嘴是血。问了下医生,她说就这么就行了,也不用再来复查啥的,然后我就欢天喜地的走了。哈哈。拔牙真的一点感觉都没有,就闭着眼睛躺了几分钟,就完了。然后我一看时间还早,不到10点,就跑去公司了上班了,恰好赶上,还没迟到。等麻药劲退了也没特别的感觉,中午就去吃红烧牛肉面了,很爽,终于不疼了。晚上回来对着镜子一看,以前智齿的地方,现在好大一个洞啊,蛮失落的。按医生所说,我只剩31颗牙了。