星期日, 十二月 26, 2010

2009年3月发现的一个nfs caching问题


这是一个老问题了,超过21个月之后,重新拿出来记录一下。


问题出现在2009年,在2009年3月12-15日期间,专门针对此问题向网闸和操作系统的厂商提交了问题,经过多次邮件交涉(GMAIL有记录),最终对问题有了基本认识。当时邮件不少,却没有汇总报告,今天刚好想起来就简单汇总一下。



此问题的现象是,在nfs server上能看到/ datacenter/collected/test/flag下面有文件,但是在nfs client上看不到。


文件送到server上用的是ftp协议,一个java程序在轮询flag目录,发现有新文件就处理掉。结果就是文件已经存在很久了,程序就是找不到该文件,用ls也看不到。



最开始怀疑问题出现在穿透网闸,再后来把测试程序写出来以后,在不走网闸的情况下,也会出现问题,只是频率不同而已,因此最终把火力瞄准了nfs,而不是网闸。


共享用的是nfs协议,开始以为是nfs server有问题,后来查找资料,发行是nfs client的caching问题。


To free pagecache, use echo 1 > /proc/sys/vm/drop_caches; to


free
dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;


to free pagecache, dentries and inodes, use echo 3 >


/proc/sys/vm/drop_caches.




Because this is a non-destructive operation and dirty objects


are not freeable, the user should run sync(8) first.



在问题出现时,用ls命令是看不到文件的,但是如果知道确切文件名的话,可以用stat命令显示该文件的信息,但是如果stat *仍然看不到,在nfs server上则所有问题都不存在,说明文件确确实实写到磁盘上了。


处理办法:


1,改用cifs共享方式。CIFS协议无此问题。我最终选用了这个方案。


2,定时touch一下flag目录,这个方法最简单,且普通用户就可以了。


3,定时清缓存。如果去清除cache,有可能会导致脏数据丢失,因此必须事先发出sync命令,且必须以root来执行。个人觉得这个方法不现实,频率掌握不了,且需要root权限,就没做详细测试。



经验值:测试程序非常重要,专门写的制造此问题的程序,可以在公司的实验环境中将问题复现出来,且频率提高以后,还可以将网闸等非关键要素给筛选过滤出局。


问题的终极解决办法,估计需要等nfs协议的v4版本NFS v4 (pNFS)来彻底解决,并且在v4本身已经采用了全新的协议方式,估计可以从根本上避免此问题。实际上,v4发展的是相当的慢。


星期三, 十月 13, 2010

移动互联网在美国人掌控之中

在智能手机市场最常见的操作系统有苹果iOS、谷歌Android、塞班(Symbian)、Windows Mobile和黑莓OS等,由于可以安装第三方软件,因此智能手机具有非常丰富的功能。


移动互联网,将是未来几年最火爆的领域。截至2010年,最牛大的5款智能手机操作系统,有4款是美国人控制的,Symbian是芬兰人的。如果加上Palm系统,那又是一个美国。


不能不佩服,硅谷的强大创新动力。或者是美国的风险投资,或者是Nasdaq,嗯,都很强大。

星期四, 九月 30, 2010

撤出microsoft live spaces空间

由于微软于2010年9月28日发布消息,将关闭 live spaces,我也不得不开始整理几年来写的东西,准备撤离。

9月28日微软将关闭Live Spaces 拟转移3000万用户http://www.enet.com.cn/article/2010/0928/A20100928741042.shtml

以前在很多个网站都留下过脚印,尝试过很多博客空间,实在是有很多东西都不记得了,地址和账号都忘记,或者只记得部分信息的太多了。目前能汇集到一起的数据,也只有2个live.spaces.com的内容,还有2个blogspot.com的内容。不过这样也不错了,汇总了这几年写的不少东西。以下数据也是目前能够汇总的数据了。

1,开始写是2005年1月份。

2,开始的时候写的多一点,在2006年发帖量最大,不过大多数是转帖和一些牢骚。

3,到现在累积出260条左右的文章,其中有不少是copy/paste模式。2005-43,2006-117,2007-41,2008-23,2009-24,2010-12

