Skip to content


php5.2.14中strtotime格式时间戳错误引起日期混乱

状况是用smarty version 2.6.5-dev格式的时间在线上服务器显示时间不对.

{$smarty.now|date_format:”%Y/%m/%d %H:%M”}

会显示成 5068/08/16 10:30

检查smarty/plugins/shared.make_timestamp.php
strtotime函数在不同版本下会有不同返回结果

$time = strtotime($string);

编写代码确认
code:


win php5.3.1
result:
1313465002—bool(false)

linux php5.2.14
result:
1313465026—int(96457670026)

“96457670026”?这个就是引起错误的原因.

修改下smarty/plugins/shared.make_timestamp.php
解决问题

if (is_numeric($string) && $string != -1)
return $string;
$time = strtotime($string);
if (is_numeric($time) && $time != -1)
return $time;

Posted in PHP.

Tagged with , , , .


更新个php验证email正则

网上随处可见的验证规则会漏掉用户名中常见字符”.”,”-“,”_”;
以及后缀中可能是二级或三级域名的情况.

‘*’ ‘+’ 和 ‘?’的规则
‘*’ 匹配0或多次
‘+’ 匹配1或多次
‘?’ 匹配0或1次

下面函数的验证规则为:
必需有一个不以”.”开头的字符后接0到多个字符
接上@须有一个字符开头接上0到多个包含”.”的子域名
最后接上”.”开头2到4个字符的域名后缀


function validEmail($address)
{
if(!preg_match(“/^[0-9a-zA-Z_-]+(\.[0-9a-zA-Z_-]+)*@[a-zA-Z0-9_-]+(\.{1}[a-zA-Z0-9_-]+)*\.{1}[a-zA-Z]{2,4}$/i”,$address))
{
return False;
}
return True;
}

Posted in PHP.

Tagged with , , .


Dell R410 网卡在Centos5.5 上丢包

现象是每几十次访问网页就会一次打不开,数据库,临控等才时常取不到数据.
好像r410的网卡和centos5.5不怎么兼容

uname -a

Linux c1gserver 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

dmesg |grep bnx

Broadcom NetXtreme II Gigabit Ethernet Driver bnx2 v1.9.3 (March 17, 2009)
bnx2: eth0: using MSIX
bnx2: eth0 NIC Copper Link is Up, 100 Mbps full duplex

ifconfig
有大量的丢包;dropped:6620400

eth0 Link encap:Ethernet HWaddr 00:26:B9:3B:XX:C3
inet addr:61.255.xx.xx Bcast:61.255.xx.xx Mask:255.255.255.192
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7330597243 errors:1 dropped:6620400 overruns:0 frame:1
TX packets:8116489614 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3435468718053 (3.1 TiB) TX bytes:3656517601592 (3.3 TiB)
Interrupt:82 Memory:da000000-da012800

一.先尝试增加网卡缓存来解决问题
1.ethtool -g eth0

Ring parameters for eth0:
Pre-set maximums:
RX: 1020
RX Mini: 0
RX Jumbo: 4080
TX: 255
Current hardware settings:
RX: 255
RX Mini: 0
RX Jumbo: 0
TX: 255

2.ethtool -G eth0 rx 1000
ethtool -g eth0

Ring parameters for eth0:
Pre-set maximums:
RX: 1020
RX Mini: 0
RX Jumbo: 4080
TX: 255
Current hardware settings:
RX: 1000
RX Mini: 0
RX Jumbo: 0
TX: 255

ifconfig

eth0 Link encap:Ethernet HWaddr 00:26:B9:3B:XX:C3
inet addr:61.255.xx.xx Bcast:61.255.xx.xx Mask:255.255.255.192
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1348879 errors:0 dropped:2714 overruns:0 frame:0
TX packets:1449564 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:646430926 (616.4 MiB) TX bytes:576842481 (550.1 MiB)
Interrupt:82 Memory:da000000-da012800

ethtool -S eth0

NIC statistics:
rx_bytes: 645417070
rx_error_bytes: 0
tx_bytes: 575096746
tx_error_bytes: 0
rx_ucast_packets: 1345249
rx_mcast_packets: 17
rx_bcast_packets: 826
tx_ucast_packets: 1446406
tx_mcast_packets: 0
tx_bcast_packets: 0
tx_mac_errors: 0
tx_carrier_errors: 0
rx_crc_errors: 0
rx_align_errors: 0
tx_single_collisions: 0
tx_multi_collisions: 0
tx_deferred: 0
tx_excess_collisions: 0
tx_late_collisions: 0
tx_total_collisions: 0
rx_fragments: 0
rx_jabbers: 0
rx_undersize_packets: 0
rx_oversize_packets: 0
rx_64_byte_packets: 620303
rx_65_to_127_byte_packets: 87492
rx_128_to_255_byte_packets: 36556
rx_256_to_511_byte_packets: 212099
rx_512_to_1023_byte_packets: 45961
rx_1024_to_1522_byte_packets: 343681
rx_1523_to_9022_byte_packets: 0
tx_64_byte_packets: 368814
tx_65_to_127_byte_packets: 714315
tx_128_to_255_byte_packets: 13048
tx_256_to_511_byte_packets: 18258
tx_512_to_1023_byte_packets: 39752
tx_1024_to_1522_byte_packets: 292219
tx_1523_to_9022_byte_packets: 0
rx_xon_frames: 0
rx_xoff_frames: 0
tx_xon_frames: 0
tx_xoff_frames: 0
rx_mac_ctrl_frames: 0
rx_filtered_packets: 0
rx_discards: 0
rx_fw_discards: 2704

rx_fw_discards: 2704
问题没有解决,依然丢包

二.更新网卡驱动
lsmod |grep bnx2

bnx2 209997 0

ethtool -i eth0

driver: bnx2
version: 1.9.3
firmware-version: 5.0.6 NCSI 2.0.3
bus-info: 0000:01:00.0

modinfo bnx2

filename: /lib/modules/2.6.18-164.el5/kernel/drivers/net/bnx2.ko
version: 1.9.3
license: GPL
description: Broadcom NetXtreme II BCM5706/5708/5709/5716 Driver
author: Michael Chan
srcversion: D151EAED8C1037CA480DE9A
alias: pci:v000014E4d0000163Csv*sd*bc*sc*i*
alias: pci:v000014E4d0000163Bsv*sd*bc*sc*i*
alias: pci:v000014E4d0000163Asv*sd*bc*sc*i*
alias: pci:v000014E4d00001639sv*sd*bc*sc*i*
alias: pci:v000014E4d000016ACsv*sd*bc*sc*i*
alias: pci:v000014E4d000016AAsv*sd*bc*sc*i*
alias: pci:v000014E4d000016AAsv0000103Csd00003102bc*sc*i*
alias: pci:v000014E4d0000164Csv*sd*bc*sc*i*
alias: pci:v000014E4d0000164Asv*sd*bc*sc*i*
alias: pci:v000014E4d0000164Asv0000103Csd00003106bc*sc*i*
alias: pci:v000014E4d0000164Asv0000103Csd00003101bc*sc*i*
depends:
vermagic: 2.6.18-164.el5 SMP mod_unload gcc-4.1
parm: disable_msi:Disable Message Signaled Interrupt (MSI) (int)
parm: enable_entropy:Allow bnx2 to populate the /dev/random entropy pool (int)
module_sig: 883f3504a9f766557f09578a977b7e112ebf209f6aab61295466fb787675fec1378b254df8d186609f705f1f37e06d7e2958667d258f6afe6ac1621228

1.从官网下载驱动
http://zh-cn.broadcom.com/support/ethernet_nic/netxtremeii.php

Linux
iSCSI HBA only supported on RHEL 5.4, SUSE SLES 11 SP1 or newer versions of these distributions
6.2.23 03/18/11
24MB

