<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>臭皮匠 &#187; tools</title>
	<atom:link href="http://guogoul.com/category/tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://guogoul.com</link>
	<description></description>
	<lastBuildDate>Fri, 29 Oct 2010 00:24:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>lsof:list open file</title>
		<link>http://guogoul.com/2009/11/04/lsoflist-open-file/</link>
		<comments>http://guogoul.com/2009/11/04/lsoflist-open-file/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 15:29:39 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=226</guid>
		<description><![CDATA[lsof的参数很多，不过搞来搞去无非是根据什么条件找出被进程打开的文件句柄。条件有根据文件名，文件夹，进程名，端口号，gid,fd等，太丰富了。当你用到的时候再查手册也来得及。
本人用这个解决的最头痛的问题是：一次由于磁盘空间占用较高了，于随手删除了几个大文件，然后用df查看文件系统使用情况，发现一直没有变。搞了半天找不出个所以然来，了解这个命令之后查询了一下这个系统中所有被打开的文件，发现原来那几个大文件被某个程序使用着呢。关闭那个进程后df结果正常。
]]></description>
		<wfw:commentRss>http://guogoul.com/2009/11/04/lsoflist-open-file/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>dd用于磁盘读写性能测试</title>
		<link>http://guogoul.com/2009/11/04/dd/</link>
		<comments>http://guogoul.com/2009/11/04/dd/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 15:02:26 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[dd]]></category>
		<category><![CDATA[disk]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=224</guid>
		<description><![CDATA[dd是一个linux下的文件复制和转换程序。除非告诉dd命运去进行某种转换操作，否则它只是进行从输入文件到输出文件的复制工作。不过现在dd更多的用来进行磁盘性能的测试，而不是原始用于copy的意图。
/dev/null：回收站、无底洞. 你可以输入任何东西它不会吃撑着（这种能力吃自助比较合适）
/dev/zero：用于产生字符，会产生无尽的0字符
以下转换自网络(http://www.xclinux.cn/?p=777):不知是否原创，copy过来自己备忘！
1.测试磁盘写能力
time dd if=/dev/zero of=/test.dbf bs=8k count=300000
因为/dev/zero是一个伪设备，它只产生空字符流，对它不会产生IO，所以，IO都会集中在of文件中，of文件只用于写，所以这个命令相当于测试磁盘的写能力。
2.测试磁盘读能力
time dd if=/dev/sdb1 of=/dev/null bs=8k
因为/dev/sdb1是一个物理分区，对它的读取会产生IO，/dev/null是伪设备，相当于黑洞，of到该设备不会产生IO，所以，这个命令的IO只发生在/dev/sdb1上，也相当于测试磁盘的读能力。
3. 测试同时读写能力
time dd if=/dev/sdb1 of=/test1.dbf bs=8k
这个命令下，一个是物理分区，一个是实际的文件，对它们的读写都会产生IO（对/dev/sdb1是读，对/test1.dbf是写），假设他们都在一个磁盘中，这个命令就相当于测试磁盘的同时读写能力。
]]></description>
		<wfw:commentRss>http://guogoul.com/2009/11/04/dd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>lvs+keepalived 实现负载均衡及快速故障转移</title>
		<link>http://guogoul.com/2009/09/12/lvs_keepalived/</link>
		<comments>http://guogoul.com/2009/09/12/lvs_keepalived/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 15:01:23 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://john.renren.in/?p=114</guid>
		<description><![CDATA[负载均衡主要有两种方式：硬件均衡器，软件均衡。前者是靠钱解决问题的，性能绝对优于后者，这次还是继续上回的穷人话题。如何利用省钱的方案简单的解决负载均衡以及故障转移。先上一个机器部署的示意图。

LVS:  linux virtual server
lvs就是国产的优秀开源的项目之一，最简单的理解就是建立一个虚拟IP的服务器，然后通过这个虚拟机器把前端的请求转发到后面的真实服务器上实现负载分配。对于老的linux版本需要给系统打上ipvs的补丁，对于新的linux系统已内置了ipvs模块。

 lsmod &#124;grep ip_vs   #查看是否已加载ipvs模块
 sudo modprobe ip_vs  #加载ip_vs模块

为了方便进行ipvs管理，还需要安装ipvsadm

sudo apt-get install ipvsadm

关于lvs工作模式的介绍这里有篇IBM的文档对lvs的三种模式的原理，说得十分的详细。
keepalived： 实现机器的心跳检查以及机器的故障转移。
1. 当真实生产机器出现故障的时候，会自动把出问题的机器从集群中删除，当出问题的机器恢复正常的时候，也会自动把机器自动添加到集群中来。这样就可以很平滑很方便维护线上的生产机器。
2. 从图中可以看出，如果没有备份虚机(192.168.1.200)的话。在192.168.1.100机器上还是出现了单点问题。keepalived会在192.168.1.100故障的情况下，把VIP切到192.168.1.200.这其中用到了vrrp协议。注： 开防火墙的朋友得把这两台机器的vrrp端口打开。不然keepalived无法实现主备机器的切换。
上配置文件喽！
192.168.123.100与192.168.123.200
软件：
1.ip_vs
2.ipvsadmin
3.keepalived

/etc/keepalived/keepalived.conf

global_defs {
        notification_email {
                test@gmail.com
       [...]]]></description>
		<wfw:commentRss>http://guogoul.com/2009/09/12/lvs_keepalived/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nagios+libfetion+midpssh 网络监控报警解决一条龙</title>
		<link>http://guogoul.com/2009/09/11/nagioslibfetionmidpssh/</link>
		<comments>http://guogoul.com/2009/09/11/nagioslibfetionmidpssh/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 15:35:13 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://john.renren.in/?p=115</guid>
		<description><![CDATA[nagios: 一款出色的网络数据监控报警工具  http://nagios.org
libfetion:  移动飞信的非官方lib    http://www.libfetion.cn/
midpssh:  移动端的ssh客户端 http://www.xk72.com/midpssh/
当然以上三者的结合，就是要解决服务器问题最快发现，最快通知，最快解决的方案。
在没有搭建这个报警平台之前，每天都在担心中度过，对所有机器的健康状态基本没谱，现在轻松了很多,一些机器都很长时间没登录上去过问了。下面分享一下经验，供所有像我一样的穷网管借鉴，的确只是一条穷人的经验。
一.搭建nagios：
关于nagios的安装，可以上网搜索一大把，这里就不在详细介绍。基本上有两种安装方式：
1。 用apt-get安装现成的软件包。 哈哈简单吧
2.   源码安装，参考资料最好的是官方说明文档,详细的出你的意料 
和cacti一样，nagios在安装的时候就存在一些基本的监控脚本供使用，如果需要一些其它监控脚本可以自己扩展，或者下载一些现成的扩展。呵呵，这个网站提供的扩展够你爽  。
基本配置文件路径:
/usr/local/nagios/etc/nagios.cfg
在nagios.cfg中把很多监控对象都的子配置文件都存放到了 /usr/local/nagios/etc/objects 目录中
nagios提供了监控信息的web与wap展示以及设置。也就是说大部分的工作都可以在web前台完成。
apache的部分配置：


#  SSLRequireSSL
   Options ExecCGI
   AllowOverride None
   Order allow,deny
   Allow from all
#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1
   [...]]]></description>
		<wfw:commentRss>http://guogoul.com/2009/09/11/nagioslibfetionmidpssh/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>vim-u-ctrl+r</title>
		<link>http://guogoul.com/2009/08/07/vim-u-ctrlr/</link>
		<comments>http://guogoul.com/2009/08/07/vim-u-ctrlr/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 11:15:12 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=195</guid>
		<description><![CDATA[u:后退
ctrl+r: 撤消
u与ctrl+r 都可以重复使用
]]></description>
		<wfw:commentRss>http://guogoul.com/2009/08/07/vim-u-ctrlr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql: logs-slave-updates备忘</title>
		<link>http://guogoul.com/2009/07/13/logs-slave-updates/</link>
		<comments>http://guogoul.com/2009/07/13/logs-slave-updates/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 14:06:07 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[replication]]></category>
		<category><![CDATA[slave]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=184</guid>
		<description><![CDATA[
 --logs-slave-updates
通常情况，从服务器从主服务器接收到的更新不记入它的二进制日志。该选项告诉从服务器将其SQL线程执行的更新记入到从服务器自己的二进制日志。为了使该选项生效，还必须用--logs-bin选项启动从服务器以启用二进制日志。如果想要应用链式复制服务器，应使用--logs-slave-updates。例如，可能你想要这样设置：
A -> B -> C
也就是说，A为从服务器B的主服务器，B为从服务器C的主服务器。为了能工作，B必须既为主服务器又为从服务器。你必须用--logs-bin启动A和B以启用二进制日志，并且用--logs-slave-updates选项启动B。

以上是摘自mysql对于logs-slave-updates启动选项的描述。
当然logs-slave-upates也可以写入my.cnf :
//////////////////
log_slave_updates=1
//////////////////
当然在这种机制下可能有的同学会存在这么个问题：
如果a->b   b->a   这样的双master架构下，a,b都打开log_slave_updates选项会不会出现无限循环的状态。
mysql已经考滤到了这个问题，每条bin-log都会记录执行语句的源server_id.当slave读到语句的server_id等于本身的ID的时候，不会忽略执行，所以我们不用担心a,b会不会无限循环下去。

基于以上这种情况，mysql的replication集群将更加灵活，你如果需要可以做成各种各样的链式复制。比如 a->b   b->a     b中设置log_slave_updates后还可以b->c.   这样a,c中的数据也是一致的。    
测试部分my.cnf

 26 [mysqld2]
 27 pid-file        = /home/shanfeng/mysql/data2/mysqld2.pid
 28 socket          = /home/shanfeng/mysql/data2/mysqld2.sock
 [...]]]></description>
		<wfw:commentRss>http://guogoul.com/2009/07/13/logs-slave-updates/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>badblocks &#8211;磁盘坏道检查</title>
		<link>http://guogoul.com/2009/07/08/badblocks/</link>
		<comments>http://guogoul.com/2009/07/08/badblocks/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 05:11:30 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=181</guid>
		<description><![CDATA[参数：
-b 指定磁盘的区块大小，单位为字节。
-o 将检查的结果写入指定的输出文件。
-s 在检查时显示进度。
-v 执行时显示详细的信息。
-w 在检查时，执行写入测试。
例子：
$badblocks -s -v  /dev/sda
]]></description>
		<wfw:commentRss>http://guogoul.com/2009/07/08/badblocks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysqlreport</title>
		<link>http://guogoul.com/2009/06/09/mysqlreport/</link>
		<comments>http://guogoul.com/2009/06/09/mysqlreport/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 16:07:14 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[mysqlreport]]></category>

		<guid isPermaLink="false">http://john.renren.in/?p=113</guid>
		<description><![CDATA[要掌握数据库状态，并了解其不足，然后作出一份详细可靠的优化方案，必须对数据库的各个参数进行量化的了解比如cache用了多，数据每秒有多少请求，select与insert的比例各占多少等。对mysql而言最简单的方案是直接show status,不过这些数据十分晦涩枯燥，不容易理解。mysqlreport的报表则易懂得多.
mysqlreport提供了几乎所有的mysql的关键status信息，而且对这些数据做了加工处理理解起来十分的方便。
参考文档：
1.http://hackmysql.com/mysqlreportguide
2.http://hi.baidu.com/xuwanbest/blog/item/f3f8fca1df8e2788461064fe.html
只有亲试之，才会体会其中的妙处
部分结果：

]]></description>
		<wfw:commentRss>http://guogoul.com/2009/06/09/mysqlreport/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>windows远程登录的小技巧</title>
		<link>http://guogoul.com/2009/06/02/windows_remote_tool/</link>
		<comments>http://guogoul.com/2009/06/02/windows_remote_tool/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 16:01:49 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[tools]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=147</guid>
		<description><![CDATA[windows自带的远程登录工具为远程控制机器提供的便利，你是否为本地机器与远程机器的文件传输烦恼呢？至少刚开始用远程连接工具的时候费了不少的劲。最终用局域网共享文件目录解决了问题，但是比起下面的方法来说还是不够直接
哈哈   欲善其事，先利其器！
1.打开远程登录界面之后，打开“选项&#8221;开关
2.选择”本地资源“&#8212;&#62;详细信息


3.勾选你要在远程机器上的访问的盘符

4.当远程连接到机器上之后，可以在我的电脑 下面看到本地的文件夹了。很是方便
]]></description>
		<wfw:commentRss>http://guogoul.com/2009/06/02/windows_remote_tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rsync数据同步利器</title>
		<link>http://guogoul.com/2009/06/01/rsync/</link>
		<comments>http://guogoul.com/2009/06/01/rsync/#comments</comments>
		<pubDate>Sun, 31 May 2009 16:02:44 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[rsync]]></category>

		<guid isPermaLink="false">http://john.renren.in/?p=124</guid>
		<description><![CDATA[对于系统运维人员来说rsync 应该是工具箱中的一个常用工具，其稳定，便捷，高效的特性一直为人所称道.rsync一般会配合cron工作，cron定时自动完成系统数据同步工作。
1.决定使用哪种传输协议？
在默认条件下，rsync可以用RSH协议与远程系统进行通信。通过调整参数还可以用SSH协议，这样就可利用所有的标准SSH认证方法，并实现加密的文件传输。建议用ssh协议
2.基本应用
试验rsync的时候应该非常小心，因为很可能一不小心就将大量数据发送到它们本不该出现的地方。 verbose(-v)与dry-run(-n)在你试验的时候将会十分的有用，verbose能让你看到修改的结果，dry-run就是不对文件进行真正的修改主，只产生结果信息。
注意： 文件夹参数后面有/与没有/的区别。如果源目录有/表示当前目录下的所有文件 ，如果没有/表示当前文件夹也包括其中
-a:  以归档的模式进行操作，这将导致rsync以递归方式运行，并保留权限，所有权，符号链接，设备文件，访问时间等信息，等同于： -rlptgoD先项的作用

3.实例：
rsync -a /usr/local     root@remote_host:/usr/local
rsync -a /usr/local/     root@remote_host:/usr/local
注意上面两个结果是不同的 前者local与远程机器的同步，后者会出现本地/usr/local与远程/usr/local/local进行同步
参考：
Rsync详解： http://blog.chinaunix.net/u/25100/showart_363397.html
官网： http://rsync.samba.org/
]]></description>
		<wfw:commentRss>http://guogoul.com/2009/06/01/rsync/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