4,现在基本上在努力保持每月一条(网友称之为月经贴)。

5,微博账号在2010年qq上激活。未注册新浪,twitter/facebook由于被封,无访问量的SNS网站几乎等于不存在,导致我的账号都已经不记得了。

最后,争取把所有文章汇总到这两个地方(互为备份,免得再倒闭关张):

  • http:// zhangjiansheng.wordpress.com
  • http:// zhangjiansheng.blogspot.com

星期一, 九月 27, 2010

云计算和服务器集群的关系


2008.09.25 周鸿祎语出惊人,"一家企业没有1000台以上的服务器,就不要妄谈'云安全'。"


http://tech.163.com/08/0925/10/4MM87M3V000915BF.html


2010.06.25 他们自己装的超过100万台组成的计算机群是Google的真正核心竞争力。Skype做的电话系统是一个非常标准的云计算平台。


http://tech.sina.com.cn/it/2010-06-25/15364352038.shtml



不管是数据中心,还是服务器集群,还是超算,还是超级计算机,还是云计算,都是提供高效率的后台计算能力,这些就是未来IT业务的核心。至于端,目前最火的莫过于iPhone/iPad/gPhone/xPhone之类的移动终端了,个人理解基于HTML5的浏览器也会带来PC端的提升。可以预计的个人未来几年的工作,都会与之有关。


星期四, 九月 23, 2010

mysql的timestamp字段


在5.0和5.1版本上都发现了这个warning,记录一下。

根据bug报告记录显示,"WIN XP Professional" with MySQL 6.0.8Alpha版本上,干脆是直接fail掉了。



Server version: 5.1.32-log MySQL Community Server (GPL)

Your MySQL connection id is 124144 to server version: 5.0.27-standard-log



mysql> CREATE TABLE test1 (updatetime timestamp(14) DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) ENGINE = InnoDB;


Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> show warnings;

*************************** 1. row ***************************


Level: Warning


Code: 1287


Message: 'TIMESTAMP(14)' is deprecated; use 'TIMESTAMP' instead


1 row in set (0.00 sec)




同时,TIMESTAMP字段是个很神奇的东西,值得copy一下其使用规则。


TIMESTAMP值显示尺寸的格式如下表所示:


  :


  +---------------+----------------+


  | 列类型    | 显示格式    |


  | TIMESTAMP(14) | YYYYMMDDHHMMSS | 


  | TIMESTAMP(12) | YYMMDDHHMMSS  |


  | TIMESTAMP(10) | YYMMDDHHMM   |


  | TIMESTAMP(8) | YYYYMMDD    |


  | TIMESTAMP(6) | YYMMDD     |


  | TIMESTAMP(4) | YYMM      |


  | TIMESTAMP(2) | YY       |


  +---------------+----------------+


  "完整"TIMESTAMP格式是14位,但TIMESTAMP列也可以用更短的显示尺寸创造


  最常见的显示尺寸是6、8、12、和14。


  你可以在创建表时指定一个任意的显示尺寸,但是定义列长为0或比14大均会被强制定义为列长14。


  列长在从1~13范围的奇数值尺寸均被强制为下一个更大的偶数。


  


  列如:


  定义字段长度   强制字段长度


  TIMESTAMP(0) -> TIMESTAMP(14)


  TIMESTAMP(15)-> TIMESTAMP(14)


  TIMESTAMP(1) -> TIMESTAMP(2)


  TIMESTAMP(5) -> TIMESTAMP(6)


  


  所有的TIMESTAMP列都有同样的存储大小,


  使用被指定的时期时间值的完整精度(14位)存储合法的值不考虑显示尺寸。


  不合法的日期,将会被强制为0存储


你可以非常灵便地确定什么时候初始化和更新TIMESTAMP和对哪些列进行初始化和更新:例子,下面这些语句是等效的:

CREATE TABLE t (ts TIMESTAMP);


CREATE TABLE t (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);


CREATE TABLE t (ts TIMESTAMP ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP);

星期二, 八月 03, 2010