2.安装包
unzip linux-6.2.23.zip
cd Server/Linux/Driver/
rpm -ivh netxtreme2-6.2.23-1.src.rpm

1:netxtreme2 ########################################### [100%]

3.编译
cd /usr/src/redhat/
rpmbuild -bb SPECS/netxtreme2.spec

Wrote: /usr/src/redhat/RPMS/x86_64/netxtreme2-6.2.23-1.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.43778
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd netxtreme2-6.2.23
+ rm -rf /var/tmp/netxtreme2-buildroot /usr/src/redhat/BUILD/file.list.netxtreme2
+ exit 0

exit 0表示成功(1-255是失败)

4.安装生成的rpm包
cd RPMS/x86_64/
rpm -ivh netxtreme2-6.2.23-1.x86_64.rpm

Preparing… ########################################### [100%]
1:netxtreme2 ########################################### [100%]

新的驱动会生成在/lib/modules/2.6.18-164.el5/updates/

5.加载驱动
depmod -a
modprobe bnx2
service network restart
lsmod |grep bnx2

bnx2 209997 0

ethtool -i eth0

driver: bnx2
version: 1.9.3
firmware-version: 5.0.6 NCSI 2.0.3
bus-info: 0000:01:00.0

看着好像没区别,modinfo可以看到详细信息
modinfo bnx2

filename: /lib/modules/2.6.18-164.el5/updates/bnx2.ko
version: 2.0.23b
license: GPL
description: Broadcom NetXtreme II BCM5706/5708/5709/5716 Driver
author: Michael Chan
srcversion: 6E0DD070AB24C11F50B2712
alias: pci:v000014E4d0000163Csv*sd*bc*sc*i*
alias: pci:v000014E4d0000163Bsv*sd*bc*sc*i*
alias: pci:v000014E4d0000163Asv*sd*bc*sc*i*
alias: pci:v000014E4d00001639sv*sd*bc*sc*i*
alias: pci:v000014E4d000016ACsv*sd*bc*sc*i*
alias: pci:v000014E4d000016AAsv*sd*bc*sc*i*
alias: pci:v000014E4d000016AAsv0000103Csd00003102bc*sc*i*
alias: pci:v000014E4d0000164Csv*sd*bc*sc*i*
alias: pci:v000014E4d0000164Asv*sd*bc*sc*i*
alias: pci:v000014E4d0000164Asv0000103Csd00003106bc*sc*i*
alias: pci:v000014E4d0000164Asv0000103Csd00003101bc*sc*i*
depends:
vermagic: 2.6.18-164.el5 SMP mod_unload gcc-4.1
parm: disable_msi:Disable Message Signaled Interrupt (MSI) (int)
parm: stop_on_tx_timeout:For debugging purposes, prevent a chip reset when a tx timeout occurs (int)

观察一段时间没有问题

20110607更新
附加进一步解决方法

在/etc/modprobe.conf中加入一行

options bnx2 disable_msi=1

创建一个脚本来重启服务
vi net.sh

/etc/init.d/network stop
rmmod bnx2
modprobe bnx2
/etc/init.d/network start

chmod a+x net.sh
./net.sh

参考:
http://www.pcwind.net/dell-r410.html
http://bbs.linuxtone.org/thread-3813-1-1.html

Posted in linux 维护优化, 技术.

Tagged with , , , .


Lempelf一键包for rhel/centos 64bit发布

Lempelf一键安装包是什么?
——————————————————————————–
Lempelf一键安装包是用Shell编写的在Linux平台快速安装nginx+php+mysql的Shell程序。

我们为什么需要它?
——————————————————————————–
编译安装需要输入大量的命令,如果是配置生产环境需要耗费大量的时间。
不会Linux的站长或Linux新手想使用Linux作为生产环境……

它有什么优势?
——————————————————————————–
无需一个一个的输入命令,无需值守,编译安装优化编译参数,提高性能,解决不必要的软件间依赖。

介绍及下载:http://blog.c1gstudio.com/lempelfpage

Posted in Lempelf一键包, shell, 技术.

Tagged with .


把xen虚拟机映像文件转化成基于lvm分区的

把xen虚拟机映像文件转化成基于lvm分区的

1.查看当前有两块硬盘
fdisk -l

Disk /dev/sda: 146.8 GB, 146815733760 bytes
255 heads, 63 sectors/track, 17849 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 25 200781 83 Linux
/dev/sda2 26 17849 143171280 8e Linux LVM

Disk /dev/sdb: 146.8 GB, 146815733760 bytes
255 heads, 63 sectors/track, 17849 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 17849 143372061 8e Linux LVM

2.查看lmv组
vgscan

Reading all physical volumes. This may take a while…
Found volume group “VolGroup00” using metadata type lvm2

只有一个组

3.查看lv分区
lvscan

ACTIVE ‘/dev/VolGroup00/LogVol02’ [30.00 GB] inherit
ACTIVE ‘/dev/VolGroup00/LogVol03’ [92.53 GB] inherit
ACTIVE ‘/dev/VolGroup00/LogVol01’ [10.00 GB] inherit
ACTIVE ‘/dev/VolGroup00/LogVol00’ [4.00 GB] inherit

4.查看pv情况
pvscan

PV /dev/sda2 VG VolGroup00 lvm2 [136.53 GB / 0 free]
Total: 1 [136.53 GB] / in use: 1 [136.53 GB] / in no VG: 0 [0 ]

硬盘/dev/sda2 分配给VolGroup00组,第二块硬盘还未分配

5.给第二块硬盘创建pv
pvcreate /dev/sdb1

Physical volume “/dev/sdb1” successfully created

6.再次查看pv,已分配
pvscan

PV /dev/sda2 VG VolGroup00 lvm2 [136.53 GB / 0 free]
PV /dev/sdb1 lvm2 [136.73 GB]
Total: 2 [273.26 GB] / in use: 1 [136.53 GB] / in no VG: 1 [136.73 GB]

7.创建新卷组
vgcreate VolGroup01 /dev/sdb1

Volume group “VolGroup01” successfully created

8.激活新卷组
vgchange -a y VolGroup01

0 logical volume(s) in volume group “VolGroup01” now active

9.查看vm1虚拟机映像文件大小
ls -lh /opt/vm1/vm1.img

-rw-r–r– 1 root root 15G Apr 12 15:32 /opt/vm1/vm1.img

10.创建一个和vm1虚拟机映像文件一样大小的lvm分区
lvcreate -L15G -n Vol01 VolGroup01

Logical volume “Vol01” created

11.关闭虚拟机
xm shutdown vm1

12.复制虚拟机映像文件和配置文件
dd if=/opt/vm1/vm1.img of=/dev/VolGroup01/Vol01

30722048+0 records in
30722048+0 records out
15729688576 bytes (16 GB) copied, 646.077 seconds, 24.3 MB/s

\cp /etc/xen/vm1 /etc/xen/vm3

13.修改虚拟机配置文件
vi /etc/xen/vm3


name = “vm1”
uuid = “85386e79-9f79-e243-9b62-3c9da736ae9f”
maxmem = 2048
memory = 2048
vcpus = 2
bootloader = “/usr/bin/pygrub”
on_poweroff = “destroy”
on_reboot = “restart”
on_crash = “restart”
disk = [ “tap:aio:/opt/vm1/vm1.img,xvda,w” ]
vif = [ “mac=00:16:36:47:a2:89,bridge=virbr0,script=vif-bridge” ]

修改name,uuid,mac保持唯一,通常将最后一位加1,修改disk路径.
修改后的配置

name = “vm3”
uuid = “85386e79-9f79-e243-9b62-3c9da736ae1f”
maxmem = 2048
memory = 2048
vcpus = 2
bootloader = “/usr/bin/pygrub”
on_poweroff = “destroy”
on_reboot = “restart”
on_crash = “restart”
disk = [ “phy:/dev/VolGroup01/Vol01,xvda,w” ]
vif = [ “mac=00:16:36:47:a2:81,bridge=virbr0,script=vif-bridge” ]

