博客统计信息

51cto推荐博客
用户名:justiceplus
文章数:31
评论数:159
访问量:86160
无忧币:191
博客积分:784
博客等级:4
注册日期:2008-09-09

博主简介

一个草根Linux系统工程师
6年系统工程师、网络工程师经验。2006开始从事信息技术相关工作,先后网、公司公网以及大中型互联网公司的网络架构设计,有丰富的网络实战经验。2008年进入Linux系统运维领域,系统的学习过Linux系统管理,并相继在国内多家著名企业就职,从事网络工程师、系统工程师工作,工作内容涉及大规模商用云计算虚拟化平台运维、网站系统架构、企业网络设计。自行设计和部署过国内多家大型网站的高可用集群。对系统、网络、数据库都有一定层次的理解,多次在国内一些技术论坛和博客中发表技术文档,颇受关注。未来发展将继续专注于信息技术和信息系统的设计和维护相关工作
曾服务过的公司
阿里巴巴(中国)有限公司
前程无忧 (www.51job.com)
易趣网 (www.eachnet.com)
ChinaNetCloud (国内首家提供云环境以及系统运维外包的公司)
目前就职
国家电网某下属子公司,专注于企业私有云的解决方案
联系方式
QQ: 110766894
 
2011-1-5 :本文写于1号,本来只是随笔的文字,没有想到有这么多朋友的关注和认可。有朋友留言说有必要加一点体会性的文字,我觉得这个建议真的很好。有更多建议或是交流,请加关注我的新浪微博http://weibo.com/u/1186347743
-------------------------------------------昏锅线----------------------------------------------
 
杭州的2012显得很阴冷。1号2号是我oncall,所以大门不出、二门不迈。一边的笔记本几乎是24小时开机,今天还算清净,处理了一个工单后一直没人打扰。昨天在微博上疯了个消息,大意是说时间过的太..
2010-08-05 09:50:36
上次和朋友一起探讨xen中的一个问题。基本情况是这样的,公司适用xen虚拟机做VPS,由于单台机器中的VPS数量比较多,所以存在几个公司同时使用一台物理机中的VPS的情况。由于默认情况下,VPS所处的网络环境是一样的,就是同属于一个网段,这样安全方面存在问题,比如会发生arp攻击之类,所以需要能隔绝开不同单位的VPS间的通讯。这样想到了使用VLAN的方式,即不同的公司用的VPS都桥接到不同的网桥上,同时,在该vif上启用8021q,这样便可以完美解决该问题了。参考了网上一些文档,确实有一些解决方法,但是都是修改配置文件的方式,这样..
配置方法网上实在实在是很多,如果要更详细的,大家可以直接到网上找,我不会在这里写的非常详细,不会step by step的讲述,最重要的是要知道实现原理!相信看了我下面的原理讲解,能对你们看相关文档带来更大的帮助,因为真的有很多人在对着文档做的时候更本不知道自己在做什么!
流程化实现原理:
支持PXE的电脑开机(预先打开网卡PXE功能,网络引导)---> DHCP给该电脑一个IP地址,并指明下一跳tftp文件服务器 ---> 电脑去tftp服务器上(/tftpboot 文件夹下面)下载到一个叫做 pxelinux.0的文件,并拿到pxelinux.cfg文件夹..
2012-04-06 23:35:33
最近给自己奢侈的放了个春假,每天看书睡觉,吃饭会友,自由自在。今天偶然和之前公司的一位同事聊天,得知在家中休假养病,心中不自觉的泛起一些无名之感,无法准确的表达其中的滋味,相信各位奋战在IT线上的朋友们都有感悟。身边的朋友因为工作累倒的确实不少,自己也曾亲身经历过,我觉得,我们都是坚强的活着,不偷不抢不乞,至少在某种程度上,有尊严的活着。只是,我说过了,是在“某种”程度上,而已。
大家都知道的那个著名的“谢谢国家”的故事,当然这四个字现在是悲剧的成为了人们的笑谈,有句话叫,..
类别:未分类|阅读(272)|回复(3)|(6)阅读全文>>
 #指针的类型、指针所指向的类型
A. 指针存储的数值是内存的一个地址
B. 只要把指针声明语句中的指针名去掉,剩下的部分就是指针的类型
C. 只要把指针声明语句中的指针名和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型
 
例子
代码部分

指针类型
指针所指向的类型
int *ptr;

int *

int
char *ptr;

char *

char
int **ptr;

int **

int *
int (*ptr)[3];