7月8日发布的Java 1.6.0_21,当月12日就爆出崩溃问题


昨天(2010年8月2日)看到的消息,Java 1.6.0_21有不少非技术问题,不是很稳定,建议暂时不要更新,当天外网电脑已经有此版本的更新提示了。






Java SE 6 Update 21发布 修复大量安全漏洞

美国太平洋时间2010年7月8日美国甲骨文公司发布Java SE 6 Update 21,简称:6u21。此更新的完整版本的内部版本是1.6.0_21-b06(其中"B"的意思是"Build--建设")。外部版本号是6u21。(51CTO独家专题推荐:Java EE 6平台指南)











甲骨文的Java更换企业名称导致Eclipse崩溃

在Java 1.6.0_21中,Java的公司字段从"Sun Microsystems, Inc"改为了"Oracle.",但这一改动却导致了始料未及的后果:因为有些应用程序是需要依靠公司字段识别虚拟机。集成开发工具Eclipse 3.3版后的版本,包括刚刚发布的Eclipse Helios,都由于这一改变而报OutOfMemoryError错误,因此而发生崩溃。Java是通过自动更新程序更新的。

星期四, 七月 15, 2010

linux var log问题解决


观察新装的几台linux服务器状况,发现var目录超大,连续两周检查,均超大。


大文件分别存储在这些目录中:/var/log/xferlog, /var/cache/logwatch


1,检查发现,xferlog是vsftpd产生的。

而其根源在于vsftpd的缺省配置。

[root@xx~]# grep xfer /etc/vsftpd/vsftpd.conf


xferlog_enable=YES


#xferlog_file=/var/log/vsftpd.log


xferlog_std_format=YES

貌似配置没啥问题,从表面来看也不应该产生xferlog文件,但是偏偏/var/log目录下没有vsftpd.log,只有另一个xferlog
文件。其原因在于xferlog_file
缺省值是/var/log/xferlog,它被注释掉了,所以执行缺省值。




而每天都会进行归档的/etc/cron.daily/logrotate程序的配置中没有包括xferlog文件的规档,但是它已经缺省包含了/var/log/vsftpd.log的归档配置。

[root@xx~]# cat /etc/logrotate.d/vsftpd.log


/var/log/vsftpd.log {


# ftpd doesn't handle SIGHUP properly


nocompress


missingok


}


解决办法很简单,修改/etc/vsftpd/vsftpd.conf配置文件,把xferlog_file前面的#井号去掉。然后重启vsftpd即可。




2,检查发现,logwatch是每天都会增加的。

每天都由/etc/cron.daily/0logwatch来执行和调度。

目前还没有找到太好的办法来控制这些文件的产生。

如果需要手工删除过大的文件,可以通过find来查找。

查找大于1M大小的文件 find . -size +1M -exec ls -l {} ;


估计可以按这种思路去解决:

vi /etc/cron.daily/tmpwatch

增加一行内容,保留100天的归档文件(子目录):


/usr/sbin/tmpwatch --mtime 2400 /var/cache/logwatch






星期一, 七月 05, 2010

酷酷的小电脑foxconn NetBox nT330i

NetBox-nT330i


Thin and light design 250.5mm * 168mm * 22mm


CPU Intel Atom Dual Core 330, FSB 533 1.60GHZ


Chipset nVIDIA MCP7A-ION chipset


主机(准系统)是在淘宝买的,1350元。




硬盘在京东买的,西部数据 2.5寸 5400rpm 320GB,299元。


内存在京东买的,金士顿DDR2 800 2GB笔记本内存,288元。


信号线:以前买的HDMI线29元,新买的DVI线29元,主机是双接口的,使用中任选其一即可。


总计不到2000元。




1,尺寸。非常的小。和常规无线路由器AP差不多大,比一般的上网本更小更薄。


2,性能。还不错,XP启动需要50-90秒之间。


3,高清。1080P没有发现问题,很流畅。


4,温度。没有长时间烧,目前感觉还可以。宣传上来说ATOM和ION都是非常低电节能的。