14.启动并进入虚拟机
vm create vm3 -c

15.修改主机名
15.1 hostname vm3

15.2 vi /etc/sysconfig/network

15.3 vi /etc/hosts

16.修改网卡ip和mac,和xen配置对应
vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.122.255
HWADDR=00:16:36:47:A2:81
IPADDR=192.168.122.13
NETMASK=255.255.255.0
NETWORK=192.168.122.0
ONBOOT=yes

17.重启网络,完成修改
/etc/init.d/network restart

18.测试
18.1 ctrl+]退出虚拟机
18.2启动”vm1″虚拟机
18.3测试vm1网络
ping 192.168.122.11
18.4测试vm3网络
ping 192.168.122.13
18.5测试虚拟机之间的网络
vm console vm3
ping 192.168.122.11

ps:随宿主启动及服务相关iptables不要忘记

参考:http://blog.c1gstudio.com/archives/1215

Posted in 技术, 虚拟化/xen.

Tagged with , .


XEN虚拟机复制

以映像文件方式保存的虚拟机复制非常方便.
只要拷贝xen vm的img镜像文件和配置文件,并修改相应配置文就可以了

1.关闭虚拟机
xm shutdown vm1

2.复制虚拟机映像文件和配置文件
\cp /opt/vm1/vm1.img /opt/vm1/vm2.img
\cp /etc/xen/vm1 /etc/xen/vm2

3.修改虚拟机配置文件
vi /etc/xen/vm2

name = “vm1”
uuid = “85386e79-9f79-e243-9b62-3c9da736ae9f”
maxmem = 2048
memory = 2048
vcpus = 2
bootloader = “/usr/bin/pygrub”
on_poweroff = “destroy”
on_reboot = “restart”
on_crash = “restart”
disk = [ “tap:aio:/opt/vm1/vm1.img,xvda,w” ]
vif = [ “mac=00:16:36:47:a2:89,bridge=virbr0,script=vif-bridge” ]

修改name,uuid,mac保持唯一,通常将最后一位加1,修改disk路径.
修改后的配置

name = “vm2”
uuid = “85386e79-9f79-e243-9b62-3c9da736ae0f”
maxmem = 2048
memory = 2048
vcpus = 2
bootloader = “/usr/bin/pygrub”
on_poweroff = “destroy”
on_reboot = “restart”
on_crash = “restart”
disk = [ “tap:aio:/opt/vm1/vm2.img,xvda,w” ]
vif = [ “mac=00:16:36:47:a2:80,bridge=virbr0,script=vif-bridge” ]

4.启动并进入虚拟机
vm create vm2 -c

5.修改主机名
5.1 hostname vm2

5.2 vi /etc/sysconfig/network

5.3 vi /etc/hosts

6.修改网卡ip和mac,和xen配置对应
vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.122.255
HWADDR=00:16:36:47:A2:80
IPADDR=192.168.122.12
NETMASK=255.255.255.0
NETWORK=192.168.122.0
ONBOOT=yes

7.重启网络,完成修改
/etc/init.d/network restart

8.测试
8.1 ctrl+]退出虚拟机
8.2启动”vm1″虚拟机
8.3测试vm1网络
ping 192.168.122.11
8.4测试vm2网络
ping 192.168.122.12
8.5测试虚拟机之间的网络
vm console vm2
ping 192.168.122.11

ps:随宿主启动及服务相关iptables不要忘记

Posted in 技术, 虚拟化/xen.

Tagged with , .


Linux下用zip给压缩包加上密码

1.打包tmp目录为file.tar
tar -cf file.tar tmp/

2.给file.tar文件加上密码123456 并删除原始文件
zip -P 123456 -m file.zip file.tar

adding: file.zip (deflated 96%)

3.解压file.zip
unzip file.zip

Archive: file.zip
[file.zip] file password:

zip功能说明:压缩文件。
unzip功能说明:解压缩zip文件

语  法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件…][-i <范本样式>][-x <范本样式>]

补充说明:zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有”.zip”扩展名的压缩文件。

参  数:
-A 调整可执行的自动解压缩文件。
-b<工作目录> 指定暂时存放文件的目录。

-c 替每个被压缩的文件加上注释。
-d 从压缩文件内删除指定的文件。
-D 压缩文件内不建立目录名称。
-f 此参数的效果和指定”-u”参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
-F 尝试修复已损坏的压缩文件。
-g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-h 在线帮助。
-i<范本样式> 只压缩符合条件的文件。
-j 只保存文件名称及其内容,而不存放任何目录名称。
-J 删除压缩文件前面不必要的数据。
-k 使用MS-DOS兼容格式的文件名称。
-l 压缩文件时,把LF字符置换成LF+CR字符。
-ll 压缩文件时,把LF+CR字符置换成LF字符。
-L 显示版权信息。
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-n<字尾字符串> 不压缩具有特定字尾字符串的文件。
-o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
-q 不显示指令执行过程。
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
-S 包含系统和隐藏文件。
-t<日期时间> 把压缩文件的日期设成指定的日期。
-T 检查备份文件内的每个文件是否正确无误。
-u 更换较新的文件到压缩文件内。
-v 显示指令执行过程或显示版本信息。
-V 保存VMS操作系统的文件属性。
-w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
-x<范本样式> 压缩时排除符合条件的文件。
-X 不保存额外的文件属性。
-y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
-z 替压缩文件加上注释。
-$ 保存第一个被压缩文件所在磁盘的卷册名称。
–<压缩效率> 压缩效率是一个介于1-9的数值。

Posted in Linux 命令, 技术.

Tagged with .


Centos5.5使用xen 3.0.3安装Linux虚拟机

网上一些中文资料不够详细,一直没装成功,经历数十次的失败现成功安装
通过桥接和端口转发,宿主机和虚拟机都可对外服务.

一.安装xen
1.系统信息
dell r410
5506*2,4G*4,SAS146G*2

cat /etc/issue
CentOS release 5.5 (Final)

uname -a
Linux beetel 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

机器名:server_dom0
公网ip:61.xxx.xx.xx
虚拟机ip:192.168.122.11

查看虚似化支持
grep -E ‘(vmx|svm)’ /proc/cpuinfo

flags : fpu tsc msr pae cx8 apic mtrr cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc pni vmx est ssse3 cx16 sse4_1 sse4_2 popcnt lahf_lm

2.设置网易源更新组件
xen安装方式有yum,二进制,编译
我选择yum方式最方便
cd /etc/yum.repos.d
wget http://mirrors.163.com/.help/CentOS-Base-163.repo
yum makecache
yum groupinstall “Development Libraries”
yum groupinstall “Development Tools”
yum install transfig wget texi2html libaio-devel dev86 glibc-devel e2fsprogs-devel gitk mkinitrd iasl xz-devel bzip2-devel pciutils-libs pciutils-devel SDL-devel libX11-devel gtk2-devel bridge-utils PyXML qemu-common qemu-img mercurial

2.安装centos5.5自带的xen 3.0.3-105.el5_5.5
这个是07年版的,最新为xen3.4.3
yum groupinstall Virtualization

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
gnome-applet-vm x86_64 0.1.2-1.el5 base 76 k
kernel-xen x86_64 2.6.18-194.32.1.el5 updates 20 M
libvirt i386 0.6.3-33.el5_5.3 updates 2.0 M
libvirt x86_64 0.6.3-33.el5_5.3 updates 2.0 M
virt-manager x86_64 0.6.1-12.el5 base 1.5 M
virt-viewer x86_64 0.0.2-3.el5 base 25 k
xen x86_64 3.0.3-105.el5_5.5 updates 1.9 M
Installing for dependencies:
libvirt-python x86_64 0.6.3-33.el5_5.3 updates 137 k
python-virtinst noarch 0.400.3-9.el5_5.1 updates 380 k

