青岛之行

  部门出游青岛,所以有来到了这个美丽的海滨城市。
周五提前15分钟下班,4点开始准备出发,一路奔波坐汽车来到青岛,时间长达9小时,到达入住酒店已经晚上12点多了,折腾一下已经1点多了。从来没有坐过 这么久的车,坐在汽车上腿不好放,坐的屁股都疼了哎,觉得这次出行交通选择是一大败笔。大约在晚上11点多经过青岛跨海大桥的时,发现真的是很美,蜿蜒数里,一路亮着灯,看起来很舒服,很静美。上网搜索了下,这座桥号称世界最长的大桥,造型模仿 帆船设计,下面贴2图片哈。

下了大桥接一下地接导游就到入住的酒店了,鱼水情商务酒店,200一晚,条件感觉和南京同等价位差不多。看了一会电视就睡着了。

第二天7点左右起床,吃了早饭,一晚上没睡好,一到陌生地方就睡不好,话说这是没有安全感孩子的表现。囧~~~ 住的地方感觉不错,二楼开窗就是海,停着几艘船,远方是一望无际的海边和矗立的高楼的大厦。看了会下楼吃早饭了,山东人喜欢吃馒头么,而且没有馅的好么,好久不吃了,吃的真不习惯。还好有油条和米粥,总算凑合一顿早饭。吃完上车出发,感觉比昨晚好多了,一路上总体感觉比较清新。前天晚上走那个婚纱一条街,满地白色垃圾,比我想象相差甚远,真的很脏,今天后来问开车师傅说那边摆摊比较多,我真觉得那个地方要好好治理一下。不过今天早上感觉格外不一样,青岛和南京一样路边栽了很法国梧桐,只是尚显年轻,一路上导游介绍好多历史都差不多快忘了,只记得一个叫奥帆赛时的奥运村现在成了奢侈品一条街了,有钱人花钱的象征地方呐。。。很多房子也被改造成超五星级酒店,白金酒店了。一路见到很多公车司机,他们制服看起来是海军服饰设计吧,白色给人感觉很清新,而且公车的外观看起来很干净。不过有2个有意思的地方:

a)这边路标都没有方向,后来得知这边的路没有正南正北大多都是斜的
b)这边极少看到自行车,原因是这里的路坡太多,车实在不太好骑,不过今天看到一个哈,应该是锻炼身体的吧

一路上导游讲的也不错,一会就到极地海洋世界了,好吧,作为没文化的我,从来没有见过这么多稀奇古怪的鱼,到现在我也没分清海狮和海豚。第一个看到的是北极熊,两只我认为是一对,一只在外面转,一只在洞口,我觉得她比较害羞想进去吧,可惜门被关着,很无奈呆在门口,忧郁的很呐。。。也许是讨厌游客不停的闪光灯,其实我不懂,人家明明写着不准拍照,可是可是各种照相机还是拍个不停,这些海里的动物应该被闪的头晕吧。白鲸,也是第一次见到,真大,游泳速度真快,尾巴一动能游好远哦。还有一个印象比较深的就是企鹅,真的是TM太可爱了,太好玩了。还有一种动物,叫海獭(ta)是这样子叫的嘛,吃东西比较搞笑捧在胸前边吃游水,真是嗨耶。然后从二楼下去的时候,会见到很多五颜六色的鱼,反正一种没见过,不过极具观赏性,看了一会就去海底世界表演馆了,去的时候已经蛮多的人了。好多不容易在第5排抢到位置,也算近距离观察一次哎。共三个表演,海豚
、海狮和白鲸。我一直在想训练这些动物要多久,他们像拍电影要一个个手势去学习,学好给个零售吃吃,不听话就会被饿着,是么?时间过的真快,上午一会就结束了。就去吃午饭了,午饭不提了,上了很多馒头,米饭也没米,菜也难吃,之前听导游说这边菜是:黑乎乎,粘乎乎,咸乎乎,我算见识了,吃了一点点。难道不知道来团么,米饭也没准备,什么意思嘛?