http://www.foxconnchannel.com/product/Barebones/NT330i/index.html


http://item.taobao.com/item.htm?id=3956050615


http://www.360buy.com/product/171259.html


http://www.360buy.com/product/145051.html


http://www.360buy.com/product/123156.html


http://www.360buy.com/product/155536.html






星期一, 六月 14, 2010

db2 v9对linux版本的要求


居然有3个月没写过技术贴了,说明也很久没成长了。惭愧啊,三个月都是在热盛饭。


总结一下db2 v9对linux版本的要求吧,也算是这两天解决的一个问题。

问题现象:

install db2 9 (64 bit) on Redhat Enterprise Linux (64 bit). It is giving error.


ERROR:

The following library files could not be loaded by db2langdir in /shared/DB2_V_Client/db2/linuxamd64/install/../bin

-> libstdc++.so.5


在执行DB2安装程序时,总是显示没有libstdc++.so.5文件?


原因:由于C语言库版本高,系统中只有libstdc++.so.6。


解决方法:找一个libstdc++.so.5的RPM包,安装上就可以了。软件包是类似于compat-libstdc++-33-3.2.3-63.i386.rpm或者compat-libstdc++-33-3.2.3-63.x86_64.rpm的一个rpm包,一般操作系统DVD安装光盘里会带的。


DB2 9.1


Red Hat Enterprise Linux (RHEL) 4 和 5


#没提到libstdc++的要求,事实证明也必须有libstdc++so.5才能安装和运行。


DB2 9.5


Red Hat Enterprise Linux(RHEL)4 Update 4


Red Hat Enterprise Linux(RHEL)5


libstdc++so.5


DB2 9.7


Red Hat Enterprise Linux (RHEL) 5 更新 2


libstdc++so.6


# 对于 DB2 Net Search Extender,libstdc++.so.5 是必需的。


# 对于 DB2 数据库服务器和客户机,libstdc++.so.6 是必需的。但是,如果使用了 IBM Tivoli® System Automation for Multiplatforms 或 IBM Tivoli Monitoring for Databases: DB2 Agent,那么需要 libstdc++.so.5。



星期二, 三月 16, 2010

明天星期几

木木和姥姥回成都一趟,回京后需要休息两周,3月10日开始在家呆着,很是调皮,把姥姥累够呛。


以前哄他上幼儿园,要说今天是星期1,那明天是星期几呢,木木就知道明天是星期2所以要上班要上幼儿园。


最近我们不问他了,改他来问我们了,今天星期几啊,明天星期几啊,就等着你说爸妈要上班,他要去幼儿园,我们就是不说这句话。憋了几次,他就直接表达了:我想去幼儿园,我想老师了,我想同学班了(他们班的同学)。


周三开始在家休息,周五已经开始念叨想去幼儿园了,还真是长大了,需要和小伙伴一起玩了。


那天教他认字,还自己说呢,在家里他是张驰木木,在幼儿园他是张驰哥哥。




星期四, 三月 04, 2010

Hello world!

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

星期日, 二月 14, 2010

使用clonezilla进行linux系统的物理机到虚拟机的P2V迁移


写出来还是挺简单的,解决问题的过程还是挺辛苦的,主要是google一些资料,还要甄别出部分资料的误导。


问题的来源:


10号上午,偶打算用ghost备份linux系统,在机房进行实际操作的时候,发现ghost(版本11)提示系统内有LVM,它可以备份,但是可能恢复的时候会有问题,就做了备份,但没敢做恢复试验。回来问专家,并google一些资料,发现大多数人都是说不行的,偶直接放弃恢复的想法。google的时候,发现了clonezilla真么个开源东东。


10号下午,偶和丁丁去机房做测试,用clonezilla还算顺利,成功备份出来,直接傻大胆的测试了一下,也成功了。由于ibm的developworks说可以进行p2v试验,丁丁兴趣就比较大了。


11号,偶在机房,把6台linux机器做了clonezilla的镜像,把1台win2008机器做了ghost镜像。下午在丁丁的虚拟环境中进行恢复试验,到下班的时候接近尾声,后来丁丁给我短信,启动失败。