int (*)[3]
int ()[3]
int *(*ptr)[4];

int *(*)[4]
int *()[4]
 
#指针的值
A. 指针的值是指指针本身存储的数值,这个值会被编译..
CentOS 5.5 下Xen虚拟机的安装及基本操作
1、前提需求

1.1.简介

Xen是以GNU的GPL授权发布的自由软件,目的在于提供高效能、可支援不同操作系统同时运行且各个操作系统之间彼此相互独立的系统环境,Xen是基于X86架构开发出来的虚拟机控制器(Virtual Machine Hypervisor)。Xen虚拟化包括两种虚拟化方式,半虚拟化(Para-virtualization)和全虚拟化(Fully-virtualization)。这两种虚拟化都需要cpu的支持。半虚拟化的架构示意图:



确定cpu是否支持xen的运行:

半虚拟化:

x86_64的cpu都能支持半虚拟化的环境。x86的cpu需要支持物理地址扩展pae才可以支持。查看方式:

全虚拟化:全虚拟化需要cpu的支持,Intel提供VT技术,AMD提供SVM技术。

Intel cpu中需要有vmx标签
本文中涉及nis服务器以及客户端设置
一、服务器部分
1.编辑 /etc/rc.local,添加 nisdomainname john 在最后一行。(当然,你的nisdomainname可能和我不一样。)
2.编辑 /etc/sysconfig/network,如下红色字体的是需要修改或添加的
NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=master

NISDOMAIN=john
3.设置 /etc/hosts,添加如下内容到文件的尾部
192.168.1.4     master

192.168.1.5     client
4.按照需要的包
yum install ypserv
5.修改主要配置文件 /etc/ypserv.conf..
自己装了一台机器,有两张网卡,一个是主板上自带的,还有一个是后来自己添加的。装完系统后,系统默认主板上的网卡为eth1,而自己添加的网卡是eth0,感觉不爽,所以想办法使用udev使系统将主板上的网卡命名为eth0。
cd /etc/udev/rules.d
找到60-net.rules,备份该文件
mv 60-net.rules 60-net.rules.bak
新建文件60-net.rules,内容如下:
[root@localhost rules.d]# cat 60-net.rules

SUBSYSTEM=="net", ACTION=="add", SYSFS{address}=="00:24:1D:6B:BB:96", IMPORT="/lib/udev/rename_..

经常遇到这样的问题,如下,很是麻烦,找到了解决办法。
 
[root@xytr1 ~]# ssh 192.168.5.56
The authenticity of host '192.168.5.56 (192.168.5.56)' can't be established.
RSA key fingerprint is a1:7f:35:ec:1a:5e:33:df:e8:82:56:cf:b6:99:b6:b9.
Are you sure you want to continue connecting (yes/no)? yes ß 这里一定要确认才能通过
Warning: Permanently added '192.168.5.56' (RSA) to the list of known hosts.
Last login: Tue Jul 13 16:29:52 2010 from linux1
 
解决方案是,把 本地 的..
正则表达式
 
一个点(.)代表一个字符。
比如:.a. 代表3个字符,中间一个字符是a,两边各一个任意字符。
比如:... 代表3个任意字符。
若要匹配点(.)本身,则使用转义字符。
比如:my\... 代表my.后接两个字符。
 
行首匹配^
行尾匹配$
 
[...] 代表字符串中的一个字符。
比如:[abc] 代表a或b或c中的任意一个字符。
比如:[Mm]y 代表My或者my。
 
^出现在[]里,代表“非”
比如:[^a]代表不是a
 
*代表前面的字符有0个或者0个以上
比如:a*b代表ab或aab或aaab等。
 
\{...\}..
函数
 
函数是一些命令的集合,作用是让程序模块化。
 
语法:
fuction 函数名()
{
   命令
}
 
或者
函数名()
{
   命令
}
 
或者
fuction 函数名
{
   命令
}
流程控制
 
if-then
if 条件; then
   动作
fi
 
if-then-else
if 条件; then
   动作1
else
   动作2
fi
 
if 条件1; then
   动作1
elif 条件2; then
   动作2
else
   动作3
fi
 
for
for 变量 in 列举
do
    命令
done
 
while
while 条件
do
    命令
done
 
until
until 条件
do
    命令
done
 
break continue
break跳出当前..
使用orion测试SSD的性能
 
测试工具orion,版本V10
ORION是Oracle提供的IO测试工具,这个工具可以在不安装Oracle软件的情况下模拟Oracle的IO操作,从而可以预估部署数据库之后的系统性能。
 