下午去那个什么地方忘了,一直在处理问题,有台坑爹的服务器挂了,闹心啊。后来也没去地方玩,坐车回来了,6点多的时候和同事打车了去吃了海鲜,尼玛被坑了,带到一家叫 海鲜大鱼港 菜上的份量感觉严重不足,有一个叫哈喇菜很多沙子,老板虽然解释一通,但我是觉得不可思议吃了五个不到的菜280没了,真吃不起。。。啤酒20块一杯,说是一斤,不过我目测绝对没有1斤,最多8两。感觉亏的很啊,大家千万别去这家吃。太坏了。我没敢吃多,我知道我吃稍微有点脏的东西,肚子必坏无疑,果不其然回来就上厕所。我之前听说吃海鲜要喝点酒,尼玛这菜不干净喝再多的酒也没用啊。吃完打车去买点特产带回去,还有点礼品,这个的哥非常厚道,买东西地方价格也不贵,也买到自己喜欢的东西,海螺真的有声音,是海的声音么?后来司机告诉我们说吃东西要到台东去吃便宜,有一条路叫洮南路,上面的东西真是实惠啊,这才是大众消费的地方嘛。。。

今晚好好休息,明天好像要去五四广场,去完又要坐9小时的车回去了。。。累啊。。。。想想后天还要上班,腿都软了。

InnoDB 引擎独立表空间 innodb_file_per_table

使用过MySQL的同学,刚开始接触最多的莫过于MyISAM表引擎了,这种引擎的数据库会分别创建三个文件:表结构、表索引、表数据空间。我们可以将某个数据库目录直接迁移到其他数据库也可以正常工作。然而当你使用InnoDB的时候,一切都变了。

InnoDB 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:ibdata1,这样就感觉不爽,增删数据库的时候,ibdata1文件不会自动收缩,单个数据库的备份也将成为问题。通常只能将数据使用mysqldump 导出,然后再导入解决这个问题。

在MySQL的配置文件[mysqld]部分,增加innodb_file_per_table参数。

可以修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间。

独立表空间:

优点:

1. 每个表都有自已独立的表空间。
2. 每个表的数据和索引都会存在自已的表空间中。
3. 可以实现单表在不同的数据库中移动。
4. 空间可以回收(除drop table操作处,表空不能自已回收)

a) Drop table操作自动回收表空间,如果对于统计分析或是日值表,删除大量数据后可以通过:alter table TableName engine=innodb;回缩不用的空间。

b) 对于使innodb-plugin的Innodb使用turncate table也会使空间收缩。

c) 对于使用独立表空间的表,不管怎么删除,表空间的碎片不会太严重的影响性能,而且还有机会处理。

缺点:

单表增加过大,如超过100个G。

结论:

共享表空间在Insert操作上少有优势。其它都没独立表空间表现好。当启用独立表空间时,请合理调整一 下:innodb_open_files 。

InnoDB Hot Backup(冷备)的表空间cp不会面对很多无用的copy了。而且利用innodb hot backup及表空间的管理命令可以实现单现移动。

1.innodb_file_per_table设置.开启方法:
在my.cnf中[mysqld]下设置
innodb_file_per_table=1

2.查看是否开启:
mysql> show variables like ‘%per_table%’;

3.关闭独享表空间
innodb_file_per_table=0关闭独立的表空间
mysql> show variables like ‘%per_table%’;

更多Mysql Innodb 引擎优化 http://linux.chinaunix.net/techdoc/database/2009/04/28/1109193.shtml

彻底隐藏Nginx版本号的安全性与方法

Nginx默认是显示版本号的,如:

[root@bkjz ~]# curl -I www.nginx.org
HTTP/1.1 200 OK
Server: nginx/0.8.44
Date: Tue, 13 Jul 2010 14:05:11 GMT
Content-Type: text/html
Content-Length: 8284
Last-Modified: Tue, 13 Jul 2010 12:00:13 GMT
Connection: keep-alive
Keep-Alive: timeout=15
Accept-Ranges: bytes

这样就给人家看到你的服务器nginx版本是0.8.44,前些时间暴出了一些Nginx版本漏洞,就是说有些版本有漏洞,而有些版本没有。这样暴露出来的版本号就容易变成攻击者可利用的信息。所以,从安全的角度来说,隐藏版本号会相对安全些!
那nginx版本号可以隐藏不?其实可以的,看下面我的步骤:

1、进入nginx配置文件的目录(此目录根据安装时决定),用vim编辑打开
# vim nginx.conf

在http {—}里加上server_tokens off; 如:
http {
……省略
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
server_tokens off;
…….省略
}

2、编辑php-fpm配置文件,如fastcgi.conf或fcgi.conf(这个配置文件名也可以自定义的,根据具体文件名修改):
找到:
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
改为:
fastcgi_param SERVER_SOFTWARE nginx;