12号,上午查资料,晚上也抽空google一下。


13号,牛年最后一天了,休息。


14号上午,虎年第一天就要值班,闲来无事,继续恢复linux系统的实验,综合google出来的方法基本上直接成功。


问题点:引导时,kernel panic,找不到硬盘,找不到vg,找不到lv等等。但是如果用引导光盘进去linux rescue发现一切都是好的,lv/pv/vg都可以看到,所以估计还是引导过程出的问题,事实上也仅仅是需要重新编译一下initrd,让它具有vmware环境里硬盘的驱动就可以了。vmware缺省的scsi硬盘是lsilogic型号的。


环境说明:


物理机:DELL R710, Asianux3sp2-64bit


虚拟机:DELL R710, Vmware Esx4(vSphere)


所用软件版本:clonezilla-live-1.2.3-27.iso, rhel-server-5.3-x86_64-dvd.iso


有用的资料:


http://www.ibm.com/developerworks/cn/linux/l-clonezilla/index.html


http://hi.baidu.com/%C7%E1%D2%F7%CD%F9%CA%C2/blog/item/de57aa943bb00f41d0135e07.html


http://tzahid.spaces.live.com/blog/cns!E99E74DBE0A928BC!595.entry


http://www.mondorescue.org/docs/p2v.pdf



http://cdnetworks-kr-1.dl.sourceforge.net/project/clonezilla/clonezilla_live_stable/clonezilla-live-1.2.3-27.iso


丁丁找到的克隆Linux开源资料:


1.g4l http://sourceforge.net/projects/g4l/


2.Mondorescue http://www.mondorescue.org/


3.partimage http://www.partimage.org/


4.Clonezilla http://clonezilla.org/


操作步骤:(测试成功)


1,使用clonezilla live进行备份。


可备份到移动硬盘上,或者网络上。


不管使用哪种方式,都建议将备份好的image放到网络上,便于后续的恢复工作。


记录一下,当前1.2.3版本的clonezilla还不认识R710的网卡,所以引导过程需要超时4次,每次1分钟,因为机器有4块网卡,耗时。当了后边vmware环境中,它就认识那个网卡了,启动非常快速。


2,在虚拟机中创建一个新的虚拟机。


注意硬盘不能小于物理机的硬盘。


3,启动虚拟机,并以clonezilla live光盘引导。


进入shell模式,使用fdisk对本地的硬盘进行分区,只需要创建一个分区,保存分区表。


重启虚拟机。


sudo su -


fdisk -l


fdisk /dev/sda;(创建分区)


reboot


4,再次以clonezilla live光盘引导,启动虚拟机,进行linux系统的恢复。


进行恢复。使用网络资源进行恢复,本地机器设置静态ip即可,我使用的ssh方式挂载镜像数据,非常方便。


5,恢复系统以后,调整一些参数。


如果不执行此步骤,直接启动虚机硬盘引导,会遇到panic之类的严重错误,其实就是找不到合适的引导盘。


用linux的安装光盘(随便哪个版本都可以,只要是Linux即可,版本与主机系统相同是最好)引导虚拟机启动,进入linux rescue模式。


然后执行mkinitrd命令,重建initrd即可。


如果有多余的文件系统,可以修改/etc/fstab文件进行注释,如果原来物理机里有多块本地硬盘,或者加载有iscsi/san等网络磁盘,都需要修改这个文件。


6,重启就好了。


poertoff虚机,修改虚机设置,将光驱挂载去掉,虚拟机可以不要光盘引导了,可以自行引导了。


power on之后,虚机不再报错了,系统正常了!


只需要修改自己的网络地址,所有服务已正常。


==============================================================


linux rescue


chroot /mnt/sysimage/


vi /etc/fstab


vi /etc/modprobe.conf


cp -p /boot/initrd-2.6.18-128.7AXS3.img /boot/initrd-2.6.18-128.7AXS3.img.old


mkinitrd -v -f /boot/initrd-2.6.18-128.7AXS3.img 2.6.18-128.7AXS3


