<?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; 技巧</title>
	<atom:link href="http://guogoul.com/category/skil/feed/" rel="self" type="application/rss+xml" />
	<link>http://guogoul.com</link>
	<description></description>
	<lastBuildDate>Wed, 07 Jul 2010 04:53:41 +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>首次参与beta技术沙龙</title>
		<link>http://guogoul.com/2009/08/23/blogbeta_snmp/</link>
		<comments>http://guogoul.com/2009/08/23/blogbeta_snmp/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 14:18:20 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[snmp]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=197</guid>
		<description><![CDATA[    前两天在“TL”上看到这次沙龙的讨论话题.由于对服务的监控这个议题比较感兴趣，工作中也时常会用到，所以今天去围观学习一下。今天参加的朋友比想像中的要少，不过朋友的交流比预期的好.此次聚会上还见到了一个没见过面的老朋友。感谢霍大哥的分享。


       此次活动的主要议题是如何用snmp来对网络服务器的监控，不过老霍的ppt到目前为止还没有分享出来。


       此次沙龙中提到的服务器监控方案我觉得很有想像力，问题解决的也很完美。不过个人感觉会存在以下几点问题：
1. snmp协议相对软件开发人员来说都比较陌生。这种个性化的监控体系可能存在不易长期维护的危险（相对于cacti+net_snmp来讲）

2. 树型的网络拓扑，导致子节点的信息依赖与于父节点，如果父节点挂掉，子节点的信息就无从获取。
3. 服务与机器的信息是被动的被收集，感觉没有机器主动post相关的信息到信息数据中心好。因为信息数据中心定期去取信息，可能存在定期内完不成任务导致死循环，而节点主动post信息给信息数据中心肯定不会存在这个问题，除非同时并发很多的请求。按目前的沙龙中提到的案例5s中收到几百个post应该不会是个问题。

感觉 beta 技术沙龙的所有与会者的分享。
更新： blogbeta已把视频和ppt放出了
]]></description>
		<wfw:commentRss>http://guogoul.com/2009/08/23/blogbeta_snmp/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>raid管理的几个命令</title>
		<link>http://guogoul.com/2008/12/05/raid_manage/</link>
		<comments>http://guogoul.com/2008/12/05/raid_manage/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 15:54:44 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[disk]]></category>
		<category><![CDATA[raid]]></category>

		<guid isPermaLink="false">http://www.guogoul.com/2008/12/05/raid_manage/</guid>
		<description><![CDATA[几天前cacti提示有台服务器的硬盘挂掉一个，折腾了半天 搞得够怆发现硬盘没有什么问题，不过被raid自动remove了一个硬盘,我怀疑硬盘有坏道了继续观察两天看看。
1.查看当前系统raid的基本状态
   cat /proc/mdstat
例如：
testvm:~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdc1[0] sdd1[1]
      3903680 blocks [2/2] [UU]
md2 : active raid10 sda2[0] sdd2[3] sdc2[2] sdb2[1]
      968960256 blocks 64K chunks 2 near-copies [4/4] [UUUU]
md0 : active raid1 sda1[0] [...]]]></description>
		<wfw:commentRss>http://guogoul.com/2008/12/05/raid_manage/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>xserver + firefox +ubuntu 实现命令行模式下的浏览网页</title>
		<link>http://guogoul.com/2008/11/20/xserver_firefox/</link>
		<comments>http://guogoul.com/2008/11/20/xserver_firefox/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 15:17:45 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[xserver]]></category>

		<guid isPermaLink="false">http://www.guogoul.com/2008/11/20/xserver_firefox/</guid>
		<description><![CDATA[一)你是否和我一样的状况?
     工作主要用到两个东西 1.shell    2. 上网查资料.
二)你是否有和我一样的想法?
     要是在控制台能方便浏览页面就爽了.其一提高工作效率.其二减少资源提高机器响应速度.    美哉！！