3、重新加载nginx配置

 

—–另一种方法:

编译Nginx源文件src/http/ngx_http_header_filter_module.c,输入以下命令:

找到下面两行:

static char ngx_http_server_string[] = "Server: nginx" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

改成如下,当然具体显示什么你可以自己定义:

static char ngx_http_server_string[] = "Server: NOYB" CRLF;
static char ngx_http_server_full_string[] = "Server: NOYB" CRLF;

DBA 应该具备什么样的特质?招聘 DBA 时应看重些什么?–来自《知乎》

  1. 数据库往往是企业的心脏,DBA 必须对于公司有超额恪尽职守的觉悟。不论是半夜三点还是隔着四分之一个地球,一个电话打过去就可以如临现场。
  2. 抗压
    数据库宕机的每一秒钟都在给企业造成损失,对内无法开工,对外无法服务。电话此起彼伏,几十双眼睛盯着他的时候,仍旧能保持沉着,方寸不乱。
  3. 能独立工作
    不仅和别人搭档的时候一切正常,独立要完成任务的时候也不会不知所措,不会怀疑自己做的对不对、质疑这样行不行。没有同事的时候,不会分心,也不偷懒。
  4. 善于情势判断
    两方面:一是数据库宕机时往往是连锁反应,症状复杂,此时要快速找到根源,所需要的排查能力;二是修复时能分清轻重缓急,知道应该先通知前端把网站转入维护状态,然后去换烧坏的硬盘控制器,最后才是去看上一次备份是在半个月 前还是半年之前。
  5. 细致周全
    Schema / Index / Temp table 设计合理。防御式 ETL,设定层级报警。文档写得细致干净,逻辑清晰。
  6. 做事规律
    知道上一次备份是在几小时之前;定期打补丁;定期查看系统记录;定期更换密码;硬盘排线要上束绳、打标签;记笔记——如果他不幸身故,同事可以通过他的笔记本迅速接过整个业务。
  7. 耐心
    解决问题或者和别人沟通时,不会轻易不耐烦 / 愤怒 / 产生挫折感 / 进入防御模式。
  8. 略有洁癖
    主要是对于数据上的。
  9. 善于沟通
    口拙做不了 DBA,不管是解释事故原因还是争取检修机会 / 硬件升级资金。
  10. 对硬件着迷
    不解释。
  11. 精通不包括 shell script 在内的至少一种脚本语言
    不解释。
  12. 不爱出风头
    其实没什么不好,但是这一条往往和以上所有品质不协调。

以上依照重要程度降序排列。

最适合担任 DBA 的人,是英语好,已婚,身体强健,生活稳定,无不良嗜好的中年工程师(不,我不是。这个答案本质上是在描述我的两个同事)。

——真正优秀的 DBA,是平时看起来无所事事的人,他们可以做救火英雄,但他们每天都在避免救火英雄故事的出现。请付出对得起他们的薪水。

 

本文来自http://www.zhihu.com/question/20112937

ESX命令行复制虚拟机SHELL脚本

最近因为有个项目需求,要克隆的虚拟机量非常大,所以用shell写了克隆虚拟机脚本 ,主要原理用的是ESX的vmkfstools的i参数克隆虚拟机并用vmware-cmd注册启动启动虚拟机,脚本如下:

#!/bin/bash
for i in `seq 1 30`
do
NVM="test$i"
NVMDIR="test$i"
NVMOS="winxppro"
VMMEMSIZE="1024"
mkdir /vmfs/volumes/4f82c134-5616427c-c930-d4bed9f2ea33/$NVMDIR
touch /vmfs/volumes/4f82c134-5616427c-c930-d4bed9f2ea33/$NVMDIR/$NVM.vmx
cat >>/vmfs/volumes/4f82c134-5616427c-c930-d4bed9f2ea33/$NVMDIR/$NVM.vmx<<EOF
config.version = "8"
virtualHW.version = "7"
memsize = "$VMMEMSIZE"
displayName = "$NVM"
guestOS = "$NVMOS"

ide0:0.present = "TRUE"
ide0:0.fileName = "$NVM.vmdk"
ide1:0.present = "TRUE"
ide1:0.fileName = ""
ide1:0.deviceType = "atapi-cdrom"
ethernet0.present = "TRUE"
ethernet0.networkName = "VM Network"
ethernet0.addressType = "vpx"
EOF