内核版本可以看这里:ls -l /lib/modules/


cat /etc/modprobe.conf


alias scsi_hostadapter mptbase


alias scsi_hostadapter1 mptspi


alias scsi_hostadapter2 ata_piix


需要注释掉原来的有关scsi_hostadpter(n)之类的命令行。


vmware的虚拟硬盘是lsilogic,需要装载mpt系列驱动。


cat /etc/sysconfig/network-scripts/ifcfg-eth0


# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)


DEVICE=eth0


BOOTPROTO=none


HWADDR=00:0C:29:A3:6D:28


ONBOOT=yes


NETMASK=255.255.255.0


IPADDR=10.10.10.250


GATEWAY=10.10.10.254


TYPE=Ethernet


USERCTL=no


IPV6INIT=no


PEERDNS=yes



星期六, 一月 30, 2010

接触sun solaris产品


2010年1月。

新年头一个月,基本上都在折腾那两台SUN T5240了,当然还有一台存储是Sun StorageTek 6140。

虽然自1997年以来都在用IBM的设备,但俺主要负责应用,在系统层面知之也不多。

好在自2007年以来,对PC Server有了更进一步认识,配合Linux系统,还是很顺手。

SUN设备基本可以算是第一次使用,虽然2001年接触过E250,但也仅仅限于在OS上面装个apache和gcc之类的,了解不算深入。

这次由于职责所在,接触了sun的服务器和存储。

总体来说,存储还算可以,管理虽然和IBM的不太一样,但也算简单易用。

但是,SUN的服务器实在是不敢苟同,不能推荐大范围使用。


列一下初步认识吧。

1,那个CPU。

真是慢啊,号称是配备了2颗六核UltraSPARC T2,但由于主频是1.2G,尽管机器配备了32GB内存,可在启动WAS的时候,居然耗时12分钟+30秒,太令人郁闷了。

2,那个显示器。

可能是小机的原因,人家标配是没有显卡的,单独配了显卡,缺省人家也不往上边输出的。

就算你改过来,还有可能因为接线和开机的顺序不同,导致不同结果。

说实话,到现在,我也没弄明白,怎么可以肯定的让它在直连的显示器上进行终端显示。

3,那个cluster。

安装包巨大,几百M还是有的,还要再打一堆补丁就不说了。

操作还算简单。功能不算丰富,尤其是设置方面,没啥可设置的。

或许是人家很强大的缘故,所以全智能了?应该不至于。

但感觉和linux的开源产品heartbeat没有太大区别,可以多资源组配置算是比HB好的地方了。

4,那个google

在互联网时代,居然有google/baidu不出来的技术问题/资料,sun产品应该算其中之一了。

很多问题,提交到google上,居然没啥接近的信息。

或许是sun售后做的太好了,不需要大家用google解决之。

5,工业化产品,PC服务器。

性价比绝对要让位于PC server了。

在Intel于2009年推出Nehalem-EP后,业界普遍知道了5500 CPU的强大动力,以及经济萧条影响之下,工业化开放标准设备PC服务器之便宜,性价比之高,绝不是做专有设备的SUN或者IBM的RISC小机能比的了。

而如果Intel能够在2010年如期推出Nehalem-EX处理器,PC Server能够担当数据库服务器,基本上应该就没有问题了,这目前是RISC能够固守的最后一块阵地了。

当然Intel针对的并不单单是RISC,而是AMD,这几年AMD的确给市场带来不少好东西,促使intel也推出更好更便宜的处理器。这才是市场。

而SUN和IBM的RISC呢,欺骗IT群众。在做不了多核的时候,可劲的提高主频,在主频提高不了的的时候,又用多核解决问题,到了6核以后,又说核心之间的协作也太消耗资源,不能更多核了,而等另一个对手做出更多核的时候,他们还是要跟进。到最后你也不知道到底是技术有瓶颈,还是他的市场策略有问题。总之千万别听信他们的托词,一定要性价比,一定要知道更高主频更多核心才能带来高性能。当然了低碳节能是另外一个话题,也是可以作为他们的托辞之一的。