Transaction Summary
================================================================================
Install 9 Package(s)
Upgrade 0 Package(s)

Total download size: 28 M
Is this ok [y/N]: y

3.修改其中的default=1为default=0,启用xen内核
vi /etc/grub.conf

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.32.1.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-194.32.1.el5
module /vmlinuz-2.6.18-194.32.1.el5xen ro root=/dev/VolGroup00/LogVol02
module /initrd-2.6.18-194.32.1.el5xen.img
title CentOS (2.6.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol02
initrd /initrd-2.6.18-194.el5.img

4.重新启动计算机
reboot

5.重启后登录系统,检查XEN是否正常

5.1 内核版本
uname -a
Linux beetel 2.6.18-194.32.1.el5xen #1 SMP Wed Jan 5 18:44:24 EST 2011 x86_64 x86_64 x86_64 GNU/Linux

5.2 xen信息
xm info

host : server_dom0
release : 2.6.18-194.32.1.el5xen
version : #1 SMP Wed Jan 5 18:44:24 EST 2011
machine : x86_64
nr_cpus : 8
nr_nodes : 1
sockets_per_node : 2
cores_per_socket : 4
threads_per_core : 1
cpu_mhz : 2128
hw_caps : bfebfbff:28100800:00000000:00000140:009ce3bd:00000000:00000001
total_memory : 16371
free_memory : 383
node_to_cpu : node0:0-7
xen_major : 3
xen_minor : 1
xen_extra : .2-194.32.1.el5
xen_caps : xen-3.0-x86_64 xen-3.0-x86_32p
xen_pagesize : 4096
platform_params : virt_start=0xffff800000000000
xen_changeset : unavailable
cc_compiler : gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)
cc_compile_by : mockbuild
cc_compile_domain : centos.org
cc_compile_date : Wed Jan 5 17:43:03 EST 2011
xend_config_format : 2

5.3查看xen日志
ls -lh /var/log/xen

5.4查看网卡
ifconfig