为了使得过程自动化,特意写了下面的脚本。

#!/bin/bash
# Author John.Wang
DISK_TYPE=$1
NUM_DISKS=$2
if [ -z "$1" ]; then
 echo "$1 can not be empty, hdd or ssd?"
 exit 1
fi
if [ -z "$2" ]; then
 echo "$2 can not be empty, input an num."
 exit 2
fi
echo "Will test $1, num_disks..
算术运算
 
归纳为5种方法
1.算术扩展,例如R=$((1+1))
2.使用外部程序expr,例如R=`expr 1+1`
3.使用$[],例如R=[1+1]
4.使用命令declare,例如declare -i R=1+1
5.使用命令let,例如let R=1+1
高级变量
 
高级变量中的3个主题:
变量扩展:${变量名}
命令替换:$(命令)
算术扩展:$((算术式))
 
测试变量存在与否R=${name-'john'},如果name不存在,则“传回”默认值。
测试变量不存在或者为空置R=${name:-'john'} ,如果name不存在或者存在但为空,则“传回”默认值。
测试变量不存在或值为空,则给变量一个默认值R=${count:=100}
测试变量不存在或值为空,则提示出错消息${变量名:?提示消息}
 
 
变量
 
变量是暂时用来存储数据的地方,是一个内存空间。bash shell和其他的编程语言,没有“数据形态”,也就是说默认情况下不区分一个变量是整型还是浮点型等,除非你使用declare语句申明变量类型。在bash shell中,默认只有一种数据型,就是由字符组成的字符串。同时,设定的变量只在当前的shell中存在,也就是,每一个shell都会维护一份他们自己的变量,彼此不会有影响。可以把变量导出成环境变量,这样其他的shell就可以被子shell引用。
 
变量的命名规则:
1.可以使用英文字母、数字和下划线组成
2.第一个字符不..
Zend Optimizer的性能测试
 
大家都知道Zend Optimizer这个工具是zend提供的一个免费的php加速软件,官方说是用这个工具能使php的执行性能提升30%-40%,我最近亲自动手尝试了一下,对Zend Optimizer具体做了一下测试,发现确实能提高php效率。以下就是测试的全过程。
 
测试中使用的php脚本为如下:
 
<?
//循环开始前,得到当前时间
$pagestartime=microtime();
//这里开始一个循环,只做简单的自增运算
$k=1;
for($i=1;$i<1000000;$i++){
        $k++;
}
//..
shell程序的基本组成结构
 
shell结构大体是由设定变量、内置命令、shell的语法结构、函数组成。
使用实例说明:test.sh

#!/bin/bash
#说明使用/bin/bash作为这个脚本的解释器

#定义一个函数
function my_fun () {
echo "Hello, $1,today is $2"
}

#定义连个变量
name=$1
today=`date`

#函数调用
my_fun "$name" "$today"
 
上面的这个脚本要想运行还需要做一些操作,首先给予执行权限
chmod +x test.sh
然后执行
./test.sh john
输出
Hello, john,today is Tue Jun  1 14:51:4..
基础概念部分
 
登陆主机
登陆主机分为本地登陆和远程登陆。
本地登陆:就是直接面对主机,由键盘输入用户密码登陆,使用tty1-tty6,或者图形界面tty7
远程登陆:通过网络连接主机,以虚拟终端的方式登陆,使用ssh
 
退出登陆
1.使用命令exit
2.使用【Crtl+D】退出
 
文件
在Linux中,任何东西包括硬件都视为文件。文件可以分为几种:
一般文件:纯文本文件,二进制文件。如果文件具有执行权限,称为执行文件。
目录:包含文件。
设备文件:字符文件,磁盘文件。
内部进程通信文件:socket文件,连接文..
shell简介
 
shell处于kernel的外层,用来负责接收使用者输入的命令,然后将命令解释成kernel能了解的方式,然后由kernel去执行,再将结果传回默认的输出周边。shell是一种命令解释器,同时也是一个程序语言。shell有很多种,在众多的Linux发行版中,标准的shell是bash,也是我们学习的主要对象。
 
第一个程序
范例:hello.sh

#!/bin/bash
echo 'Hello World'
 
执行之前,给予执行权限:
chmod +x hello.sh
 
执行:
./hello.sh
 
输出:
Hello World
 
这样第一个shell脚本就成..
 <<   1   2   >>   页数 ( 1/2 )