chmod 755 /vmfs/volumes/4f82c134-5616427c-c930-d4bed9f2ea33/$NVMDIR/$NVM.vmx
cd /vmfs/volumes/4f82c134-5616427c-c930-d4bed9f2ea33/$NVMDIR
vmkfstools -i /vmfs/volumes/4f82c134-5616427c-c930-d4bed9f2ea33/multilang-xp-template/multilang-xp-template.vmdk $NVM.vmdk
vmware-cmd -s register /vmfs/volumes/4f82c134-5616427c-c930-d4bed9f2ea33/$NVMDIR/$NVM.vmx
vmware-cmd /vmfs/volumes/4f82c134-5616427c-c930-d4bed9f2ea33/$NVMDIR/$NVM.vmx start hard
done

exec I/O重定向详解及应用实例

exec I/O重定向详解及应用实例
1、 基本概念(这是理解后面的知识的前提,请务必理解)
a、 I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9;
b、 常用FD有3个,为0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错误输出),默认与keyboard、monitor、monitor有关;
c、 用 来改变送出的数据信道(stdout, stderr),使之输出到指定的档案;
e、 0 是 与 1> 是一样的;
f、 在IO重定向 中,stdout 与 stderr 的管道会先准备好,才会从 stdin 读进资料;
g、 管道“|”(pipe line):上一个命令的 stdout 接到下一个命令的 stdin;
h、 tee 命令是在不影响原本 I/O 的情况下,将 stdout 复制一份到档案去;
i、 bash(ksh)执行命令的过程:分析命令-变量求值-命令替代(“和$( ))-重定向-通配符展开-确定路径-执行命令;
j、 ( ) 将 command group 置于 sub-shell 去执行,也称 nested sub-shell,它有一点非常重要的特性是:继承父shell的Standard input, output, and error plus any other open file descriptors。
k、 exec 命令:常用来替代当前 shell 并重新启动一个 shell,换句话说,并没有启动子 shell。使用这一命令时任何现有环境都将会被清除。exec 在对文件描述符进行操作的时候,也只有在这时,exec 不会覆盖你当前的 shell 环境。
2、cmd &n 使用系统调用 dup (2) 复制文件描述符 n 并把结果用作标准输出
&- 关闭标准输出
n&- 表示将 n 号输出关闭
上述所有形式都可以前导一个数字,此时建立的文件描述符由这个数字指定而不是缺省的 0 或 1。如:
… 2>file 运行一个命令并把错误输出(文件描述符 2)定向到 file。
… 2>&1 运行一个命令并把它的标准输出和输出合并。(严格的说是通过复制文件描述符 1 来建立文件描述符 2 ,但效果通常是合并了两个流。)
我们对 2>&1详细说明一下 :2>&1 也就是 FD2=FD1 ,这里并不是说FD2 的值 等于FD1的值,因为 > 是改变送出的数据信道,也就是说把 FD2 的 “数据输出通道” 改为 FD1 的 “数据输出通道”。如果仅仅这样,这个改变好像没有什么作用,因为 FD2 的默认输出和 FD1的默认输出本来都是 monitor,一样的!
但是,当 FD1 是其他文件,甚至是其他 FD 时,这个就具有特殊的用途了。请大家务必理解这一点。
3、 如果 stdin, stdout, stderr 进行了重定向或关闭, 但没有保存原来的 FD, 可以将其恢复到 default 状态吗?
*** 如果关闭了stdin,因为会导致退出,那肯定不能恢复。
*** 如果重定向或关闭 stdout和stderr其中之一,可以恢复,因为他们默认均是送往monitor(但不知会否有其他影响)。如恢复重定向或关闭的 stdout: exec 1>&2 ,恢复重定向或关闭的stderr:exec 2>&1。
*** 如果stdout和stderr全部都关闭了,又没有保存原来的FD,可以用:exec 1>/dev/tty 恢复。
4、 cmd >a 2>a 和 cmd >a 2>&1 为什么不同?
cmd >a 2>a :stdout和stderr都直接送往文件 a ,a文件会被打开两遍,由此导致stdout和stderr互相覆盖。
cmd >a 2>&1 :stdout直接送往文件a ,stderr是继承了FD1的管道之后,再被送往文件a 。a文件只被打开一遍,就是FD1将其打开。
我想:他们的不同点在于:
cmd >a 2>a 相当于使用了两个互相竞争使用文件a的管道;
而cmd >a 2>&1 只使用了一个管道,但在其源头已经包括了stdout和stderr。
从IO效率上来讲,cmd >a 2>&1的效率应该更高!
exec 0exec 1>outfilename # 打开文件outfilename作为stdout
exec 2>errfilename # 打开文件 errfilename作为 stderr
exec 0&- # 关闭 FD1
exec 5>&- # 关闭 FD5

 

