<?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; Unix</title>
	<atom:link href="http://www.litrin.net/category/unix/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.litrin.net</link>
	<description>It is Cool to OpenSource</description>
	<lastBuildDate>Fri, 23 Jul 2010 02:29:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=8500</generator>
		<item>
		<title>重新封包的python smtplib</title>
		<link>http://www.litrin.net/2010/06/30/%e9%87%8d%e6%96%b0%e5%b0%81%e5%8c%85%e7%9a%84python-smtplib/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e9%2587%258d%25e6%2596%25b0%25e5%25b0%2581%25e5%258c%2585%25e7%259a%2584python-smtplib</link>
		<comments>http://www.litrin.net/2010/06/30/%e9%87%8d%e6%96%b0%e5%b0%81%e5%8c%85%e7%9a%84python-smtplib/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 02:25:01 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=1269</guid>
		<description><![CDATA[<!-- Easy AdSense V6.64 -->
<!-- Post[count: 3] -->
<div class="ezAdsense adsense adsense-leadin" style="float:right;margin:12px;" ><script type="text/javascript"><!--
google_ad_client = "pub-9603680922905816";
/* 250x250, 创建于 10-4-29 */
google_ad_slot = "3814271827";
google_ad_width = 250;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>这些天做了一个小的系统：将Oracle中的数据导出然后通过邮件直接发送给用户。 oracle部分主要通过sqlplus的报表格式导出成csv。邮件部分主要通过python读取csv然后再转译成html格式发送。 原理上很简单，到头来python的smtplib调试了半天才ok，为了方便，重新封了一下包，基本上的用途都在里面了。分享给各位！ 提醒各位：不要用它来收发垃圾邮件！ ## ##****************************************************************************** ##   NAME:       SendMail ##   PURPOSE:    ## ##   REVISIONS: ##   Ver        Date        Author           Description ##   ---------  ----------  ---------------  ------------------------------------ ##   1.0        2010/06/28  Litrin J.        1. Created this Script. ## ##   NOTES: ## ##      Object Name:     SendMail.py ##      Sysdate:         2010/06/28 ##      ##      Username:         Litrin Jiang ##      Website:          litrin.net ## ##****************************************************************************** ## [...]]]></description>
			<content:encoded><![CDATA[<p>这些天做了一个小的系统：将Oracle中的数据导出然后通过邮件直接发送给用户。<br />
oracle部分主要通过sqlplus的报表格式导出成csv。邮件部分主要通过python读取csv然后再转译成html格式发送。</p>
<p>原理上很简单，到头来python的smtplib调试了半天才ok，为了方便，重新封了一下包，基本上的用途都在里面了。分享给各位！<br />
<span style="color: #ff0000;">提醒各位：不要用它来收发垃圾邮件！</span></p>
<p><span id="more-1269"></span></p>
<pre name=code class=python>
##
##******************************************************************************
##   NAME:       SendMail
##   PURPOSE:   
##
##   REVISIONS:
##   Ver        Date        Author           Description
##   ---------  ----------  ---------------  ------------------------------------
##   1.0        2010/06/28  Litrin J.        1. Created this Script.
##
##   NOTES:
##
##      Object Name:     SendMail.py
##      Sysdate:         2010/06/28
##     
##      Username:         Litrin Jiang
##      Website:          litrin.net
##
##******************************************************************************
##
import sys
import smtplib
import email
import re
class SendMail:
   
    MailServer = {}
    MailServer['UserName'] = ''            
    MailServer['Password'] = ''                 #SMTP密码
    MailServer['Host'] = ''
    MailServer['SSL'] = False
    MailServer['Port'] = 0
    Subtype = 'html'
    Charset = 'gb2312'
    SenderName = ''
    ReciverName = ''   
    Notification = False
    __aRealAddressList = []
   
    def __init__ (self, From = '', Address='', Subject='', Body='', CCAddress = '', BCCAddress = ''):
        if ((From + Address + Subject + Body) != ''):
            self.Send(self, From, Address, Subject, Body, CCAddress = '')
       
    def Send(self, From, Address, Subject, Body, CCAddress = '', BCCAddress = ''):
        self.Email = email.MIMEText.MIMEText (Body,_subtype=self.Subtype, _charset=self.Charset)
        self.Email['From'] = self.AddressList(From, self.SenderName, False)
                   
        self.Email['To'] = self.AddressList(Address)
        if CCAddress != '':
            self.Email['Cc'] = self.AddressList(CCAddress)
        if BCCAddress != '':
            self.AddressList(BCCAddress)
           
        self.Email['Subject'] = self.StrEncode(Subject)
       
        self.Email['X-Maile'] = 'Python Script by Litrin.net'
        self.Email['X-Python-Version'] = str(sys.platform) + str(sys.version_info)
       
        if (self.Notification) :
            self.Email['Disposition-Notification-To'] = From
 
        self.__ServerSending()
    def StrEncode(self, String, Charset = ''):
        if Charset == '':
            Charset = self.Charset
           
        return str(email.Header.Header (String, Charset))
    def AddressList(self, oAddress, ReciverName = '', SendingList = True):
        if isinstance(oAddress, dict):
            To = ''
            for dAddress in oAddress :
                To += self.AddressList(oAddress[dAddress],dAddress )  + ','
            return To
       
        elif isinstance(oAddress, list):
            To = ''
            for sAddress in oAddress :
                To += self.AddressList (sAddress, '') + ','
            return To
       
        else:
           
            try :
                self.CheckEmail(oAddress)
            except:
                print oAddress + 'is not a Email address!'
                exit()
               
            if ReciverName == '':
                ReciverName = self.ReciverName     
           
            if ReciverName != '':
                To = self.StrEncode(ReciverName) + '&lt;' + oAddress + '&gt;'
            else:
                To = oAddress
               
            if SendingList :
                self.__aRealAddressList.append(oAddress)               
            return To
   
    def CheckEmail(self, sEmailAddress):
        sRegex = r'^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$'
        return re.match(sRegex, sEmailAddress)
   
    def __ServerSending(self):
        if (self.MailServer['SSL'] == False):
          
            server = smtplib.SMTP(self.MailServer['Host'],port = self.MailServer['Port'])
        else:
            server = smtplib.SMTP_SSL(self.MailServer['Host'], port = self.MailServer['Port'])
          
        server.login(self.MailServer['UserName'], self.MailServer['Password'])
       
        for sAddress in self.__aRealAddressList:           
           
            server.sendmail(self.Email['From'], sAddress, self.Email.as_string())
           
        server.quit()
if __name__ == '__main__':
    mail = SendMail()
    mail.MailServer['UserName'] = ''            
    mail.MailServer['Password'] = ''                 #SMTP密码
    mail.MailServer['Host'] = ''
    #mail.MailServer['SSL'] = True
    mail.SenderName = 'Litrin J.'
   
    mail.Send(From = <a rel="nofollow" target="_blank" href="mailto:'abc@123.com'">'abc@123.com'</a>,
              Address = <a rel="nofollow" target="_blank" href="mailto:'abc@71inc.com'">'abc@71inc.com'</a>,
              Subject = 'Subject:test',
              Body = '&lt;b&gt;This is a test mail!&lt;/b&gt;')
 </pre>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/06/30/%e9%87%8d%e6%96%b0%e5%b0%81%e5%8c%85%e7%9a%84python-smtplib/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>python multiprocessing的问题</title>
		<link>http://www.litrin.net/2010/06/23/python-multiprocessing%e7%9a%84%e9%97%ae%e9%a2%98/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=python-multiprocessing%25e7%259a%2584%25e9%2597%25ae%25e9%25a2%2598</link>
		<comments>http://www.litrin.net/2010/06/23/python-multiprocessing%e7%9a%84%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 09:30:55 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=1260</guid>
		<description><![CDATA[multiprocessing的是Python2.6中新加入的模块，旨在用类似threading调用tread(线程)的方式使用process(进程)。 服务器中经常需要对大规模的数据进行压缩，传统使用单进程操作不足以体现8核CPU并发的威力。于是写了一个脚本用于多进程压缩。然而在windows的主机上进行调试，全都是死循环，以至于机器都无法进行响应。导入Linux主机，测试却通过。对脚本进行了精简如下： 出错的代码： from multiprocessing import Process #from threading import Thread def work(a): print "This is : " + str(a) + '\n' exit x = 2 while(x&#62;1): p = Process(target=work, args=(x,)) p.start() x -= 1 类似的调用方法，换成threading库是正确的 #from multiprocessing import Process from threading import Thread def work(a): print "This is : " + str(a) + '\n' [...]]]></description>
			<content:encoded><![CDATA[<p>multiprocessing的是Python2.6中新加入的模块，旨在用类似threading调用tread(线程)的方式使用process(进程)。</p>
<p>服务器中经常需要对大规模的数据进行压缩，传统使用单进程操作不足以体现8核CPU并发的威力。于是写了一个脚本用于多进程压缩。然而在windows的主机上进行调试，全都是死循环，以至于机器都无法进行响应。导入Linux主机，测试却通过。对脚本进行了精简如下：</p>
<p><span id="more-1260"></span><br />
出错的代码：</p>
<pre name=code class="python">
from multiprocessing  import Process
#from threading  import Thread
def work(a):
    print "This is : " + str(a) + '\n'
    exit
x = 2
while(x&gt;1):
    p = Process(target=work, args=(x,))
    p.start()
    x -= 1</pre>
<p>类似的调用方法，换成threading库是正确的</p>
<pre name=code class="python">
#from multiprocessing  import Process
from threading  import Thread
def work(a):
    print "This is : " + str(a) + '\n'
    exit
x = 2
while(x&gt;1):
    thread = Thread(target=work, args=(x,))
    thread.start()
    x -= 1</pre>
<p>翻阅了<a rel="nofollow" target="_blank" href="http://docs.python.org/library/multiprocessing.html#windows">官方文档</a>，找到了问题所在：</p>
<p>*Nix平台对于multiprocessing 的实现是基于C库中的fork()，所有子进程与父进程的数据是完全相同，可以说是父进程的完全克隆。<br />
而对于windows，由于windows对于进程的实现方式不同，没有fork()函数，multiprocessing 的调用只能是对于该脚本的重新调用，难怪会出现死循环的问题。</p>
<p>改良后的代码：</p>
<pre name=code class="python">
from multiprocessing  import Process
#from threading  import Thread
def work(a):
    print "This is : " + str(a) + '\n'
    exit
if __name__ == '__main__' :
    x = 2
    while (x&gt;1):
        p= Process(target=work, args=(x,))
        p.start()
        x -= 1</pre>
<p>对于multiprocessing 和 Threading的区别：</p>
<p>Threading的操作只能和父进程在同一个物理CPU上执行。但由于不需要底层的调用，大多数简单的操作效率很高。<br />
multiprocessing的操作可以在多个CPU上执行，但耗费的内存资源也远高于thread方式，适合于集中运算或大并发的状态。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/06/23/python-multiprocessing%e7%9a%84%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>再谈谈 Oracle+Sun=?</title>
		<link>http://www.litrin.net/2010/03/31/%e5%86%8d%e8%b0%88%e8%b0%88-oraclesun/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e5%2586%258d%25e8%25b0%2588%25e8%25b0%2588-oraclesun</link>
		<comments>http://www.litrin.net/2010/03/31/%e5%86%8d%e8%b0%88%e8%b0%88-oraclesun/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 08:06:56 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[开源7788]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[业界话题]]></category>
		<category><![CDATA[服务器]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=1208</guid>
		<description><![CDATA[上次写过几篇东西，关于Oracle收购Sun的。Oracle+Sun=? , Sun的身前身后事。 如今尘埃落定，www.sun.com 也已经被重定向到了www.oracle.com 。至少局外人看来，两家公司已经合并，而且至少不是失败的。 也就是在今天，得知oracle放出消息：今后Solaris不再免费提供，下载版本只提供90天的试用。如果使用，请买授权！ 从个人角度上来说，我当然希望是提前一天庆祝了明天的节日。但事实上这并非是空穴来风。 Sun是一家技术公司，需要推广自己的产品。免费派送操作系统提升Sun硬件产品、Java，这种方式是明智的选择。但相对比较商业化一点的Oracle则认为Solaris只是一个众多产品线上其中的一环，并没有Sun之前认为的那种“中心化”地位——他们的中心是Oracle数据库。而且Oracle已经在用类似的方式进行了推广。或者至少说明Oracle认为没有必要同时免费派发这么多软件。 接下去，可能Solaris会被逐步边缘化，代码逐步合并到了Oracle Linux中——由于Linux遵循GPL，这样有可能出现Solaris和Linux的大混血。原本仅属于Sun Solaris的种种优势将会完全移植到Linux，这会Linux社区的幸运。或者出现完全相反的状况，Oracle Linux被边缘化，Solaris取代了它的地位。这样反而成为Linux的不幸，这是又一家大的商业公司的倒戈。 不管出现什么状况，最不幸的永远是opensolaris项目。要么会尾随Solaris退去光环，要么完全沦为小白鼠，一蹶不振，就如同Redhat之fedora。 那Mysql呢？后果已经“不容乐观”了，提起来伤心，不提也罢。]]></description>
			<content:encoded><![CDATA[<p>上次写过几篇东西，关于Oracle收购Sun的。<a href="http://www.litrin.net/2009/04/21/oraclesun/">Oracle+Sun=?</a> , <a href="http://www.litrin.net/2009/03/29/sun%e7%9a%84%e8%ba%ab%e5%89%8d%e8%ba%ab%e5%90%8e%e4%ba%8b/">Sun的身前身后事</a>。</p>
<p>如今尘埃落定，<a rel="nofollow" target="_blank" href="http://www.sun.com/">www.sun.com</a> 也已经被重定向到了<a rel="nofollow" target="_blank" href="http://www.oracle.com">www.oracle.com</a> 。至少局外人看来，两家公司已经合并，而且至少不是失败的。</p>
<p>也就是在今天，得知oracle放出消息：今后Solaris不再免费提供，下载版本只提供90天的试用。如果使用，请买授权！</p>
<p>从个人角度上来说，我当然希望是提前一天庆祝了明天的节日。但事实上这并非是空穴来风。</p>
<p><span id="more-1208"></span></p>
<p>Sun是一家技术公司，需要推广自己的产品。免费派送操作系统提升Sun硬件产品、Java，这种方式是明智的选择。但相对比较商业化一点的Oracle则认为Solaris只是一个众多产品线上其中的一环，并没有Sun之前认为的那种“中心化”地位——他们的中心是Oracle数据库。而且Oracle已经在用类似的方式进行了推广。或者至少说明Oracle认为没有必要同时免费派发这么多软件。</p>
<p style="text-align: center;"><a href="http://www.litrin.net/wp-content/uploads/2010/03/oracle_solaris_download_page.gif"><img class="size-medium wp-image-1209  aligncenter" title="oracle_solaris_download_page" src="http://www.litrin.net/wp-content/uploads/2010/03/oracle_solaris_download_page-300x286.gif" alt="" width="300" height="286" /></a></p>
<p>接下去，可能Solaris会被逐步边缘化，代码逐步合并到了Oracle Linux中——由于Linux遵循GPL，这样有可能出现Solaris和Linux的大混血。原本仅属于Sun Solaris的种种优势将会完全移植到Linux，这会Linux社区的幸运。或者出现完全相反的状况，Oracle Linux被边缘化，Solaris取代了它的地位。这样反而成为Linux的不幸，这是又一家大的商业公司的倒戈。</p>
<p>不管出现什么状况，最不幸的永远是opensolaris项目。要么会尾随Solaris退去光环，要么完全沦为小白鼠，一蹶不振，就如同Redhat之fedora。</p>
<p>那Mysql呢？后果已经“不容乐观”了，提起来伤心，不提也罢。</p>
<p><a href="http://www.litrin.net/wp-content/uploads/2010/03/oracle_solaris_download_page.gif"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/03/31/%e5%86%8d%e8%b0%88%e8%b0%88-oraclesun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solaris连锁故障</title>
		<link>http://www.litrin.net/2010/02/22/solaris%e8%bf%9e%e9%94%81%e6%95%85%e9%9a%9c/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=solaris%25e8%25bf%259e%25e9%2594%2581%25e6%2595%2585%25e9%259a%259c</link>
		<comments>http://www.litrin.net/2010/02/22/solaris%e8%bf%9e%e9%94%81%e6%95%85%e9%9a%9c/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 06:19:29 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[服务器]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=1172</guid>
		<description><![CDATA[公司有一台服务器，属于经常被冷落的那种。SunV245 + solaris 10 + Oracle 10G 。自从装好机之后uptime至少有2年了。 且说这天需要重启，重启后无法通过ssh连接，通过串口终端连上之后发觉由于之前习惯于ssh key登录，一直没有root密码。郁闷中。 这台机器，一没有显卡，二没有光驱。实在让人头疼。七手八脚的把自己本本的光驱拆下来装在机器上，又发觉是自动硬盘启动的那种，无法光驱启动。 获得OK提示符 获得OK，相对比较容易，只是一般的键盘不是sun专用，没有那一堆控制键。 进入串口终端，启动机器并载入操作系统之后，在终端输入 #. 进入SC，运气不错，SC没有密码。输入break，再console回来就获得了Ok提示符。 获取root密码 进入OK后，放入solaris for sparc的盘，输入boot cdrom -s 进入修复系统。中间有一段比较漫长的等待。 进入系统后将硬盘 /dev/dsk/c1t0d0s0 挂装好之后找到硬盘上的etc/shadow。 将第一行的root:xxxxxxxxxxxx:14302:::::: 修改为root::14302:::::: 重新启动后用空密码就可以直接登系统。 SVCS问题 进入系统后，发现一大堆SVC服务无法启动，所有的问题都来自于一个关键应用 system-filesystem-local:default 无法正常启动。 tail /var/svc/log/system-filesystem-local:default.log 发觉有如下报错：WARNING: /sbin/mountall -l failed: exit status 1 不解，但既然是mount的问题，肯定和/etc/vfstab有关。打开这个文件，顿时就傻了——最后一行： /dev/dsk/c1t0d0s0       /dev/rdsk/c1t0d0s0      /       ufs     1       no &#8230;&#8230;. /dev/dsk/c1t3d0s0  /dev/rdsk/c1t3d0s0  /backup  ufs  0  yes  [...]]]></description>
			<content:encoded><![CDATA[<p>公司有一台服务器，属于经常被冷落的那种。SunV245 + solaris 10 + Oracle 10G 。自从装好机之后uptime至少有2年了。</p>
<p>且说这天需要重启，重启后无法通过ssh连接，通过串口终端连上之后发觉由于之前习惯于ssh key登录，一直没有root密码。郁闷中。</p>
<p><span id="more-1172"></span></p>
<p>这台机器，一没有显卡，二没有光驱。实在让人头疼。七手八脚的把自己本本的光驱拆下来装在机器上，又发觉是自动硬盘启动的那种，无法光驱启动。</p>
<p><strong>获得OK提示符</strong></p>
<p>获得OK，相对比较容易，只是一般的键盘不是sun专用，没有那一堆控制键。<br />
进入串口终端，启动机器并载入操作系统之后，在终端输入 #. 进入SC，运气不错，SC没有密码。输入break，再console回来就获得了Ok提示符。</p>
<p><strong>获取root密码</strong></p>
<p>进入OK后，放入solaris for sparc的盘，输入boot cdrom -s 进入修复系统。中间有一段比较漫长的等待。<br />
进入系统后将硬盘 /dev/dsk/c1t0d0s0 挂装好之后找到硬盘上的etc/shadow。<br />
将第一行的root:xxxxxxxxxxxx:14302:::::: 修改为root::14302::::::<br />
重新启动后用空密码就可以直接登系统。</p>
<p><strong>SVCS问题</strong></p>
<p>进入系统后，发现一大堆SVC服务无法启动，所有的问题都来自于一个关键应用 system-filesystem-local:default 无法正常启动。<br />
tail /var/svc/log/system-filesystem-local:default.log 发觉有如下报错：<span style="color: #ff0000;">WARNING: /sbin/mountall -l failed: exit status 1</span></p>
<p><span style="color: #000000;">不解，但既然是mount的问题，肯定和/etc/vfstab有关。打开这个文件，顿时就傻了——最后一行：<br />
</span><span style="color: #000000;">/dev/dsk/c1t0d0s0       /dev/rdsk/c1t0d0s0      /       ufs     <span style="text-decoration: underline;">1 </span>      no<br />
&#8230;&#8230;.</span><span style="color: #000000;"><br />
/dev/dsk/c1t3d0s0  /dev/rdsk/c1t3d0s0  /backup  ufs <span style="text-decoration: underline;"> 0</span>  yes  rw<br />
系统将/backup的挂装顺序设置为了0，/为1。这意味着系统默认会先挂/backup，后挂/。摆明了肯定会错。注释掉/backup这一行，问题解决！</span></p>
<p><span style="color: #000000;"><strong>分析</strong></span></p>
<p><span style="color: #000000;">问题出的无厘头。<br />
原来之前曾经对这个机器添加过硬盘，当时通过webmin直接修改的vfstab，webmin的一个bug导致了vfstab的错误。只是之前从未重启，也没暴露出来。<br />
没有root密码也是因为一直没有暴露出这个交接不清的问题。</span></p>
<p><span style="color: #000000;"><br />
<strong>Webmin BUG -&gt;硬盘挂装出错-&gt;fs关键服务不能启动-&gt;网络不启动-&gt;ssh不启动-&gt;无密码不能登入-&gt;需要OK提示符</strong></span><span style="color: #000000;">纠结~~~~</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/02/22/solaris%e8%bf%9e%e9%94%81%e6%95%85%e9%9a%9c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用SSH Tunnel穿越防火墙</title>
		<link>http://www.litrin.net/2010/02/09/%e7%94%a8ssh-tunnel%e7%a9%bf%e8%b6%8a%e9%98%b2%e7%81%ab%e5%a2%99/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e7%2594%25a8ssh-tunnel%25e7%25a9%25bf%25e8%25b6%258a%25e9%2598%25b2%25e7%2581%25ab%25e5%25a2%2599</link>
		<comments>http://www.litrin.net/2010/02/09/%e7%94%a8ssh-tunnel%e7%a9%bf%e8%b6%8a%e9%98%b2%e7%81%ab%e5%a2%99/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 02:17:06 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[桌面应用]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=1164</guid>
		<description><![CDATA[这次接上篇。 很多企业对互联网的访问进行了限制，如何突破防火墙的限制成了一个问题。本文就是利用了SSH tunnel搭建了socket5代理。 首先，申请一个外网的ssh帐户，个人建议使用http://www.unix-center.net/提供的免费资源，该网站还提供多种平台主机可供测试之用，非常不错！当然，如果可以使用密钥方式登录那就完美了。 申请好账户之后，依然在本地安装ssh的客户端，windows推荐putty。 安装好后执行putty，在hostname里面输入主机名，或者用户名@主机名。我选了FreeBSD的那台，有兴趣的话还有ubuntu，Sun，甚至龙芯一系列主机可供挑选 选择ssh-&#62;tunnels，在source栏里添加你要提供的端口号，一般随便填一个未使用的端口就可，我用了8080端口。选择Dynamic，点击add。这里需要说明的是，如果你的主机允许别人使用的话，请勾选最上面的Local ports accept connection from other hosts。 点击Open确认连接，在接下来的窗口中输入用户名和密码。最小化窗口，不要关闭。 打开命令行，输入命令netstat -an，如果出现了你刚才输入的那个端口号的侦听，说明搭建成功！socket服务已经完成。 浏览器设置，IE:internet选项，连接，局域网设置，勾选“为LAN使用代理服务器”，高级，套接字选择127.0.0.1并填写端口号。完成设置。 对应的命令行： plink : plink -C -N -f -D 端口号 用户名@主机名 ssh: ssh  -C -N -f -D 端口号 用户名@主机名 PS: 话两头说，如果你负责一个企业局域网的话，稍大点的企业如果要限网，SSH端口是绝对要加以限制使用的。伟大的防火墙亦是如此。]]></description>
			<content:encoded><![CDATA[<p>这次接<a href="http://www.litrin.net/2010/02/03/%e7%94%a8ssh-tunnel%e6%89%93%e9%80%a0%e5%ae%89%e5%85%a8%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f/" target="_blank">上篇</a>。</p>
<p>很多企业对互联网的访问进行了限制，如何突破防火墙的限制成了一个问题。本文就是利用了SSH tunnel搭建了socket5代理。</p>
<p>首先，申请一个外网的ssh帐户，个人建议使用<a rel="nofollow" target="_blank" href="http://www.unix-center.net/">http://www.unix-center.net/</a>提供的免费资源，该网站还提供多种平台主机可供测试之用，非常不错！当然，如果可以使用密钥方式登录那就完美了。</p>
<p><span id="more-1164"></span></p>
<p>申请好账户之后，依然在本地安装ssh的客户端，windows推荐<a rel="nofollow" target="_blank" href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html" target="_blank">putty</a>。</p>
<p>安装好后执行putty，在hostname里面输入主机名，或者用户名@主机名。我选了FreeBSD的那台，有兴趣的话还有ubuntu，Sun，甚至龙芯一系列主机可供挑选</p>
<div id="attachment_1166" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2010/02/ssh_proxy_putty_main.png"><img class="size-medium wp-image-1166" title="ssh_proxy_putty_main" src="http://www.litrin.net/wp-content/uploads/2010/02/ssh_proxy_putty_main-300x288.png" alt="Putty 主界面" width="300" height="288" /></a><p class="wp-caption-text">Putty 主界面</p></div>
<p>选择ssh-&gt;tunnels，在source栏里添加你要提供的端口号，一般随便填一个未使用的端口就可，我用了8080端口。选择Dynamic，点击add。这里需要说明的是，如果你的主机允许别人使用的话，请勾选最上面的Local ports accept connection from other hosts。</p>
<div id="attachment_1167" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2010/02/ssh_proxy_putty_tunnel_setting.png"><img class="size-medium wp-image-1167" title="ssh_proxy_putty_tunnel_setting" src="http://www.litrin.net/wp-content/uploads/2010/02/ssh_proxy_putty_tunnel_setting-300x288.png" alt="Putty ssh tunnel界面" width="300" height="288" /></a><p class="wp-caption-text">Putty ssh tunnel界面</p></div>
<p>点击Open确认连接，在接下来的窗口中输入用户名和密码。最小化窗口，不要关闭。</p>
<p>打开命令行，输入命令netstat -an，如果出现了你刚才输入的那个端口号的侦听，说明搭建成功！socket服务已经完成。</p>
<div id="attachment_1165" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2010/02/ssh_proxy_netstat.png"><img class="size-medium wp-image-1165" title="ssh_proxy_netstat" src="http://www.litrin.net/wp-content/uploads/2010/02/ssh_proxy_netstat-300x195.png" alt="netstat -an " width="300" height="195" /></a><p class="wp-caption-text">netstat -an </p></div>
<p>浏览器设置，IE:internet选项，连接，局域网设置，勾选“为LAN使用代理服务器”，高级，套接字选择127.0.0.1并填写端口号。完成设置。</p>
<div id="attachment_1168" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2010/02/ssh_proxy_IE.png"><img class="size-medium wp-image-1168" title="ssh_proxy_IE" src="http://www.litrin.net/wp-content/uploads/2010/02/ssh_proxy_IE-300x300.png" alt="IE 设置" width="300" height="300" /></a><p class="wp-caption-text">IE 设置</p></div>
<p>对应的命令行：</p>
<ol>
<li>plink : plink -C -N -f -D 端口号 用户名@主机名</li>
<li>ssh: ssh  -C -N -f -D 端口号 用户名@主机名</li>
</ol>
<p>PS:<br />
话两头说，如果你负责一个企业局域网的话，稍大点的企业如果要限网，SSH端口是绝对要加以限制使用的。伟大的防火墙亦是如此。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/02/09/%e7%94%a8ssh-tunnel%e7%a9%bf%e8%b6%8a%e9%98%b2%e7%81%ab%e5%a2%99/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>用ssh tunnel打造安全邮件系统</title>
		<link>http://www.litrin.net/2010/02/03/%e7%94%a8ssh-tunnel%e6%89%93%e9%80%a0%e5%ae%89%e5%85%a8%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e7%2594%25a8ssh-tunnel%25e6%2589%2593%25e9%2580%25a0%25e5%25ae%2589%25e5%2585%25a8%25e9%2582%25ae%25e4%25bb%25b6%25e7%25b3%25bb%25e7%25bb%259f</link>
		<comments>http://www.litrin.net/2010/02/03/%e7%94%a8ssh-tunnel%e6%89%93%e9%80%a0%e5%ae%89%e5%85%a8%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 14:33:01 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[桌面应用]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=1156</guid>
		<description><![CDATA[近期，甚至于连Google这样的企业也感觉到了邮件系统的安全问题。这里采用了相对实现成本较低的方式，通过ssh的tunnel达到邮件在传输的过程中不会受到中间人攻击造成数据泄露。 故名思义，tunnel就是在邮件服务器和企业防火墙之后设置一条逻辑上的隧道。这条隧道一方面为了数据安全，另一方面，由于ssh的压缩功能也能在一定程度上减少邮件这类纯文本传输的网络需求。 先决条件： Unix like的邮件系统，并安装了ssh-server，本例中假定邮件服务器ip为1.2.3.4 企业路由器和内网：路由最好有vpn和防火墙功能。 内网的 一台主机，配置不必太高（我用了虚拟机，64M内存已经足够近百人使用），安装有ssh-client，如果是win主机，推荐使用putty的安装版本。经过测试，个人觉得FreeBSD下的性能较好。考虑到安全，这台主机尽量不要安装远程控制台并尽可能上锁。本例假定ip 192.168.1.1。 注意整个系统的安全策略，账户策略等，相比中间人攻击这样的“高级”黑客行为，破解密码，利用漏洞永远是成本最低的方法。 第一步：设置公钥方式登录： 内网主机上运行mkdir -p ~/.ssh;cd ~/.ssh;ssh-keygen –d，如果变态一点可以使用ssh-keygen -b 4096 -d增加强度，之后 不要输入任何信息，一律回车带过，很多人不能实现ssh的无验证通过，大多是因为这里没有弄好。这样~/.ssh目录下将会出现id_dsa 和id_dsa.pub两个文件。 将内网主机的id_dsa.pub文件拷贝邮件服务器，并在邮件服务器上执行cat id_dsa.pub &#62;&#62; ~/.ssh/authorized_keys 。尝试在内网主机上执行 ssh A主机的IP ，成功地话应该没有提示密码（即直接得到A主机的控制台）。 如果经常来小站做客的朋友会觉得这段很熟，没错它贴自这里，如果你用了windows作为内网主机，请参考这里的内容。 第二步：配置管道： 写个脚本 vi /usr/sbin/ssh_tunnel #!/bin/sh localIP='192.168.1.1' removteIP='1.2.3.4' ports='25 80 110' #3个端口，smtp http pop3 for port in $ports do /usr/bin/ssh -C -N -f -L $localIP:$port:$removteIP:$port root@$removteIP [...]]]></description>
			<content:encoded><![CDATA[<p>近期，甚至于连Google这样的企业也感觉到了邮件系统的安全问题。这里采用了相对实现成本较低的方式，通过ssh的tunnel达到邮件在传输的过程中不会受到中间人攻击造成数据泄露。</p>
<p>故名思义，tunnel就是在邮件服务器和企业防火墙之后设置一条逻辑上的隧道。这条隧道一方面为了数据安全，另一方面，由于ssh的压缩功能也能在一定程度上减少邮件这类纯文本传输的网络需求。</p>
<p>先决条件：</p>
<ol>
<li>Unix like的邮件系统，并安装了ssh-server，本例中假定邮件服务器ip为1.2.3.4</li>
<li>企业路由器和内网：路由最好有vpn和防火墙功能。</li>
<li>内网的 一台主机，配置不必太高（我用了虚拟机，64M内存已经足够近百人使用），安装有ssh-client，如果是win主机，推荐使用putty的安装版本。经过测试，个人觉得FreeBSD下的性能较好。考虑到安全，这台主机尽量不要安装远程控制台并尽可能上锁。本例假定ip 192.168.1.1。</li>
<li>注意整个系统的安全策略，账户策略等，相比中间人攻击这样的“高级”黑客行为，破解密码，利用漏洞永远是成本最低的方法。</li>
</ol>
<p><span id="more-1156"></span></p>
<div id="attachment_1161" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2010/02/ssh_tunnel.gif"><img class="size-medium wp-image-1161" title="ssh_tunnel" src="http://www.litrin.net/wp-content/uploads/2010/02/ssh_tunnel-300x115.gif" alt="SSH隧道实现安全mail" width="300" height="115" /></a><p class="wp-caption-text">SSH隧道实现安全Mail系统示意</p></div>
<p>第一步：设置公钥方式登录：</p>
<p>内网主机上运行mkdir -p ~/.ssh;cd ~/.ssh;<em>ssh-keygen –d，</em>如果变态一点可以使用ssh-keygen -b 4096 -d增加强度，之后<em> </em>不要输入任何信息，<strong>一律回车带过</strong>，很多人不能实现ssh的无验证通过，大多是因为这里没有弄好。这样~/.ssh目录下将会出现id_dsa 和id_dsa.pub两个文件。</p>
<p>将内网主机的id_dsa.pub文件拷贝邮件服务器，<strong>并在邮件服务器</strong><strong>上执行</strong><em>cat id_dsa.pub &gt;&gt; ~/.ssh/authorized_keys 。</em><strong>尝试在内网主机</strong><strong>上执行</strong> <em>ssh A</em><em>主机的IP </em>，成功地话应该没有提示密码（即直接得到A主机的控制台）。</p>
<p>如果经常来小站做客的朋友会觉得这段很熟，没错它贴自<a href="http://www.litrin.net/2007/09/29/%E6%90%AD%E5%BB%BA%E9%80%9A%E8%BF%87ssh%E5%8A%A0%E5%AF%86%E9%AA%8C%E8%AF%81%E7%9A%84rsync/" target="_blank">这里</a>，如果你用了windows作为内网主机，请参考<a href="http://www.litrin.net/2006/04/10/%E7%94%A8publickey%E9%AA%8C%E8%AF%81%E7%99%BB%E5%BD%95ssh%E6%9C%8D%E5%8A%A1%E5%99%A8/" target="_blank">这里的内容</a>。</p>
<p>第二步：配置管道：</p>
<div id="_mcePaste">写个脚本 vi /usr/sbin/ssh_tunnel</div>
<pre name=code class=bash>
#!/bin/sh
localIP='192.168.1.1'
removteIP='1.2.3.4'
ports='25 80 110' #3个端口，smtp http pop3
for port in $ports
do
    /usr/bin/ssh -C -N -f -L $localIP:$port:$removteIP:$port root@$removteIP  &#038;
done
chmod 755 /usr/sbin/ssh_tunnel
</pre>
<p>修改rc.local文件，在其中加入 /usr/sbin/ssh_tunnel，当然要放在exit那条之前。</p>
<p>windows不是很熟，写个笨蛋批处理吧ssh_tunnel.cmd</p>
<pre name=code class=bash>
start /min cmd /c 'C:\Program Files\PuTTY\plink.exe' -C -N -f -L 192.168.1.1:25:1.2.3.4:25 root@1.2.3.4
start /min cmd /c 'C:\Program Files\PuTTY\plink.exe' -C -N -f -L 192.168.1.1:80:1.2.3.4:80 root@1.2.3.4
start /min cmd /c 'C:\Program Files\PuTTY\plink.exe' -C -N -f -L 192.168.1.1:110:1.2.3.4:110 root@1.2.3.4
</pre>
<p>其实putty的那个plink效果完全等同于ssh，当然，win下面主要是用里面的窗口程序，大多数人不怎么用而已。win下比较烦的是每次重起后都要手工加载key，执行这个批处理。希望对win熟的朋友可以提供自动解决方法。</p>
<p>第三步：设置邮件服务器防火墙</p>
<p>通过邮件服务的防火墙关闭除25和22之外的所有端口。这样做是最安全的，但这样的后果是在企业局域网之外只能发不能收邮件。VPN是比较好的折中方案。当然，如果你的邮件系统只需要内部收发邮件（那还要什么邮件系统？），你尽可以连25号也封上。</p>
<p>第四步：设置本地邮件客户端</p>
<p>将局域网内所有邮件客户端的smtp和pop都设置为192.168.1.1即可。我这里由于用了webmail，webmail同样也通过192.168.1.1访问<br />
如果企业有自己的DNS服务器，甚至整个公司都在域管理模式之下。不妨通过本地的DNS服务器用本地IP覆盖掉外网真实IP。这样即便没有vpn，只要不封邮件服务器的110端口，在邮件客户端中设置域名，对用户来说在任何地方都是透明的。</p>
<p>总结：</p>
<ul>
<li>这种模式，从邮件服务器到企业局域网内的传输是加密透明的，外部很难窃取，如果定期为两边的ssh更换强化的秘钥，效果几乎可以达到变态的要求。据说4096位的秘钥的破解成本已经到了天文数字。</li>
<li>这种方式相对成本较低，不需要太多的投入，特别是在多个分支机构之间成本优势更加突出。本想通过smtp的tls和pop的SSL进行加密，可outlook下对没有根秘证书签名的秘钥会弹出讨厌的警告框，反而增加了用户的不安。申请根证书的签名价格也不菲。</li>
<li>由于企业的邮件系统最多的邮件往往来自于内部，这种方式可以减少差不多一半以上的互联网带宽。把带宽留给更重要的应用。</li>
<li>同理，利用此种方式可以实现其他多种安全方案，达到双宿主机或者多机虚拟的效果，进而可以为企业节约宝贵的外网IP资源。</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/02/03/%e7%94%a8ssh-tunnel%e6%89%93%e9%80%a0%e5%ae%89%e5%85%a8%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FreeBSD+apache+PHP+OCI支持Oracle</title>
		<link>http://www.litrin.net/2009/06/15/freebsdapachephpoci%e6%94%af%e6%8c%81oracle/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=freebsdapachephpoci%25e6%2594%25af%25e6%258c%2581oracle</link>
		<comments>http://www.litrin.net/2009/06/15/freebsdapachephpoci%e6%94%af%e6%8c%81oracle/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 10:08:54 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[数据库应用]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[服务器]]></category>
		<guid isPermaLink="false">http://www.litrin.net/2009/06/15/freebsdapachephpoci%e6%94%af%e6%8c%81oracle/</guid>
		<description><![CDATA[由于FreeBSD的Port中自带了oracle-client可用，但仅支持i386的平台，故此文仅针对于i386，AMD64无法实现oci的连接库。 首先，确定你已经安装好apache + php，没有安装的可以参考这里或者文学化的这里 安装php5-oci8 cd /usr/ports/database/php5-oci8 make install clean 安装到这里，Php的OCI8库已经安装成功，但需要对oracle-client进行设置，否则无法使用。 将tnsnames.ora拷贝到/usr/local/oracle8-client/network/admin/ 目录下 内容大致如下： ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL) ) ) 由于php默认只会在/etc目录下查找该目录，这里我做了一个手工链接 ln -s /usr/local/oracle8-client/network/admin/tnsnames.ora /etc/tnsnames.ora tnsnames已经配置完成，但对于非ASCII字符集最容setenv NLS_LANG 易出现的问题就是乱码了，这里要设置一下。 killall httpd //杀掉httpd进程，我曾经碰到过apachectl无效的情况 ee /usr/local/sbin/apachectl 在第二行加入： setenv american_america.UTF8 setenv ORACLE_HOME [...]]]></description>
			<content:encoded><![CDATA[<p>由于FreeBSD的Port中自带了oracle-client可用，但仅支持i386的平台，故此文仅针对于i386，AMD64无法实现oci的连接库。</p>
<p>首先，确定你已经安装好apache + php，没有安装的可以参考<a href="http://www.litrin.net/2005/11/09/%e7%94%a8freebsd%e7%9a%84ports%e5%ae%89%e8%a3%85apachephpmysql/comment-page-1/#comment-1345" target="_blank">这里</a>或者文学化的<a href="http://www.litrin.net/2007/08/01/%e7%94%a8freebsd%e7%9a%84ports%e5%ae%89%e8%a3%85apachephpmysql%c2%b7%e6%94%b9/" target="_blank">这里</a></p>
<p>安装php5-oci8</p>
<p>cd /usr/ports/database/php5-oci8<br />
make install clean</p>
<p>安装到这里，Php的OCI8库已经安装成功，但需要对oracle-client进行设置，否则无法使用。</p>
<p>将tnsnames.ora拷贝到/usr/local/oracle8-client/network/admin/ 目录下<br />
内容大致如下：<span id="more-1026"></span></p>
<p>ORCL =<br />
(DESCRIPTION =<br />
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))<br />
(CONNECT_DATA =<br />
(SERVER = DEDICATED)<br />
(SERVICE_NAME = ORCL)<br />
)<br />
)<br />
<!--break--><br />
由于php默认只会在/etc目录下查找该目录，这里我做了一个手工链接<br />
ln -s /usr/local/oracle8-client/network/admin/tnsnames.ora /etc/tnsnames.ora</p>
<p>tnsnames已经配置完成，但对于非ASCII字符集最容setenv NLS_LANG<br />
易出现的问题就是乱码了，这里要设置一下。<br />
killall httpd //杀掉httpd进程，我曾经碰到过apachectl无效的情况<br />
ee /usr/local/sbin/apachectl<br />
在第二行加入：<br />
setenv american_america.UTF8<br />
setenv ORACLE_HOME /usr/local/oracle8-client</p>
<p>开启apache<br />
apachectl start</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/06/15/freebsdapachephpoci%e6%94%af%e6%8c%81oracle/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>关于vmstat</title>
		<link>http://www.litrin.net/2009/06/04/%e5%85%b3%e4%ba%8evmstat/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e5%2585%25b3%25e4%25ba%258evmstat</link>
		<comments>http://www.litrin.net/2009/06/04/%e5%85%b3%e4%ba%8evmstat/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 09:13:52 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[服务器]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=1023</guid>
		<description><![CDATA[上次谈了load average ，这是一个反应CPU资源利用状况的命令。现实情况下，特别是现在CPU疯狂便宜的时代，对于一个服务器往往不见得是CPU吃紧，这次就来讲讲相对反应整体状况的vmstat命令。 以本人的Freebsd为例，其余的系统类似，直接套用就Ok了。 WWW# vmstat procs      memory      page                    disks     faults         cpu r b w     avm    fre   flt  re  pi  po    fr  sr da0 pa0   in   sy   cs us sy id 0 0 0    738M   108M   957  30  38   0  1226  72   0   0 1782  983  922  2  6 92 Procs 进程 r : 在等待执行的进程，若该项经常大于CPU线程数，说明CPU吃紧。正常情况下应该很快就能恢复为0 [...]]]></description>
			<content:encoded><![CDATA[<p>上次谈了<a rel="nofollow" target="_blank" title="Permanent Link: 关于 load average" rel="bookmark" href="../2009/03/27/%e5%85%b3%e4%ba%8e-load-average/">load average </a>，这是一个反应CPU资源利用状况的命令。现实情况下，特别是现在CPU疯狂便宜的时代，对于一个服务器往往不见得是CPU吃紧，这次就来讲讲相对反应整体状况的vmstat命令。</p>
<p>以本人的Freebsd为例，其余的系统类似，直接套用就Ok了。</p>
<p>WWW# vmstat<br />
procs      memory      page                    disks     faults         cpu<br />
r b w     avm    fre   flt  re  pi  po    fr  sr da0 pa0   in   sy   cs us sy id<br />
0 0 0    738M   108M   957  30  38   0  1226  72   0   0 1782  983  922  2  6 92<span id="more-1023"></span></p>
<p><strong>Procs 进程</strong></p>
<ul>
<li>r : 在等待执行的进程，若该项经常大于CPU线程数，说明CPU吃紧。正常情况下应该很快就能恢复为0</li>
<li>b:等待io的进程数，若经常不为0，恭喜！貌似这个问题只能迂回解决了。</li>
<li>w：可以进入运行队列但被替换的进程（强占？）</li>
</ul>
<p><strong>Memory 内存</strong></p>
<ul>
<li>avm：已用内存</li>
<li>fre:可用内存</li>
</ul>
<p><strong>page （linux表示为swap）页面文件</strong></p>
<ul>
<li>re:回收的页面</li>
<li>pi:进入页面数</li>
<li>po：出页面数，如果进出页面经常性大于0，OK买内存吧。</li>
</ul>
<p><strong>disk / io 磁盘</strong></p>
<p>没有什么复杂的，每个硬盘的读写状况</p>
<p>如果该值从未等于0，且结合proc中b较大，可以判断是哪块盘的读写问题<strong><br />
</strong></p>
<p><strong>faults / system 系统</strong></p>
<ul>
<li>in:设备中断占用的资源</li>
<li>sy：系统中断</li>
<li>cs: CPU交换<strong><br />
</strong></li>
</ul>
<p><strong>cpu</strong></p>
<ul>
<li>cs:用户进程时间</li>
<li>sy:系统进程使用的时间</li>
<li>id: idleCPU空闲时间</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/06/04/%e5%85%b3%e4%ba%8evmstat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSH的x-forwarding</title>
		<link>http://www.litrin.net/2009/06/01/ssh%e7%9a%84x%ef%bc%8dforwarding/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ssh%25e7%259a%2584x%25ef%25bc%258dforwarding</link>
		<comments>http://www.litrin.net/2009/06/01/ssh%e7%9a%84x%ef%bc%8dforwarding/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 06:47:23 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[服务器]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=1013</guid>
		<description><![CDATA[记得N年前写过一篇东西，讲的是SSH的秘钥验证登录。这次就跳出命令行，讲讲X桌面的X-forwarding。 其实*nix下的桌面也是一个网络服务，可以通过SSH来远程执行。如果您使用的是Linux的桌面版，可以通过ssh的-X 或 -Y参数： litrin@litrin-laptop:~$ ssh -Y root@192.168.1.7 Last login: Mon Jun  1 14:04:47 2009 from 192.168.103.1 Sun Microsystems Inc.   SunOS 5.10      Generic January 2005 ================================================================================ 192.168.1.7       Oracle Server ================================================================================ You have new mail. # env DISPLAY=localhost:10.0 HOME=/ LANG=zh_CN.UTF-8 LOGNAME=root MAIL=/var/mail//root PATH=/usr/sbin:/usr/bin SHELL=/sbin/sh SSH_CLIENT=192.168.103.1 60802 22 SSH_CONNECTION=192.168.103.1 60802 192.168.1.7 22 SSH_TTY=/dev/pts/1 TERM=xterm TZ=PRC USER=root 如果出现了DISPLAY变量则说明配置OK，随便可以执行一个桌面程序了。 [...]]]></description>
			<content:encoded><![CDATA[<p>记得N年前写过<a href="http://www.litrin.net/2006/04/10/%e7%94%a8publickey%e9%aa%8c%e8%af%81%e7%99%bb%e5%bd%95ssh%e6%9c%8d%e5%8a%a1%e5%99%a8/" target="_blank">一篇东西</a>，讲的是SSH的秘钥验证登录。这次就跳出命令行，讲讲X桌面的X-forwarding。</p>
<p>其实*nix下的桌面也是一个网络服务，可以通过SSH来远程执行。如果您使用的是Linux的桌面版，可以通过ssh的-X 或 -Y参数：</p>
<p><span id="more-1013"></span>litrin@litrin-laptop:~$ ssh -Y root@192.168.1.7<br />
Last login: Mon Jun  1 14:04:47 2009 from 192.168.103.1<br />
Sun Microsystems Inc.   SunOS 5.10      Generic January 2005<br />
================================================================================</p>
<p>192.168.1.7       Oracle Server</p>
<p>================================================================================<br />
You have new mail.<br />
# env<br />
<span style="text-decoration: underline;">DISPLAY=localhost:10.0</span><br />
HOME=/<br />
LANG=zh_CN.UTF-8<br />
LOGNAME=root<br />
MAIL=/var/mail//root<br />
PATH=/usr/sbin:/usr/bin<br />
SHELL=/sbin/sh<br />
SSH_CLIENT=192.168.103.1 60802 22<br />
SSH_CONNECTION=192.168.103.1 60802 192.168.1.7 22<br />
SSH_TTY=/dev/pts/1<br />
TERM=xterm<br />
TZ=PRC<br />
USER=root</p>
<p>如果出现了DISPLAY变量则说明配置OK，随便可以执行一个桌面程序了。</p>
<p style="text-align: center;">
<div id="attachment_1015" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2009/06/x-forwarding.png"><img class="size-medium wp-image-1015" title="Ubuntu下x-forwarding Solaris 的 prodreg" src="http://www.litrin.net/wp-content/uploads/2009/06/x-forwarding-300x187.png" alt="Ubuntu下x-forwarding Solaris 的 prodreg" width="300" height="187" /></a><p class="wp-caption-text">Ubuntu下x-forwarding Solaris 的 prodreg</p></div>
<p>同样的在win+putty下，可以参照如下设置：</p>
<p style="text-align: center;">
<div id="attachment_1014" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2009/06/putty_x-forward.png"><img class="size-medium wp-image-1014" title="putty x-forwarding" src="http://www.litrin.net/wp-content/uploads/2009/06/putty_x-forward-300x288.png" alt="putty x-forward" width="300" height="288" />.</a><p class="wp-caption-text">putty x-forwarding</p></div>
<p>同时，在使用putty登录之前请开启本地的X server客户端，推荐 <a rel="nofollow" target="_blank" href="http://sourceforge.net/projects/xming" target="_blank">Xming<br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/06/01/ssh%e7%9a%84x%ef%bc%8dforwarding/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>搭建oracle双机热备系统</title>
		<link>http://www.litrin.net/2009/04/25/%e6%90%ad%e5%bb%baoracle%e5%8f%8c%e6%9c%ba%e7%83%ad%e5%a4%87%e7%b3%bb%e7%bb%9f/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e6%2590%25ad%25e5%25bb%25baoracle%25e5%258f%258c%25e6%259c%25ba%25e7%2583%25ad%25e5%25a4%2587%25e7%25b3%25bb%25e7%25bb%259f</link>
		<comments>http://www.litrin.net/2009/04/25/%e6%90%ad%e5%bb%baoracle%e5%8f%8c%e6%9c%ba%e7%83%ad%e5%a4%87%e7%b3%bb%e7%bb%9f/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 09:09:42 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[数据库应用]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[solaris]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=977</guid>
		<description><![CDATA[系统环境： 安装相同版本的Oracle软件，企业版而非标准版。 SUN V245 x 2; Solaris Sparc 10 up 5; Oracle 10G up 2 。 建议在之前建立两台机器间Oralce用户的ssh互信认证机制。 Oralce官方建议使用交换机连接两台主机，原因是“网卡直连容易因为网卡故障出现问题”。个人认为一根超5类或者干脆6类线直连两台主机的可以避免交换机的使用，省钱的同时也会提升传输速度。由于原本服务器还有空闲的网口，这里采用了双机直连的方式做心跳。 主数据库操作 强制数据库执行日志切换，并启动数据库归档模式 Alter database force logging; Shutdown abort; &#60;!&#8211; @page { margin: 2cm } P { margin-bottom: 0.21cm } &#8211;&#62; Startup mount; Alter database archivelog; 数据库密码文件创建 Orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=****** entries=5; # for WIN       orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=****** [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li>
<p style="margin-bottom: 0cm; line-height: 150%; widows: 2; orphans: 2;"><span style="color: #000000;"><span style="font-size: small;"><strong>系统环境：</strong></span></span></p>
<ol type="a">
<li>
<p style="margin-bottom: 0cm; line-height: 150%;">安装相同版本的<span style="font-family: AR PL UMing CN,serif;">Oracle</span>软件，企业版而非标准版。</p>
</li>
<li>
<p style="margin-bottom: 0cm; line-height: 150%;"><span style="font-family: AR PL UMing CN,serif;">SUN V245 x 2; Solaris Sparc 10 up 5; Oracle 10G up 2 </span>。</p>
</li>
<li>
<p style="margin-bottom: 0cm; line-height: 150%;">建议在之前建立两台机器间<span style="font-family: AR PL UMing CN,serif;">Oralce</span>用户的<span style="font-family: AR PL UMing CN,serif;">ssh</span>互信认证机制。</p>
</li>
<li>
<p style="margin-bottom: 0cm; line-height: 150%;"><span style="font-family: AR PL UMing CN,serif;">Oralce</span>官方建议使用交换机连接两台主机，原因是“网卡直连容易因为网卡故障出现问题”。个人认为一根超<span style="font-family: AR PL UMing CN,serif;">5</span>类或者干脆<span style="font-family: AR PL UMing CN,serif;">6</span>类线直连两台主机的可以避免交换机的使用，省钱的同时也会提升传输速度。由于原本服务器还有空闲的网口，这里采用了双机直连的方式做心跳。</p>
</li>
</ol>
</li>
<p><span id="more-977"></span></p>
<li>
<p style="margin-bottom: 0cm; line-height: 150%; widows: 2; orphans: 2;"><span style="color: #000000;"><span style="font-size: small;"><strong>主数据库操作</strong></span></span></p>
<ol type="a">
<li>
<p style="margin-bottom: 0cm; line-height: 150%;"><span style="color: #000000;">强制数据库执行日志切换，并启动数据库归档模式</span></p>
</li>
</ol>
</li>
</ol>
<p style="text-indent: 0.74cm; margin-bottom: 0cm; line-height: 150%;"><span style="font-family: AR PL UMing CN,serif;"><span style="color: #000000;"><span style="font-family: Tahoma,serif;">Alter database force logging;</span></span></span></p>
<p style="text-indent: 0.74cm; margin-bottom: 0cm; line-height: 150%;"><span style="font-family: AR PL UMing CN,serif;"><span style="color: #000000;"><span style="font-family: Tahoma,serif;">Shutdown abort;</span></span></span></p>
<p>&lt;!&#8211; @page { margin: 2cm } P { margin-bottom: 0.21cm } &#8211;&gt;</p>
<p style="text-indent: 0.74cm; margin-bottom: 0cm; line-height: 150%;"><span style="font-family: AR PL UMing CN,serif;"><span style="color: #000000;"><span style="font-family: Tahoma,serif;">Startup mount;</span></span></span></p>
<p style="text-indent: 0.74cm; margin-bottom: 0cm; line-height: 150%;"><span style="font-family: AR PL UMing CN,serif;"><span style="color: #000000;"><span style="font-family: Tahoma,serif;">Alter database archivelog;</span></span></span></p>
<ol>
<li>
<ol type="a">
<li>
<p style="margin-bottom: 0cm; line-height: 150%;"><span style="color: #000000;">数据库密码文件创建</span></p>
</li>
</ol>
</li>
</ol>
<p style="text-indent: 0.64cm; margin-bottom: 0cm; line-height: 150%;"><span style="font-family: AR PL UMing CN,serif;"><span style="color: #000000;"><span style="font-family: Tahoma,serif;">Orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=****** entries=5; # for WIN<br />
      <span style="color: #0000ff;">orapwd file=$ORACLE_HOME/dbs/<strong>orapw</strong>$ORACLE_SID password=****** #for Unix, 官方手册竟然没有区分</span></span></span></span></p>
<p style="text-indent: 0.64cm; margin-bottom: 0cm; line-height: 150%;"><span style="font-family: AR PL UMing CN,serif;"><span style="color: #000000;"><span style="font-family: Tahoma,serif;"> </span></span></span></p>
<ol>
<li>
<ol type="a">
<li>
<p style="margin-bottom: 0cm; line-height: 150%;"><span style="color: #000000;">增加<span style="font-family: Tahoma,serif;">Standby Redo Logfile</span>，建议添加</span></p>
</li>
</ol>
</li>
</ol>
<p style="margin-bottom: 0cm; line-height: 150%; widows: 2; orphans: 2;"><span style="font-family: AR PL UMing CN,serif;"><span style="color: #000000;"><span style="font-family: Tahoma,serif;">Alter database add standby logfile group 6 ‘/oradata/db/orcl/redo06.log’ size 100M;</span></span></span></p>
<ol>
<li>
<ol type="a">
<li>
<p style="margin-bottom: 0cm; line-height: 150%; widows: 2; orphans: 2;"><span style="color: #000000;">修改主数据库初始化参数：</span></p>
<ol type="i">
<li>
<p style="margin-bottom: 0cm; line-height: 150%; widows: 2; orphans: 2;"><span style="font-family: AR PL UMing CN,serif;"><span style="color: #000000;"><span style="font-family: Tahoma,serif;">create pfile = &#8221;&#8221;old_setting.ora&#8221;&#8221; from spfile;</span></span></span></p>
</li>
<li>
<p style="margin-bottom: 0cm; line-height: 150%; widows: 2; orphans: 2;"><span style="color: #000000;">修改<span style="font-family: AR PL UMing CN,serif;"><span style="font-family: Tahoma,serif;">$ORACLE_HOME/dbs/old_setting.ora</span></span></span><span style="color: #000000;">文件，增加如下内容：</span></p>
</li>
</ol>
</li>
</ol>
</li>
</ol>
<p style="margin-left: 1.38cm; margin-bottom: 0cm; line-height: 150%; widows: 2; orphans: 2;"><span style="font-family: AR PL UMing CN,serif;"><span style="color: #002060;"><span style="font-family: Tahoma,serif;"><strong>*.db_unique_name=&#8221;&#8221;primary&#8221;&#8221; </strong></span></span></span></p>
<p style="margin-left: 1.38cm; margin-bottom: 0cm; line-height: 150%;"><span style="font-family: AR PL UMing CN,serif;"><span style="color: #002060;"><span style="font-family: Tahoma,serif;"><strong>*.log_archive_config=&#8221;&#8221;DG_CONFIG=(primary,standby)&#8221;&#8221;</strong></span></span></span></p>
<p style="margin-left: 1.38cm; margin-bottom: 0cm; line-height: 150%; widows: 2; orphans: 2;"><span style="font-family: AR PL UMing CN,serif;"><span style="color: #002060;"><span style="font-family: Tahoma,serif;"><strong>*.log_archive_dest_1=&#8221;&#8221;LOCATION=/oradata/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) db_unique_name=primary&#8221;&#8221;</strong></span></span></span></p>
<p style="margin-left: 1.38cm; margin-bottom: 0cm; line-height: 150%; widows: 2; orphans: 2;"><span style="font-family: AR PL UMing CN,serif;"><span style="color: #002060;"><span style="font-family: Tahoma,serif;"><strong>*.log_archive_dest_2=&#8221;&#8221;service=standby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLES) db_unique_name=standby&#8221;&#8221;</strong></span></span></span></p>
<p style="margin-left: 1.38cm; margin-bottom: 0cm; line-height: 150%; widows: 2; orphans: 2;"><span style="font-family: AR PL UMing CN,serif;"><span style="color: #002060;"><span style="font-family: Tahoma,serif;"><strong>*.FAL_SERVER=standby</strong></span></span></span></p>
<p style="margin-left: 1.38cm; margin-bottom: 0cm; line-height: 150%; widows: 2; orphans: 2;"><span style="font-family: AR PL UMing CN,serif;"><span style="color: #002060;"><span style="font-family: Tahoma,serif;"><strong>*.FAL_CLIENT=primary</strong></span></span></span></p>
<p style="margin-left: 1.38cm; margin-bottom: 0cm; line-height: 150%;"><span style="color: #002060;"><span style="font-family: Tahoma,serif;"><strong>*.STANDBY_FILE_MANAGEMENT=AUTO</strong></span></span></p>
<ol>
<li>
<ol type="a">
<li>
<p style="margin-bottom: 0cm; line-height: 150%; widows: 2; orphans: 2;"><span style="color: #000000;">修改主数据库<span style="font-family: AR PL UMing CN,serif;"><span style="font-family: Tahoma,serif;">listener.ora</span></span></span><span style="color: #000000;">、<span style="font-family: AR PL UMing CN,serif;"><span style="font-family: Tahoma,serif;">tnsnames.ora</span></span></span><span style="color: #000000;">，增加两个数据库连接设置，一个为<span style="font-family: AR PL UMing CN,serif;"><span style="font-family: Tahoma,serif;">primary,</span></span></span><span style="color: #000000;">一个为<span style="font-family: AR PL UMing CN,serif;"><span style="font-family: Tahoma,serif;">Standby</span></span></span><span style="color: #000000;">，其中主数据库为<span style="font-family: AR PL UMing CN,serif;"><span style="font-family: Tahoma,serif;">Primary</span></span></span></p>
</li>
<li>
<p style="margin-bottom: 0cm; line-height: 150%; widows: 2; orphans: 2;"><span style="font-family: AR PL UMing CN,serif;"><span style="color: #000000;"><span style="font-family: Tahoma,serif;">create spfile from pfile = &#8221;&#8221;old_setting.ora&#8221;&#8221;</span></span></span></p>
</li>
<li>
<p style="margin-bottom: 0cm; line-height: 150%; widows: 2; orphans: 2;"><span style="color: #000000;">备份数据库文件</span></p>
</li>
<li>
<p style="margin-bottom: 0cm; line-height: 150%; widows: 2; orphans: 2;"><span style="color: #000000;">创建<span style="font-family: AR PL UMing CN,serif;"><span style="font-family: Tahoma,serif;">Standby</span></span></span><span style="color: #000000;">数据库的控制文件<span style="font-family: AR PL UMing CN,serif;"><span style="font-family: Tahoma,serif;"><br />
startup mount;</span></span></span></p>
</li>
</ol>
</li>
</ol>
<p style="margin-left: 0.64cm; margin-bottom: 0cm; line-height: 150%; widows: 2; orphans: 2;"><span style="font-family: AR PL UMing CN,serif;"><span style="color: #000000;"><span style="font-family: Tahoma,serif;">Alter database create standby controlfile as ‘standby01.ctl’;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/04/25/%e6%90%ad%e5%bb%baoracle%e5%8f%8c%e6%9c%ba%e7%83%ad%e5%a4%87%e7%b3%bb%e7%bb%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle+Sun=?</title>
		<link>http://www.litrin.net/2009/04/21/oraclesun/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=oraclesun</link>
		<comments>http://www.litrin.net/2009/04/21/oraclesun/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 00:58:52 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[开源7788]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[solaris]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=973</guid>
		<description><![CDATA[刚刚得到的消息，Oracle以每股$9.50的价格，总计74亿美元收购了Sun。具体官方报道 上回说到IBM的收购案，被IBM收购可以看作对SUN的一种讽刺甚至于侮辱。在一次次的谈判无果之后，忽然间传出了这么一条冷门消息。MS说明与IBM谈判是假，Oracle是真啊。 Oracle收购Sun之后，Java的悖论总算不会发生了，Oracle一直梦想的“进军操作系统”也得以实现。Sun呢？有了Oracle作为摇钱树，系统整合中又多了数据库这一块的业务。看来，我们又一次见证了另外一个IBM的诞生。 整合以后的Mysql如何？mysql作为独立的一部分业务，本身就有oracle的股份存在。同时,mysql和oracle也不存在市场竞争（最终用户是不同的） 对于此次收购本人认为对于mysql的影响不大。即便Oracle不需要Mysql，Mysql最有可能也不过就是交由社区维护，无非由一个.com变成了.org而已。 IBM在短短的一周内从玩了Sun，直到被Oracle玩；从差点消灭了一个对手，到培养起来了一个更可怕的对手。其中滋味，只有他们自己清楚。到底是风水轮流转啊。 总之，祝今后的新Oracle一路走好！]]></description>
			<content:encoded><![CDATA[<p>刚刚得到的消息，Oracle以每股$9.50的价格，总计74亿美元收购了Sun。具体<a rel="nofollow" target="_blank" href="http://www.oracle.com/sun/index.html">官方报道</a></p>
<p>上回说到<a href="http://www.litrin.net/2009/03/29/sun%e7%9a%84%e8%ba%ab%e5%89%8d%e8%ba%ab%e5%90%8e%e4%ba%8b/">IBM的收购案</a>，被IBM收购可以看作对SUN的一种讽刺甚至于侮辱。在一次次的谈判无果之后，忽然间传出了这么一条冷门消息。MS说明与IBM谈判是假，Oracle是真啊。</p>
<p><span id="more-973"></span>Oracle收购Sun之后，Java的悖论总算不会发生了，Oracle一直梦想的“进军操作系统”也得以实现。Sun呢？有了Oracle作为摇钱树，系统整合中又多了数据库这一块的业务。看来，我们又一次见证了另外一个IBM的诞生。</p>
<p>整合以后的Mysql如何？mysql作为独立的一部分业务，本身就有oracle的股份存在。同时,mysql和oracle也不存在市场竞争（最终用户是不同的） 对于此次收购本人认为对于mysql的影响不大。即便Oracle不需要Mysql，Mysql最有可能也不过就是交由社区维护，无非由一个.com变成了.org而已。</p>
<p>IBM在短短的一周内从玩了Sun，直到被Oracle玩；从差点消灭了一个对手，到培养起来了一个更可怕的对手。其中滋味，只有他们自己清楚。到底是风水轮流转啊。</p>
<p>总之，祝今后的新Oracle一路走好！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/04/21/oraclesun/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sun的身前身后事</title>
		<link>http://www.litrin.net/2009/03/29/sun%e7%9a%84%e8%ba%ab%e5%89%8d%e8%ba%ab%e5%90%8e%e4%ba%8b/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=sun%25e7%259a%2584%25e8%25ba%25ab%25e5%2589%258d%25e8%25ba%25ab%25e5%2590%258e%25e4%25ba%258b</link>
		<comments>http://www.litrin.net/2009/03/29/sun%e7%9a%84%e8%ba%ab%e5%89%8d%e8%ba%ab%e5%90%8e%e4%ba%8b/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 07:28:36 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[开源7788]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[solaris]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=940</guid>
		<description><![CDATA[最近业界的有个传闻很引人注意，那就是IBM正在与Sun进行收购谈判。最终结果如何都是大家期待的。一代枭雄的Sun再也支撑不住，似乎大厦将倾了&#8230;&#8230; 当大家都在关注Sparc平台，Java中间件，Solaris操作系统以及一大堆应用的何去何从时，业界的另一个比较有趣的话题逐渐的浮出水面&#8211;作为Java下的应用，同时又是IBM竞争对手的Oracle和SAP是否还会继续支持Java？选择继续无疑于与虎谋皮；选择放弃Java，拜托，这么多的客户岂不是要倒戈？ 这些只是作为一些题外话，不管今后Sun怎样，不妨总结下Sun的贡献吧。 首先，在开源领域中，Sun的地位可以说是无可撼动的领头羊。目前最大的3个开源项目，分别是Sun主导的opensolaris，Sun主导的Openoffice，以及Sun主导的OpenJava。是不是感觉到了点什么？除此之外，还有Sun支持的mysql也可以说是最为常用的开源系统之一了。 系统集成上，Sun同时拥有了硬件平台，到操作系统再到桌面生产力工具和IDE。可以说目前连微软也是做不到的高度（至少MS没有自己的CPU）。唯一可以与之匹配唯独IBM这个蓝色巨人。然而一旦IBM==SUN，这又意味着什么？ Java的出现也是一大创举。过去企业要做开发，需要BS,CS,甚至于OA等多个开发团队来实现。Java的很空出世，加上Oracle和SAP的协助，对于企业平台而言，数据库之需要一个，平台只要一个，开发团队只要一个，空前的统一！ 最后，OpenSparc的标准也成为开源硬件的一大创新性尝试。 IBM方面呢？ 蓝色巨人的最大竞争对手倒下了。白捡了客户，减少了竞争对手。这世界顿时清静了。 控制了JAVA，间接的抑制了Oracle对于DB2，SAP对于Domino的市场冲击。 拿到了SPARC的研发团队，弥补了自己power平台的技术缺失。 &#8230;&#8230;&#8230;&#8230; 难道PowerPC版本的Solaris就是对于现状的预兆？ 所谓现代的经济，就是在定期和不定期的执行&#8221;破坏性创造&#8221;。输赢只在乎破坏力来自何方，来自自己，你是赢家；来自竞争对手，很遗憾，You Lose!]]></description>
			<content:encoded><![CDATA[<p>最近业界的有个传闻很引人注意，那就是IBM正在与Sun进行收购谈判。最终结果如何都是大家期待的。一代枭雄的Sun再也支撑不住，似乎大厦将倾了&#8230;&#8230;</p>
<p>当大家都在关注Sparc平台，Java中间件，Solaris操作系统以及一大堆应用的何去何从时，业界的另一个比较有趣的话题逐渐的浮出水面&#8211;作为Java下的应用，同时又是IBM竞争对手的Oracle和SAP是否还会继续支持Java？选择继续无疑于与虎谋皮；选择放弃Java，拜托，这么多的客户岂不是要倒戈？</p>
<p><span id="more-940"></span></p>
<p>这些只是作为一些题外话，不管今后Sun怎样，不妨总结下Sun的贡献吧。</p>
<p>首先，在开源领域中，Sun的地位可以说是无可撼动的领头羊。目前最大的3个开源项目，分别是Sun主导的opensolaris，Sun主导的Openoffice，以及Sun主导的OpenJava。是不是感觉到了点什么？除此之外，还有Sun支持的mysql也可以说是最为常用的开源系统之一了。</p>
<p>系统集成上，Sun同时拥有了硬件平台，到操作系统再到桌面生产力工具和IDE。可以说目前连微软也是做不到的高度（至少MS没有自己的CPU）。唯一可以与之匹配唯独IBM这个蓝色巨人。然而一旦IBM==SUN，这又意味着什么？</p>
<p>Java的出现也是一大创举。过去企业要做开发，需要BS,CS,甚至于OA等多个开发团队来实现。Java的很空出世，加上Oracle和SAP的协助，对于企业平台而言，数据库之需要一个，平台只要一个，开发团队只要一个，空前的统一！</p>
<p>最后，OpenSparc的标准也成为开源硬件的一大创新性尝试。</p>
<p>IBM方面呢？</p>
<p>蓝色巨人的最大竞争对手倒下了。白捡了客户，减少了竞争对手。这世界顿时清静了。</p>
<p>控制了JAVA，间接的抑制了Oracle对于DB2，SAP对于Domino的市场冲击。</p>
<p>拿到了SPARC的研发团队，弥补了自己power平台的技术缺失。</p>
<p>&#8230;&#8230;&#8230;&#8230;</p>
<p>难道<a href="http://www.litrin.net/2006/02/27/%e6%8b%93%e5%b1%95solaris%e7%9a%84%e4%bd%bf%e7%94%a8%e7%8e%87-sun-%e6%8a%95%e6%80%80ibm/" target="_blank">PowerPC版本的Solaris</a>就是对于现状的预兆？</p>
<p>所谓现代的经济，就是在定期和不定期的执行&#8221;破坏性创造&#8221;。输赢只在乎破坏力来自何方，来自自己，你是赢家；来自竞争对手，很遗憾，You Lose!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/03/29/sun%e7%9a%84%e8%ba%ab%e5%89%8d%e8%ba%ab%e5%90%8e%e4%ba%8b/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>关于 load average</title>
		<link>http://www.litrin.net/2009/03/27/%e5%85%b3%e4%ba%8e-load-average/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e5%2585%25b3%25e4%25ba%258e-load-average</link>
		<comments>http://www.litrin.net/2009/03/27/%e5%85%b3%e4%ba%8e-load-average/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 04:43:11 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[硬件相关]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=936</guid>
		<description><![CDATA[很多人都知道uptime命令会得到如下的返回： 12:00:59 up 20:24,  1 user,  load average: 0.49, 1.40, 1.61 其中的load average根的3个数字，分别表示系统在1分钟，5分钟和15分钟的平均负载情况。这个数字是系统每5秒钟会自动检测一下活跃的进程数量（即top命令看到的n running），然后得出结果。具体感兴趣的话可以研究下Linux内核中include/linux/sched.h， kernel/timer.c，fs/proc/proc_misc.c 所谓活跃的进程，需要满足： 没有被终止或者正在调用wait。 不是正在等待I/O操作。 很多网上说这个数字除上CPU的数量如果得到的结果大于5就说明系统在超负荷运转。对于这个结论本人持保留意见。 对于双核或者多核的CPU，如果按照1个CPU来计算，那么明显的状况就是对于多核心的不公。如果按照多个CPU来计算，那又是对于多路CPU，甚至是独享内存总线多CPU的不公。对于基于HT技术的“假多核”更是如此。 对于不同平台的CPU而言，目前公认的是X86架构“不耐压”，特别在于高并发的情况下。本人明显觉得SPARC的架构相比X86在压缩同一个文件的时间更长；但是同时进行多个压缩的时候Sparc的平台占有绝对优势。 与IO关系不够紧密，很多情况下，最容易制约系统的是IO，特别是现在正处在“运算不值钱，储存值钱”的时代。 超负荷的界定：有的系统，在1.5的情况下已经能够感到明显的延时；同样有的系统在10以上还能迅速响应。]]></description>
			<content:encoded><![CDATA[<p>很多人都知道uptime命令会得到如下的返回：<br />
12:00:59 up 20:24,  1 user,  load average: 0.49, 1.40, 1.61</p>
<p>其中的load average根的3个数字，分别表示系统在1分钟，5分钟和15分钟的平均负载情况。这个数字是系统每5秒钟会自动检测一下活跃的进程数量（即top命令看到的n running），然后得出结果。具体感兴趣的话可以研究下Linux内核中include/linux/sched.h， kernel/timer.c，fs/proc/proc_misc.c</p>
<p>所谓活跃的进程，需要满足：</p>
<ul>
<li>没有被终止或者正在调用wait。</li>
<li>不是正在等待I/O操作。</li>
</ul>
<p>很多网上说这个数字除上CPU的数量如果得到的结果大于5就说明系统在超负荷运转。对于这个结论本人持保留意见。</p>
<ol>
<li>对于双核或者多核的CPU，如果按照1个CPU来计算，那么明显的状况就是对于多核心的不公。如果按照多个CPU来计算，那又是对于多路CPU，甚至是独享内存总线多CPU的不公。对于基于HT技术的“假多核”更是如此。</li>
<li>对于不同平台的CPU而言，目前公认的是X86架构“不耐压”，特别在于高并发的情况下。本人明显觉得SPARC的架构相比X86在压缩同一个文件的时间更长；但是同时进行多个压缩的时候Sparc的平台占有绝对优势。</li>
<li>与IO关系不够紧密，很多情况下，最容易制约系统的是IO，特别是现在正处在“运算不值钱，储存值钱”的时代。</li>
<li>超负荷的界定：有的系统，在1.5的情况下已经能够感到明显的延时；同样有的系统在10以上还能迅速响应。</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/03/27/%e5%85%b3%e4%ba%8e-load-average/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>踩到雷</title>
		<link>http://www.litrin.net/2009/03/20/%e8%b8%a9%e5%88%b0%e9%9b%b7/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e8%25b8%25a9%25e5%2588%25b0%25e9%259b%25b7</link>
		<comments>http://www.litrin.net/2009/03/20/%e8%b8%a9%e5%88%b0%e9%9b%b7/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 00:55:36 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Mail]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=857</guid>
		<description><![CDATA[公司的邮件服务器升级了一下perl，从5.8.8到5.8.9。只为更好的支持更新版本的webmail程序。按理说作为FreeBSD系统，升级下perl不是什么困难的事情，可真正的问题才刚刚开始。 首先是要伴随perl升级一系列的模块，这似乎也不是难事。然后是执行perl-after-upgrade。一切似乎很顺利。随意习惯性的top了一下，发觉负载已经高达60%以上，而且是邮件系统的MailScanner的进程奇高。考虑到MailScanner引用了perl，很明显的需要restart一下。这时候问题来了。 restart之后，邮件不能正常接收，检查原因，发觉邮件在MailScanner中不停的check。赶紧检查日志，很明显的报错： MailScanner[66402]: Could not use Custom Function code /usr/local/lib/MailScanner/MailScanner/CustomFunctions/GenericSpamScanner.pm, it could not be &#8220;require&#8221;d. Make sure the last line of the file says &#8220;1 调用万能的google，关键字perl5.8.9 MailScanner，发觉通篇都是与我一样的报错，最新的记录似乎也没多远。貌似是我幸运的踩到了雷。 临时处理方法其实也是非常简单的——退回到perl5.8.8就OK。]]></description>
			<content:encoded><![CDATA[<p>公司的邮件服务器升级了一下perl，从5.8.8到5.8.9。只为更好的支持更新版本的webmail程序。按理说作为FreeBSD系统，升级下perl不是什么困难的事情，可真正的问题才刚刚开始。</p>
<p>首先是要伴随perl升级一系列的模块，这似乎也不是难事。然后是执行perl-after-upgrade。一切似乎很顺利。随意习惯性的top了一下，发觉负载已经高达60%以上，而且是邮件系统的MailScanner的进程奇高。考虑到MailScanner引用了perl，很明显的需要restart一下。这时候问题来了。</p>
<p>restart之后，邮件不能正常接收，检查原因，发觉邮件在MailScanner中不停的check。赶紧检查日志，很明显的报错：</p>
<p><strong>MailScanner[66402]: Could not use Custom Function code /usr/local/lib/MailScanner/MailScanner/CustomFunctions/GenericSpamScanner.pm, it could not be &#8220;require&#8221;d. Make sure the last line of the file says &#8220;1</strong></p>
<p>调用万能的google，关键字perl5.8.9 MailScanner，发觉通篇都是与我一样的报错，最新的记录似乎也没多远。貌似是我幸运的踩到了雷。</p>
<p>临时处理方法其实也是非常简单的——退回到perl5.8.8就OK。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/03/20/%e8%b8%a9%e5%88%b0%e9%9b%b7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD的ZFS</title>
		<link>http://www.litrin.net/2008/11/19/freebsd%e7%9a%84zfs/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=freebsd%25e7%259a%2584zfs</link>
		<comments>http://www.litrin.net/2008/11/19/freebsd%e7%9a%84zfs/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 14:29:14 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=497</guid>
		<description><![CDATA[ZFS是sun跟随opensolaris项目一并开源的存储解决方案。具体的优势可以参考这里 。 本文不做累述。总之，使用ZFS可以将所有系统的裸存储设备都利用起来&#8212;&#8212;小到磁盘，大到盘柜，都不需要考虑具体的容量分配。相对来说是低成本的存储解决方案。 Freebsd近期也引入了ZFS这一存储格式，作为存储服务器，个人觉得用Solaris远没有Freebsd成本来的低。具体操作如下： 首先，照例的更新版本库，升级内核 ＃cvsup -h cvsup.cn.freebsd.org /usr/share/examples/cvsup/stable-supfile&#160; //漫长的等待 ＃cd /usr/src #make buildkernel ; make installkernel //更加漫长的等待 ＃halt 关机后为系统安装磁盘，这边由于是测试环境，采用了一个磁盘的两个分区为例。如果是生产环境，建议采用至少2块以上的硬盘作为ZFS的物理设备。 ＃echo &#34;zfs_enable=YES&#34; &#62;&#62; /etc/rc.conf # /etc/rc.d/zfs start //启用ZFS服务 # echo &#8221;daily_status_zfs_enable=&#34;YES&#34;&#8221; &#62;&#62; /etc/periodic.conf //自动更新 开始设置ZFS库 #zpool zpool create zfs raidz ad7s1 ad7s2 这里要注意的是raidz参数可以用mirror、raidz1（raidz默认）、raidz2来代替，分别相当于传统上的Raid 1 Raid5和Raid6 # zpool status zfs &#160; pool: zfs &#160;state: ONLINE &#160;scrub: [...]]]></description>
			<content:encoded><![CDATA[<p>ZFS是sun跟随<a rel="nofollow" target="_blank" href="http://www.opensolaris.org" target="_blank">opensolaris</a>项目一并开源的存储解决方案。具体的优势可以参考<a rel="nofollow" target="_blank" target="_blank" href="http://blog.ccw.com.cn/blog.php?do-showone-uid-143215-itemid-13017-type-blog-type-blog.html">这里</a> 。 本文不做累述。总之，使用ZFS可以将所有系统的裸存储设备都利用起来&mdash;&mdash;小到磁盘，大到盘柜，都不需要考虑具体的容量分配。相对来说是低成本的存储解决方案。</p>
<p><a rel="nofollow" target="_blank" href="http://www.freebsd.org" target="_blank">Freebsd</a>近期也引入了ZFS这一存储格式，作为存储服务器，个人觉得用Solaris远没有Freebsd成本来的低。具体操作如下：</p>
<p>首先，照例的更新版本库，升级内核</p>
<p><em>＃cvsup -h cvsup.cn.freebsd.org /usr/share/examples/cvsup/stable-supfile&nbsp; //漫长的等待</em></p>
<p><em>＃cd /usr/src</em></p>
<p><em>#make buildkernel ; make installkernel //更加漫长的等待</em></p>
<p><em>＃halt</em></p>
<p>关机后为系统安装磁盘，这边由于是测试环境，采用了一个磁盘的两个分区为例。如果是生产环境，建议采用至少2块以上的硬盘作为ZFS的物理设备。</p>
<p><em>＃echo &quot;zfs_enable=YES&quot; &gt;&gt; /etc/rc.conf<br />
</em></p>
<p><em># /etc/rc.d/zfs start //启用ZFS服务<br />
</em></p>
<p><em># echo &#8221;daily_status_zfs_enable=&quot;YES&quot;&#8221; &gt;&gt; /etc/periodic.conf //自动更新</em></p>
<p>开始设置ZFS库</p>
<p><em>#zpool zpool create zfs <u>raidz</u> ad7s1 ad7s2 </em></p>
<p>这里要注意的是raidz参数可以用mirror、raidz1（raidz默认）、raidz2来代替，分别相当于传统上的Raid 1 Raid5和Raid6</p>
<p><em># zpool status zfs<br />
&nbsp; pool: zfs<br />
&nbsp;state: ONLINE<br />
&nbsp;scrub: scrub completed with 0 errors on Wed Nov 19 05:11:29 2008<br />
config:</p>
<p>&nbsp;&nbsp;&nbsp; NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STATE&nbsp;&nbsp;&nbsp;&nbsp; READ WRITE CKSUM<br />
&nbsp;&nbsp;&nbsp; zfs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ONLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0<br />
&nbsp;&nbsp;&nbsp; &nbsp; raidz1&nbsp;&nbsp;&nbsp; ONLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ad7s1&nbsp;&nbsp; ONLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ad7s2&nbsp;&nbsp; ONLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0</p>
<p>errors: No known data errors</em><br />
&nbsp;</p>
<p>恭喜，ZSF pool已经成功！</p>
<p>然后是创建文件系统：<em><br />
</em></p>
<p><em>＃ zfs create zfs/www</em></p>
<p>如果成功，系统将会出现/zfs/www目录</p>
<p><em># mount<br />
/dev/ad4s1a on / (ufs, local)<br />
devfs on /dev (devfs, local)<br />
/dev/ad4s1g on /data (ufs, local, soft-updates)<br />
/dev/ad4s1e on /tmp (ufs, local, soft-updates)<br />
/dev/ad4s1f on /usr (ufs, local, soft-updates)<br />
/dev/ad4s1d on /var (ufs, local, soft-updates)<br />
zfs on /zfs (zfs, local)<br />
zfs/www on /zfs/www (zfs, local)<br />
</em></p>
<p>设置文件系统参数： <em> </em></p>
<p><em>#zfs set compression=gzip zfs/www //设置自动做gzip</em></p>
<p>设置NFS共享：</p>
<p><em>＃zfs share zfs/www</em></p>
<p>搞定！</p>
<p>具体命令解释可以参考<a rel="nofollow" target="_blank" target="_blank" href="http://docs.sun.com/app/docs/doc/819-7065">SUN的官方文档</a></p>
<p>题外话：</p>
<p>总觉的ZFS的思想有些超前，128位的文件系统倒可以先不谈。光是自动设置gzip这一项，可真是考验机器的设置。4核的Xeon搞个500M左右的文件竟然花费了n久，何况几年前？SUN的技术始终是这么的接近于&rdquo;实现的边缘&ldquo;也难怪SUN这些日子可不是那么好过。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2008/11/19/freebsd%e7%9a%84zfs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sun v245的硬RAID</title>
		<link>http://www.litrin.net/2008/10/21/sun-v245%e7%9a%84%e7%a1%acraid/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=sun-v245%25e7%259a%2584%25e7%25a1%25acraid</link>
		<comments>http://www.litrin.net/2008/10/21/sun-v245%e7%9a%84%e7%a1%acraid/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 05:04:43 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[硬件相关]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=494</guid>
		<description><![CDATA[Sun的215和245除了支持传统上的软RAID之外，新增了硬RAID功能。不过话说回来，这种价位上的服务器，不支持硬RAID的似乎也太抠门了。 本文以崭新的机器作为例子，如果不是新机器——建议不要乱来。 一、先期准备： 新的机器一般都没有系统，直接开机即可进入OK模式（OK提示符）  setenv fcode-debug? true  setenv auto-boot? false  reset-all  机器重启以便生效，否则之后将会出现This must be fixed immediately using set-sas-wwid 的提示。 二、初始化磁盘 我的机器disk配置如下： {0} ok show-disks a) /pci@1e,600000/pci@0/pci@a/pci@0/pci@8/scsi@1/disk b) /pci@1e,600000/pci@0/pci@1/pci@0/ide@1f/cdrom c) /pci@1e,600000/pci@0/pci@1/pci@0/ide@1f/disk q) NO SELECTION Enter Selection, q to quit: {o}ok select /pci@1e,600000/pci@0/pci@a/pci@0/pci@8/scsi@1 //选择磁盘通道 三、创建RAID卷 {1} ok show-volumes No volumes to show 目前还没有RAID卷存在 {1} ok probe-scsi-all //查看ID /pci@1e,600000/pci@0/pci@a/pci@0/pci@8/scsi@1 MPT Version 1.05, Firmware Version 1.08.04.00 Target [...]]]></description>
			<content:encoded><![CDATA[<p>Sun的215和245除了支持传统上的软RAID之外，新增了硬RAID功能。不过话说回来，这种价位上的服务器，不支持硬RAID的似乎也太抠门了。</p>
<p>本文以崭新的机器作为例子，如果不是新机器——建议不要乱来。</p>
<p><strong>一、先期准备：</strong></p>
<p>新的机器一般都没有系统，直接开机即可进入OK模式（OK提示符）</p>
<p><em><span class="f14"> setenv fcode-debug? true</span></em></p>
<p><em><span class="f14"> setenv </span>auto-boot? false </em></p>
<p><em> reset-all </em></p>
<p>机器重启以便生效，否则之后将会出现<span class="f14">This must be fixed immediately using set-sas-wwid 的提示</span>。</p>
<p><strong>二、初始化磁盘</strong></p>
<p>我的机器disk配置如下：</p>
<p><em>{0} ok show-disks</em><br />
a)<strong> /pci@1e,600000/pci@0/pci@a/pci@0/pci@8/scsi@1/disk</strong><br />
b) /pci@1e,600000/pci@0/pci@1/pci@0/ide@1f/cdrom<br />
c) /pci@1e,600000/pci@0/pci@1/pci@0/ide@1f/disk<br />
q) NO SELECTION<br />
Enter Selection, q to quit:</p>
<p><em>{o}ok select /pci@1e,600000/pci@0/pci@a/pci@0/pci@8/scsi@1</em> //选择磁盘通道</p>
<p><strong>三、创建RAID卷</strong></p>
<p><em>{1} ok show-volumes</em><br />
No volumes to show</p>
<p>目前还没有RAID卷存在</p>
<p>{1} ok probe-scsi-all //查看ID</p>
<p>/pci@1e,600000/pci@0/pci@a/pci@0/pci@8/scsi@1</p>
<p>MPT Version 1.05, Firmware Version 1.08.04.00</p>
<p>Target 0<br />
Unit 0   Disk     FUJITSU MAY2073RCSUN72G 0501    143374738 Blocks, 73 GB<br />
  SASAddress 500000e01496c622  PhyNum 0<br />
Target 1<br />
Unit 0   Disk     FUJITSU MAY2073RCSUN72G 0501    143374738 Blocks, 73 GB<br />
  SASAddress 500000e01496fa32  PhyNum 1<br />
Target 2<br />
Unit 0   Disk     SEAGATE ST914602SSUN146G0603    286739329 Blocks, 146 GB<br />
  SASAddress 5000c5000cac86fd  PhyNum 2<br />
Target 3<br />
Unit 0   Disk     SEAGATE ST914602SSUN146G0603    286739329 Blocks, 146 GB<br />
  SASAddress 5000c5000cac00c5  PhyNum 3<br />
 </p>
<p>注：如果出现ERROR: /pci@1e,600000: Last Trap: Fast Data Access MMU Miss报错，您可能需要执行</p>
<p><em>{1}ok reset-all</em></p>
<p><em>{1} ok 0 1 create-im-volume //注意：“反向”命令<br />
</em></p>
<p>Target 0 size is 143243264 Blocks, 73 GB<br />
Target 1 size is 143243264 Blocks, 73 GB<br />
The volume can be any size from 1 MB to 69943 MB<br />
What size do you want?  [69943]<br />
Volume size will be 143243264 Blocks, 73 GB<br />
PhysDisk 0 has been created for target 0<br />
PhysDisk 1 has been created for target 1<br />
Volume has been created</p>
<p><em>{1} ok 2 3 create-im-volume</em><br />
Target 2 size is 286607360 Blocks, 146 GB<br />
Target 3 size is 286607360 Blocks, 146 GB<br />
The volume can be any size from 1 MB to 139945 MB<br />
What size do you want?  [139945]<br />
Volume size will be 286607360 Blocks, 146 GB<br />
PhysDisk 2 has been created for target 2<br />
PhysDisk 3 has been created for target 3<br />
Volume has been created</p>
<p>创建了2个Raid1卷，Raid 0 卷则用<span class="f14">create-is-volume命令</span></p>
<p><em>{1} ok show-volumes</em><br />
Volume 0 Target 0  Type IM (Integrated Mirroring)<br />
  Degraded  Enabled  Resync In Progress<br />
  2 Members                                         143243264 Blocks, 73 GB<br />
  Disk 0<br />
    Primary  Online<br />
    Target 4        FUJITSU MAY2073RCSUN72G 0501<br />
  Disk 1<br />
    Secondary  Online  Out Of Sync<br />
    Target 1        FUJITSU MAY2073RCSUN72G 0501<br />
Volume 1 Target 2  Type IM (Integrated Mirroring)<br />
  Degraded  Enabled<br />
  2 Members                                         286607360 Blocks, 146 GB<br />
  Disk 2<br />
    Primary  Online<br />
    Target 5        SEAGATE ST914602SSUN146G0603<br />
  Disk 3<br />
    Secondary  Online  Out Of Sync<br />
    Target 3        SEAGATE ST914602SSUN146G0603</p>
<p> 搞定！</p>
<p><strong>四、删除磁盘</strong></p>
<p><em><span>｛</span><span>1｝ok 0 delete-volume</span></em><br />
The volume and its data will be deleted<br />
Are you sure (yes/no)?  [no] yes<br />
Volume 0 has been deleted</p>
<p>将磁盘0删除</p>
<p><strong>五、重启</strong><br />
<strong> </strong></p>
<p><em><span class="f14"> setenv fcode-debug?false</span></em></p>
<p><em><span class="f14"> setenv </span>auto-boot? true<br />
</em></p>
<p><em> reset-all<br />
</em></p>
<p>安装操作系统和应用程序。部署完毕！</p>
<div><em></em></div>
<p><em> </p>
<p></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2008/10/21/sun-v245%e7%9a%84%e7%a1%acraid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>虚拟化</title>
		<link>http://www.litrin.net/2008/03/10/%e8%99%9a%e6%8b%9f%e5%8c%96/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e8%2599%259a%25e6%258b%259f%25e5%258c%2596</link>
		<comments>http://www.litrin.net/2008/03/10/%e8%99%9a%e6%8b%9f%e5%8c%96/#comments</comments>
		<pubDate>Mon, 10 Mar 2008 11:41:48 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=478</guid>
		<description><![CDATA[上次刚刚提及了MS的虚拟主机服务器，这次我不得不用它来上生产系统了，比较郁闷。 可能细心的朋友已经发现了，近期网站的速度慢到了几乎无法访问的程度。由于种种不可控制的原因，原来本站的服务器可能永远的停机了，目前的网站运行在了一台虚拟主机之上。由于空间原因，目前暂时停止软件下载。等待litrin找到新的空间后，一切将恢复正常。 同时，向业内的朋友求救！本站急需空间，要求如下： &#62; PHP 4.6 with gd （最好是）pgsql8.1 或 mysql 尽可能大的磁盘空间和尽可能大的网络带宽。 如果有此资源的朋友可以跟我联系。]]></description>
			<content:encoded><![CDATA[<p>上次刚刚提及了<a href="http://www.litrin.net/?q=node/477">MS的虚拟主机服务器</a>，这次我不得不用它来上生产系统了，比较郁闷。</p>
<p>可能细心的朋友已经发现了，近期网站的速度慢到了几乎无法访问的程度。由于种种不可控制的原因，原来本站的服务器可能永远的停机了，目前的网站运行在了一台虚拟主机之上。由于空间原因，目前暂时停止软件下载。等待litrin找到新的空间后，一切将恢复正常。</p>
<p>同时，向业内的朋友求救！本站急需空间，要求如下：</p>
<ul>
<li>&gt; PHP 4.6 with gd </li>
<li>（最好是）pgsql8.1 或 mysql </li>
<li>尽可能大的磁盘空间和尽可能大的网络带宽。</li>
</ul>
<p>如果有此资源的朋友可以跟我联系。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2008/03/10/%e8%99%9a%e6%8b%9f%e5%8c%96/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>启用Solaris的tomcat</title>
		<link>http://www.litrin.net/2007/11/19/%e5%90%af%e7%94%a8solaris%e7%9a%84tomcat/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e5%2590%25af%25e7%2594%25a8solaris%25e7%259a%2584tomcat</link>
		<comments>http://www.litrin.net/2007/11/19/%e5%90%af%e7%94%a8solaris%e7%9a%84tomcat/#comments</comments>
		<pubDate>Mon, 19 Nov 2007 08:16:53 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[solaris]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=471</guid>
		<description><![CDATA[网上很多文档对于solaris的tomcat环境都是重新编译或者重新安装的，其实solaris的系统本身并不希望你在上面做太多的编译操作，而作为tomcat这种java应用，其实solaris本身已经自带了一个。 察看系统是否安装了apache和tomcat pkginfo&#124; grep SUNWtcatr pkginfo &#124; grep SUNWapchr 如果有的话 cd /etc/apache cp httpd.conf-example httpd.conf vi httpd.conf include /etc/apache/tomcat.conf #应该是在最后一行，去掉注视 cd /var/apache/tomcat/conf cp server.xml-example server.xml OK了 启动 &#160;/etc/rc3.d/S50apache stop &#160;/etc/rc3.d/S50apache start // 第一次restart似乎无效 svcadm enable apache]]></description>
			<content:encoded><![CDATA[<p>网上很多文档对于solaris的tomcat环境都是重新编译或者重新安装的，其实solaris的系统本身并不希望你在上面做太多的编译操作，而作为tomcat这种java应用，其实solaris本身已经自带了一个。</p>
<p>察看系统是否安装了apache和tomcat</p>
<p>pkginfo| grep <font face="Courier New">SUNWtcatr</font><br />
pkginfo | grep SUNWapchr </p>
<p>如果有的话</p>
<p>cd /etc/apache<br />
cp httpd.conf-example httpd.conf</p>
<p>vi httpd.conf </p>
<p>include /etc/apache/tomcat.conf #应该是在最后一行，去掉注视</p>
<p>cd /var/apache/tomcat/conf <br />
cp server.xml-example server.xml</p>
<p>OK了</p>
<p>启动</p>
<p>&nbsp;/etc/rc3.d/S50apache stop<br />
&nbsp;/etc/rc3.d/S50apache start // 第一次restart似乎无效</p>
<p>svcadm enable apache </p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2007/11/19/%e5%90%af%e7%94%a8solaris%e7%9a%84tomcat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solaris下安装Oracle 10 up 2</title>
		<link>http://www.litrin.net/2007/11/15/solaris%e4%b8%8b%e5%ae%89%e8%a3%85oracle-10-up-2/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=solaris%25e4%25b8%258b%25e5%25ae%2589%25e8%25a3%2585oracle-10-up-2</link>
		<comments>http://www.litrin.net/2007/11/15/solaris%e4%b8%8b%e5%ae%89%e8%a3%85oracle-10-up-2/#comments</comments>
		<pubDate>Thu, 15 Nov 2007 01:59:49 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[数据库应用]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[solaris]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=470</guid>
		<description><![CDATA[环境配置：SUN V245server，安装有最新版本的Solaris10update4 for SPARC，从www.oracle.com下载了最新版本的Oracle 10G update 2 &#8212; Linux 和windows已经可以下载到 11G，可不知道为什么作为“oralce的最佳平台”的solaris只有10up2？   首先，在/etc/system的末尾添加，否则，在安装的过程中将会提示“out of memory”之类的错误： set semsys:seminfo_semmni=100 set semsys:seminfo_semmns=1024 set semsys:seminfo_semmsl=256 set semsys:seminfo_semvmx=32767 set shmsys:shminfo_shmmax=4294967295 set shmsys:shminfo_shmmin=1 set shmsys:shminfo_shmmni=100 set shmsys:shminfo_shmseg=10 解压oracle: gzcat 10gr2_db_sol.cpio.gz &#124; cpio -icvd 添加dba组和属于dba组的oracle用户，并创建相关的权限的目录：/opt/oracle/ 10.2.0/Db_1， /oracdata 修改oracle用户目录下的.profile文件，添加如下内容： umask 022 TEMP=/tmp;export TEMP TMPDIR=/tmp;export TMPDIR ORACLE_HOME=/opt/oracle/ 10.2.0/Db_1;export ORACLE_HOME ORACLE_BASE=/opt/oracle;export ORACLE_BASE PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/ucb:/etc:/usr/openwin/bin:/usr/ccs/bin ORACLE_SID=HSDB;export ORACLE_SID [...]]]></description>
			<content:encoded><![CDATA[<p><span style="FONT-FAMILY: 宋体">环境配置：</span><span lang="EN-US">SUN V245server</span><span style="FONT-FAMILY: 宋体">，安装有最新版本的</span><span lang="EN-US">Solaris10update4 for SPARC</span><span style="FONT-FAMILY: 宋体">，从</span><span lang="EN-US"><a rel="nofollow" target="_blank" href="http://www.oracle.com/">www.oracle.com</a></span><span style="FONT-FAMILY: 宋体">下载了最新版本的</span><span lang="EN-US">Oracle 10G update 2 &#8212; Linux </span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">windows</span><span style="FONT-FAMILY: 宋体">已经可以下载到</span></p>
<div><span lang="EN-US">11G</span><span style="FONT-FAMILY: 宋体">，可不知道为什么作为“</span><span class="SpellE"><span lang="EN-US">oralce</span></span><span style="FONT-FAMILY: 宋体">的最佳平台”的</span><span class="SpellE"><span lang="EN-US">solaris</span></span><span style="FONT-FAMILY: 宋体">只有</span><span lang="EN-US">10up2</span><span style="FONT-FAMILY: 宋体">？</span></div>
<p> </p>
<p><span style="FONT-FAMILY: 宋体">首先，在</span><span lang="EN-US">/etc/system</span><span style="FONT-FAMILY: 宋体">的末尾添加，否则，在安装的过程中将会提示“</span><span lang="EN-US">out of memory</span><span style="FONT-FAMILY: 宋体">”之类的错误：</span></p>
<p><span class="GramE"><span lang="EN-US">set</span></span><span lang="EN-US"> <span class="SpellE">semsys:seminfo_semmni</span>=100</span></p>
<p><span class="GramE"><span lang="EN-US">set</span></span><span lang="EN-US"> <span class="SpellE">semsys:seminfo_semmns</span>=1024</span></p>
<p><span class="GramE"><span lang="EN-US">set</span></span><span lang="EN-US"> <span class="SpellE">semsys:seminfo_semmsl</span>=256</span></p>
<p><span class="GramE"><span lang="EN-US">set</span></span><span lang="EN-US"> <span class="SpellE">semsys:seminfo_semvmx</span>=32767</span></p>
<p><span class="GramE"><span lang="EN-US">set</span></span><span lang="EN-US"> <span class="SpellE">shmsys:shminfo_shmmax</span>=4294967295</span></p>
<p><span class="GramE"><span lang="EN-US">set</span></span><span lang="EN-US"> <span class="SpellE">shmsys:shminfo_shmmin</span>=1</span></p>
<p><span class="GramE"><span lang="EN-US">set</span></span><span lang="EN-US"> <span class="SpellE">shmsys:shminfo_shmmni</span>=100</span></p>
<p><span class="GramE"><span lang="EN-US">set</span></span><span lang="EN-US"> <span class="SpellE">shmsys:shminfo_shmseg</span>=10</span></p>
<p><span style="FONT-FAMILY: 宋体">解压</span><span lang="EN-US">oracle:</span></p>
<p><span class="SpellE"><span class="GramE"><span lang="EN-US">gzcat</span></span></span><span lang="EN-US"> 10gr2_db_sol.cpio.gz | <span class="SpellE">cpio</span> -<span class="SpellE">icvd</span></span></p>
<p><span style="FONT-FAMILY: 宋体">添加</span><span class="SpellE"><span lang="EN-US">dba</span></span><span style="FONT-FAMILY: 宋体">组和属于</span><span class="SpellE"><span lang="EN-US">dba</span></span><span style="FONT-FAMILY: 宋体">组的</span><span lang="EN-US">oracle</span><span style="FONT-FAMILY: 宋体">用户，并创建相关的权限的目录：</span><span lang="EN-US">/opt/oracle/ 10.2.0/Db_1</span><span style="FONT-FAMILY: 宋体">，</span><span lang="EN-US"> /<span class="SpellE">oracdata</span></span></p>
<p><span style="FONT-FAMILY: 宋体">修改</span><span lang="EN-US">oracle</span><span style="FONT-FAMILY: 宋体">用户目录下的</span><span lang="EN-US">.profile</span><span style="FONT-FAMILY: 宋体">文件，添加如下内容：</span></p>
<p><span class="SpellE"><span class="GramE"><span lang="EN-US">umask</span></span></span><span lang="EN-US"> 022</span></p>
<p><span lang="EN-US">TEMP=/<span class="SpellE">tmp<span class="GramE">;export</span></span> TEMP</span></p>
<p><span lang="EN-US">TMPDIR=/<span class="SpellE">tmp<span class="GramE">;export</span></span> TMPDIR</span></p>
<p><span lang="EN-US">ORACLE_HOME=/opt/oracle/ 10.2.0/Db_1;export ORACLE_HOME</span></p>
<p><span lang="EN-US">ORACLE_BASE=/opt/<span class="SpellE">oracle<span class="GramE">;export</span></span> ORACLE_BASE</span></p>
<p><span lang="EN-US">PATH=$ORACLE_HOME/bin<span class="GramE">:/</span>bin:/usr/bin:/usr/ucb:/etc:/usr/openwin/bin:/usr/ccs/bin</span></p>
<p><span lang="EN-US">ORACLE_SID=<span class="SpellE">HSDB;export</span> ORACLE_SID #</span><span style="FONT-FAMILY: 宋体">注</span><span lang="EN-US">HSDB</span><span style="FONT-FAMILY: 宋体">是我设置的数据库</span><span lang="EN-US">SID</span><span style="FONT-FAMILY: 宋体">，可以根据需要设定相对应的</span><span lang="EN-US">SID</span></p>
<p><span style="FONT-FAMILY: 宋体">启动</span><span lang="EN-US">X</span><span style="FONT-FAMILY: 宋体">界面（我的机器没有显卡，只能用</span><span class="SpellE"><span lang="EN-US">Xmanger</span></span><span style="FONT-FAMILY: 宋体">）启动安装程序：</span></p>
<p><span lang="EN-US">Su <span class="SpellE">oralce</span></span></p>
<p><span lang="EN-US"><span class="SpellE"></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2007/11/15/solaris%e4%b8%8b%e5%ae%89%e8%a3%85oracle-10-up-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>免费的unix测试机</title>
		<link>http://www.litrin.net/2007/03/20/%e5%85%8d%e8%b4%b9%e7%9a%84unix%e6%b5%8b%e8%af%95%e6%9c%ba/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e5%2585%258d%25e8%25b4%25b9%25e7%259a%2584unix%25e6%25b5%258b%25e8%25af%2595%25e6%259c%25ba</link>
		<comments>http://www.litrin.net/2007/03/20/%e5%85%8d%e8%b4%b9%e7%9a%84unix%e6%b5%8b%e8%af%95%e6%9c%ba/#comments</comments>
		<pubDate>Tue, 20 Mar 2007 00:40:36 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[服务器]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=440</guid>
		<description><![CDATA[今天收到了一封来自Gceclube的电子邮件，邀请我注册以获得一个远程Solaris服务器的测试帐户，注册地址如下： http://www.unix-center.net/ 注册之后，就可以用putty这类的工具访问远程主机了。有需要的朋友去注册了，据说6月30日之前注册的用户还有机会抽奖。]]></description>
			<content:encoded><![CDATA[<p>今天收到了一封来自Gceclube的电子邮件，邀请我注册以获得一个远程Solaris服务器的测试帐户，注册地址如下：</p>
<p><a rel="nofollow" target="_blank" target="_blank" href="http://www.unix-center.net/">http://www.unix-center.net/</a></p>
<p>
注册之后，就可以用putty这类的工具访问远程主机了。有需要的朋友去注册了，据说6月30日之前注册的用户还有机会抽奖。</p>
<p><img height="378" width="600" alt="" src="/UserFiles/Image/solaris-test.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2007/03/20/%e5%85%8d%e8%b4%b9%e7%9a%84unix%e6%b5%8b%e8%af%95%e6%9c%ba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
