<?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>Solo Estoy &#187; FreeBSD</title>
	<atom:link href="http://opslife.com/tag/freebsd/feed/" rel="self" type="application/rss+xml" />
	<link>http://opslife.com</link>
	<description>人生不过是一场旷日持久却又无法rollback的operation而已</description>
	<lastBuildDate>Thu, 06 May 2010 02:36:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>有关DSR的网络拓扑结构和实现方法</title>
		<link>http://opslife.com/dsr-implemention/</link>
		<comments>http://opslife.com/dsr-implemention/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 13:41:55 +0000</pubDate>
		<dc:creator>dawnh</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[DSR]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[network]]></category>

		<guid isPermaLink="false">http://opslife.com/dsr-implemention/</guid>
		<description><![CDATA[<p>前两天在delphij老大的blog中看到了一篇《使用DSR模式实现单IP服务冗余》，觉得很有意思，因为这个实现方式与我以往所见到的有些不同，通过关闭ARP响应来解决虚拟IP在负载均衡设备和服务器上可能冲突的问题。随即提问了一下我所熟悉方式的实现是否可行，勤恳的delphij竟然又写了一篇来解释这个问题。不过这篇的思路似乎与我原来的想法有点出入，所以仔细又思考了一下，最终决定还是要完整的阐述一下我的思路。</p>
<p>我虽然见过一些DSR的实现方式，然而只不过是阅读架构文档而已，想当然来的东西跟最后实际实施出来的东西肯定有差距，所以把自己认为的设计思路记录下来，看看最终是否可行。</p>
<p>首先是拓扑图：</p>
<p></p>
<p>介绍一下简单的信息：</p>

Public VLAN直连Internet，LB和Router分别有一个网卡接口连在这里，用于承载Internet的虚拟IP自然也就是绑在LB连在Public VLAN的NIC上了，方便起见，随便起个IP: 202.96.100.100(202.96段是中国电信骨干IP段，很多坏事都是这里发生的:D)
Internal VLAN是放服务器集群的网段，当然就用私有地址，就用典型的192.168.1.0/24吧，这里的Server使用IP 192.168.1.101

<p>首先从数据流角度来看（红色箭头上的标号）：</p>

客户发起到请求： 61.152.X.X:1025 –&#62; 202.96.100.100:80
负载均衡设备通过匹配包，发现目的IP为虚拟IP，根据Load balance算法挑选一台Server，将数据报直接路由到这台Server，不做任何修改（减TTL不算）61.152.X.X:1025 –&#62; 202.96.100.100:80
Server看到数据报的目的IP是虚拟IP，并发现虚拟IP绑定在自己的lo上，认为目的地是自己，OS派发到应用层Web Server处理Request并生成结果，结果数据包变为 202.96.100.100:80 –&#62; 61.152.X.X:1025 
数据报发往路由器，路由器看到目的地为客户IP，路由到Internet去。

<p>这个过程与传统NAT方式的Load Balance的区别在于，LB不修改目的地址，直接将数据报通过路由的方式转发给服务器集群。然而这里的难点就在于：如果不修改目的IP，那必须让Server能够对发往虚拟IP的请求做出响应，那就必须要把虚拟IP绑定在Server端，因此虚拟IP就同时出现在了两个地方：LB和Server，解决这个冲突就是完成DSR的关键所在。对于此点引用delphij的原话：</p>
<p>实现DSR结构的关键是，通往Internet路由器的那个网络上，只有负载平衡设备在网络上宣示虚拟出来的那个IP的MAC地址，这样，当请求进来的时候，数据会发到负载平衡设备，而不是某一台服务器上。</p>

<p>Delphij采用的方法是，将服务器上网卡的ARP功能关闭，这样服务器虽然绑定了虚拟IP，但不会对外界对于虚拟IP的MAC地址解析请求做出响应，所以完美解决了IP重复的问题。缺点是ARP一关Server自己会找不到Router或者网络内的其他服务器，因此需要手工维护一个静态ARP表。</p>
<p>而我所采用的方式，是不将虚拟IP绑定在实际网卡上，只是绑定在Server的还回(lo)上，这样依旧可以起到缩减ARP响应域的作用。</p>
<p>Delphij认为这样会需要一个额外的Public IP，不过我认为如果Server放在私有地址VLAN的话，应该是不需要额外的IP，在如图的这种拓扑中应该可以完美的工作。只要LB和Server中作出如下配置（红色罗马数字）：</p>
<p>I.&#160; Load Balancer要特别设置的地方有：</p>

需要有合适的负载均衡算法以便于把流量分发给不同的Server。
对于TCP这种有状态的服务，需要使用较为宽松的状态机制来维持会话。

<p>这里引用delphij的pf命令为例，如下，round-robin是负载均衡算法，keep-state(slopppy)是宽松状态匹配，这一点对于DSR也是尤为重要，因为DSR的特点就是从Server发回的响应不经过LB，LB看不见回去的响应包，所以Session track必须能容忍这种半吊子连接。而且这里似乎也必须修改Session的timeout时间，否则会有问题，这里无关者略过：</p>


<p>FreeBSD pf规则举例：pass in on em0 route-to { em1 内网IP1, em1 内网IP2, em1 内网IP3 } round-robin proto tcp from any to 公网IP port http keep state (sloppy)</p>


<p>II.&#160; Server端需要的设置：</p>

在lo上绑定虚拟IP 202.96.100.100，这样Server才会认为目的地是自己。
Web Server本身要使用虚拟IP作为监听IP，比如Apache配置Virtualhost的话这样用：&#60;VirtualHost 202.96.100.100:80&#62; ，如此以来Web server会对到虚拟IP的请求做出响应，且响应的源地址也是虚拟IP而不是自己网卡上的私有IP。
Server将默认网关设置为Router的IP，这样对于请求的响应就会发往Router而不会返回LB了。

<p>III. Router上应该不需要什么特殊设置，知道把发往Internet的包路由出去就行</p>
<p></p>
<p>这样整个DSR就应该能走通了，不过这个玩法我也只是想出来而已，还没有经过实践，当初看到过F5的nPath实现，应该就是这么种玩法，不过估计实际应用时应该会有我这里没有想到得地方，所以有时间的话，最好还是找几个设备搭一下看看吧，先把设想架构放这儿，改天回来验证。说实话，delphij指出这里必须要有一个额外的公网IP才能保证知道出去的包怎么走，我这点还是没有想通。不管怎样，写出来让大家指正吧，至少在写这篇的过程中，我已经将自己以前没考虑到得一些细节补充完整了，对于自己来说，也算是不小的收获。</p>
2010/05/06 -- [...]]]></description>
			<content:encoded><![CDATA[<p>前两天在delphij老大的blog中看到了一篇《<a href="http://blog.delphij.net/archives/2009/09/dsrip.html">使用DSR模式实现单IP服务冗余</a>》，觉得很有意思，因为这个实现方式与我以往所见到的有些不同，通过关闭ARP响应来解决虚拟IP在负载均衡设备和服务器上可能冲突的问题。随即提问了一下我所熟悉方式的实现是否可行，勤恳的delphij竟然<a href="http://blog.delphij.net/archives/2009/09/dsrip-1.html">又写了一篇</a>来解释这个问题。不过这篇的思路似乎与我原来的想法有点出入，所以仔细又思考了一下，最终决定还是要完整的阐述一下我的思路。</p>
<p>我虽然见过一些DSR的实现方式，然而只不过是阅读架构文档而已，想当然来的东西跟最后实际实施出来的东西肯定有差距，所以把自己认为的设计思路记录下来，看看最终是否可行。</p>
<p>首先是拓扑图：</p>
<p><a title="DSR" href="http://www.flickr.com/photos/40857285@N03/3930778247/"><img border="0" alt="DSR" src="http://farm4.static.flickr.com/3501/3930778247_6b82459619.jpg" /></a></p>
<p>介绍一下简单的信息：</p>
<ul>
<li>Public VLAN直连Internet，LB和Router分别有一个网卡接口连在这里，用于承载Internet的虚拟IP自然也就是绑在LB连在Public VLAN的NIC上了，方便起见，随便起个IP: <strong>202.96.100.100</strong>(202.96段是中国电信骨干IP段，很多坏事都是这里发生的:D)</li>
<li>Internal VLAN是放服务器集群的网段，当然就用私有地址，就用典型的192.168.1.0/24吧，这里的Server使用IP <strong>192.168.1.101</strong></li>
</ul>
<p>首先从数据流角度来看（红色箭头上的标号）：</p>
<ol>
<li>客户发起到请求： 61.152.X.X:1025 –&gt; 202.96.100.100:80</li>
<li>负载均衡设备通过匹配包，发现目的IP为虚拟IP，根据Load balance算法挑选一台Server，将数据报直接路由到这台Server，不做任何修改（减TTL不算）61.152.X.X:1025 –&gt; 202.96.100.100:80</li>
<li>Server看到数据报的目的IP是虚拟IP，并发现<strong>虚拟IP绑定在自己的lo上</strong>，认为目的地是自己，OS派发到应用层Web Server处理Request并生成结果，结果数据包变为 202.96.100.100:80 –&gt; 61.152.X.X:1025 </li>
<li>数据报发往路由器，路由器看到目的地为客户IP，路由到Internet去。</li>
</ol>
<p>这个过程与传统NAT方式的Load Balance的区别在于，LB不修改目的地址，直接将数据报通过路由的方式转发给服务器集群。然而这里的难点就在于：如果不修改目的IP，那必须让Server能够对发往虚拟IP的请求做出响应，那就必须要把虚拟IP绑定在Server端，因此虚拟IP就同时出现在了两个地方：LB和Server，解决这个冲突就是完成DSR的关键所在。对于此点引用delphij的原话：</p>
<blockquote><p><em>实现DSR结构的关键是，通往Internet路由器的那个网络上，只有负载平衡设备在网络上宣示虚拟出来的那个IP的MAC地址，这样，当请求进来的时候，数据会发到负载平衡设备，而不是某一台服务器上。</em></p>
</blockquote>
<p>Delphij采用的方法是，将服务器上网卡的ARP功能关闭，这样服务器虽然绑定了虚拟IP，但不会对外界对于虚拟IP的MAC地址解析请求做出响应，所以完美解决了IP重复的问题。缺点是ARP一关Server自己会找不到Router或者网络内的其他服务器，因此需要手工维护一个静态ARP表。</p>
<p>而我所采用的方式，是不将虚拟IP绑定在实际网卡上，只是绑定在Server的还回(lo)上，这样依旧可以起到缩减ARP响应域的作用。</p>
<p>Delphij认为这样会需要一个额外的Public IP，不过我认为如果Server放在私有地址VLAN的话，应该是不需要额外的IP，在如图的这种拓扑中应该可以完美的工作。只要LB和Server中作出如下配置（红色罗马数字）：</p>
<p><strong>I.&#160; Load Balancer要特别设置的地方有：</strong></p>
<ul>
<li>需要有合适的负载均衡算法以便于把流量分发给不同的Server。</li>
<li>对于TCP这种有状态的服务，需要使用较为宽松的状态机制来维持会话。</li>
</ul>
<p>这里引用delphij的pf命令为例，如下，round-robin是负载均衡算法，keep-state(slopppy)是宽松状态匹配，这一点对于DSR也是尤为重要，因为DSR的特点就是从Server发回的响应不经过LB，LB看不见回去的响应包，所以Session track必须能容忍这种半吊子连接。而且这里似乎也必须修改Session的timeout时间，否则会有问题，这里无关者略过：</p>
<ol>
<blockquote>
<p><em>FreeBSD pf规则举例：pass in on em0 route-to { em1 内网IP1, em1 内网IP2, em1 内网IP3 } <strong>round-robin</strong> proto tcp from any to 公网IP port http <strong>keep state (sloppy)</strong></em></p>
</blockquote>
</ol>
<p><strong>II.&#160; Server端需要的设置：</strong></p>
<ul>
<li>在lo上绑定虚拟IP 202.96.100.100，这样Server才会认为目的地是自己。</li>
<li>Web Server本身要使用虚拟IP作为监听IP，比如Apache配置Virtualhost的话这样用：&lt;VirtualHost 202.96.100.100:80&gt; ，如此以来Web server会对到虚拟IP的请求做出响应，且响应的源地址也是虚拟IP而不是自己网卡上的私有IP。</li>
<li>Server将默认网关设置为Router的IP，这样对于请求的响应就会发往Router而不会返回LB了。</li>
</ul>
<p><strong>III. Router上应该不需要什么特殊设置，知道把发往Internet的包路由出去就行</strong></p>
<p><strong></strong></p>
<p>这样整个DSR就应该能走通了，不过这个玩法我也只是想出来而已，还没有经过实践，当初看到过F5的nPath实现，应该就是这么种玩法，不过估计实际应用时应该会有我这里没有想到得地方，所以有时间的话，最好还是找几个设备搭一下看看吧，先把设想架构放这儿，改天回来验证。说实话，delphij指出这里必须要有一个额外的公网IP才能保证知道出去的包怎么走，我这点还是没有想通。不管怎样，写出来让大家指正吧，至少在写这篇的过程中，我已经将自己以前没考虑到得一些细节补充完整了，对于自己来说，也算是不小的收获。</p>
<ul class="related_post"><li>2010/05/06 -- <a href="http://opslife.com/dnssec-approaching/" title="DNSSEC迫在眉睫">DNSSEC迫在眉睫</a> (3)</li><li>2009/09/11 -- <a href="http://opslife.com/microsoft-cisco-finally-patch-tcp-dos-flaw/" title="TCP/IP协议栈DoS漏洞">TCP/IP协议栈DoS漏洞</a> (2)</li><li>2009/06/10 -- <a href="http://opslife.com/weird-behivour-of-china-internet/" title="网生异象，必有妖孽出世">网生异象，必有妖孽出世</a> (2)</li><li>2008/12/22 -- <a href="http://opslife.com/blog-speed-optimize/" title="Blog访问速度优化">Blog访问速度优化</a> (2)</li><li>2007/11/22 -- <a href="http://opslife.com/upgrade-to-freebsd-7-beta-3/" title="升级至FreeBSD 7.0-BETA3">升级至FreeBSD 7.0-BETA3</a> (2)</li><li>2007/11/09 -- <a href="http://opslife.com/damn-sh-mobile-broadband/" title="弱智的上海移通">弱智的上海移通</a> (1)</li><li>2007/11/01 -- <a href="http://opslife.com/identify-diffrent-hashing-algorithm/" title="区分几种知名散列算法的散列值的方法">区分几种知名散列算法的散列值的方法</a> (0)</li><li>2007/10/30 -- <a href="http://opslife.com/zfs-under-freebsd-performace/" title="ZFS under FreeBSD performace">ZFS under FreeBSD performace</a> (0)</li><li>2007/09/10 -- <a href="http://opslife.com/use-mtree-for-freebsd-filesystem-integrity-auditing/" title="Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计">Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计</a> (2)</li><li>2007/09/05 -- <a href="http://opslife.com/damn-media-cnbeta/" title="有一点专业精神好不好?!">有一点专业精神好不好?!</a> (3)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://opslife.com/dsr-implemention/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>升级至FreeBSD 7.0-BETA3</title>
		<link>http://opslife.com/upgrade-to-freebsd-7-beta-3/</link>
		<comments>http://opslife.com/upgrade-to-freebsd-7-beta-3/#comments</comments>
		<pubDate>Thu, 22 Nov 2007 06:21:32 +0000</pubDate>
		<dc:creator>dawnh</dc:creator>
				<category><![CDATA[FreeBSD]]></category>

		<guid isPermaLink="false">http://dawnh.net/freebsd/275/upgrade-to-freebsd-7-beta-3/</guid>
		<description><![CDATA[<p>昨天给2号机cvsup了RELENG_7的最新代码，决定在Current还没有清晰的新目标前，暂且老老实实呆在RELENG_7一阵子吧。</p>
<p>看了一下版本号，没想到已经是beta3了，这应该是Release前最后一个beta了吧，难道传说的这个Release不会跳票真的实现了？？ XD</p>
<p>接下来要做的是将一部分陈旧资料（其实主要是电影存档）搬到ZFS去，然后是恐怖的gnome升级至2.20，希望顺利。时间上就凭一个破P4已经没什么奢望了，做好长期开机build的准备。</p>
<p>另外今天make world时发现有一个变量是可以不让make delete-old时老提示是否删除的，记录之</p>
<p>make BATCH_DELETE_OLD_FILES=YES delete-old</p>
<p>亏得以前按到手软&#8230;..</p>
2009/09/18 -- 有关DSR的网络拓扑结构和实现方法 (1)2007/11/01 -- 区分几种知名散列算法的散列值的方法 (0)2007/10/30 -- ZFS under FreeBSD performace (0)2007/09/10 -- Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计 (2)2007/08/07 -- A comment abount SD, CFS Schedulers,from ULE&#8217;s author (15)2007/06/06 -- FreeBSD架设ntpd服务手记 (0)2007/06/05 -- FreeBSD操作系统利用powerd服务减轻系统功耗 (0)2007/05/06 -- FreeBSD的Jail安装手记 (0)2007/04/15 -- 超低级失误&#8211;误删除/etc (0)]]></description>
			<content:encoded><![CDATA[<p>昨天给2号机cvsup了RELENG_7的最新代码，决定在Current还没有清晰的新目标前，暂且老老实实呆在RELENG_7一阵子吧。</p>
<p>看了一下版本号，没想到已经是beta3了，这应该是Release前最后一个beta了吧，难道传说的这个Release不会跳票真的实现了？？ XD</p>
<p>接下来要做的是将一部分陈旧资料（其实主要是电影存档）搬到ZFS去，然后是恐怖的gnome升级至2.20，希望顺利。时间上就凭一个破P4已经没什么奢望了，做好长期开机build的准备。</p>
<p>另外今天make world时发现有一个变量是可以不让make delete-old时老提示是否删除的，记录之</p>
<blockquote><p>make BATCH_DELETE_OLD_FILES=YES delete-old</p></blockquote>
<p>亏得以前按到手软&#8230;..</p>
<ul class="related_post"><li>2009/09/18 -- <a href="http://opslife.com/dsr-implemention/" title="有关DSR的网络拓扑结构和实现方法">有关DSR的网络拓扑结构和实现方法</a> (1)</li><li>2007/11/01 -- <a href="http://opslife.com/identify-diffrent-hashing-algorithm/" title="区分几种知名散列算法的散列值的方法">区分几种知名散列算法的散列值的方法</a> (0)</li><li>2007/10/30 -- <a href="http://opslife.com/zfs-under-freebsd-performace/" title="ZFS under FreeBSD performace">ZFS under FreeBSD performace</a> (0)</li><li>2007/09/10 -- <a href="http://opslife.com/use-mtree-for-freebsd-filesystem-integrity-auditing/" title="Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计">Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计</a> (2)</li><li>2007/08/07 -- <a href="http://opslife.com/jeffr-comment-about-sd-and-cfs/" title="A comment abount SD, CFS Schedulers,from ULE&#8217;s author">A comment abount SD, CFS Schedulers,from ULE&#8217;s author</a> (15)</li><li>2007/06/06 -- <a href="http://opslife.com/freebsd%e6%9e%b6%e8%ae%bentpd%e6%9c%8d%e5%8a%a1%e6%89%8b%e8%ae%b0/" title="FreeBSD架设ntpd服务手记">FreeBSD架设ntpd服务手记</a> (0)</li><li>2007/06/05 -- <a href="http://opslife.com/freebsd-powerd-howto/" title="FreeBSD操作系统利用powerd服务减轻系统功耗">FreeBSD操作系统利用powerd服务减轻系统功耗</a> (0)</li><li>2007/05/06 -- <a href="http://opslife.com/freebsd-jail-howto/" title="FreeBSD的Jail安装手记">FreeBSD的Jail安装手记</a> (0)</li><li>2007/04/15 -- <a href="http://opslife.com/%e8%b6%85%e4%bd%8e%e7%ba%a7%e5%a4%b1%e8%af%af-%e8%af%af%e5%88%a0%e9%99%a4etc/" title="超低级失误&#8211;误删除/etc">超低级失误&#8211;误删除/etc</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://opslife.com/upgrade-to-freebsd-7-beta-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>区分几种知名散列算法的散列值的方法</title>
		<link>http://opslife.com/identify-diffrent-hashing-algorithm/</link>
		<comments>http://opslife.com/identify-diffrent-hashing-algorithm/#comments</comments>
		<pubDate>Thu, 01 Nov 2007 05:28:11 +0000</pubDate>
		<dc:creator>dawnh</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[blowfish]]></category>
		<category><![CDATA[des]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[md5]]></category>

		<guid isPermaLink="false">http://dawnh.net/software/269/identify-diffrent-hashing-algorithm/</guid>
		<description><![CDATA[<p>取自FreeBSD HandBook第14.4小节，刚才回顾手册时看到的。</p>
<p> 用 MD5 散列加密的密码通常要比用 DES 散列得到的长一些， 并且以 $1$ 字符开始。 以 $2a$ 开始的口令是通过 Blowfish 散列函数加密的。 DES 密码字符没有任何可以用于鉴别的特征， 但他们要比 MD5 短， 并且以不包括 $ 在内的 64 个可显示字符来表示，因此相对比较短的、没有以美元符号开头的字符串很可能是一个 DES 口令。</p>
2009/09/18 -- 有关DSR的网络拓扑结构和实现方法 (1)2007/11/22 -- 升级至FreeBSD 7.0-BETA3 (2)2007/10/30 -- ZFS under FreeBSD performace (0)2007/09/10 -- Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计 (2)2007/08/07 -- A comment abount SD, CFS Schedulers,from ULE&#8217;s author (15)2007/06/06 -- FreeBSD架设ntpd服务手记 (0)2007/06/05 [...]]]></description>
			<content:encoded><![CDATA[<p>取自<a href="http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/handbook/index.html">FreeBSD HandBook</a>第14.4小节，刚才回顾手册时看到的。</p>
<blockquote><p> 用 MD5 散列加密的密码通常要比用 DES 散列得到的长一些， 并且以 $1$ 字符开始。 以 $2a$ 开始的口令是通过 Blowfish 散列函数加密的。 DES 密码字符没有任何可以用于鉴别的特征， 但他们要比 MD5 短， 并且以不包括 $ 在内的 64 个可显示字符来表示，因此相对比较短的、没有以美元符号开头的字符串很可能是一个 DES 口令。</p></blockquote>
<ul class="related_post"><li>2009/09/18 -- <a href="http://opslife.com/dsr-implemention/" title="有关DSR的网络拓扑结构和实现方法">有关DSR的网络拓扑结构和实现方法</a> (1)</li><li>2007/11/22 -- <a href="http://opslife.com/upgrade-to-freebsd-7-beta-3/" title="升级至FreeBSD 7.0-BETA3">升级至FreeBSD 7.0-BETA3</a> (2)</li><li>2007/10/30 -- <a href="http://opslife.com/zfs-under-freebsd-performace/" title="ZFS under FreeBSD performace">ZFS under FreeBSD performace</a> (0)</li><li>2007/09/10 -- <a href="http://opslife.com/use-mtree-for-freebsd-filesystem-integrity-auditing/" title="Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计">Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计</a> (2)</li><li>2007/08/07 -- <a href="http://opslife.com/jeffr-comment-about-sd-and-cfs/" title="A comment abount SD, CFS Schedulers,from ULE&#8217;s author">A comment abount SD, CFS Schedulers,from ULE&#8217;s author</a> (15)</li><li>2007/06/06 -- <a href="http://opslife.com/freebsd%e6%9e%b6%e8%ae%bentpd%e6%9c%8d%e5%8a%a1%e6%89%8b%e8%ae%b0/" title="FreeBSD架设ntpd服务手记">FreeBSD架设ntpd服务手记</a> (0)</li><li>2007/06/05 -- <a href="http://opslife.com/freebsd-powerd-howto/" title="FreeBSD操作系统利用powerd服务减轻系统功耗">FreeBSD操作系统利用powerd服务减轻系统功耗</a> (0)</li><li>2007/05/06 -- <a href="http://opslife.com/freebsd-jail-howto/" title="FreeBSD的Jail安装手记">FreeBSD的Jail安装手记</a> (0)</li><li>2007/04/15 -- <a href="http://opslife.com/%e8%b6%85%e4%bd%8e%e7%ba%a7%e5%a4%b1%e8%af%af-%e8%af%af%e5%88%a0%e9%99%a4etc/" title="超低级失误&#8211;误删除/etc">超低级失误&#8211;误删除/etc</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://opslife.com/identify-diffrent-hashing-algorithm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ZFS under FreeBSD performace</title>
		<link>http://opslife.com/zfs-under-freebsd-performace/</link>
		<comments>http://opslife.com/zfs-under-freebsd-performace/#comments</comments>
		<pubDate>Tue, 30 Oct 2007 03:19:13 +0000</pubDate>
		<dc:creator>dawnh</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[ZFS]]></category>

		<guid isPermaLink="false">http://dawnh.net/freebsd/266/zfs-under-freebsd-performace/</guid>
		<description><![CDATA[<p>Clement大牛用izone做了一个ZFS的性能测试，他说结果很匪夷所思，看了测试图之后我们能说的也只有：确实很匪夷所思</p>
<p>XXD</p>
<p>测试看这里：</p>
<p>http://blogs.freebsdish.org/clement/2007/10/18/more-on-zfs/</p>
2009/09/18 -- 有关DSR的网络拓扑结构和实现方法 (1)2007/11/22 -- 升级至FreeBSD 7.0-BETA3 (2)2007/11/01 -- 区分几种知名散列算法的散列值的方法 (0)2007/10/31 -- 再论Vista/Longhorn的声音问题 (0)2007/10/18 -- MySQL Proxy应用:读写分离 (2)2007/09/10 -- Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计 (2)2007/08/07 -- A comment abount SD, CFS Schedulers,from ULE&#8217;s author (15)2007/06/06 -- FreeBSD架设ntpd服务手记 (0)2007/06/05 -- FreeBSD操作系统利用powerd服务减轻系统功耗 (0)2007/05/06 -- FreeBSD的Jail安装手记 (0)]]></description>
			<content:encoded><![CDATA[<p>Clement大牛用izone做了一个ZFS的性能测试，他说结果很匪夷所思，看了测试图之后我们能说的也只有：确实很匪夷所思</p>
<p>XXD</p>
<p>测试看这里：</p>
<p><a href="http://blogs.freebsdish.org/clement/2007/10/18/more-on-zfs/">http://blogs.freebsdish.org/clement/2007/10/18/more-on-zfs/</a></p>
<ul class="related_post"><li>2009/09/18 -- <a href="http://opslife.com/dsr-implemention/" title="有关DSR的网络拓扑结构和实现方法">有关DSR的网络拓扑结构和实现方法</a> (1)</li><li>2007/11/22 -- <a href="http://opslife.com/upgrade-to-freebsd-7-beta-3/" title="升级至FreeBSD 7.0-BETA3">升级至FreeBSD 7.0-BETA3</a> (2)</li><li>2007/11/01 -- <a href="http://opslife.com/identify-diffrent-hashing-algorithm/" title="区分几种知名散列算法的散列值的方法">区分几种知名散列算法的散列值的方法</a> (0)</li><li>2007/10/31 -- <a href="http://opslife.com/vista-sound-subsystem-issue-again/" title="再论Vista/Longhorn的声音问题">再论Vista/Longhorn的声音问题</a> (0)</li><li>2007/10/18 -- <a href="http://opslife.com/mysql-proxy-learns-r-w-splitting/" title="MySQL Proxy应用:读写分离">MySQL Proxy应用:读写分离</a> (2)</li><li>2007/09/10 -- <a href="http://opslife.com/use-mtree-for-freebsd-filesystem-integrity-auditing/" title="Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计">Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计</a> (2)</li><li>2007/08/07 -- <a href="http://opslife.com/jeffr-comment-about-sd-and-cfs/" title="A comment abount SD, CFS Schedulers,from ULE&#8217;s author">A comment abount SD, CFS Schedulers,from ULE&#8217;s author</a> (15)</li><li>2007/06/06 -- <a href="http://opslife.com/freebsd%e6%9e%b6%e8%ae%bentpd%e6%9c%8d%e5%8a%a1%e6%89%8b%e8%ae%b0/" title="FreeBSD架设ntpd服务手记">FreeBSD架设ntpd服务手记</a> (0)</li><li>2007/06/05 -- <a href="http://opslife.com/freebsd-powerd-howto/" title="FreeBSD操作系统利用powerd服务减轻系统功耗">FreeBSD操作系统利用powerd服务减轻系统功耗</a> (0)</li><li>2007/05/06 -- <a href="http://opslife.com/freebsd-jail-howto/" title="FreeBSD的Jail安装手记">FreeBSD的Jail安装手记</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://opslife.com/zfs-under-freebsd-performace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计</title>
		<link>http://opslife.com/use-mtree-for-freebsd-filesystem-integrity-auditing/</link>
		<comments>http://opslife.com/use-mtree-for-freebsd-filesystem-integrity-auditing/#comments</comments>
		<pubDate>Mon, 10 Sep 2007 06:16:37 +0000</pubDate>
		<dc:creator>dawnh</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[auditing]]></category>
		<category><![CDATA[file-system]]></category>
		<category><![CDATA[mtree]]></category>

		<guid isPermaLink="false">http://dawnh.net/freebsd/252/use-mtree-for-freebsd-filesystem-integrity-auditing/</guid>
		<description><![CDATA[<p>摘抄编译自 http://blogs.techrepublic.com.com/security/?p=283</p>
<p>对于一个Sysadmin来说，如何加固系统是一个长盛不衰的话题。然而再坚固的系统也有失守的时候，有时就可能因为非常细小的一点疏漏，导致整个系统被攻破。所以对于Sysadmin来说，尽可能地保证系统安全是其一，其二还要会更快速有效地发现系统被入侵或者控制这种行为。因此完善的日志体系是必要的。然而还有很多日志无法记录的入侵和破坏行为，这就要求从其他方面想办法。对于Windows操作系统，从Win2k起就有一个SFC系统，一旦系统核心文件被更改，就会提醒管理员并生成审计日志。这玩艺在Win2003又进一步发展，不过貌似也是非常不好用。MS在即将发布的Windows 2008里面建立了一种名为Trusted Platform的框架，进一步完善了SFC，其原理大体应该也是核心部件的数字签名以及认证机制，只不过做的更完善一些了。我现在的PC就是因为某P2P网络电视修改了tcpip.sys导致不断生成这个模块的error日志，大体说明这玩艺还是堪用的。不过Windows更难于发现的破坏行为大多在注册表而不是文件系统，所以此方面恐怕还要更为复杂一些。</p>
<p>扯远了，对于unix类操作系统来说，这方面就没有那么复杂了，因为一个系统本身设计哲学的原因：一切皆是文件。因此，只要能有效监控文件系统的更改，就可以抓住一切针对系统的不良行为。以前有过不少人写过Linux系统可以对整个根做md5sum来实现，这个对于其他Unix类系统也适用。然而对于FreeBSD来说，有一个更为方便的工具&#8211;mtree。</p>
<p>其实mtree这东西本来是用于安装系统或软件时预先创建目录树的，因为其有散列计算以及权限对比等能力，将其作为一个文件系统完整性审计工具也是刚好。另外还有一个很重要的原因是这个工具为基本发行版所附带，属于随手拈来的东西。假使系统被入侵，基础命令集像ps，top被替换地乱七八糟，也很少会有人想到在mtree上动手脚。即使为了万全的可信任概率考虑，也可以使用rescue CD里的这个工具，还有它依赖的运行库也是非常之少，甚至临时从其他系统cp一个来用也完全可以。
说了这么多废话，其实用法非常简单，如下：</p>
mtree -c -K sha256digest -p / &#62; mtree.txt
<p>-c代表输出至stdout，然后用转向定位到文件。</p>
<p>-K代表使用的散列方法，sha256可谓足够安全了吧。</p>
<p>-p代表要做mtree的目录，指定根自然是对整个文件系统做了。如果按照实际使用需求，其实不应该包含入一些被更改频率很高的目录，例如/var/log等。想做得更完善一点就可以写个脚本读取某文件里的目录列表挨个mtree了。</p>
<p>完成后mtree.txt里面就是我们要获取的审计信息了。
根据mtree.txt再来对照文件系统来检查更改情况则用以下命令：</p>
mtree -f /path-to-mtree.txt -K sha256digest -p /
<p>无输出则表示文件系统没更改，如果有输出，应该是以下类型的结果：</p>
. changed

 modification time expected Mon Sep 10 13:40:01 2007 found Mon Sep 10 14:08:21 2007

mtree.txt changed

 size expected 0 found 24407

 modification time expected Mon Sep 10 14:08:09 2007 found Mon Sep 10 14:08:11 2007

 SHA-256 expected e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 found cb61a409d5e71a69ebbaa713e6d752db275a04f1629b86c4e52a835c70c422df

xxx extra

yyy missing
<p>changed代表文件有变动，extra则代表为新建的文件，missing自然是代表文件没了。一目了然。</p>
<p>这样我们所要做的就是定期为文件系统做一个mtree.txt并妥善保管好，并在系统疑似出问题时拿出它来检查了。</p>
2009/09/18 -- 有关DSR的网络拓扑结构和实现方法 [...]]]></description>
			<content:encoded><![CDATA[<p>摘抄编译自 <a href="http://blogs.techrepublic.com.com/security/?p=283">http://blogs.techrepublic.com.com/security/?p=283</a></p>
<p>对于一个Sysadmin来说，如何加固系统是一个长盛不衰的话题。然而再坚固的系统也有失守的时候，有时就可能因为非常细小的一点疏漏，导致整个系统被攻破。所以对于Sysadmin来说，尽可能地保证系统安全是其一，其二还要会更快速有效地发现系统被入侵或者控制这种行为。因此完善的日志体系是必要的。然而还有很多日志无法记录的入侵和破坏行为，这就要求从其他方面想办法。对于Windows操作系统，从Win2k起就有一个SFC系统，一旦系统核心文件被更改，就会提醒管理员并生成审计日志。这玩艺在Win2003又进一步发展，不过貌似也是非常不好用。MS在即将发布的Windows 2008里面建立了一种名为Trusted Platform的框架，进一步完善了SFC，其原理大体应该也是核心部件的数字签名以及认证机制，只不过做的更完善一些了。我现在的PC就是因为某P2P网络电视修改了tcpip.sys导致不断生成这个模块的error日志，大体说明这玩艺还是堪用的。不过Windows更难于发现的破坏行为大多在注册表而不是文件系统，所以此方面恐怕还要更为复杂一些。</p>
<p>扯远了，对于unix类操作系统来说，这方面就没有那么复杂了，因为一个系统本身设计哲学的原因：一切皆是文件。因此，只要能有效监控文件系统的更改，就可以抓住一切针对系统的不良行为。以前有过不少人写过Linux系统可以对整个根做md5sum来实现，这个对于其他Unix类系统也适用。然而对于FreeBSD来说，有一个更为方便的工具&#8211;mtree。</p>
<p>其实mtree这东西本来是用于安装系统或软件时预先创建目录树的，因为其有散列计算以及权限对比等能力，将其作为一个文件系统完整性审计工具也是刚好。另外还有一个很重要的原因是这个工具为基本发行版所附带，属于随手拈来的东西。假使系统被入侵，基础命令集像ps，top被替换地乱七八糟，也很少会有人想到在mtree上动手脚。即使为了万全的可信任概率考虑，也可以使用rescue CD里的这个工具，还有它依赖的运行库也是非常之少，甚至临时从其他系统cp一个来用也完全可以。<br />
说了这么多废话，其实用法非常简单，如下：</p>
<pre class="screen">mtree -c -K sha256digest -p / &gt; mtree.txt</pre>
<p>-c代表输出至stdout，然后用转向定位到文件。</p>
<p>-K代表使用的散列方法，sha256可谓足够安全了吧。</p>
<p>-p代表要做mtree的目录，指定根自然是对整个文件系统做了。如果按照实际使用需求，其实不应该包含入一些被更改频率很高的目录，例如/var/log等。想做得更完善一点就可以写个脚本读取某文件里的目录列表挨个mtree了。</p>
<p>完成后mtree.txt里面就是我们要获取的审计信息了。<br />
根据mtree.txt再来对照文件系统来检查更改情况则用以下命令：</p>
<pre class="screen">mtree -f /path-to-mtree.txt -K sha256digest -p /</pre>
<p>无输出则表示文件系统没更改，如果有输出，应该是以下类型的结果：</p>
<pre class="screen">. changed

 modification time expected Mon Sep 10 13:40:01 2007 found Mon Sep 10 14:08:21 2007

mtree.txt changed

 size expected 0 found 24407

 modification time expected Mon Sep 10 14:08:09 2007 found Mon Sep 10 14:08:11 2007

 SHA-256 expected e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 found cb61a409d5e71a69ebbaa713e6d752db275a04f1629b86c4e52a835c70c422df

xxx extra

yyy missing</pre>
<p>changed代表文件有变动，extra则代表为新建的文件，missing自然是代表文件没了。一目了然。</p>
<p>这样我们所要做的就是定期为文件系统做一个mtree.txt并妥善保管好，并在系统疑似出问题时拿出它来检查了。</p>
<ul class="related_post"><li>2009/09/18 -- <a href="http://opslife.com/dsr-implemention/" title="有关DSR的网络拓扑结构和实现方法">有关DSR的网络拓扑结构和实现方法</a> (1)</li><li>2007/11/22 -- <a href="http://opslife.com/upgrade-to-freebsd-7-beta-3/" title="升级至FreeBSD 7.0-BETA3">升级至FreeBSD 7.0-BETA3</a> (2)</li><li>2007/11/01 -- <a href="http://opslife.com/identify-diffrent-hashing-algorithm/" title="区分几种知名散列算法的散列值的方法">区分几种知名散列算法的散列值的方法</a> (0)</li><li>2007/10/30 -- <a href="http://opslife.com/zfs-under-freebsd-performace/" title="ZFS under FreeBSD performace">ZFS under FreeBSD performace</a> (0)</li><li>2007/08/07 -- <a href="http://opslife.com/jeffr-comment-about-sd-and-cfs/" title="A comment abount SD, CFS Schedulers,from ULE&#8217;s author">A comment abount SD, CFS Schedulers,from ULE&#8217;s author</a> (15)</li><li>2007/06/06 -- <a href="http://opslife.com/freebsd%e6%9e%b6%e8%ae%bentpd%e6%9c%8d%e5%8a%a1%e6%89%8b%e8%ae%b0/" title="FreeBSD架设ntpd服务手记">FreeBSD架设ntpd服务手记</a> (0)</li><li>2007/06/05 -- <a href="http://opslife.com/freebsd-powerd-howto/" title="FreeBSD操作系统利用powerd服务减轻系统功耗">FreeBSD操作系统利用powerd服务减轻系统功耗</a> (0)</li><li>2007/05/06 -- <a href="http://opslife.com/freebsd-jail-howto/" title="FreeBSD的Jail安装手记">FreeBSD的Jail安装手记</a> (0)</li><li>2007/04/15 -- <a href="http://opslife.com/%e8%b6%85%e4%bd%8e%e7%ba%a7%e5%a4%b1%e8%af%af-%e8%af%af%e5%88%a0%e9%99%a4etc/" title="超低级失误&#8211;误删除/etc">超低级失误&#8211;误删除/etc</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://opslife.com/use-mtree-for-freebsd-filesystem-integrity-auditing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A comment abount SD, CFS Schedulers,from ULE&#8217;s author</title>
		<link>http://opslife.com/jeffr-comment-about-sd-and-cfs/</link>
		<comments>http://opslife.com/jeffr-comment-about-sd-and-cfs/#comments</comments>
		<pubDate>Tue, 07 Aug 2007 06:15:38 +0000</pubDate>
		<dc:creator>dawnh</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[CFS]]></category>
		<category><![CDATA[scheduler]]></category>
		<category><![CDATA[SD]]></category>
		<category><![CDATA[ULE]]></category>

		<guid isPermaLink="false">http://dawnh.net/weblog/240/jeffr-comment-about-sd-and-cfs/</guid>
		<description><![CDATA[<p>前几天Linus决定用CFS替换掉O(1)的时候就引发了一场flame war，然而除了几个当事人之外，其他人也仅仅能从使用体验上提出一些意见或者benchmark数据。更因为这些schedulers都没有经过长期考验，没有经验性数据，一堆各个领域的用户都七嘴八舌得参与进来，进而这场大讨论又闹到Server VS Desktop，Scientific Computing VS Gaming等等等等。谁让scheduler本身就是一个牵一发而动全身的关键组件呢，动这玩艺就相当于给人换大脑一样。</p>
<p>这次论战现在又有学院派的高人卷进来了，恰逢FreeBSD的ULE调度器3.0发布不久，所以ULE的作者Jeff Roberson (jeffr)也写了一篇文发表了自己的看法，见此：http://jeffr-tech.livejournal.com/12933.html</p>
<p> jeffr的文章是从设计角度来讨论了这三个调度器实现的不同点，基本上也就是使用的数据结构和算法不同带来的性能影响，有兴趣可以仔细看看，比起LKM那些论战来，不需要懂得那几个大牛之间的前恩宿怨，应该要好看一些。</p>
<p>另外看看用户而不是开发者的comments也是挺好玩的：http://osnews.com/comment.php?news_id=18401</p>
<p>不过毕竟是看过代码才有发言权，普通用户的言论看过就好，没必要较真，真要了解细节还只能看代码。话说回来看完代码估计也不一定就了解。Scheduler设计真是每个变量都要考虑到毫厘，象我这种仅仅是结合几部书讲解调度器的章节过了一遍O(1)和初代ULE的人，还是不理解为什么这样设计或为什么不那样做。所以还是继续看大牛们的热闹吧。</p>
2009/12/28 -- Debian Lenny安装nginx+PHP+MySQL傻瓜手记 (14)2009/09/18 -- 有关DSR的网络拓扑结构和实现方法 (1)2009/03/15 -- 手记:VPS上安装Nginx+PHP+FastCGI+MySQL (3)2008/10/17 -- 新玩具&#8211;VPS入手 (6)2007/11/22 -- 升级至FreeBSD 7.0-BETA3 (2)2007/11/01 -- 区分几种知名散列算法的散列值的方法 (0)2007/10/30 -- ZFS under FreeBSD performace (0)2007/10/10 -- 近期小结 (2)2007/09/10 -- Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计 (2)2007/06/21 -- NDSL一天把玩手记 (3)]]></description>
			<content:encoded><![CDATA[<p>前几天Linus决定用CFS替换掉O(1)的时候就引发了一场flame war，然而除了几个当事人之外，其他人也仅仅能从使用体验上提出一些意见或者benchmark数据。更因为这些schedulers都没有经过长期考验，没有经验性数据，一堆各个领域的用户都七嘴八舌得参与进来，进而这场大讨论又闹到Server VS Desktop，Scientific Computing VS Gaming等等等等。谁让scheduler本身就是一个牵一发而动全身的关键组件呢，动这玩艺就相当于给人换大脑一样。</p>
<p>这次论战现在又有学院派的高人卷进来了，恰逢FreeBSD的ULE调度器3.0发布不久，所以ULE的作者Jeff Roberson (jeffr)也写了一篇文发表了自己的看法，见此：<a href="http://jeffr-tech.livejournal.com/12933.html">http://jeffr-tech.livejournal.com/12933.html</a></p>
<p> jeffr的文章是从设计角度来讨论了这三个调度器实现的不同点，基本上也就是使用的数据结构和算法不同带来的性能影响，有兴趣可以仔细看看，比起LKM那些论战来，不需要懂得那几个大牛之间的前恩宿怨，应该要好看一些。</p>
<p>另外看看用户而不是开发者的comments也是挺好玩的：<a href="http://osnews.com/comment.php?news_id=18401">http://osnews.com/comment.php?news_id=18401</a></p>
<p>不过毕竟是看过代码才有发言权，普通用户的言论看过就好，没必要较真，真要了解细节还只能看代码。话说回来看完代码估计也不一定就了解。Scheduler设计真是每个变量都要考虑到毫厘，象我这种仅仅是结合几部书讲解调度器的章节过了一遍O(1)和初代ULE的人，还是不理解为什么这样设计或为什么不那样做。所以还是继续看大牛们的热闹吧。</p>
<ul class="related_post"><li>2009/12/28 -- <a href="http://opslife.com/install-nginx-php-mysql-on-debian-lenny/" title="Debian Lenny安装nginx+PHP+MySQL傻瓜手记">Debian Lenny安装nginx+PHP+MySQL傻瓜手记</a> (14)</li><li>2009/09/18 -- <a href="http://opslife.com/dsr-implemention/" title="有关DSR的网络拓扑结构和实现方法">有关DSR的网络拓扑结构和实现方法</a> (1)</li><li>2009/03/15 -- <a href="http://opslife.com/nginx-php-fastcgi-mysql-under-linux-vps/" title="手记:VPS上安装Nginx+PHP+FastCGI+MySQL">手记:VPS上安装Nginx+PHP+FastCGI+MySQL</a> (3)</li><li>2008/10/17 -- <a href="http://opslife.com/buying-new-swvps/" title="新玩具&#8211;VPS入手">新玩具&#8211;VPS入手</a> (6)</li><li>2007/11/22 -- <a href="http://opslife.com/upgrade-to-freebsd-7-beta-3/" title="升级至FreeBSD 7.0-BETA3">升级至FreeBSD 7.0-BETA3</a> (2)</li><li>2007/11/01 -- <a href="http://opslife.com/identify-diffrent-hashing-algorithm/" title="区分几种知名散列算法的散列值的方法">区分几种知名散列算法的散列值的方法</a> (0)</li><li>2007/10/30 -- <a href="http://opslife.com/zfs-under-freebsd-performace/" title="ZFS under FreeBSD performace">ZFS under FreeBSD performace</a> (0)</li><li>2007/10/10 -- <a href="http://opslife.com/sep-personal-summary/" title="近期小结">近期小结</a> (2)</li><li>2007/09/10 -- <a href="http://opslife.com/use-mtree-for-freebsd-filesystem-integrity-auditing/" title="Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计">Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计</a> (2)</li><li>2007/06/21 -- <a href="http://opslife.com/ndsl%e4%b8%80%e5%a4%a9%e6%8a%8a%e7%8e%a9%e6%89%8b%e8%ae%b0/" title="NDSL一天把玩手记">NDSL一天把玩手记</a> (3)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://opslife.com/jeffr-comment-about-sd-and-cfs/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>FreeBSD架设ntpd服务手记</title>
		<link>http://opslife.com/freebsd%e6%9e%b6%e8%ae%bentpd%e6%9c%8d%e5%8a%a1%e6%89%8b%e8%ae%b0/</link>
		<comments>http://opslife.com/freebsd%e6%9e%b6%e8%ae%bentpd%e6%9c%8d%e5%8a%a1%e6%89%8b%e8%ae%b0/#comments</comments>
		<pubDate>Wed, 06 Jun 2007 09:09:59 +0000</pubDate>
		<dc:creator>dawnh</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[ntp]]></category>

		<guid isPermaLink="false">http://dawnh.net/freebsd/207/freebsd%e6%9e%b6%e8%ae%bentpd%e6%9c%8d%e5%8a%a1%e6%89%8b%e8%ae%b0/</guid>
		<description><![CDATA[<p>如果说有什么是在服务器部署过程中最重要然而却最容易被忽视的地方，恐怕就只有系统时间了。这玩意看来简单，但实际上大多数系统服务都直接或间接依赖于它，一台时钟不准确的服务器给出的任何结果都有可能是不可信的。所以在近几年的操作系统发行版中，都不约而同的加入了网络校时的功能。然而对于大多数sysadmin来说，这方面还是最容易忽略的。因此这里提倡，无论是在多么无关紧要的系统部署项目中，服务器上线后的第一件事情，一定不要忘记设定一个稳定的事件源并保证持续可靠的校时。</p>
<p>
这里要注意的很关键的一点，就是校时并不是一个一次性工作，也就是说绝对不是系统安装好对照手表上的“北京时间”将系统时间设置好就算万事大吉了的。因为有很多内部或外部因素都会导致系统时间逐渐地出现误差，例如RTC晶片本身的误差，重负载系统导致的时钟滴答丢失等等等等都可能成为时间漂移的因素，因此不可能有一劳永逸绝对精准的时间，只能是持续不断地实施校时。
网络上的标准时间服务器，是挂接了专用的硬件来保证本地时间的准确，并向外发布NTP服务的，因此我们所谓的网络校时只不过是通过NTP协议链接到这些时间服务器，并取回准确时间。目前常用的方法有两种，一种是类似ntpdate工具这样周期性得连接某时间服务器并修改本地时间，这是最简单有效的方法，所要做的不过是将一条ntpdate命令加入到cron中去，一般以小时为单位运行这个命令来实现时间同步。这对于普通状况应该是足够了。象Windows，Ubuntu的桌面版本都是用此类机制实现的，一般来说，以数小时间隔对时不会有任何问题。但是在某些比较极端情况下，例如某个不合格的RTC可能跑1个小时就有5s误差这种的残疾系统，以此类方式对时会导致突然的时间跃迁，在对时完成的瞬间会产生时间突然超前或滞后5s的情况。如果此时恰好在运行高度时间敏感的程序，则可能导致程序出现不可预料的后果。因此也就有了第二种对时方法：ntpd。</p>
<p>ntpd是一个守护进程，它通过对比本地时间与时间服务器的时间差，来进行渐次逼近地对时，也就是说一次修正很小的误差，通过多次修正慢慢逼近准确的时间，所以能避免前面方式的缺陷，因此，在服务器环境下，使用ntpd方式会更好一些，在下认为，即使是只有单独一台服务期的情况下，也尽量使用只为本机服务的ntpd来进行网络校时，而不要使用ntpdate方式。</p>
<p>废话说完，开始实干，以FreeBSD系统为例，具体配置如下：</p>
<p>FreeBSD本身已经带有了ntpd服务，所以直接写配置文件启用即可。</p>
<p>1，修改/etc/rc.conf，加入一行ntpd_enable=&#8221;YES&#8221;。</p>
<p>2修改/etc/ntp.conf，按照自己要求写入配置选项。如果无此文件新建即可，范例配置文件附下。</p>
<p>3运行/etc/rc.d/ntpd start启动服务。</p>
<p>范例配置文件在此，取自RedHat发行版，使用了ntp.org的时间服务期作为源，限制只为本机服务，可谓适应性非常广的配置了，用于其他系统的ntpd配置也完全可以：</p>
<p>restrict default nomodify notrap noquery #default acl
restrict 127.0.0.1</p>
<p>server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10</p>
<p># &#8212; OUR TIMESERVERS &#8212;&#8211;
server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org</p>
<p>到此就算架设完工，不过还有以下几点需要注意：</p>
<p> 1，启动ntpd之前需要运行ntpdate pool.ntp.org先同步一下时间，避免因为系统时间与时间服务期时间相差太大导致渐次逼近无法实施而造成的ntpd运行失败。</p>
<p>2，如果此ntpd服务需要对网络内其他服务期开放校时服务，可以加一条acl实现，如下：</p>
<p>restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap</p>
<p>3，启动或者重启ntpd成功后过一段时间才会进行真正的校时服务，大约是320s吧，要记住效果不是立即出现的。</p>
<p>4，可以通过ntpq -p命令来检查当前ntpd服务状态，注意看输出的表格中st这一项值，必须小于16，16代表无法连接时间服务器，如果都为16，则对时不能完成，需要检查网络原因。</p>
<p>5，ntpd服务需要开放对udp端口123的访问。</p>
2009/09/18 -- 有关DSR的网络拓扑结构和实现方法 (1)2007/11/22 -- 升级至FreeBSD 7.0-BETA3 (2)2007/11/01 -- 区分几种知名散列算法的散列值的方法 (0)2007/10/30 -- ZFS under FreeBSD performace (0)2007/09/10 -- Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计 (2)2007/08/07 -- A comment abount SD, CFS [...]]]></description>
			<content:encoded><![CDATA[<p>如果说有什么是在服务器部署过程中最重要然而却最容易被忽视的地方，恐怕就只有系统时间了。这玩意看来简单，但实际上大多数系统服务都直接或间接依赖于它，一台时钟不准确的服务器给出的任何结果都有可能是不可信的。所以在近几年的操作系统发行版中，都不约而同的加入了网络校时的功能。然而对于大多数sysadmin来说，这方面还是最容易忽略的。因此这里提倡，无论是在多么无关紧要的系统部署项目中，服务器上线后的第一件事情，一定不要忘记设定一个稳定的事件源并保证持续可靠的校时。</p>
<p><span id="more-207"></span><br />
这里要注意的很关键的一点，就是校时并不是一个一次性工作，也就是说绝对不是系统安装好对照手表上的“北京时间”将系统时间设置好就算万事大吉了的。因为有很多内部或外部因素都会导致系统时间逐渐地出现误差，例如RTC晶片本身的误差，重负载系统导致的时钟滴答丢失等等等等都可能成为时间漂移的因素，因此不可能有一劳永逸绝对精准的时间，只能是持续不断地实施校时。<br />
网络上的标准时间服务器，是挂接了专用的硬件来保证本地时间的准确，并向外发布NTP服务的，因此我们所谓的网络校时只不过是通过NTP协议链接到这些时间服务器，并取回准确时间。目前常用的方法有两种，一种是类似ntpdate工具这样周期性得连接某时间服务器并修改本地时间，这是最简单有效的方法，所要做的不过是将一条ntpdate命令加入到cron中去，一般以小时为单位运行这个命令来实现时间同步。这对于普通状况应该是足够了。象Windows，Ubuntu的桌面版本都是用此类机制实现的，一般来说，以数小时间隔对时不会有任何问题。但是在某些比较极端情况下，例如某个不合格的RTC可能跑1个小时就有5s误差这种的残疾系统，以此类方式对时会导致突然的时间跃迁，在对时完成的瞬间会产生时间突然超前或滞后5s的情况。如果此时恰好在运行高度时间敏感的程序，则可能导致程序出现不可预料的后果。因此也就有了第二种对时方法：ntpd。</p>
<p>ntpd是一个守护进程，它通过对比本地时间与时间服务器的时间差，来进行渐次逼近地对时，也就是说一次修正很小的误差，通过多次修正慢慢逼近准确的时间，所以能避免前面方式的缺陷，因此，在服务器环境下，使用ntpd方式会更好一些，在下认为，即使是只有单独一台服务期的情况下，也尽量使用只为本机服务的ntpd来进行网络校时，而不要使用ntpdate方式。</p>
<p>废话说完，开始实干，以FreeBSD系统为例，具体配置如下：</p>
<p>FreeBSD本身已经带有了ntpd服务，所以直接写配置文件启用即可。</p>
<p>1，修改/etc/rc.conf，加入一行ntpd_enable=&#8221;YES&#8221;。</p>
<p>2修改/etc/ntp.conf，按照自己要求写入配置选项。如果无此文件新建即可，范例配置文件附下。</p>
<p>3运行/etc/rc.d/ntpd start启动服务。</p>
<p>范例配置文件在此，取自RedHat发行版，使用了ntp.org的时间服务期作为源，限制只为本机服务，可谓适应性非常广的配置了，用于其他系统的ntpd配置也完全可以：</p>
<blockquote><p>restrict default nomodify notrap noquery #default acl<br />
restrict 127.0.0.1</p>
<p>server 127.127.1.0 # local clock<br />
fudge 127.127.1.0 stratum 10</p>
<p># &#8212; OUR TIMESERVERS &#8212;&#8211;<br />
server 0.pool.ntp.org<br />
server 1.pool.ntp.org<br />
server 2.pool.ntp.org</p></blockquote>
<p>到此就算架设完工，不过还有以下几点需要注意：</p>
<p> 1，启动ntpd之前需要运行ntpdate pool.ntp.org先同步一下时间，避免因为系统时间与时间服务期时间相差太大导致渐次逼近无法实施而造成的ntpd运行失败。</p>
<p>2，如果此ntpd服务需要对网络内其他服务期开放校时服务，可以加一条acl实现，如下：</p>
<blockquote><p>restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap</p></blockquote>
<p>3，启动或者重启ntpd成功后过一段时间才会进行真正的校时服务，大约是320s吧，要记住效果不是立即出现的。</p>
<p>4，可以通过ntpq -p命令来检查当前ntpd服务状态，注意看输出的表格中st这一项值，必须小于16，16代表无法连接时间服务器，如果都为16，则对时不能完成，需要检查网络原因。</p>
<p>5，ntpd服务需要开放对udp端口123的访问。</p>
<ul class="related_post"><li>2009/09/18 -- <a href="http://opslife.com/dsr-implemention/" title="有关DSR的网络拓扑结构和实现方法">有关DSR的网络拓扑结构和实现方法</a> (1)</li><li>2007/11/22 -- <a href="http://opslife.com/upgrade-to-freebsd-7-beta-3/" title="升级至FreeBSD 7.0-BETA3">升级至FreeBSD 7.0-BETA3</a> (2)</li><li>2007/11/01 -- <a href="http://opslife.com/identify-diffrent-hashing-algorithm/" title="区分几种知名散列算法的散列值的方法">区分几种知名散列算法的散列值的方法</a> (0)</li><li>2007/10/30 -- <a href="http://opslife.com/zfs-under-freebsd-performace/" title="ZFS under FreeBSD performace">ZFS under FreeBSD performace</a> (0)</li><li>2007/09/10 -- <a href="http://opslife.com/use-mtree-for-freebsd-filesystem-integrity-auditing/" title="Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计">Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计</a> (2)</li><li>2007/08/07 -- <a href="http://opslife.com/jeffr-comment-about-sd-and-cfs/" title="A comment abount SD, CFS Schedulers,from ULE&#8217;s author">A comment abount SD, CFS Schedulers,from ULE&#8217;s author</a> (15)</li><li>2007/06/05 -- <a href="http://opslife.com/freebsd-powerd-howto/" title="FreeBSD操作系统利用powerd服务减轻系统功耗">FreeBSD操作系统利用powerd服务减轻系统功耗</a> (0)</li><li>2007/05/06 -- <a href="http://opslife.com/freebsd-jail-howto/" title="FreeBSD的Jail安装手记">FreeBSD的Jail安装手记</a> (0)</li><li>2007/04/15 -- <a href="http://opslife.com/%e8%b6%85%e4%bd%8e%e7%ba%a7%e5%a4%b1%e8%af%af-%e8%af%af%e5%88%a0%e9%99%a4etc/" title="超低级失误&#8211;误删除/etc">超低级失误&#8211;误删除/etc</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://opslife.com/freebsd%e6%9e%b6%e8%ae%bentpd%e6%9c%8d%e5%8a%a1%e6%89%8b%e8%ae%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD操作系统利用powerd服务减轻系统功耗</title>
		<link>http://opslife.com/freebsd-powerd-howto/</link>
		<comments>http://opslife.com/freebsd-powerd-howto/#comments</comments>
		<pubDate>Tue, 05 Jun 2007 05:08:57 +0000</pubDate>
		<dc:creator>dawnh</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[powerd]]></category>

		<guid isPermaLink="false">http://dawnh.net/freebsd/206/freebsd-powerd-howto/</guid>
		<description><![CDATA[<p>今天（6月5日）是世界环境日。
本来此类公益节日与吾等草民无甚关系，但是PCI论坛上的一群超频超到死的BT们竟然嚷嚷着要符合世界潮流，今天要禁止超频一天。本人其实并未BT到把24小时开机的机器超频来用（虽然偶尔也超起来make world），但是总也该响应一下潮流吧。想了半天，终于找到一个好主意，今天把机器降频运行一天来为缓解全球气候变暖贡献一份力量-_-
原理是利用powerd服务来实现cpu频率的自动降低和提升，具体作法如下：
修改/boot/loader.conf，加入一行cpufreq_load=&#8221;YES&#8221;，这个是载入cpufreq的kld，然后修改/etc/rc.conf，加入一行powerd_enable=”YES”。这样下次reboot时就会自动启用powerd。要立即生效的话直接运行/etc/rc.d/powerd start即可。
默认情况下，powerd使用adaptive方式来调节频率，简单来说就是判断cpu空闲率，大于90%则自动降频，低于某一数值则自动回升。具体配置参数可以看manpage powerd(8)。
输入powerd -v可以看到当前频率变化的细节，在我的机器上是这样的：
/home/dawnh>sudo powerd -v
powerd: using APM for AC line status
idle time > 90%, decreasing clock speed from 2149 MHz to 1880 MHz
idle time > 90%, decreasing clock speed from 1880 MHz to 1611 MHz
idle time > 90%, decreasing clock speed from 1611 MHz to 1343 MHz
idle time > 90%, decreasing clock speed [...]]]></description>
			<content:encoded><![CDATA[<p>今天（6月5日）是世界环境日。<br />
本来此类公益节日与吾等草民无甚关系，但是PCI论坛上的一群超频超到死的BT们竟然嚷嚷着要符合世界潮流，今天要禁止超频一天。本人其实并未BT到把24小时开机的机器超频来用（虽然偶尔也超起来make world），但是总也该响应一下潮流吧。想了半天，终于找到一个好主意，今天把机器降频运行一天来为缓解全球气候变暖贡献一份力量-_-<br />
原理是利用powerd服务来实现cpu频率的自动降低和提升，具体作法如下：<br />
修改/boot/loader.conf，加入一行cpufreq_load=&#8221;YES&#8221;，这个是载入cpufreq的kld，然后修改/etc/rc.conf，加入一行powerd_enable=”YES”。这样下次reboot时就会自动启用powerd。要立即生效的话直接运行/etc/rc.d/powerd start即可。<br />
默认情况下，powerd使用adaptive方式来调节频率，简单来说就是判断cpu空闲率，大于90%则自动降频，低于某一数值则自动回升。具体配置参数可以看manpage powerd(8)。<br />
输入powerd -v可以看到当前频率变化的细节，在我的机器上是这样的：<br />
/home/dawnh>sudo powerd -v<br />
powerd: using APM for AC line status<br />
idle time > 90%, decreasing clock speed from 2149 MHz to 1880 MHz<br />
idle time > 90%, decreasing clock speed from 1880 MHz to 1611 MHz<br />
idle time > 90%, decreasing clock speed from 1611 MHz to 1343 MHz<br />
idle time > 90%, decreasing clock speed from 1343 MHz to 1074 MHz<br />
idle time > 90%, decreasing clock speed from 1074 MHz to 805 MHz</p>
<p>可以看到我的P4 2.4G已经因为空闲自动降频为805Mhz了。</p>
<ul class="related_post"><li>2009/09/18 -- <a href="http://opslife.com/dsr-implemention/" title="有关DSR的网络拓扑结构和实现方法">有关DSR的网络拓扑结构和实现方法</a> (1)</li><li>2007/11/22 -- <a href="http://opslife.com/upgrade-to-freebsd-7-beta-3/" title="升级至FreeBSD 7.0-BETA3">升级至FreeBSD 7.0-BETA3</a> (2)</li><li>2007/11/01 -- <a href="http://opslife.com/identify-diffrent-hashing-algorithm/" title="区分几种知名散列算法的散列值的方法">区分几种知名散列算法的散列值的方法</a> (0)</li><li>2007/10/30 -- <a href="http://opslife.com/zfs-under-freebsd-performace/" title="ZFS under FreeBSD performace">ZFS under FreeBSD performace</a> (0)</li><li>2007/09/10 -- <a href="http://opslife.com/use-mtree-for-freebsd-filesystem-integrity-auditing/" title="Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计">Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计</a> (2)</li><li>2007/08/07 -- <a href="http://opslife.com/jeffr-comment-about-sd-and-cfs/" title="A comment abount SD, CFS Schedulers,from ULE&#8217;s author">A comment abount SD, CFS Schedulers,from ULE&#8217;s author</a> (15)</li><li>2007/06/06 -- <a href="http://opslife.com/freebsd%e6%9e%b6%e8%ae%bentpd%e6%9c%8d%e5%8a%a1%e6%89%8b%e8%ae%b0/" title="FreeBSD架设ntpd服务手记">FreeBSD架设ntpd服务手记</a> (0)</li><li>2007/05/06 -- <a href="http://opslife.com/freebsd-jail-howto/" title="FreeBSD的Jail安装手记">FreeBSD的Jail安装手记</a> (0)</li><li>2007/04/15 -- <a href="http://opslife.com/%e8%b6%85%e4%bd%8e%e7%ba%a7%e5%a4%b1%e8%af%af-%e8%af%af%e5%88%a0%e9%99%a4etc/" title="超低级失误&#8211;误删除/etc">超低级失误&#8211;误删除/etc</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://opslife.com/freebsd-powerd-howto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD的Jail安装手记</title>
		<link>http://opslife.com/freebsd-jail-howto/</link>
		<comments>http://opslife.com/freebsd-jail-howto/#comments</comments>
		<pubDate>Sun, 06 May 2007 17:46:48 +0000</pubDate>
		<dc:creator>dawnh</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[jail]]></category>

		<guid isPermaLink="false">http://dawnh.net/freebsd/183/freebsd-jail-howto/</guid>
		<description><![CDATA[<p>以前零零散散的玩过，没有一个系统的理解，正好趁放假研究了一下，主要资料来自handbook。</p>
<p>概念</p>
<p>Jail是chroot机制的一种进化后的机制，可以提高更为高级和灵活的隔离和监管机制，除了文件系统监管外，还实现了设备隔离，用户隔离，系统资源隔离，使其更像是一种虚拟机机制了，与此相似的概念有linux下的openvz，以及Solaris下的Container。在下认为此类的技术会与虚拟化技术逐渐融合并逐渐集成入操作系统本身甚至硬件，最终成为新的操作系统资源分配机制（继多用户，多进程，Virtual Memory架构之后新的隔离机制）。</p>
<p>设计

Jail可以说是一种轻量级的虚拟机制，就我目前所了解到的资料来看，它实现了文件系统隔离，进程隔离，用户隔离，设备隔离。比较起linux下的openvz，差的地方有网络地址分配，共享库控制这两大方面，当然细节会有很大不同了。</p>
<p>部署</p>
<p>写了一大堆废话，下面才是真正开始安装使用了。</p>
<p>构建一个Jail，必备的几个参数有Jail的根目录，用户态程序，主机名以及IP地址，还有一个可选的dev。根据用户态程序的不同考虑可以将Jail做成完整的系统型Jail以及服务型Jail。下面搞的一种，其实个人比较感兴趣的是服务型Jail，但是handbook没有提及，资料也较少。</p>
<p>时至当前6.2的版本，各项脚本以及工具可以说是十分成熟了，因此也就有一个比较统一的部署和管理方式了，基本可以按照handbook来做了，具体如下：</p>
<p>1，构建Jail的根目录，假设建立一个名为test的Jail，放在/jail/test下。很简单，就一句命令：</p>
<p>
#mkdir /jail/test</p>
<p>
2，构建用户态程序，因为是完整的系统型Jail，自然这些用户态程序也就是FreeBSD的world了，make world实现：</p>
<p># cd /usr/src
# make world DESTDIR=/jail/test</p>
<p>这里make world=make buildworld + make installworld，因此如果以前做过buildworld的话可以偷懒直接用以前build好的安装，可以节省大量时间，也就是</p>
<p>#make installworld DESTDIR=/jail/test</p>
<p>3，构建jail内系统运行需要的配置文件，也就是jail的etc了，也就一条：</p>
<p># make distribution DESTDIR=/jail/test</p>
<p>4，修改rc.conf添加jail服务运行的必要参数，必备的有：
jail_enable="YES" # 如果设为 NO 则表示不自动启动 jail
jail_list="test" # 以空格分隔的 jail 名字列表</p>
<p>
还需指定单个jail的必备参数：
jail_test_rootdir="/jail/test" # jail 的根目录
jail_test_hostname="jail.dawnh.net" # jail 的主机名
jail_test_ip="192.168.1.81" # jail 的 IP 地址</p>
<p>另外还有可选的devfs，可用于控制jail里面可以使用哪些设备</p>
<p>jail_test_devfs_enable="YES" # 在 jail 中挂接 devfs
jail_test_devfs_ruleset="test_ruleset" # 在 jail 中应用的devfs 规则集</p>
<p>
至此Jail基本就建立完成了，可以启动了。</p>
<p>这里注意还有一点是handbook没有提到但必须做的事情，就是设置IP，前面虽然为Jail指定了IP，但这个IP似乎是指定这个Jail可以从宿主系统接受数据报的IP，要其真正起作用，还必须在宿主系统配置上这个IP才可以，一般的做法是在宿主系统的接口上设置alias，命令如下：</p>
<p>#ifconfig re0 inet 192.168.1.81 netmask 255.255.255.0 alias</p>
<p>这样才算真正完成了，然后就是启动这个jail了。</p>
<p>#/etc/rc.d/jail [...]]]></description>
			<content:encoded><![CDATA[<p>以前零零散散的玩过，没有一个系统的理解，正好趁放假研究了一下，主要资料来自handbook。</p>
<p><strong>概念</strong></p>
<p>Jail是chroot机制的一种进化后的机制，可以提高更为高级和灵活的隔离和监管机制，除了文件系统监管外，还实现了设备隔离，用户隔离，系统资源隔离，使其更像是一种虚拟机机制了，与此相似的概念有linux下的openvz，以及Solaris下的Container。在下认为此类的技术会与虚拟化技术逐渐融合并逐渐集成入操作系统本身甚至硬件，最终成为新的操作系统资源分配机制（继多用户，多进程，Virtual Memory架构之后新的隔离机制）。</p>
<p><strong>设计</strong><br />
<span id="more-183"></span><br />
Jail可以说是一种轻量级的虚拟机制，就我目前所了解到的资料来看，它实现了文件系统隔离，进程隔离，用户隔离，设备隔离。比较起linux下的openvz，差的地方有网络地址分配，共享库控制这两大方面，当然细节会有很大不同了。</p>
<p><strong>部署</strong></p>
<p>写了一大堆废话，下面才是真正开始安装使用了。</p>
<p>构建一个Jail，必备的几个参数有Jail的根目录，用户态程序，主机名以及IP地址，还有一个可选的dev。根据用户态程序的不同考虑可以将Jail做成完整的系统型Jail以及服务型Jail。下面搞的一种，其实个人比较感兴趣的是服务型Jail，但是handbook没有提及，资料也较少。</p>
<p>时至当前6.2的版本，各项脚本以及工具可以说是十分成熟了，因此也就有一个比较统一的部署和管理方式了，基本可以按照handbook来做了，具体如下：</p>
<p>1，构建Jail的根目录，假设建立一个名为test的Jail，放在/jail/test下。很简单，就一句命令：</p>
<blockquote><p>
<code>#mkdir /jail/test</code></p></blockquote>
<p><code></code><br />
2，构建用户态程序，因为是完整的系统型Jail，自然这些用户态程序也就是FreeBSD的world了，make world实现：</p>
<blockquote><p><code># cd /usr/src<br />
# make world DESTDIR=/jail/test</code></p></blockquote>
<p><code></code>这里make world=make buildworld + make installworld，因此如果以前做过buildworld的话可以偷懒直接用以前build好的安装，可以节省大量时间，也就是</p>
<blockquote><p><code>#make installworld DESTDIR=/jail/test</code></p></blockquote>
<p>3，构建jail内系统运行需要的配置文件，也就是jail的etc了，也就一条：</p>
<blockquote><p><code># make distribution DESTDIR=/jail/test</code></p></blockquote>
<p>4，修改rc.conf添加jail服务运行的必要参数，必备的有：<br />
<code>jail_enable="YES" # 如果设为 NO 则表示不自动启动 jail<br />
jail_list="test" # 以空格分隔的 jail 名字列表</code></p>
<p><code></code><br />
还需指定单个jail的必备参数：<br />
<code>jail_test_rootdir="/jail/test" # jail 的根目录<br />
jail_test_hostname="jail.dawnh.net" # jail 的主机名<br />
jail_test_ip="192.168.1.81" # jail 的 IP 地址</code></p>
<p>另外还有可选的devfs，可用于控制jail里面可以使用哪些设备</p>
<p><code>jail_test_devfs_enable="YES" # 在 jail 中挂接 devfs<br />
jail_test_devfs_ruleset="test_ruleset" # 在 jail 中应用的devfs 规则集</code></p>
<p><code></code><br />
至此Jail基本就建立完成了，可以启动了。</p>
<p>这里注意还有一点是handbook没有提到但必须做的事情，就是设置IP，前面虽然为Jail指定了IP，但这个IP似乎是指定这个Jail可以从宿主系统接受数据报的IP，要其真正起作用，还必须在宿主系统配置上这个IP才可以，一般的做法是在宿主系统的接口上设置alias，命令如下：</p>
<blockquote><p><code>#ifconfig re0 inet 192.168.1.81 netmask 255.255.255.0 alias</code></p></blockquote>
<p>这样才算真正完成了，然后就是启动这个jail了。</p>
<blockquote><p><code>#/etc/rc.d/jail start</code></p></blockquote>
<p>如果前面做的都没问题的话可以看到Jail服务正常启动。</p>
<p><strong>使用</strong></p>
<p>然后的问题就是怎么进到这个Jail里面去使用了。因为刚构建好的Jail类似刚安装好的FreeBSD，是一个任何服务都没启用，连root密码都为空的系统，此时只能从控制台登陆进去配置各项服务，然而这里关键的问题就是&#8211;Jail是没有控制台的！</p>
<p>当然不会有人傻到对这种问题束手无策，最容易想到的是直接通过宿主系统进到/jail/test/etc里去修改各种配置文件，貌似这也是大部分网上有的资料所写的办法。然而由于我玩openvz的习惯，总以为会有那么一个jailctl enter test的命令可以直接从宿主进入到jail中去，不幸的是&#8211;没有。</p>
<p>然而我却找到了jexec这样一个命令可以执行jail里的命令，于是就简单多了，按照安装FreeBSD系统的经验，装好后第一步就是设置root密码并开启ssh，这样才方便下面登陆进去管理嘛，于是这样做：</p>
<p><code>#jls</code></p>
<p>此命令列出当前运行的jail，这里的关键是取得这个jail的jid，因为下面要用到。我这里假设id为1</p>
<p><code>#jexec 1 passwd root</code></p>
<p>要求输入密码了，和平时该密码一样的效果。</p>
<p><code>#jexec /etc/rc.d/sshd forcestart</code></p>
<p>启动ssh</p>
<p>至此这个Jail就可以ssh上去管理了。</p>
<ul class="related_post"><li>2009/09/18 -- <a href="http://opslife.com/dsr-implemention/" title="有关DSR的网络拓扑结构和实现方法">有关DSR的网络拓扑结构和实现方法</a> (1)</li><li>2007/11/22 -- <a href="http://opslife.com/upgrade-to-freebsd-7-beta-3/" title="升级至FreeBSD 7.0-BETA3">升级至FreeBSD 7.0-BETA3</a> (2)</li><li>2007/11/01 -- <a href="http://opslife.com/identify-diffrent-hashing-algorithm/" title="区分几种知名散列算法的散列值的方法">区分几种知名散列算法的散列值的方法</a> (0)</li><li>2007/10/30 -- <a href="http://opslife.com/zfs-under-freebsd-performace/" title="ZFS under FreeBSD performace">ZFS under FreeBSD performace</a> (0)</li><li>2007/09/10 -- <a href="http://opslife.com/use-mtree-for-freebsd-filesystem-integrity-auditing/" title="Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计">Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计</a> (2)</li><li>2007/08/07 -- <a href="http://opslife.com/jeffr-comment-about-sd-and-cfs/" title="A comment abount SD, CFS Schedulers,from ULE&#8217;s author">A comment abount SD, CFS Schedulers,from ULE&#8217;s author</a> (15)</li><li>2007/06/06 -- <a href="http://opslife.com/freebsd%e6%9e%b6%e8%ae%bentpd%e6%9c%8d%e5%8a%a1%e6%89%8b%e8%ae%b0/" title="FreeBSD架设ntpd服务手记">FreeBSD架设ntpd服务手记</a> (0)</li><li>2007/06/05 -- <a href="http://opslife.com/freebsd-powerd-howto/" title="FreeBSD操作系统利用powerd服务减轻系统功耗">FreeBSD操作系统利用powerd服务减轻系统功耗</a> (0)</li><li>2007/04/15 -- <a href="http://opslife.com/%e8%b6%85%e4%bd%8e%e7%ba%a7%e5%a4%b1%e8%af%af-%e8%af%af%e5%88%a0%e9%99%a4etc/" title="超低级失误&#8211;误删除/etc">超低级失误&#8211;误删除/etc</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://opslife.com/freebsd-jail-howto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>超低级失误&#8211;误删除/etc</title>
		<link>http://opslife.com/%e8%b6%85%e4%bd%8e%e7%ba%a7%e5%a4%b1%e8%af%af-%e8%af%af%e5%88%a0%e9%99%a4etc/</link>
		<comments>http://opslife.com/%e8%b6%85%e4%bd%8e%e7%ba%a7%e5%a4%b1%e8%af%af-%e8%af%af%e5%88%a0%e9%99%a4etc/#comments</comments>
		<pubDate>Sun, 15 Apr 2007 11:28:53 +0000</pubDate>
		<dc:creator>dawnh</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[etc]]></category>

		<guid isPermaLink="false">http://dawnh.net/freebsd/172/%e8%b6%85%e4%bd%8e%e7%ba%a7%e5%a4%b1%e8%af%af-%e8%af%af%e5%88%a0%e9%99%a4etc/</guid>
		<description><![CDATA[<p>今天状态十分差，什么都没做好，还净干傻事。</p>
<p>刚才在调试自己的FreebBSD box来玩ZFS的时候，因为7-Current的一个配置文件路径的变更，/etc/zfs被挪到了/boot/zfs下。我本意是要删除/etc/zfs的，结果不知怎么在敲到rm -rf /etc的时候就按下了回车，当回过神来的时候，就对着那个“#”欲哭无泪&#8230;..</p>
<p>还好只是自己玩的系统，不然损失就大了，即使是这样，也要想办法尽可能的挽回。简单想了一下，目前对于这个box上etc下面我并没有作太大的修改，几乎自己改过的配置应该都还记得是哪些文件，所以问题的焦点就在于：怎么把原始的/etc文件弄回来。</p>
<p>其实这本也应该不是什么困难的事情，只需要从安装CD中恢复一份原始copy即可，可我这个box是没光驱的！即使是ISO，我也没有7-Current的！而在现在/etc整个消失的情况下，可以说是几乎所有的网络工具都瘫痪-_-</p>
<p>再仔细想了一下，刚好前两天刚做过make world，而/usr/src下面的东西还没删除，就从这里入手了！第一个想到的就是mergemaster，运行失败，提示找不到root用户-_-&#8230;..ah&#8230;&#8230;出歪招了，touch /etc/passwd /etc/master.passwd /etc/group，然后mergemaster -p，提示cvs id更新，一阵窃喜，一路i下去，这样最重要的用户和组结构就恢复了，立刻passwd root改密码，接下来就是mergemaster -U，满屏的create，i按到手软，终于创建完了，哈哈。</p>
<p>剩下的就是清理工作了，该改配置的改配置。</p>
2009/09/18 -- 有关DSR的网络拓扑结构和实现方法 (1)2007/11/22 -- 升级至FreeBSD 7.0-BETA3 (2)2007/11/01 -- 区分几种知名散列算法的散列值的方法 (0)2007/10/30 -- ZFS under FreeBSD performace (0)2007/09/10 -- Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计 (2)2007/08/07 -- A comment abount SD, CFS Schedulers,from ULE&#8217;s author (15)2007/06/06 -- FreeBSD架设ntpd服务手记 (0)2007/06/05 -- FreeBSD操作系统利用powerd服务减轻系统功耗 (0)2007/05/06 -- FreeBSD的Jail安装手记 (0)]]></description>
			<content:encoded><![CDATA[<p>今天状态十分差，什么都没做好，还净干傻事。</p>
<p>刚才在调试自己的FreebBSD box来玩ZFS的时候，因为7-Current的一个配置文件路径的变更，/etc/zfs被挪到了/boot/zfs下。我本意是要删除/etc/zfs的，结果不知怎么在敲到rm -rf /etc的时候就按下了回车，当回过神来的时候，就对着那个“#”欲哭无泪&#8230;..</p>
<p>还好只是自己玩的系统，不然损失就大了，即使是这样，也要想办法尽可能的挽回。简单想了一下，目前对于这个box上etc下面我并没有作太大的修改，几乎自己改过的配置应该都还记得是哪些文件，所以问题的焦点就在于：怎么把原始的/etc文件弄回来。</p>
<p>其实这本也应该不是什么困难的事情，只需要从安装CD中恢复一份原始copy即可，可我这个box是没光驱的！即使是ISO，我也没有7-Current的！而在现在/etc整个消失的情况下，可以说是几乎所有的网络工具都瘫痪-_-</p>
<p>再仔细想了一下，刚好前两天刚做过make world，而/usr/src下面的东西还没删除，就从这里入手了！第一个想到的就是mergemaster，运行失败，提示找不到root用户-_-&#8230;..ah&#8230;&#8230;出歪招了，touch /etc/passwd /etc/master.passwd /etc/group，然后mergemaster -p，提示cvs id更新，一阵窃喜，一路i下去，这样最重要的用户和组结构就恢复了，立刻passwd root改密码，接下来就是mergemaster -U，满屏的create，i按到手软，终于创建完了，哈哈。</p>
<p>剩下的就是清理工作了，该改配置的改配置。</p>
<ul class="related_post"><li>2009/09/18 -- <a href="http://opslife.com/dsr-implemention/" title="有关DSR的网络拓扑结构和实现方法">有关DSR的网络拓扑结构和实现方法</a> (1)</li><li>2007/11/22 -- <a href="http://opslife.com/upgrade-to-freebsd-7-beta-3/" title="升级至FreeBSD 7.0-BETA3">升级至FreeBSD 7.0-BETA3</a> (2)</li><li>2007/11/01 -- <a href="http://opslife.com/identify-diffrent-hashing-algorithm/" title="区分几种知名散列算法的散列值的方法">区分几种知名散列算法的散列值的方法</a> (0)</li><li>2007/10/30 -- <a href="http://opslife.com/zfs-under-freebsd-performace/" title="ZFS under FreeBSD performace">ZFS under FreeBSD performace</a> (0)</li><li>2007/09/10 -- <a href="http://opslife.com/use-mtree-for-freebsd-filesystem-integrity-auditing/" title="Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计">Sysadmin手记:如何利用mtree做FreeBSD操作系统文件完整性审计</a> (2)</li><li>2007/08/07 -- <a href="http://opslife.com/jeffr-comment-about-sd-and-cfs/" title="A comment abount SD, CFS Schedulers,from ULE&#8217;s author">A comment abount SD, CFS Schedulers,from ULE&#8217;s author</a> (15)</li><li>2007/06/06 -- <a href="http://opslife.com/freebsd%e6%9e%b6%e8%ae%bentpd%e6%9c%8d%e5%8a%a1%e6%89%8b%e8%ae%b0/" title="FreeBSD架设ntpd服务手记">FreeBSD架设ntpd服务手记</a> (0)</li><li>2007/06/05 -- <a href="http://opslife.com/freebsd-powerd-howto/" title="FreeBSD操作系统利用powerd服务减轻系统功耗">FreeBSD操作系统利用powerd服务减轻系统功耗</a> (0)</li><li>2007/05/06 -- <a href="http://opslife.com/freebsd-jail-howto/" title="FreeBSD的Jail安装手记">FreeBSD的Jail安装手记</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://opslife.com/%e8%b6%85%e4%bd%8e%e7%ba%a7%e5%a4%b1%e8%af%af-%e8%af%af%e5%88%a0%e9%99%a4etc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