例子: 重定向标准输出至文件,写数据,关闭文件,重置标准输出。

 # 生成标准输出(文件描述符1)的拷贝文件描述符6
 exec 6>&1
 # 打开文件"test.data"以供写入
 exec 1>test.data
 # 产生一些内容
 echo "data:data:data"
 # 关闭文件 "test.data"
 exec 1>&-
 # 使标准输出指向FD 6 (重置标准输出)
 exec 1>&6
 # 关闭 FD6
 exec 6>&-

打开及关闭文件

 # 打开文件 test.data 以供读取
 exec 6<test.data
 # 读文件直到文件尾
 while read -u 6 dta
 do
   echo "$dta"
 done
 # 关闭文件 test.data
 exec 6<&-

http://zh.wikipedia.org/wiki/Bash
http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/abs-3.9.1_cn/html/x13380.html

磁盘扩容及优化

经过慎重考虑,此次新加的磁盘采用:EXT4文件系统+LVM 形式。本来想用XFS,但没有任何经验所以放弃;EXT4目前归档文件系统在使用,而且也是RH下一代默认文件系统。采用LVM是便于以后磁盘扩展。
邮件存储调整步骤:
1.EMC上8块磁盘做RAID5,映射至mail主机,假设发现的磁盘为:/dev/emcpowerd
2.创建lvm
pvcreate /dev/emcpowerd
vgcreate -s 128M mail /dev/emcpowerd
lvcreate -i 8 -I 4096 -l 100%FREE -n mailroot mail
3.格式化新分区并导入数据
mkfs.ext4 -m 1 -b 4096 -E stride=16,stripe-width=112 /dev/mail/mailroot
dd if=/dev/emcpowera1 of=/dev/mail/mailroot bs=10M
resizefs /dev/mail/mailroot
4.挂载新磁盘至邮件主目录
mount -o noatime,nodiratime,barrier=0,data=writeback /dev/mail/mailroot /mailroot/
5.测试收发邮件有无问题

Linux 双网卡绑定概述

Linux 双网卡绑定概述

我们在这介绍的Linux 双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链 接聚合成一个逻辑链路工作。其实这项技术在Sun和Cisco中早已存在,被称为Trunking和Etherchannel 技术,在Linux的2.4.x的内核中也采用这这种技术,被称为bonding。
bonding技术的最早应用是在集群——beowulf上,为了提高集群节点间的数据 传 输而设计的。下面我们讨论一下bonding 的原理,什么是bonding需要从网卡的混杂(promisc)模式说起。我们知道,在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身Mac的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络 上所有的帧,比如说tcpdump,就是运行在这个模式下。bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的Mac地址改成相同,可以接收特定mac的数据帧。然后把相应的数据帧传送给bond驱动程序处理。
直接给两块网卡设置同一IP地址是不可能的。Kernels 2.4.12及以后的版本均供bonding模块,以前的版本可以通过patch实现。可以通过以下命令确定内核是否支持 bonding:
#cat /boot/config-kernel-version |grep -i bonding
CONFIG_BONDING=m

网卡绑定的意义

网络负载均衡

对于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个IP地址,流量过大,服务器网络压力过大的问 题。对于文件服务器来说,比如NFS或SAMBA文件服务器,没有任何一个管理员会把内部网的文件服务器的IP地址弄很多个来解决网络负载的问题。如果在 内网中,文件服务器为了管理和应用上的方便,大多是用同一个IP地址。对于一个百M的本地网络来说,文件服务器在多个用户同时使用的情况下,网络压力是极 大的,特别是SAMABA和NFS服务器。为了解决同一个IP地址,突破流量的限制,毕竟网线和网卡对数据的吞吐量是有限制的。如果在有限的资源的情况 下,实现网络负载均衡,最好的办法就是 bonding ;
网络冗余;
对于服务器来说,网络设备的稳定也是比较重要的,特别是网卡。在生产型的系统中,网卡的可靠性就更为重要了。在生产型的系统中,大多通过硬件设备的冗余来 提供服务器的可靠性和安全性,比如电源。bonding 也能为网卡提供冗余的支持。把网个网卡绑定到一个IP地址,当一块网卡发生物理性损坏的情况下,另一块网卡也能提供正常的服务。