三)一些相关知识:
1. 大多数的linux上的桌面系统都是建立在xserver架构之上. xserver提高了各种驱动的接口，负责ui显示，并且提供gui编程接口。
2.gnome,kde都属于gdm  gdm是桌面管理器，方便用户管理桌面.当然他们依赖于xserver
3.gnome,就是一个软件，firefox也是一个软件，两者都依赖与xserver. 但是firefox并不完全依赖与gnome
4.ubuntu默认情况下是运行在run level 2下面的
5. runlevel2下默认启动的服务在/etc/rc2.d/文件夹一下。
6.S30gdm是启动桌面管理器的服务 S表示start 30表示启动顺序。
7.xinit 用于初始化x 系统的 简单命令xinit firefox就可以在默认的终端(ctrl+alt+f7)启动firefox浏览器.
四) 根据已具备的知识分析（二)的想法可以简单描述为:   关闭gdm，然后手动启动firefox
五)详细代码:

sudo mv /etc/rc2.d/S30gdm   ~/  #把gdm转移中，目的主要是为了备份，并禁用gdm
sudo shutdow -r now  #重新启动ubuntu
xinit firefox    [...]]]></description>
		<wfw:commentRss>http://guogoul.com/2008/11/20/xserver_firefox/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>关于web系统扩展的几点记录</title>
		<link>http://guogoul.com/2008/11/01/sys_web_extend/</link>
		<comments>http://guogoul.com/2008/11/01/sys_web_extend/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 06:27:02 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.guogoul.com/2008/11/01/sys_web_extend/</guid>
		<description><![CDATA[注:本文只谈系统的可扩展点，并不涉及相关技术的具体实现。
可扩展性的定义特性: 1.系统可以容纳使用率的增加，可以简单的理解为用户数的增加2.系统可以容纳数据集的增加。3.系统可维护。
误区:
1.可扩展不是指原始速度，性能和可扩性是不同的问题2.可扩展性与是否选择某种语言无关。3.可扩展性与特定的技术是无关的。
扩展的几个方向与要点:
一,扩展硬件平台硬件扩展大体上可以分为两类：1.垂直扩展:原理：很简单当机器性能不足时买一台更大，更强，更猛的机器代替。优点:设计容易实现，只需在本地机器上构建系统。一定体系稳定，只要换好的机器就行。不足: 成本不是线性增加的，可能是指数级的。尽管你很有钱，不担心钱的问题,不过由于单台机器的能力有限的，那么这种模型最终会受到限制。2.水平扩展:原理:不断的增加更多的硬件,不同垂直扩展的是增长不需要超级强劲的机器，只要很多常规机器。优点:能够混用不同服务器并且能够配备最便宜服务器的应用程序，将一直保持成本上的优势。不足:添加减少机器可能比较容易，但不会过于简单.你将要花费大量的管理成本。3.冗余:不管是垂直扩展还是水平扩展，机器都有可能发生故障，这样的话给机器做完全热备是必要的，当一个组件故障时，其他组件自动接手它的工作。
二,负载平衡
1. DNS负载平衡这个最简单的平衡方案，同时存在不少的问题.1)做法:在 DNS中给一个域添加多个IP,这样请求域名解析的时候分随机的返回不同的IP地址实现平衡的目的2）问题： 更新dns的速度比较缓慢，如果要移除一台坏的机器比较的困难了,另一个问题就是无法实现精确控制，也不能定制化平衡。总得来说DNS负载不是一个好的方案。
2.VIP:这个名词比较有意思，记得有一回去yahoo,技术人员与我谈代码发布时谈到了VIP的一个问题，我就有点乱了，VIP===》贵宾？。还冒出了MVP之类的概念.：VIP是虚拟IP的意思，一个VIP是由负载平衡器提供的一个IP地址，背后其实有多个实际的IP地址在处理请求.负载平衡器也被称作虚拟服务器。
3.硬件方式的负载平衡:1)别名:web交换机,内容交换机,内容路由器.2)特点:非常的昂贵。
4.软件方式的负载平衡:1)前一段时间才知道lvs(http://www.linuxvirtualserver.org)是一个给linux打上内核补丁的负载平衡操作系统，不过lvs是为了处理极为复杂的负载情况，对于一般平衡就没有必要。
2)第四层与第7层负载平衡注意这个第字。刚接触的时候不理解，直接看成四层，与7层。呵呵，7层比4层多三层当然7层要牛很多。第7层的确比第4层更灵活，但原因绝对不是7比4大.第4层与第7层指的是网络分层.传统的负载平衡是在第四层处理的,用户的请求来源与目标IP地址与端口在这一层被捕获，有了这些信息就可以把这个连接引导到后台正常的端口上。最简单的第四层负载采用的是循环算法(round robin)。就是把请请求循环发送到生产服务器上。除了循环之外，也可以做随机算法。在两种方法中都可以加上权重，对权重比较高的生产服务器，只要有队列中重复出现几次那么被分配到流量的比重就越高。第7层负载比第4层负载出现的晚，它比第4层更加易活。因为第7层负载平衡器检测HTTP请求，这能够查看请求和请求的标头，并将这些信息纳入平衡策略的考虑中。这样就可以做基于URL平衡，可以确保对特定资源的所有请求都被调度到同一台机器上，这样的方便在同一台机器上做缓存，提高缓存命中率。这就是比第四层优秀的原因之一.听说apache的mod_rewrite模块加上一些脚本就可以做第7层的负载，具体我没有实施过，不过试过用ngnix做过第4层负载平衡，十分简单:)
三,扩展Mysql1.可以从主从(master-slave)复制方面考滤提高并行读写性能,当然选表的存储引引擎也很关键，MyISAM能非常快地进行读写操作，但是无法同时快速度的读写操作,而且也不支持事务操作，现在好像比较流行InnoDB。不过innoDB不提供fulltext索引,innoDB的占用的硬盘空间大约会是Myisam的3倍左右。
2.数据库分区也是数据库扩展的重要因素。不合理的数据库分区将会影响以后数据库的扩展.
四,缓存扩展在缓存的选择上我觉得分存式的缓存memcached(http://memcachedb.org/)是一个无可挑剔解决方案，可以解决大多数的问题
五,存储系统的扩展:&#160;目前只用过NFS,NFS在实际生产过程中还是存在很多不足。请各位有识之士,留下宝贵意见.!



]]></description>
		<wfw:commentRss>http://guogoul.com/2008/11/01/sys_web_extend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于web系统的瓶颈几点记录</title>
		<link>http://guogoul.com/2008/10/26/sys_bottleneck/</link>
		<comments>http://guogoul.com/2008/10/26/sys_bottleneck/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 14:30:32 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[技巧]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.guogoul.com/2008/10/26/sys_bottleneck/</guid>
		<description><![CDATA[所谓找出瓶颈，就是找出程序中费时最多的部分。要查看各个时间段，从请求进入到我们网络的边界开始，直到响应离开。&#160;Donald Knuth: 在条件不成熟的情况下贸然进行优化是程序设计中所有罪恶的源泉。如果只是想着要重构X,就能加快这儿的速度，而不去实际测试系统并确认X处于关键路径中，那就是在浪费时间和精力。
关于CPU:&#160; 在不成熟的观察者看来，cpu时间是每个应用程序的主要瓶颈，而实际上，这种情况很少发生，影响程序的主要性能的真正原因是 IO.什么是IO?IO包括了所有的数据移动，数据移动的本质上就是应用程序中所做的一切。和大家的观点相反，cpu处理速度基本上从来不是web应用程序中的瓶颈。如果发现主要瓶颈在cpu,那很有可能在基本设计层面存在问题.(那些少数cpu密集任务除外，如处理图像，视频，音频，加密大段数据等)&#160; top命令的%CPU列显示每个进程占用cpu的情况，也可以用uptime看一下当前系统的平均负载。
代码性能测试:&#160; 捕捉运行中代码的运行信息用，识别代码中最费时的部分有利于代码的优化。比较简单直接的做法不是在函数运行之前记下当前时间戳，到了函数运行之后再记一下时间，两个时间相差就可以算出当前函数花费时间。对于php程序员来说用xdebug(http://xdebug.org)是一个好的选择,安装了xdebug之后在脚本运行之前调用xdebug_start_profiling(),在脚本调用结束后运行xdebug_dump_function_trace()就可以以html来输出性能测试数据的表格。大家可以一试，很不错。测试代码会大大降低执行速度，如果有一个负载均衡池，可以让一部份的生产流量流经剖析工具。
提高代码运行的速度:&#160; 1.操作码缓存： 在cgi模式下，每执行一次脚本都要编译源代码。可以借助一些工具把源码编码成OPCODE做存起来多次运行,APC缓存是一个好的方案&#160; 2.提高模板反应速度： 与opcode相同的原理，多次编译是浪费时间，模板可以保存编译结果多次调用。在调用时默认会查看源模板文件，如果有更新就重新编译。在很多时候可以关闭检查模板是否更新的开关，减少文件IO.提高反应速度:$smarty-&#62;compile_check=0.
关于I/O&#160; 1.磁盘IO:可以通过系统的一些工具更好的了解磁盘的IO情况，可以用iostat查看当前的系统的磁盘IO值.这装命令:sudo apt-get install sysstat&#160; 2.网络IO:网络上的能够达到的带宽受限于当网络中速度最慢的设备。netstat是最好的查看网络状态的命令。网络配置上好的做法是根据网络的用途，为机配置多个子网，这样能提高网络IO的速度，当然这样就要装多个网卡，在简单的web服务器与数据库服务器安装中，可以建一个内部数据流通访问的子网，比如访问数据库。如果有主从复制数据库，也可以单为主从提供一个子网，在一般的系统中好像没有这个必要。&#160; 3.内存IO:内存IO基本不可再提高，不过内存的带宽是线性扩展的，最好的增加内存吞量的办法就是增加更多机器.还有一点要注意的是在选硬件的时候。由于AMD64体系结构在内存DIMM和每个处理器之间都提供一个独立的总线，能够为内存传输提供更多的并行能力。在谈内存的时候不能不谈的一个名字是swap,swap是当操作系统没有足够的空闲物理内存的时候，它将内存的一页交换到磁盘来释放更多的物理内存，当下次需要交换内容时，它被换回物理内存。但是swap是十分缓慢，会影响机器处理的速度。可以用free 或者 vmstat查看机器上swap的使用情况。为了避免使用swap两种比较直接的方案就是提供更多的内存或者少分配一些内存，让一台机器做更少的事情。比如有1G的内存，系统需要100M,如果你运行mysql,你应该在运行时把mysql的运行内存设置成850M就可以了。还有一种比较极端的方案就是禁用swap.
关于数据库：&#160; 在web应用程序中，你往往会发现最大的瓶颈是数据库的吞吐量。数据库的优化是一个很深的学问，在这里就不多说了，等自己研究明白之时与大家分享。&#160; &#160; 
更新： xdebug_start_profiling xdebug_dump_function_trace，这两个方法只有xdebug1.0支持。2。0之后只输出profiling数据。供其它分析工具用。
]]></description>
		<wfw:commentRss>http://guogoul.com/2008/10/26/sys_bottleneck/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>数据的安全性与一致性中的几个要点</title>
		<link>http://guogoul.com/2008/10/21/web_data/</link>
		<comments>http://guogoul.com/2008/10/21/web_data/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 15:27:48 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.guogoul.com/2008/10/21/web_data/</guid>
		<description><![CDATA[数据完整性的原则：应用程序内部的数据是有用的，换句话说就是引入的数据在边界处被过滤，以过滤后的结果存储，在输出数据的时不再需要做任何处理。在过滤数据时要分清好的，有效的，无效的数据的处理。
基于以上原则在做web程序设计是要注意以下几点:
1.过滤不支持的编码格式&#160;&#160; 如果你的整个体系里面用的是utf-8编码，那么你就在数据输入的时候过滤或者转化掉其他编码的字符.&#160;&#160; 相关php方法: utf8_encode($input)， iconv（&#8221;utf-8&#8243;,&#8221;utf-8&#8243;,$str）;注后者要装iconv扩展
2.过滤控制字符&#160; 很多时候输入中含有控制字符，这此控制字符虽然是有效的数据，但不是良好的数据。这时候最好把控制字符给过滤掉，可以简单的把小于0&#215;20的 ascii字符过滤之。&#160;&#160; 相关方法:&#160;&#160;&#160; 1. preg_replace(&#8217;!\p{C}!u&#8217;,&#8221;,$data)//清除所有控制字符&#160;&#160;&#160; 2.preg_replace(&#8217;!\r\n?&#8217;,'\n&#8217;,$input) //统一所有平台的回车，还省空间
3.过滤html&#160; html的过滤比较头痛，可以用strip_tags()进行过滤，所有的html标签，但是想有选择的过滤html就比较惨了。这时个可以要你写比较复杂的正则表达式。&#160; 注：把所有的外部来源的数据当成是感染过的数据是重要的，只有你自己消除感染的数据才是安全的。&#160; 有时间 可以看一下lib_filter(http://code.iamcal.com/php/lib_filter) 
4.防止sql注入攻击:&#160; 原则:不要赋于用户超出他们所需的权限。&#160; web应用程序永远也不应该需要create,drop,alter权限，如果需要，那么很可能是在基本程序设计上有问题。&#160; 对于只读的数据库，没有必要发放insert ,updata,delete 权限。&#160; 字符串型过滤相关php方法:&#160; AddSlashes() ，mysql_escape_string()&#160; 整形过滤 : interval(input)&#160; 注意如果用到like或者rlike操作时还要过滤相关字符串中的“%”与“_”两个符号。&#160; &#160; 数据净化原则:净化代码在物理位置上应该和使用数据的代码相邻，避免过早净化，就可以快速查看代码，确认是否正确进行了转义了数据。
&#160; 
]]></description>
		<wfw:commentRss>http://guogoul.com/2008/10/21/web_data/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>lvm实现原理</title>
		<link>http://guogoul.com/2008/09/15/lvm/</link>
		<comments>http://guogoul.com/2008/09/15/lvm/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 13:30:48 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[disk]]></category>
		<category><![CDATA[lvm]]></category>
		<category><![CDATA[raid]]></category>

		<guid isPermaLink="false">http://www.guogoul.com/2008/09/15/lvm/</guid>
		<description><![CDATA[在学习操作系统的时候，磁盘管理的学习是重中之重。如何处理好服务器磁盘的分配也是衡量一个服务器管理员好坏的一个重要指标.很多管理员可能会遇到这么个问题：如何为一个目录分配好空间大小？当我们给一个文件夹提供磁盘分区的时候，分区大小是很难估计的，如果分大就是导致有限空间的磁盘浪费，如果分小了会给以后的工作带来不必要的麻烦.如果有一个工具可以自动的调整磁盘大小那就十分完美了。lvm（逻辑卷组管理）就是应这个需求存在的,，下面是本人根据对lvm实现的理解画了一个草图:原理解释:&#160;1. lvm基本原理: 原有物理硬盘上面建立一个虚拟的逻辑磁盘.这样的话就可以方便的对逻辑磁盘的大小进行调整。&#160;2.术语解释:&#160;&#160;&#160;&#160; pv: 物理卷&#160;&#160;&#160;&#160; vg: 虚拟卷组&#160;&#160;&#160;&#160; lv:&#160;&#160; 逻辑卷组&#160;3.实现过程概要:&#160;&#160;&#160; 3.1.根据物理硬盘分区生成pv,一个pv可以由多个分区或者多个磁盘组成.&#160; pvcreate为生成pv的方法&#160;&#160;&#160; 3.2.根据前面生成pv，任务N个组成Vg. vg可以看成是一个可以扩大和缩小的磁盘，当然大小的上限是物理磁盘的总大小，最小是一个物理单元，与物理磁盘上的最小单元的原理一致。根据vgcreate可生成vg.&#160;&#160;&#160; 3.3.可以把vg分成n个lv(逻辑卷组)，就像在物理磁盘上进行分区一样，不过最重要的特点就是建好lv后可以根据目前vg的大小以及剩下的空间进行lv大小的调整，哈哈这就是lv进行分区与直接用物理磁盘分区的不同之处。lvcreate是生成lv的方法。&#160;&#160; 3.4.优点总结: &#160;&#160;&#160;&#160;&#160;&#160;&#160; 1) 可以把多个物理磁盘方便管理成单一的逻辑磁盘&#160;&#160;&#160;&#160;&#160;&#160;&#160; 2) 对于逻辑卷的大小分配比磁盘分区大小的分配更加的灵活易于。
4.运用:&#160;&#160; 目前的实际生成环境中，raid(上一篇文章) + lvm组合是实现服务器磁盘管理的实用解决方案.
]]></description>
		<wfw:commentRss>http://guogoul.com/2008/09/15/lvm/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>raid0,raid1,raid0+1,raid1+0,raid5图解</title>
		<link>http://guogoul.com/2008/09/15/raid/</link>
		<comments>http://guogoul.com/2008/09/15/raid/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 12:05:19 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[disk]]></category>
		<category><![CDATA[raid]]></category>

		<guid isPermaLink="false">http://www.guogoul.com/2008/09/15/raid/</guid>
		<description><![CDATA[这几天学习了下raid的基础知识，并做了相应的实验，把各个模式的实现原理用图形记录下来，方便日后查阅。

图解:(以下按图的顺序进行注释)1.raid0:其最大的优点是读写数据速度加快，提高硬盘的读取时间。每个raid0组需要的硬盘为&#62;1就可以。由于数据是分别写到不同的硬盘上的，并且每个硬盘的数据是没有备份，这样如果其中的哪块硬盘有三长两短所以数据将都失效，所以安全性不高


2.raid1: raid1其实是就用一组硬盘对另外一组硬盘进行备份的过程，将会产生一份冗余的数据以防止意外情况的发生.实现raid1组只要硬盘偶数块就可以了，多出来的备份操作一定程度上对磁盘速度有影响，而且磁盘容量也只有1/2
3.raid0+1:为了弥补raid0在数据安全性上的不足，对现实raid0的两个磁盘组再进行raid1备份处理，这样保证了磁盘IO的速度，又提高的数据的安全性。实现raid0+1需要4块以硬盘处理，如果是由4块磁盘组成的阵列可以坏掉同组的两块硬盘，或者两块不同组但不互为备份的磁盘，安全性是不是很高呢?
4.raid1+0:这咱冗余阵列与上面的有点不同就是每个组硬盘是进行raid0呢还是raid1,raid1+0的每组disk是自己进行备份，然后把各个硬盘组进行raid1并行条块化读写。对于raid1+0硬盘组的阵列，同一组中的两块硬盘不同时挂掉,数据就没问题。
5.raid5:是一个硬盘容量，速度，以及数据安全兼顾的解决方案，有一个备份硬盘，如果坏掉一个可以换上备份盘重新工作，但是如果同时挂掉两个硬盘就不行了。
注意：做raid所用的物理空间要存在于不同的硬盘，对于一个物理硬盘里进行分区然后再拿这些分区再来做raid是不合理的，会降慢读写速度。
对不同目录适用的不同raid：
/boot: raid1
/: raid1
/home: raid1
/swap: raid0
]]></description>
		<wfw:commentRss>http://guogoul.com/2008/09/15/raid/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>chrome不错</title>
		<link>http://guogoul.com/2008/09/03/chrome/</link>
		<comments>http://guogoul.com/2008/09/03/chrome/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 15:36:41 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[it]]></category>

		<guid isPermaLink="false">http://www.guogoul.com/2008/09/03/chrome/</guid>
		<description><![CDATA[下载地址:http://www.google.com/chrome/index.html?hl=zh_CN&#38;brand=CHMG&#38;utm_source=zh_CN-hpp&#38;utm_medium=hpp&#38;utm_campaign=zh_CN
我将会用chrome代替我的目前浏览工具
1.阅读区很宽： 在阅读的时候减少无用信息的打扰，就像一本书一样。
2.速度快:  采用了多进程的解决方案，内存控制更加优化,图像渲染速度更快。
3.下载工具更人性化。
4.页面调试功能还过得去。
5.创新的tab导航： 传统的浏览器一般新开一个TAB都是默认打一个空白页，而google却把用户的浏览形为记录下来,并进行分析后推荐给用户.这与传统的历史浏览记录有很大的区别,当然google这个更加人性化一点，这一点是我一直期待的。互联网上很多收集用户形为的站点，不过只有登录到其网站上并登录才能进行用户形为收集,无法进行跨站分析，现在chrome可好了，借助浏览器可以相当准确的分析出用户对网站的喜好，从而精确的分析出用户偏爱。这些行为数据可以为google的定向ad提供一些支持。
6.chrome在PC端上站住了脚，那么google想到得到pc上的数据和保存数据将更加简单,web与客户端的紧密结合将会推出更加精彩的服务。
7.是否会出现google 操作系统?或者google pc? 我们相信google有这样的能力。在网络社会下，操作系统上的很多应用程序可以搬到了网上，那么操作系统的价值又将何在呢？如果打开电脑出现的界面是google搜索框，有你什么感受呢？
进了chrome就进了google圈套，小心点。

]]></description>
		<wfw:commentRss>http://guogoul.com/2008/09/03/chrome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bash编程学习-基础(5)</title>
		<link>http://guogoul.com/2008/08/30/bashshell_5/</link>
		<comments>http://guogoul.com/2008/08/30/bashshell_5/#comments</comments>
		<pubDate>Sat, 30 Aug 2008 15:55:53 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[bash]]></category>

		<guid isPermaLink="false">http://www.guogoul.com/2008/08/30/bashshell_5/</guid>
		<description><![CDATA[1.echo 参数，-n表示输出后不换行。 -e表示转化转义字符
2.
序列 	意义 
\a 	响铃。 
\b 	退格。
\c 	强制换行。
\e 	退出。
\f 	清除屏幕Form feed.
\n 	换行。
\r 	回车。
\t 	水平制表符。
\v 	垂直制表符。
\\ 	反斜杠。
\ONNN 	值为八进制值NNN（0到3个八进制数字）的8比特字符。
\NNN 	值为八进制值NNN（1到3个八进制数字）的8比特字符。
\xHH 	值为十六进制值（1或者2个十六进制数字）的8比特字符。
2.’-’ 可以表示程序需要从管道读取就可以达到目的
3.
分配给文件以文件描述符:
exec fdN&#62; file
分配文件描述符N给 file 进行输出：
exec fdN&#60; file
分配文件描述符N给 file 进行输入。
关闭文件描述符: exec fd&#60;&#38;-
4.here docment就像php的定界符

5.FILE == &#62;FILE 2&#62;&#38;1 把标准输出和标准错误重定向到FILE文件中.
6.for循环的结构语法
for NAME [in list];do commands;done
7.while循环的语法结构。
while control-command;do consequent-commands;done
8.until与while刚好相反当条件为真的时候退出。
until test-command;do consequent-commands;done
9.菜单生成与for的语法相似
select word [in list];do respective-commands;done
10.shift内建命令
其应用主要用于随过的参数输入的处理参数的遍历
shift后面跟 一个数字N做参数。原来的$1就变成$(N+1) $#变成$#-N+1
11.变量的定义
declare OPTION(s) VARIABLE=value
OPTION: -a 数组 -f [...]]]></description>
		<wfw:commentRss>http://guogoul.com/2008/08/30/bashshell_5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