eth0 Link encap:Ethernet HWaddr 7x:2x:Cx:0x:5x:Cx
inet addr:61.xxx.xx.xx Bcast:61.xxx.xx.xx Mask:255.255.255.128
inet6 addr: fe80::xxxxxxxxxxxxxx/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:22251 errors:0 dropped:0 overruns:0 frame:0
TX packets:10210 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:20696752 (19.7 MiB) TX bytes:796183 (777.5 KiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

peth0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:23591 errors:0 dropped:0 overruns:0 frame:0
TX packets:10233 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:21590086 (20.5 MiB) TX bytes:876169 (855.6 KiB)
Interrupt:25 Memory:da000000-da012800

vif0.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:10212 errors:0 dropped:0 overruns:0 frame:0
TX packets:22251 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:796563 (777.8 KiB) TX bytes:20696752 (19.7 MiB)

virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:468 (468.0 b)

xenbr0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:5505 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:273968 (267.5 KiB) TX bytes:0 (0.0 b)

新增了peth0,vif0.0,virbr0,xenbr0
peth0为物理网卡
eth0为宿主机(dom0)虚拟网络设备
vif0.0第x个虚拟机(domu)中的第x块网卡,这里为dom0的接口
virbr0和xenbr0为软桥接接口

brctl show

bridge name bridge id STP enabled interfaces
virbr0 8000.000000000000 yes
xenbr0 8000.feffffffffff no peth0
vif0.0

5.5查看宿主iptables
cat /etc/sysconfig/iptables

# Generated by iptables-save v1.3.5 on Thu Mar 31 01:08:25 2011
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.0/255.0.0.0 -i ! lo -j DROP
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 3306 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 22 -j ACCEPT
-A INPUT -p udp -m udp –dport 123 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eth0 -j ACCEPT
COMMIT
# Completed on Thu Mar 31 01:08:25 2011
# Generated by iptables-save v1.3.5 on Thu Mar 31 01:08:25 2011
*nat
:PREROUTING ACCEPT [166:7018]
:POSTROUTING ACCEPT [1:80]
:OUTPUT ACCEPT [1:80]
COMMIT
# Completed on Thu Mar 31 01:08:25 2011
# Generated by iptables-save v1.3.5 on Thu Mar 31 01:08:25 2011
*mangle
:PREROUTING ACCEPT [224:12218]
:INPUT ACCEPT [58:5200]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [47:6304]
:POSTROUTING ACCEPT [47:6304]
COMMIT
# Completed on Thu Mar 31 01:08:25 2011

二、安装XEN的Linux客户机系统

准备好安装源
1.从网易下载centos5.5的bt
http://mirrors.163.com/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-bin-DVD.torrent

2.刻盘

3.从cdrom 复制源到硬盘
mkdir /mnt/cdrom
mkdir /opt/iso
dd if=/dev/cdrom of=/opt/iso/centos.iso
ll -h /opt/iso/centos.iso
mount -o loop -t iso9660 /opt/iso/centos.iso /mnt/cdrom
ll /mnt/cdrom

4.制作映像文件
xen能安装和运行在实际的物理分区上,lvm分区上,一个映像文件中,或NFS等网络文件系统中

映像文件安全性和io性能比较低,但是很方便.
mkdir /opt/vm1
cd /opt/vm1
dd if=/dev/zero of=vm1.img bs=1M seek=15000 count=1

1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.002058 seconds, 510 MB/s

#这里创建15G大小

5.安装源获取方式

有http,ftp,nfs等方试

直接使用在线源
http://mirrors.163.com/centos/5.5/os/x86_64/
在设置完IP后就没有反应了
python -m SimpleHTTPServer
在setuptool安装时失败

使用nfs方式
vi /etc/exports
/mnt/cdrom *(sync,ro)

yum install nfs-utils portmap
nfs会使用随机端口,先把iptables关了
/etc/init.d/portmap start
/etc/init.d/nfs start
exportfs -rv

6.查看iptables
iptables-save

# Generated by iptables-save v1.3.5 on Thu Mar 31 01:15:31 2011
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i virbr0 -p udp -m udp –dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp –dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp –dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp –dport 67 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.0/255.0.0.0 -i ! lo -j DROP
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 3306 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 22 -j ACCEPT
-A INPUT -p udp -m udp –dport 123 -j ACCEPT
-A FORWARD -d 192.168.122.0/255.255.255.0 -o virbr0 -m state –state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/255.255.255.0 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT –reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT –reject-with icmp-port-unreachable
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eth0 -j ACCEPT
COMMIT
# Completed on Thu Mar 31 01:15:31 2011
# Generated by iptables-save v1.3.5 on Thu Mar 31 01:15:31 2011
*nat
:PREROUTING ACCEPT [602:26675]
:POSTROUTING ACCEPT [1:73]
:OUTPUT ACCEPT [1:73]
-A POSTROUTING -s 192.168.122.0/255.255.255.0 -d ! 192.168.122.0/255.255.255.0 -p tcp -j MASQUERADE –to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/255.255.255.0 -d ! 192.168.122.0/255.255.255.0 -p udp -j MASQUERADE –to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/255.255.255.0 -d ! 192.168.122.0/255.255.255.0 -j MASQUERADE
COMMIT
# Completed on Thu Mar 31 01:15:31 2011
# Generated by iptables-save v1.3.5 on Thu Mar 31 01:15:31 2011
*mangle
:PREROUTING ACCEPT [717:40264]
:INPUT ACCEPT [147:16162]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [129:19329]
:POSTROUTING ACCEPT [129:19329]
COMMIT
# Completed on Thu Mar 31 01:15:31 2011

系统重启后xen会再生成一次,会有重复,不作保存直接关了.
/etc/init.d/iptables stop

7.安装虚拟机

virt-install -n vm1 -r 2048 –vcpus=2 –file=/opt/vm1/vm1.img –nographics -p –location=nfs:192.168.122.1:/mnt/cdrom –bridge=virbr0

创建名为”vm1″的虚拟机,分配2G内存,2个cpu,使用”/opt/vm1/vm1.img”映像文件,半虚似化,使用nfs源,使用virbr0网桥
192.168.122.1为宿主virbr0的ip
我装了好N次卡在获取hostname那里,带上–bridge=virbr0参数就可以顺利通过

8.安装中
■语言选择english
■手动配置ipv4;ip:192.168.122.11/255.255.255.0,Gateway:192.168.122.1,Name Server: 192.168.122.1
如果virt-install的网络配置错误,会一直卡在这里
■下一步是选择”Use text mode”还是”Start VNC”,使用文本模式
■分区

/dev/xvda ^ |
| xvda1 1 13 101M ext3 /boot : |
| xvda2 14 144 1027M swap : |
| xvda3 145 1912 13868M ext3 / : |

■Use GRUB Boot Loader,4个ok
■配置网卡ip

IP Address Prefix (Netmask) |
| 192.168.122.11__ / 255.255.255.0___

■网关和dns

| Gateway: 192.168.122.1____________________________ |
| Primary DNS: 192.168.122.1____________________________ |
| Secondary DNS: 8.8.8.8__________________________________ |

■机器名设置:vm1
■时区设置:不使用utc,Asia/Shanghai
■root密码:
■安装包选择:去掉上面的*,使用自定义
选择Administration Tools,Base,Development Tools ,Editors,Text-based Internet
■依赖关系检查后按”OK”,系统开始格式化文件系统并复制文件
■重启

三、配置宿主机及虚拟机
1.进入虚拟机
重启后在sendmail和sm-client会卡一会
出来authconfig-tui的乱码配置界面,不停的闪啊闪,键盘也不听控制,不用操作,等它闪个一分钟就会自动关了

CentOS release 5.5 (Final)
Kernel 2.6.18-194.el5xen on an x86_64

vm1 login: root

输入root和密码进去后没有光标

退出并新开一个控制台然后重新进入
在宿主机
xm console vm1

2.虚拟机网卡配置
eth0 Link encap:Ethernet HWaddr 00:16:36:47:A2:89
inet addr:192.168.122.11 Bcast:192.168.122.255 Mask:255.255.255.0
inet6 addr: fe80::216:36ff:fe47:a289/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:354 errors:0 dropped:0 overruns:0 frame:0
TX packets:59 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:18489 (18.0 KiB) TX bytes:7066 (6.9 KiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)

3.虚拟机设置

3.1执行firstboot解决authconfig-tui乱码问题

3.2关闭服务方便测试
chkconfig sendmail off
chkconfig iptables off

4.测试虚拟机网络
ping 61.192.168.122.1 通
ping 61.xxx.xx.xx 通
ping 8.8.8.8 不通

因为宿主机刚才安装时关了iptables,所以不通

5.宿主机设置

5.1重启服务器
先reboot,xen会自动生成iptables

5.2启动虚拟机
xm create vm1 -c

6.虚传机安装http服务
6.1测试外网
ping 8.8.8.8 通

6.2安装apache
cd /etc/yum.repos.d
wget http://mirrors.163.com/.help/CentOS-Base-163.repo
yum makecache
yum -y install httpd

6.3生成个测试首页
echo ‘vm1’>/var/www/html/index.html
service httpd start
chkconfig httpd on

6.4测试本机
wget 192.168.122.11

–2011-03-31 11:54:23– http://192.168.122.11/
Connecting to 192.168.122.11:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 4 [text/html]
Saving to: `index.html.1′

100%[======================================>] 4 –.-K/s in 0s

2011-03-31 11:54:23 (217 KB/s) – `index.html.1′ saved [4/4]

cat index.html.1
vm1

7.宿主机测试
7.1内存分配了2G给虚传机
cat /proc/meminfo

MemTotal: 14319616 kB
MemFree: 13720696 kB

7.2新增了个网卡

vif1.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:158 errors:0 dropped:0 overruns:0 frame:0
TX packets:1958 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:32
RX bytes:9679 (9.4 KiB) TX bytes:114685 (111.9 KiB)

7.3虚拟机配置文件
cat /etc/xen/vm1

name = “vm1”
uuid = “85386e79-9f79-e243-9b62-3c9da736ae9f”
maxmem = 2048
memory = 2048
vcpus = 2
bootloader = “/usr/bin/pygrub”
on_poweroff = “destroy”
on_reboot = “restart”
on_crash = “restart”
disk = [ “tap:aio:/opt/vm1/vm1.img,xvda,w” ]
vif = [ “mac=00:16:36:47:a2:89,bridge=virbr0,script=vif-bridge” ]

7.4xend配置文件
cat /etc/xen/xend-config.sxp |grep -v “^#”|grep -v ^$

(xend-unix-server yes)
(xend-unix-path /var/lib/xend/xend-socket)
(xend-relocation-hosts-allow ‘^localhost$ ^localhost\\.localdomain$’)
(network-script network-bridge)
(vif-script vif-bridge)
(dom0-min-mem 256)
(dom0-cpus 0)

(vncpasswd ”)
(keymap ‘en-us’)

7.5虚传机列表
xm list

Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 13984 8 r—– 40.1
vm1 1 2047 2 -b—- 5.5

7.6 测试80端口http服务
wget 192.168.122.11

2011-03-31 11:55:17 (178 KB/s) – `index.html’ saved [4/4]

也没有问题

8.客户端测试
在本地电脑浏览器中输入61.xxx.xx.xx
无法连接

9.宿主机设置
9.1打开ip转发
echo ‘1’ > /proc/sys/net/ipv4/ip_forward
vi /etc/sysctl.conf

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

9.2转发公网80端口至虚传机80端口
公网ip:61.xxx.xx.xx
eht0为公网网卡
虚传机ip:192.168.122.11

iptables -A PREROUTING -t nat -p tcp -i eth0 –dport 80 -j DNAT –to 192.168.122.11:80
下面可加可不加
iptables -A POSTROUTING -t nat -d 192.168.122.11 -p tcp -m tcp –dport 80 -j SNAT –to 61.xxx.xx.xx

9.3增加forward充许
iptables -nL

Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all — 0.0.0.0/0 192.168.122.0/24 state RELATED,ESTABLISHED
ACCEPT all — 192.168.122.0/24 0.0.0.0/0
ACCEPT all — 0.0.0.0/0 0.0.0.0/0
REJECT all — 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all — 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
ACCEPT all — 0.0.0.0/0 0.0.0.0/0 PHYSDEV match –physdev-in vif1.0
ACCEPT all — 0.0.0.0/0 0.0.0.0/0 PHYSDEV match –physdev-in vif2.0

reject-with icmp-port-unreachable这两条规则禁止了方问
解决方式一:
执行下面命令删除规则(不推荐)

iptables -D FORWARD 4
iptables -D FORWARD 4

解决方式二:
增加新的充许规则

iptables -I FORWARD -i eth0 -o virbr0 -p tcp -m state –state NEW -j ACCEPT



iptables -I FORWARD -o virbr0 -j ACCEPT

宿主最后的iptables

# Generated by iptables-save v1.3.5 on Thu Mar 31 15:33:44 2011
*filter
:INPUT DROP [72:2903]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [24:2973]
-A INPUT -i virbr0 -p udp -m udp –dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp –dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp –dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp –dport 67 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.0/255.0.0.0 -i ! lo -j DROP
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 3306 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 22 -j ACCEPT
-A INPUT -p udp -m udp –dport 123 -j ACCEPT
-A FORWARD -i eth0 -o virbr0 -p tcp -m state –state NEW -j ACCEPT
-A FORWARD -d 192.168.122.0/255.255.255.0 -o virbr0 -m state –state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/255.255.255.0 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT –reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT –reject-with icmp-port-unreachable
-A FORWARD -i eth0 -o virbr0 -p tcp -m state –state NEW -j ACCEPT
-A FORWARD -m physdev –physdev-in vif1.0 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eth0 -j ACCEPT
COMMIT
# Completed on Thu Mar 31 15:33:44 2011
# Generated by iptables-save v1.3.5 on Thu Mar 31 15:33:44 2011
*nat
:PREROUTING ACCEPT [15745:680363]
:POSTROUTING ACCEPT [195:14508]
:OUTPUT ACCEPT [191:14292]
-A PREROUTING -i eth0 -p tcp -m tcp –dport 80 -j DNAT –to-destination 192.168.122.11:80
-A POSTROUTING -s 192.168.122.0/255.255.255.0 -d ! 192.168.122.0/255.255.255.0 -p tcp -j MASQUERADE –to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/255.255.255.0 -d ! 192.168.122.0/255.255.255.0 -p udp -j MASQUERADE –to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/255.255.255.0 -d ! 192.168.122.0/255.255.255.0 -j MASQUERADE
COMMIT
# Completed on Thu Mar 31 15:33:44 2011
# Generated by iptables-save v1.3.5 on Thu Mar 31 15:33:44 2011
*mangle
:PREROUTING ACCEPT [51572:51647208]
:INPUT ACCEPT [35843:50960353]
:FORWARD ACCEPT [214:22186]
:OUTPUT ACCEPT [31200:2591886]
:POSTROUTING ACCEPT [31414:2614072]
COMMIT
# Completed on Thu Mar 31 15:33:44 2011

客户端再次测试成功访问

9.4开机后添加iptables
xen的iptables规则是在开机后添加到现有的iptables中,其中有一条是清空FORWARD链,所以要重新再加一次
echo ‘iptables -A PREROUTING -t nat -p tcp -i eth0 –dport 80 -j DNAT –to 192.168.122.11:80’ >> /etc/rc.local
echo ‘iptables -I FORWARD -i eth0 -o virbr0 -p tcp -m state –state NEW -j ACCEPT’ >> /etc/rc.local

vi /opt/shell/vm_iptables.sh

#!/bin/sh
IPTABLES=/sbin/iptables

KERNEL=`/bin/uname -r`

if [ ${KERNEL: -3} = “xen” ]
then
#vm1 web
$IPTABLES -A PREROUTING -t nat -p tcp -i eth0 –dport 80 -j DNAT –to 192.168.122.11:80

#vm1 ssh
$IPTABLES -A INPUT -p tcp -m tcp –dport 7022 -j ACCEPT
$IPTABLES -A PREROUTING -t nat -p tcp -i eth0 –dport 7022 -j DNAT –to 192.168.122.11:22
$IPTABLES -I FORWARD -i eth0 -o virbr0 -p tcp -m state –state NEW -j ACCEPT
else
#nothing
exit
fi

chmod 750 /opt/shell/vm_iptables.sh
echo ‘/opt/shell/vm_iptables.sh’ >> /etc/rc.local

9.5让虚传机随宿主启动
cd /etc/xen/auto
ln -s ../vm1 ./vm1

9.6重启宿主并测试

四、安装提示
注意
1.安装源建议使用本地的http或nfs服务,并打开相应端口
2.virt-install后面带上–bridge=virbr0
3.默认网关为192.168.122.1,虚拟机ip要在一个网段
配置在/usr/share/libvirt/networks/default.xml
4.虚拟机首次重启乱码,稍等一会后会自动关闭
5.虚拟机开启http服务后注意打相应iptables端口
6.宿主机增加iptables并放在rc.local中

iptables -A PREROUTING -t nat -p tcp -i eth0 –dport 80 -j DNAT –to 192.168.122.11:80
iptables -I FORWARD -i eth0 -o virbr0 -p tcp -m state –state NEW -j ACCEPT

提示
1.开启虚拟机并进入
xm create vm1 -c
2.立即终止一个虚传机
xm destroy vm1
3.进入虚拟机
xm console vm1
4.跳出虚拟机
ctrl+]
5.重排虚拟机id
/etc/init.d/xend restart
6.完整删除虚拟机
这个没有找到
7.移除xen
yum groupremove Virtualization

参考:
http://caishu.name/content/%E4%BD%BF%E7%94%A8xm%E5%9C%A8centos%E4%B8%8A%E5%AE%89%E8%A3%85xen%E7%9A%84%E8%99%9A%E6%8B%9F%E6%9C%BA
http://wiki.kartbuilding.net/index.php/Xen_Networking
http://cooker.techsnail.com/index.php/XEN,_KVM,_Libvirt_and_IPTables#The_default_iptables_rules_on_a_XEN_physical_host

Posted in 技术, 虚拟化/xen.

Tagged with , .


linux网络测试速度工具

一.perl 版ping
可以评测电信、网通和教育网络的ping值质量
支持平均速度输出排序
可以定义测试时间
输出文件需在脚本里改

./ping.pl
Useage: ./ping.pl ctc|cnc|edu minutes [-s]

For Example:
./ping.pl ctc 10

Please report bug , Thank you!

ping(perl)下载

沈阳联通滑翔机房测试结果
输出结果样式范例:
长春网通 5.72 0.00%
第一栏所在地,第二栏该时间段内平均ping的ms值,最后是丢包率
网通速度

长春网通 5.72 0.00%
大连网通 6.80 0.00%
福建福州网通 65.55 0.00%
广东网通 0.00 100.00%
广西南宁网通 66.45 0.00%
哈尔滨网通 32.50 0.00%
河北石家庄网通 27.90 0.00%
河北网通1 24.45 0.00%
河北网通2 24.25 0.00%
河南淮阳网通 23.55 0.00%
黑龙江哈尔滨网通 29.40 0.00%
黑龙江网通 30.05 0.00%
湖北网通 21.40 0.00%
吉林长春网通 15.45 0.00%
江苏南京网通 53.05 0.00%
江苏网通 0.00 100.00%
金华网通 54.10 0.00%
开封网通 35.50 0.00%
辽宁大连网通 0.82 0.00%
辽宁网通 4.81 0.00%
内蒙古呼和浩特网通 25.80 0.00%
内蒙古网通 0.00 100.00%
青岛网通 43.50 0.00%
山东威海网通 32.15 0.00%
山西太原网通 36.85 0.00%
山西网通 21.90 0.00%
陕西西安网通 96.10 0.00%
上海网通 65.90 0.00%
四川成都网通 54.45 0.00%
四川网通 0.00 100.00%
天津网通 33.95 0.00%
襄樊网通 66.00 0.00%
云南昆明网通 81.85 0.00%
浙江湖州网通 57.15 0.00%
中国网通北京网通 19.80 0.00%
中国网通骨干网 0.00 100.00%
重庆网通 56.65 0.00%
淄博网通 20.60 0.00%

电信速度

安徽电信 0.00 100.00%
安徽合肥电信 0.00 100.00%
北京互联星空_西安电信 175.00 0.00%
福建福州电信 57.20 0.00%
福建泉州 0.00 100.00%
甘肃互联星空_甘肃电信 212.00 0.00%
广东电信 0.00 100.00%
广东互联星空_广州电信 45.30 0.00%
广西互联星空_南宁电信 0.00 100.00%
贵州互联星空_贵阳电信 133.00 0.00%
海南互联星空_海口电信 87.70 0.00%
河北石家庄电信 0.00 100.00%
河南电信 220.00 0.00%
河南互联星空_郑州电信 203.00 0.00%
黑龙江互联星空_哈尔滨电信 0.00 100.00%
湖北互联星空_湖北电信 211.00 0.00%
湖南电信 0.00 100.00%
吉林互联星空_长春电信 0.00 100.00%
江西电信 158.00 0.00%
江西南昌电信 0.00 100.00%
辽宁沈阳电信 189.00 0.00%
绵阳电信 239.00 0.00%
南充电信 240.00 0.00%
内蒙古互联星空_呼和浩特电信 187.00 0.00%
宁夏互联星空_石嘴山电信 0.00 100.00%
青岛电信 158.00 0.00%
青海互联星空_西宁电信 0.00 100.00%
山东电信 171.00 0.00%
山东互联星空_济南电信 0.00 100.00%
陕西互联星空_西安电信 196.00 0.00%
陕西渭南 0.00 100.00%
汕头电信 54.40 0.00%
上海电信1 146.00 0.00%
上海电信2 145.00 0.00%
上海热线 213.00 0.00%
绍兴电信 154.00 0.00%
深圳电信 56.10 0.00%
四川互联星空_成都电信 0.00 100.00%
天津电信 0.00 100.00%
天津互联星空_天津电信 167.00 0.00%
西藏互联星空_拉萨电信 246.00 0.00%
新疆互联星空_阿克苏电信 251.00 0.00%
云南互联星空_曲靖电信 0.00 100.00%
浙江互联星空_杭州电信 149.00 0.00%
重庆电信 132.00 0.00%

教育网速度

北京航空航天大学 106.48 0.00%
北京清华大学 110.86 0.00%
甘肃兰州西北师范大学 136.28 0.00%
广州华南农业大学 132.78 0.00%
湖北武汉华中科技大学 121.32 0.00%
陕西西安交通大学 132.62 0.00%
上海交通大学 134.56 0.00%
四川成都西南交通大学 144.15 0.00%
云南昆明教育网 99.77 0.00%

二.python版ping
可以评测电信、网通和教育网络的ping值质量
可以定义测试时间
可以定义输出文件
文件为utf8,碰到乱码可以先另存为ansi

./testping_net_quality.py
USEAGE:
./testping_net_quality.py -n CNC|CTC|EDU [-t MINs] [-f file]
CNC 网通线路; CTC 电信线路; EDU 教育网;
-t MINs 测试的时间;默认为10分钟;
-f file 输出结果到文件;默认为当前目录文本文件ping.result
-h|-?, 帮助信息
for example:
./testping_net_quality.py -n CTC -t 60
在测试网络所在主机上执行以上指令表示测试网络为电信,测试时间1小时;

testping_net_quality(python)下载

沈阳联通滑翔机房测试结果
输出结果样式范例:
218.104.32.106 江苏网通 29.24 0.15
第一栏IP,第二栏所在地,第三栏该时间段内平均ping的ms值,最后是丢包率;

网通速度

218.104.32.106 江苏网通 29.24 0.15
60.31.195.1 内蒙古呼和浩特网通 29.15 0.15
221.8.96.1 吉林长春网通 28.82 0.15
218.7.249.154 黑龙江哈尔滨网通 28.82 0.14
222.138.109.1 开封网通 29.96 0.15
58.19.183.1 襄樊网通 28.94 0.16
210.52.149.2 湖北网通 28.77 0.16
221.10.216.98 四川网通 28.15 0.16
60.209.5.254 青岛网通 28.90 0.15
60.31.255.115 内蒙古网通 30.48 0.12
218.107.56.1 广东网通 28.30 0.17
202.99.160.1 河北网通1 28.23 0.16
221.3.131.1 云南昆明网通 29.30 0.16
221.5.196.1 重庆网通 29.83 0.16
202.108.100.166 中国网通北京网通 29.17 0.15
218.59.169.109 山东威海网通 29.58 0.13
221.8.18.8 长春网通 29.53 0.14
221.192.1.1 河北石家庄网通 29.50 0.14
60.210.17.1 淄博网通 29.31 0.14
218.26.176.1 山西太原网通 29.53 0.14
202.99.192.68 山西网通 29.03 0.15
202.99.160.68 河北网通2 29.49 0.13
202.97.224.68 黑龙江网通 28.80 0.15
60.12.166.1 金华网通 29.40 0.13
221.10.239.1 四川成都网通 29.78 0.12
221.11.1.1 陕西西安网通 29.93 0.12
60.12.193.1 浙江湖州网通 30.34 0.12
218.25.255.1 辽宁大连网通 29.02 0.13
220.248.112.1 上海网通 30.42 0.12
221.208.172.1 哈尔滨网通 30.48 0.12
58.240.48.43 江苏南京网通 30.81 0.12
218.69.33.1 天津网通 31.34 0.11
58.22.97.1 福建福州网通 31.31 0.11
202.96.69.38 大连网通 31.00 0.11
202.111.148.1 河南淮阳网通 30.90 0.11
60.18.94.1 辽宁网通 29.34 0.15
219.158.28.121 中国网通骨干网 30.07 0.13
221.7.129.163 广西南宁网通 30.55 0.13

电信速度

219.148.197.6 辽宁沈阳电信 89.43 0.44
61.134.40.138 陕西渭南 73.75 0.46
221.236.17.1 四川互联星空_成都电信 205.00 0.00
219.159.67.2 广西互联星空_南宁电信 136.67 0.33
61.140.60.90 广东电信 102.50 0.50
218.16.239.129 汕头电信 103.73 0.33
219.141.62.111 贵州互联星空_贵阳电信 109.20 0.29
61.152.188.1 上海电信1 95.55 0.38
219.147.130.76 黑龙江互联星空_哈尔滨电信 84.93 0.44
219.149.194.31 吉林互联星空_长春电信 85.93 0.44
61.145.125.229 广东互联星空_广州电信 87.15 0.36
61.131.11.1 福建泉州 79.89 0.42
58.56.19.129 山东电信 171.00 0.00
219.148.162.4 内蒙古互联星空_呼和浩特电信 81.84 0.43
202.102.192.80 安徽合肥电信 76.38 0.47
219.148.62.194 河北石家庄电信 104.44 0.39
61.139.37.1 南充电信 90.98 0.41
218.75.107.60 浙江互联星空_杭州电信 91.34 0.40
202.100.109.157 宁夏互联星空_石嘴山电信 81.41 0.47
60.190.223.1 绍兴电信 85.13 0.45
220.179.251.234 安徽电信 81.08 0.48
221.238.193.1 天津互联星空_天津电信 77.40 0.50
222.173.123.1 青岛电信 80.90 0.48
219.150.32.184 天津电信 77.53 0.50
61.129.51.254 上海电信2 80.23 0.48
58.53.192.150 湖北互联星空_湖北电信 85.41 0.46
220.175.8.1 江西电信 113.60 0.40
61.128.101.1 新疆互联星空_阿克苏电信 95.38 0.43
218.1.64.33 上海热线 99.54 0.41
218.30.85.83 陕西互联星空_西安电信 103.02 0.40
202.109.204.150 福建福州电信 101.55 0.39
61.166.150.110 云南互联星空_曲靖电信 98.37 0.41
61.139.33.1 绵阳电信 103.24 0.39
60.164.225.1 甘肃互联星空_甘肃电信 106.44 0.38
218.77.178.229 海南互联星空_海口电信 106.77 0.37
219.150.150.1 河南互联星空_郑州电信 110.25 0.36
219.146.11.20 山东互联星空_济南电信 107.27 0.38
218.30.64.121 北京互联星空_西安电信 81.98 0.44
218.18.104.1 深圳电信 103.20 0.38
202.100.128.201 青海互联星空_西宁电信 100.62 0.40
219.150.150.150 河南电信 104.05 0.39
222.176.2.214 重庆电信 104.85 0.38
61.186.95.92 湖南电信 102.42 0.40
218.65.103.201 江西南昌电信 100.09 0.41
220.182.54.199 西藏互联星空_拉萨电信 104.15 0.40

教育网速度

202.201.48.2 甘肃兰州西北师范大学 126.23 0.03
202.203.128.33 云南昆明教育网 126.06 0.03
202.116.160.33 广州华南农业大学 126.17 0.03
166.111.8.28 北京清华大学 126.08 0.03
202.114.0.242 湖北武汉华中科技大学 126.15 0.03
202.117.0.20 陕西西安交通大学 126.16 0.03
202.115.64.33 四川成都西南交通大学 126.34 0.03
202.112.128.1 北京航空航天大学 126.28 0.02
202.112.26.34 上海交通大学 126.41 0.02

二个脚本用的测试ip都是一样的.
python输出结果比较整齐,但perl版结果更准确一点.

三.下载测速
通过定时运行+wget下载脚本来记录下载速度

#!/bin/sh
#####################################
# version 0.01
# Last Update: 2011-3-18
# Author: C1G
# Blog: blog.c1gstudio.com
#####################################
#crontab
#10 * * * * cd /home/c1g && /bin/sh download_test.sh > /dev/null 2>&1
#

logfile=./download_`date +%Y%m%d`.log

wget http://mirrors.sohu.com/mysql/MySQL-5.5/MySQL-server-5.5.10-1.linux2.6.i386.rpm -a ${logfile}
# =======telcom=======
#echo ‘xx.xx.xx.xx apply.yingjiesheng.com’ >> /etc/hosts
#echo ‘telcom’ >> ${logfile}
#wget http://mirrors.sohu.com/mysql/MySQL-5.5/MySQL-server-5.5.10-1.linux2.6.i386.rpm -a ${logfile}
#sed -i ‘$d’ /etc/hosts
# =======/telcom=======
/bin/rm -f MySQL-server-5.5.10-1.linux2.6.i386.rpm.*

download_test下载

输出结果

–2011-03-18 12:16:24– http://down.website.com/mysql-5.1.37.tar.gz
Resolving down.website.com… xx.xxx.xxx.x
Connecting to down.website.com|xx.xxx.xxx.x|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 35796850 (34M) [application/octet-stream]
Saving to: `mysql-5.1.37.tar.gz.6′

0K ………. ………. ………. ………. ………. 0% 59.0K 9m51s
50K ………. ………. ………. ………. ………. 0% 233K 6m10s
100K ………. ………. ………. ………. ………. 0% 236K 4m55s
150K ………. ………. ………. ………. ………. 0% 222K 4m20s

34850K ………. ………. ………. ………. ………. 99% 118K 1s
34900K ………. ………. ………. ………. ………. 99% 233K 0s
34950K ……. 100% 7.28M=5m20s
2011-03-18 12:21:45 (109 KB/s) – `mysql-5.1.37.tar.gz.6′ saved [35796850/35796850]

四.其它工具
1.系统自带的ping,tracert,wget等命令

2.smokeping
Smokeping 安装配置
http://bbs.linuxtone.org/thread-4768-1-1.html

3.第三方测速网站
世界网络
http://www.linkwan.com/gb/

参考:
http://bbs.linuxtone.org/thread-399-1-1.html

Posted in IDC, shell, 其它, 技术.

Tagged with , , .


discuzx强化词语过滤功能

discuzx 1.5 词语过滤
由于广告贴横行,现需把所有包含数字的贴子放入审核列表.

一.修改词语长度
默认长度为3,现在改成1.
source\admincp\admincp_misc.php
395行,把3改成1

if(strlen($newfind) < 1) { $ignorecount ++; continue;

517行和537行,3改成1

if(strlen($val) < 1) { cpmsg('censor_keywords_tooshort', '', 'error'); }

二.让审核和禁止关键字支持正则

审核和禁止支持简单正则,如”a{1}s{2}s”.
像审核qq号和手机时用”\d{3,11}”就不支持.
查看程序发现,当正则带上”/”并且有普通过滤时就把正则给覆盖了,造成不能正确过滤.

function\cache\cache_censor.php
修改23行和27行

function build_cache_censor() {
$query = DB::query(“SELECT find, replacement, extra FROM “.DB::table(‘common_word’));

$banned = $mod = array();
$data = array(‘filter’ => array(), ‘banned’ => ”, ‘mod’ => ”);
while($censor = DB::fetch($query)) {
if(preg_match(‘/^\/(.+?)\/$/’, $censor[‘find’], $a)) {
switch($censor[‘replacement’]) {
case ‘{BANNED}’:
#$data[‘banned’][] = $censor[‘find’];
$banned[] = preg_replace(“/^\/(.+?)\/$/”, “\\1”, $censor[‘find’]);
break;
case ‘{MOD}’:
//$data[‘mod’][] = $censor[‘find’];
$mod[] = preg_replace(“/^\/(.+?)\/$/”, “\\1”, $censor[‘find’]);
break;
default:
$data[‘filter’][‘find’][] = $censor[‘find’];
$data[‘filter’][‘replace’][] = preg_replace(“/\((\d+)\)/”, “\\\\1”, $censor[‘replacement’]);
break;
}
} else {
$censor[‘find’] = preg_replace(“/\\\{(\d+)\\\}/”, “.{0,\\1}”, preg_quote($censor[‘find’], ‘/’));
switch($censor[‘replacement’]) {
case ‘{BANNED}’:
$banned[] = $censor[‘find’];
break;
case ‘{MOD}’:
$mod[] = $censor[‘find’];
break;
default:
$data[‘filter’][‘find’][] = ‘/’.$censor[‘find’].’/i’;
$data[‘filter’][‘replace’][] = $censor[‘replacement’];
break;
}
}
}
if($banned) {
$data[‘banned’] = ‘/(‘.implode(‘|’, $banned).’)/i’;
}
if($mod) {
$data[‘mod’]= ‘/(‘.implode(‘|’, $mod).’)/i’;
}
if(!empty($data[‘filter’])) {
$temp = str_repeat(‘o’, 7); $l = strlen($temp);
$data[‘filter’][‘find’][] = str_rot13(‘/1q9q78n7p473′.’o3q1925oo7p’.’5o6sss2sr/v’);
$data[‘filter’][‘replace’][] = str_rot13(str_replace($l, ‘ ‘, ‘****7JR7JVYY7JVA7’.
‘GUR7SHGHER7****\aCbjrerq7ol7Pebffqnl7Qvfphm!7Obneq7I’)).$l;
}
save_syscache(‘censor’, $data);
}

三.让常用的数字内容进入审核
第一个表示所有数字

/\d{1,}/={MOD}
壹={MOD}
贰={MOD}
叁={MOD}
肆={MOD}
伍={MOD}
陆={MOD}
柒={MOD}
捌={MOD}
玖={MOD}
零={MOD}
一={MOD}
二={MOD}
三={MOD}
四={MOD}
五={MOD}
六={MOD}
七={MOD}
八={MOD}
九={MOD}
0={MOD}
1={MOD}
2={MOD}
3={MOD}
4={MOD}
5={MOD}
6={MOD}
7={MOD}
8={MOD}
9={MOD}
0={MOD}
①={MOD}
②={MOD}
③={MOD}
④={MOD}
⑤={MOD}
⑥={MOD}
⑦={MOD}
⑧={MOD}
⑨={MOD}

四, “词语过滤”生成缓存文件
通过后台的缓存更新不能即时的生成缓存文件.
当缓存机制用文件方式:
1.删除data\cache\cache_censor.php
2.在后台改动下”词语过滤”中的词语,并提交.让”pre_common_syscache”表中cname=censor字段,pre_common_word表内容发生改动.
3.刷新发表贴子的页面,产生data\cache\cache_censor.php

Posted in Discuz/Uchome/Ucenter, 其它.

Tagged with , .