双网卡绑定设置
一、编辑虚拟网络接口配置文件,指定网卡IP
假设eth0是对外服务的网卡,已经调试好网络;eth1是希望与eth0同时对外提供服务的网卡

# cd /etc/sysconfig/network-scripts/

#vi ifcfg-bond0

写入如下信息和原来 ifcfg-eth0 的配置其实差不多。
所以我建议执行如下语句,将ifcfg-eth0复制一份再改。

# cp ifcfg-eth0 ifcfg-bon0

将ifcfg-bon0的信息修改大致如下:

DEVICE=bond0
BOOTPROTO=static
IPADDR=[IP]
NETMASK=[MASK]
BROADCAST=[BROADCAST]
GATEWAY=[GATEWAY]
ONBOOT=yes
TYPE=Ethernet

二、配置真实网卡
修改ifcfg-eth0如下:

DEVICE=eth0

BOOTPROTO=none

ONBOOT=yes

MASTER=bond0     #如果不写,则必须做第四步

SLAVE=yes             #如果不写,则必须做第四步

USERCTL=yes

类似地修ifcfg-eth1如下:

DEVICE=eth1

BOOTPROTO=none

ONBOOT=yes

MASTER=bond0     #如果不写,则必须做第四步

SLAVE=yes             #如果不写,则必须做第四步

USERCTL=yes

三、加载模块,让系统 支持bonding
默认情况下,内核已支持bonding,只需要简单修改/etc/modprobe.conf 这个配置文档就可以了:添加两行

alias bond0 bonding

options bond0 miimon=100 mode=1

说明:
mode指定了bond0的工作模式,在redhat中有0-6共7种工作模式,常用的是0和1。

mode=0 表示 load balancing (round-robin)为负载均衡方式,两块网卡都工作。
mode=1 表示 fault-tolerance (active-backup)提供冗余功能,工作方式是主 从的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份。
mode=2 表示 XOR policy 为平衡策略。此模式提供负载平衡和容错能力
mode=3 表示 broadcast 为广播策略。此模式提供了容错能力
mode=4 表示 IEEE 802.3ad Dynamic link aggregation 为 IEEE 802.3ad 为 动态链接聚合。该策略可以通过 xmit_hash_policy 选项从缺省的 XOR 策略改变到其他策略。
mode=5 表示 Adaptive transmit load balancing 为适配器传输负载均衡。该 模式的必要条件:ethtool 支持获取每个 slave 的速率
mode=6 表示 Adaptive load balancing 为适配器适应性负载均衡。该模式包含 了 balance-tlb 模式,同时加上针对 IPV4 流量的接收负载均衡(receive load   balance, rlb),而且不需要任何 switch(交换机)的支持。
bonding 只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对 外的链路 down 掉了,而交换机本身并没有故障,那么 bonding 会认为链路没有问题而继 续使用。

关于绑定网卡的详细参数可参见笔者的另一篇文章

http://czmmiao.iteye.com/admin/blogs/1044031

四、增加开机启动脚本
在 /etc/rc.d/rc.local里加上

#ifenslave bond0 eth0 eth1

如果eth0和eth1都写了MASTER和SLAVE,则上面的步骤做不做都无所谓。
五、重启
reboot或者service network restart 都可以看到结果。

六、查看绑定在哪张网卡上

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.0.3 (March 23, 2006)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 500
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:0c:29:01:4f:77

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:0c:29:01:4f:8b
六、测试
ping着某个地址,当然是能ping通的地址啦。如果发现网络不通,请检查ifcfg-bond0的网络设置。
然后拔掉一根网线,如果ping没断,证明拔了一根backup的线,不是主线,重新插上等两分钟。
此时拔掉另一根网线,估计现在可以看到ping超时或者卡在那里,稍等10~30秒,ping继续连同。
测试成功。

七、交换机配置

conf t
interf port-channel 1
switchport mode access
inter range fa0/1-2
channel-group 1 mode on

本文 转自:http://czmmiao.iteye.com/blog/1043873

Feed