<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Sylar' blog -CUG</title><subtitle type="text">研究兴趣：嵌入式/OS/网络Email &amp; MSN: cug@live.cn</subtitle><id>http://feed.cnblogs.com/blog/u/60494/rss</id><updated>2012-05-17T06:53:40Z</updated><author><name>sylar_xj</name><uri>http://www.cnblogs.com/SuperXJ/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/SuperXJ/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/60494/rss"/><entry><id>http://www.cnblogs.com/SuperXJ/archive/2012/05/17/2506214.html</id><title type="text">云灾备</title><summary type="text">灾备的选择很多，从众多容灾方案中选择一款适合自己的经济实惠的方案确实比较困难。如果能有一款方案，具有上述的所有功能，并且能够一劳永逸地解决数据容灾和应用容灾的所有问题，那么用户与容灾方案之间的距离就会被拉近。 容灾主要解决的只有两个问题：第一是保证数据不丢失，第二是保证应用不中断。从应用等级来划分，容灾包括数据容灾、应用容灾和业务容灾。对于普通企业来说，实现业务容灾的目标比较困难。因此，对大多数企业来说，实现数据容灾和应用容灾是比较现实的问题。目前，市场上大多数的解决方案或者能满足数据容灾的需求，或者能解决应用容灾的问题，但是能够同时满足数据容灾和应用容灾两种应用需求的解决方案并不多。 有..</summary><published>2012-05-17T06:51:00Z</published><updated>2012-05-17T06:51:00Z</updated><author><name>sylar_xj</name><uri>http://www.cnblogs.com/SuperXJ/</uri></author><link rel="alternate" href="http://www.cnblogs.com/SuperXJ/archive/2012/05/17/2506214.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/SuperXJ/archive/2012/05/17/2506214.html"/><content type="html">&lt;p&gt;&lt;span&gt;灾备的选择很多，从众多容灾方案中选择一款适合自己的经济实惠的方案确实比较困难。如果能有一款方案，具有上述的所有功能，并且能够一劳永逸地解决数据容灾和应用容灾的所有问题，那么用户与容灾方案之间的距离就会被拉近。&lt;/span&gt;&lt;br /&gt;&lt;span&gt;容灾主要解决的只有两个问题：第一是保证数据不丢失，第二是保证应用不中断。从应用等级来划分，容灾包括数据容灾、应用容灾和业务容灾。对于普通企业来说，实现业务容灾的目标比较困难。因此，对大多数企业来说，实现数据容灾和应用容灾是比较现实的问题。目前，市场上大多数的解决方案或者能满足数据容灾的需求，或者能解决应用容灾的问题，但是能够同时满足数据容灾和应用容灾两种应用需求的解决方案并不多。&lt;/span&gt;&lt;br /&gt;&lt;span&gt;有些用户已经认识到容灾的重要性，而且确实想部署容灾系统，但是IT部门的负责人若想说服企业决策者投入大笔资金去建设一个容灾系统是比较困难的事。企业的决策者通常十分关注项目的投入产出比。容灾方案的成本包括初始成本、维护成本和机会成本。初始成本和维护成本很容易理解，关键是搞清机会成本与容灾之间的关系。机会成本是指事故发生后给企业带来的损失。如果企业没有意识到必须花费必要的成本建立一个完整的容灾系统，那么容灾的顺利实施将成为一句空话。&lt;/span&gt;&lt;br /&gt;&lt;span&gt;有没有一种解决方案能够同时解决数据容灾和应用容灾两个问题？有没有一种解决方案能够融备份、快照、CDP、虚拟化等多种技术于一体？这不仅是用户的需求，而且也是容灾厂商努力的目标。包括爱数公司、Acronis公司等在内的一些公司都在积极倡导一体化容灾的理念。一体化容灾方案也成了容灾普及的一个推动因素。&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Acronis公司资深技术经理简硕文分析说：&amp;ldquo;今天，针对实体机的备份和容灾方案已经十分成熟。现在，企业用户开始把更多的精力转移到对虚拟机的保护上。两三年前，人们只是把虚拟环境当成测试环境，但是现在，虚拟环境已经成了主要的应用环境。尤其是越来越多的中小企业用户已经接受了虚拟化技术，并逐渐向云计算架构过渡。云端保护已经不再是一句口号。从保护实体机到保护虚拟机，这是数据保护和容灾的一个转折点。Acronis如今已经可以提供包括实体机、虚拟机以及云端在内的数据保护和容灾解决方案。&amp;rdquo;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;未来，Acronis将提供统一的数据保护平台，包含磁盘存储、归档、虚拟环境，甚至包含对邮件服务器和数据库的保护等。通过这个平台，用户可以实现数据的集中备份、管理以及分发，同时还可以实现数据在磁盘、磁带和云端之间的转移。&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;ldquo;我们建议，中小企业目前可以实体机保护为主，未来再视情况将数据保护扩展到虚拟化平台上。&amp;rdquo;简硕文表示。&lt;/span&gt;&lt;br /&gt;&lt;span&gt;2011年9月，Acronis公司正式进军中国市场。Acronis公司最新推出的Backup &amp;amp;Recovery 11是一套价格实惠的集成式灾难恢复与数据保护解决方案。它既可以针对物理服务器和虚拟机提供数据保护，又可以提供安全的远程存储，让IT管理者通过一套统一的平台简化作业，从而节省数据保护和容灾的费用。&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Acronis Backup &amp;amp;Recovery 11最突出的优势在于，能以单个解决方案同时提供灾难恢复与数据保护功能。&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;strong&gt;云灾备是必然趋势&lt;br /&gt;&lt;/strong&gt;&lt;span&gt;在《中国计算机报》评出的&amp;ldquo;2011业务连续性管理十大样板工程&amp;rdquo;中，金融和电信两个行业的案例占了一半。此外，我们也看到，像政府、制造、互联网等行业的用户也越来越重视容灾的建设。&lt;/span&gt;&lt;br /&gt;&lt;span&gt;以东风汽车有限公司(以下简称东风汽车)SAP业务系统备份及容灾项目为例，东风汽车充分考虑到自身的实际需求，并结合昆腾的磁盘备份和重复数据删除技术，实现了异地容灾。&lt;/span&gt;&lt;br /&gt;&lt;span&gt;容灾的技术核心是冗余，一个设备坏了，另外一个设备可以顶上来。在云计算环境中存在着大量的服务器、存储等资源，这种容错式的设计为容灾的实施提供了物理设施上的保障。应用于云计算环境中的集中式管理和虚拟化技术，使得容灾的实施变得更加简单。&lt;/span&gt;&lt;br /&gt;&lt;span&gt;今天，我们已经看到许多国内外的厂商开始提供云备份服务。用户如果采用云备份服务，只要借助一个软件，就可以将本地的数据备份到云中，在进行数据恢复的时候，不仅可以把数据恢复到本地，而且可以恢复到云中的其他地方。&lt;/span&gt;&lt;br /&gt;&lt;span&gt;灾备国家工程实验室总工姚文斌表示：&amp;ldquo;云灾备大大降低了灾备的门槛。未来，云灾备必将得到更广泛的应用，而且将成为云环境的基本功能。&amp;rdquo;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;strong&gt;如何找到适合自己的容灾方案&lt;br /&gt;&lt;/strong&gt;&lt;span&gt;根据容灾等级的不同，容灾方案可以分成许多种类。用户究竟该如何选择呢？&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;strong&gt;架构的变革&lt;br /&gt;&lt;/strong&gt;&lt;span&gt;现在市场上大多数存储产品的架构都是基于十年前的用户需求设计的，很难满足云计算、虚拟化和大数据的应用需求。在云计算时代，无论是中端存储产品，还是高端存储产品，其架构的改变是一种必然趋势。传统的高端存储性能非常高，可操作性强，但是这样的产品未必适合云计算的应用。以云服务商为例，它们需要的存储平台是可以灵活伸缩的、能够按需购买和按需配置的。网状式或矩阵式的存储控制器架构既能满足用户对性能的要求，又具有很高的灵活性，HP 3PAR云存储系统就采用了这样的架构。&lt;/span&gt;&lt;br /&gt;&lt;span&gt;惠普公司资深技术顾问张楠表示：&amp;ldquo;许多用户已经慢慢接受了云存储。云存储具有高可靠性，非常适合应用于容灾。举例来说，传统高端存储的某一个部件如果出现故障，系统的缓存功能就会被关闭，那么整个系统的性能就会大打折扣。HP 3PAR云存储系统采用8个控制器，即使其中的某个节点出现故障，也不会影响整个系统的性能和可靠性。&amp;rdquo;2011年9月，惠普推出了HP P10000 3PAR存储系统以及Peer Motion存储软件，使得客户可以在虚拟化和云计算环境中的磁盘系统之间实现应用负载的转移及监控。&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;制定一个明确的策略&lt;br /&gt;&lt;/strong&gt;&lt;span&gt;&amp;ldquo;容灾分成不同的等级，不可能一步到位。一个成熟的客户应该制定一个长期的容灾发展战略。&amp;rdquo;日立数据系统(HDS)资深解决方案顾问谢勇介绍说，&amp;ldquo;通常，一个客户在实施容灾之前，一定要将服务器、存储、应用等进行整合，并且对数据、应用和管理流程进行梳理。&amp;rdquo;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;制定一个科学、明确的容灾策略是容灾取得成功的关键。很多企业在做容灾之前根本没有规划，从而导致最终结果与当初的设想有天壤之别。&lt;/span&gt;&lt;br /&gt;&lt;span&gt;谢勇建议说：&amp;ldquo;容灾既可以做同城或异地的，也可以做同步或异步的，甚至可以做成两地多个中心的方式。不同的容灾方案成本不同，实施和维护的复杂度也不同。企业在构建容灾系统之前一定要明确哪些功能是需要的，采用哪种技术能解决什么样的问题。&amp;rdquo;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;现在，两地三中心的容灾架构是主流，很多银行都采用了这种架构。两地三中心的容灾架构主要有级联和多目标两种方式。级联方式比较复杂，采用的人较少。多目标容灾架构的容灾能力最强，其同步RPO(恢复点目标)值接近于零。用户可以根据自己的需求、资金状况等选择适合自己的容灾架构。&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;strong&gt;灵活运用新技术&lt;br /&gt;&lt;/strong&gt;&lt;span&gt;今年日本发生的大地震也影响到了IBM位于日本东京附近的实验室，实验室中的很多设备倒下或倾斜。因为所有设备都采用了防地震套件，并经过特别的加固处理，所以在恢复后，所有关键数据都没有丢失。IBM系统与科技部高端存储产品经理庞文峥介绍说：&amp;ldquo;IBM可以提供从最简单的磁带容灾到两地三中心的全面容灾方案，帮助用户实现业务的连续运转。&amp;rdquo;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;如今，许多新技术都被应用到容灾系统中，比如虚拟化、云存储等。IBM刚刚发布了基于云的存储引擎，它采用以太网接口，可以实现基于云存储的多节点分布，最多可以包含30个节点，这些节点在物理上是完全分开的。庞文峥介绍说：&amp;ldquo;通过相应的软件，我们可以保证数据在不同的节点之间自由流转，并可以对所有节点实施层次化的管理，从而实现数据自动更新。&amp;rdquo;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;ldquo;一个容灾系统是否成功，硬件和技术的因素只占40%，更重要的是相关的管理。&amp;rdquo;庞文峥总结说，&amp;ldquo;企业如果想选择一个适合自己的容灾方案，首先要明确业务连续性系统的建设目标，其次要实现数据的集中和IT架构的整合与简化，最后要制定详细的业务连续性计划，包括组织、人员以及执行等方面的问题。&amp;rdquo;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;strong&gt;可靠性是第一位的&lt;br /&gt;&lt;/strong&gt;&lt;span&gt;实施容灾的一个重要前提是建立一个高效、可靠的灾备中心。在灾备中心里，除了服务器、存储、网络等IT设备以外，机房的物理基础设施，包括供配电、制冷、监控等也十分重要。由于机房空间日益紧张，能源消耗越来越大，提高机房的效率，特别是制冷效率对用户来说是一个严峻的挑战。&lt;/span&gt;&lt;br /&gt;&lt;span&gt;捷联克莱门特数据中心空调节能事业部经理郝凤云表示：&amp;ldquo;近几年来，数据中心大型化的趋势越来越明显。为提高数据中心的制冷效率，空调系统也发生了巨大的变化。在冷源方面，捷联克莱门特有一些独特的技术。比如，我们在2003年就推出了第一台磁悬浮冷水机组。磁悬浮冷水机组采用变频两极压缩，其效率比常规的离心机更高，可以更好地节省能源。&amp;rdquo;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;对于灾备中心来说，可靠性是第一位的。高效的冷却系统可以避免设备因过热而宕机。世纪互联、北京市计算中心等都采用了捷联克莱门特的冷却系统。在现代化的数据中心里，基于模块化理念的一体化机房解决方案已成为主流。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/SuperXJ/aggbug/2506214.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/SuperXJ/archive/2012/05/17/2506214.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/SuperXJ/archive/2012/05/16/2503616.html</id><title type="text">PaaS, IaaS 和SaaS的区别</title><summary type="text">云服务”现在已经快成了一个家喻户晓的词了。如果你不知道PaaS, IaaS 和SaaS的区别，那么也没啥，因为很多人确实不知道。“云”其实是互联网的一个隐喻，“云计算”其实就是使用互联网来接入存储或者运行在远程服务器端的应用，数据，或者服务。任何一个使用基于互联网的方法来计算，存储和开发的公司，都可以从技术上叫做从事云的公司。然而，不是所有的云公司都一样。不是所有人都是CTO，所以有时候看到云技术背后的一些词可能会比较头疼。云也是分层的任何一个在互联网上提供其服务的公司都可以叫做云计算公司。其实云计算分几层的，分别是Infrastructure（基础设施）-as-a- Service，Plat</summary><published>2012-05-16T03:11:00Z</published><updated>2012-05-16T03:11:00Z</updated><author><name>sylar_xj</name><uri>http://www.cnblogs.com/SuperXJ/</uri></author><link rel="alternate" href="http://www.cnblogs.com/SuperXJ/archive/2012/05/16/2503616.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/SuperXJ/archive/2012/05/16/2503616.html"/><content type="html">&lt;p&gt;云服务&amp;rdquo;现在已经快成了一个家喻户晓的词了。如果你不知道PaaS, IaaS 和&lt;a href="http://www.wangdanyi.com/" target="_blank"&gt;SaaS&lt;/a&gt;的区别，那么也没啥，因为很多人确实不知道。&lt;/p&gt;&lt;p&gt;&amp;ldquo;云&amp;rdquo;其实是互联网的一个隐喻，&amp;ldquo;云计算&amp;rdquo;其实就是使用互联网来接入存储或者运行在远程服务器端的应用，数据，或者服务。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;任何一个使用基于互联网的方法来计算，存储和开发的公司，都可以从技术上叫做从事云的公司。然而，不是所有的云公司都一样。不是所有人都是CTO，所以有时候看到云技术背后的一些词可能会比较头疼。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;云也是分层的&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;任何一个在互联网上提供其服务的公司都可以叫做云计算公司。其实云计算分几层的，分别是Infrastructure（基础设施）-as-a- Service，Platform（平台）-as-a-Service，Software（软件）-as-a-Service。基础设施在最下端，平台在 中间，软件在顶端。别的一些&amp;ldquo;软&amp;rdquo;的层可以在这些层上面添加。&lt;/p&gt;&lt;p&gt;&lt;a href="http://ych.u1city.com/UserFiles/20111122/iaas-paas-saas.jpg" target="_blank"&gt;&lt;img class="aligncenter size-full wp-image-52202" title="iaas-paas-saas" src="http://ych.u1city.com/UserFiles/20111122/iaas-paas-saas.jpg" alt="" width="600" height="412" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;strong&gt;IaaS: Infrastructure-as-a-Service（基础设施即服务）&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;第一层叫做IaaS，有时候也叫做Hardware-as-a-Service，几年前如果你想在办公室或者公司的网站上运行一些企业应用，你需要去买服务器，或者别的高昂的硬件来控制本地应用，让你的业务运行起来。&lt;/p&gt;&lt;p&gt;但是现在有IaaS，你可以将硬件外包到别的地方去。IaaS公司会提供场外服务器，存储和网络硬件，你可以租用。节省了维护成本和办公场地，公司可以在任何时候利用这些硬件来运行其应用。&lt;/p&gt;&lt;p&gt;一些大的IaaS公司包括Amazon, Microsoft, VMWare, Rackspace和Red Hat.不过这些公司又都有自己的专长，比如Amazon和微软给你提供的不只是IaaS，他们还会将其计算能力出租给你来host你的网站。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;PaaS: Platform-as-a-Service（平台即服务）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;第二层就是所谓的PaaS，某些时候也叫做中间件。你公司所有的开发都可以在这一层进行，节省了时间和资源。&lt;/p&gt;&lt;p&gt;PaaS公司在网上提供各种开发和分发应用的解决方案，比如虚拟服务器和操作系统。这节省了你在硬件上的费用，也让分散的工作室之间的合作变得更加容易。网页应用管理，应用设计，应用虚拟主机，存储，安全以及应用开发协作工具等。&lt;/p&gt;&lt;p&gt;一些大的PaaS提供者有Google App Engine,Microsoft Azure，Force.com,Heroku，Engine Yard。最近兴起的公司有AppFog,&amp;nbsp;Mendix 和&amp;nbsp;Standing Cloud&lt;/p&gt;&lt;p&gt;&lt;strong&gt;SaaS:&amp;nbsp;&lt;a href="http://www.wangdanyi.com/" target="_blank"&gt;Software-as-a-Service&lt;/a&gt;（软件即服务）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;第三层也就是所谓SaaS。这一层是和你的生活每天接触的一层，大多是通过网页浏览器来接入。任何一个远程服务器上的应用都可以通过网络来运行，就是SaaS了。&lt;/p&gt;&lt;p&gt;你消费的服务完全是从网页如Netflix, MOG, Google Apps, Box.net, Dropbox或者苹果的iCloud那里进入这些分类。尽管这些网页服务是用作商务和娱乐或者两者都有，但这也算是云技术的一部分。&lt;/p&gt;&lt;p&gt;一些用作商务的SaaS应用包括Citrix的GoToMeeting，Cisco的WebEx，Salesforce的CRM，ADP，Workday和SuccessFactors。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/SuperXJ/aggbug/2503616.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/SuperXJ/archive/2012/05/16/2503616.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/SuperXJ/archive/2012/05/07/2488188.html</id><title type="text">数据复制技术</title><summary type="text">数据复制分为三块， 分别是存储层 数据库层 和 应用层的数据复制技术。其中存储层有EMC VPLEX 这个技术可以和vmware结合。实现的就是存储层面的虚拟化，2地存储通过FC完成同步操作，对2地的应用提供统一的数据服务。vplex实现同步复制的条件是100km以内。goldendate 和 CDC 是实现了数据库层面的复制 goldendata是开放平台 CDC是大机技术。 另外goldendate的竞争对手有shareplex .. 不过它只支持Oracle其中 golden date 为开放平台使用 CDC为IBM大机使用应用层的复制技术：</summary><published>2012-05-07T11:02:00Z</published><updated>2012-05-07T11:02:00Z</updated><author><name>sylar_xj</name><uri>http://www.cnblogs.com/SuperXJ/</uri></author><link rel="alternate" href="http://www.cnblogs.com/SuperXJ/archive/2012/05/07/2488188.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/SuperXJ/archive/2012/05/07/2488188.html"/><content type="html">&lt;p&gt;数据复制分为三块， 分别是存储层 数据库层 和 应用层的数据复制技术。&lt;/p&gt;&lt;p&gt;其中存储层有EMC VPLEX 这个技术可以和vmware结合。实现的就是存储层面的虚拟化，2地存储通过FC完成同步操作，对2地的应用提供统一的数据服务。&lt;/p&gt;&lt;p&gt;vplex实现同步复制的条件是100km以内。&lt;/p&gt;&lt;p&gt;goldendate 和 CDC 是实现了数据库层面的复制 &amp;nbsp; goldendata是开放平台 &amp;nbsp;CDC是大机技术。 &amp;nbsp;另外goldendate的竞争对手有shareplex .. 不过它只支持Oracle&lt;/p&gt;&lt;p&gt;其中 golden date 为开放平台使用 &amp;nbsp;CDC为IBM大机使用&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;应用层的复制技术：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/SuperXJ/aggbug/2488188.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/SuperXJ/archive/2012/05/07/2488188.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/SuperXJ/archive/2012/03/16/2399856.html</id><title type="text">crontab是不认识profile的</title><summary type="text">写了一个shell脚本，手动执行有效，在crontab中执行却没有效果最后发现貌似是环境变量的问题。脚本如下：#!/bin/sh#this is a script to control the message of mail##########################. /etc/profile. ~/.bash_profile##########################sum=`/usr/sbin/postqueue -p |wc -l`if [[ $sum -gt 100 ]]then /usr/sbin/postqueue -p | awk '/cs_0105@q</summary><published>2012-03-16T02:46:00Z</published><updated>2012-03-16T02:46:00Z</updated><author><name>sylar_xj</name><uri>http://www.cnblogs.com/SuperXJ/</uri></author><link rel="alternate" href="http://www.cnblogs.com/SuperXJ/archive/2012/03/16/2399856.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/SuperXJ/archive/2012/03/16/2399856.html"/><content type="html">&lt;p&gt;写了一个shell脚本，手动执行有效，在crontab中执行却没有效果&lt;/p&gt;&lt;p&gt;最后发现貌似是环境变量的问题。&lt;/p&gt;&lt;p&gt;脚本如下：&lt;/p&gt;&lt;p&gt;#!/bin/sh&lt;br /&gt;#this is a script to control the message of mail&lt;br /&gt;##########################&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;. /etc/profile&lt;br /&gt;. ~/.bash_profile&lt;/span&gt;&lt;br /&gt;##########################&lt;br /&gt;&lt;br /&gt;sum=`/usr/sbin/postqueue -p |wc -l`&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if [[ $sum -gt 100 ]]&lt;br /&gt;then &lt;br /&gt;/usr/sbin/postqueue -p | awk '/cs_0105@qingfeng.com/ {print $1}' | tr -d '*' | xargs -n 1 postsuper -d&lt;br /&gt;&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;exit 0&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;在crontab中写：00 07,09 * * * &lt;span style="color: #ff0000;"&gt;source ~/.bashrc&lt;/span&gt; &amp;amp;&amp;amp; cd /home/zhuo &amp;amp;&amp;amp; ./mailctrl.sh &amp;amp;&amp;gt; /dev/null&lt;/p&gt;&lt;p&gt;加入红色字体后生效，具体可参考：http://www.justwinit.cn/post/3377/&lt;/p&gt;&lt;p&gt;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;关 于登录linux时，/etc/profile、~/.bash_profile等几个文件的执行过程。 在登录Linux时要执行文件的过程如下： 在刚登录Linux时，首先启动 /etc/profile 文件，然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个，执行的顺序为：~/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的话，一般还会执行 ~&lt;br /&gt;&lt;br /&gt;关于登录linux时，/etc/profile、~/.bash_profile等几个文件的执行过程。&lt;br /&gt;&lt;br /&gt;在登录Linux时要执行文件的过程如下：&lt;br /&gt;&lt;br /&gt;在 刚登录Linux时，首先启动 /etc/profile 文件，然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个，执行的顺序为：~/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的话，一般还会执行 ~/.bashrc文件。因为在 ~/.bash_profile文件中一般会有下面的代码：&lt;br /&gt;&lt;br /&gt;if [ -f ~/.bashrc ] ; then&lt;br /&gt;&lt;br /&gt;. ./bashrc&lt;br /&gt;&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;~/.bashrc中，一般还会有以下代码：&lt;br /&gt;&lt;br /&gt;if [ -f /etc/bashrc ] ; then&lt;br /&gt;&lt;br /&gt;. /bashrc&lt;br /&gt;&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;所以，~/.bashrc会调用 /etc/bashrc文件。最后，在退出shell时，还会执行 ~/.bash_logout文件。&lt;br /&gt;&lt;br /&gt;执行顺序为：/etc/profile -&amp;gt; (~/.bash_profile | ~/.bash_login | ~/.profile) -&amp;gt; ~/.bashrc -&amp;gt; /etc/bashrc -&amp;gt; ~/.bash_logout&lt;br /&gt;&lt;br /&gt;关于各个文件的作用域，在网上找到了以下说明：&lt;br /&gt;&lt;br /&gt;（1）/etc/profile： 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。&lt;br /&gt;&lt;br /&gt;（2）/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。&lt;br /&gt;&lt;br /&gt;（3）~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。&lt;br /&gt;&lt;br /&gt;（4）~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。&lt;br /&gt;&lt;br /&gt;（5）~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。&lt;br /&gt;&lt;br /&gt;（6）~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同，所以通常前者会调用后者。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/SuperXJ/aggbug/2399856.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/SuperXJ/archive/2012/03/16/2399856.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/SuperXJ/archive/2012/03/12/2391345.html</id><title type="text">HP unix 常用管理命令</title><summary type="text">HP-UX的硬盘资源的逻辑卷管理HP－UX管理硬盘存储资源是采用逻辑卷方式来进行管理的，要说清整个机制，先要介绍几个概念：物理卷PhysicalVolume，称为PV：指物理上硬盘，一个硬盘就是一个PV. 逻辑卷组LogicalVolumeGroup，称为VG：一个VG包含整数个PV，可理解为一个大硬盘。逻辑卷LogicalVolume，称为LV：相当于对大硬盘进行逻辑分区，一个VG里可有若干个LV。文件系统FileSystem：在逻辑卷的基础上，可建立文件系统，然后MOUNT到一个目录下，这样就可以文件存取的方式来使用这块硬盘了。当然，您也可以不建文件系统，而直接把LV当作裸设备，以TRUN</summary><published>2012-03-12T02:08:00Z</published><updated>2012-03-12T02:08:00Z</updated><author><name>sylar_xj</name><uri>http://www.cnblogs.com/SuperXJ/</uri></author><link rel="alternate" href="http://www.cnblogs.com/SuperXJ/archive/2012/03/12/2391345.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/SuperXJ/archive/2012/03/12/2391345.html"/><content type="html">&lt;div class="Section0"&gt;&lt;p class="p0"&gt;HP-UX的硬盘资源的逻辑卷&lt;a href="http://www.cnblogs.com/SuperXJ/admin/"&gt;管理&lt;/a&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;HP－UX管理硬盘存储资源是采用逻辑卷方式来进行管理的，要说清整个机制，先要介绍几个概念：&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;物理卷Physical&amp;nbsp;Volume，称为PV：指物理上硬盘，一个硬盘就是一个PV. 逻辑卷组&amp;nbsp;Logical&amp;nbsp;Volume&amp;nbsp;Group，称为VG：一个VG包含整数个PV，可理解为一个大硬盘。&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;逻辑卷&amp;nbsp;Logical&amp;nbsp;Volume，称为LV：相当于对大硬盘进行逻辑分区，&amp;nbsp;一个VG里可有若干个LV。&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;文件系统&amp;nbsp;File&amp;nbsp;System：在逻辑卷的基础上，可建立文件系统，然后&amp;nbsp;MOUNT到一个目录下，这样就可以文件存取的方式来使用这块硬盘了。&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;当然，您也可以不建文件系统，而直接把LV当作裸设备，以TRUNK方式来存取数据，许多&lt;a href="http://www.cnblogs.com/SuperXJ/admin/"&gt;数据库&lt;/a&gt;都是用这种方式存取数据。&lt;/p&gt;&lt;p class="p0"&gt;根据以上介绍，在HPUX下正确使用硬盘的顺序及相应命令如下：&lt;/p&gt;&lt;p class="p0"&gt;1.&amp;nbsp;先建物理卷：&lt;br /&gt;#&amp;nbsp;pvcreate&amp;nbsp;-f&amp;nbsp;/dev/rdsk/cCdDtT&lt;br /&gt;这里必须使用硬盘的字符设备文件&lt;/p&gt;&lt;p class="p0"&gt;2.&amp;nbsp;再建逻辑卷组：&lt;br /&gt;#&amp;nbsp;mkdir&amp;nbsp;/dev/vg0X&amp;nbsp;X：0～f，逻辑卷组名&lt;br /&gt;#&amp;nbsp;mknod&amp;nbsp;/dev/vg0X/group&amp;nbsp;c&amp;nbsp;64&amp;nbsp;0x0X0000&lt;br /&gt;#&amp;nbsp;vgcreate&amp;nbsp;vg0X&amp;nbsp;/dev/dsk/cCdDtT&lt;/p&gt;&lt;p class="p0"&gt;3.&amp;nbsp;然后划分逻辑卷：&lt;br /&gt;#&amp;nbsp;lvcreate&amp;nbsp;-L&amp;nbsp;size&amp;nbsp;vg0X&amp;nbsp;size：该逻辑卷大小&lt;/p&gt;&lt;p class="p0"&gt;4.&amp;nbsp;在LV上建文件系统：&lt;br /&gt;#&amp;nbsp;newfs&amp;nbsp;-F&amp;nbsp;file_system_type&amp;nbsp;/dev/vg0X/rlvolY&lt;br /&gt;file_system_type：文件系统类型，包括hfs和vxfs，注意此时用该逻辑卷的字符设备文件。&lt;/p&gt;&lt;p class="p0"&gt;5.&amp;nbsp;将此文件系统Mount到一个目录下：&lt;br /&gt;#&amp;nbsp;mkdir&amp;nbsp;/directory&lt;br /&gt;#&amp;nbsp;mount&amp;nbsp;/dev/vg0X/lvolY&amp;nbsp;/directory&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;到此为止，您已经可以使用这个硬盘了。有时您可能在现有的环境下，需要添加、删除逻辑卷，或者是需要扩大文件系统。我们可以这样做：&lt;/p&gt;&lt;p class="p0"&gt;6.&amp;nbsp;添加逻辑卷&lt;br /&gt;1)&amp;nbsp;添加文件系统卷。例如：在vg01上添加一个200M的文件系统卷，卷名为data，mount到目录/sample&amp;nbsp;上。&lt;br /&gt;A、创建逻辑卷，在系统提示符下键入命令：&lt;br /&gt;#&amp;nbsp;lvcreate&amp;nbsp;-L&amp;nbsp;200&amp;nbsp;-n&amp;nbsp;data&amp;nbsp;/dev/vg01&lt;br /&gt;B、在逻辑卷data上创建文件系统：&lt;br /&gt;#&amp;nbsp;newfs&amp;nbsp;-F&amp;nbsp;hfs&amp;nbsp;/dev/vg01/rdata&lt;br /&gt;注：如果是vxfs文件系统，则用&lt;br /&gt;#&amp;nbsp;newfs&amp;nbsp;-F&amp;nbsp;vxfs&amp;nbsp;/dev/vg01/rdata&lt;br /&gt;C、创建目录/sample，并将逻辑卷data&amp;nbsp;mount&amp;nbsp;到/sample.&lt;br /&gt;#&amp;nbsp;mkdir&amp;nbsp;sample"&lt;br /&gt;#&amp;nbsp;mount&amp;nbsp;/dev/vg01/data&amp;nbsp;/sample&lt;br /&gt;D、用bdf命令，将会看到/dev/vg01/data&amp;nbsp;mount&amp;nbsp;到&amp;nbsp;/sample上。&lt;br /&gt;2)&amp;nbsp;添加非文件系统卷（raw&amp;nbsp;data&amp;nbsp;volume）。例同上。&lt;br /&gt;A、创建逻辑卷，在系统提示符下键入命令：&lt;br /&gt;#&amp;nbsp;lvcreate&amp;nbsp;-L&amp;nbsp;200&amp;nbsp;-n&amp;nbsp;data&amp;nbsp;/dev/vg01&lt;br /&gt;B、创建目录/sample，并将逻辑卷data&amp;nbsp;mount&amp;nbsp;到/sample.&lt;br /&gt;#&amp;nbsp;mkdir&amp;nbsp;sample&lt;br /&gt;#&amp;nbsp;mount&amp;nbsp;/dev/vg01/data&amp;nbsp;/sample&lt;br /&gt;C、用bdf命令，将会看到/dev/vg01/data&amp;nbsp;mount&amp;nbsp;到&amp;nbsp;/sample上。&lt;/p&gt;&lt;p class="p0"&gt;7.&amp;nbsp;删除逻辑卷&lt;br /&gt;例如：删除&amp;nbsp;vg01&amp;nbsp;中名为&amp;nbsp;data&amp;nbsp;的逻辑卷，mount&amp;nbsp;到/sample。&lt;br /&gt;1)&amp;nbsp;卸载所要删除的逻辑卷：&lt;br /&gt;A、首先用&amp;nbsp;umount&amp;nbsp;命令将逻辑卷&amp;nbsp;data&amp;nbsp;从/sample上卸载下来：&lt;br /&gt;#&amp;nbsp;umount&amp;nbsp;/sample&lt;br /&gt;B、若系统提示设备忙，不能卸载；则在根目录系统提示符下，键入以下命令，进入单用户：&lt;br /&gt;#&amp;nbsp;shutdown&amp;nbsp;-y&amp;nbsp;0&lt;br /&gt;在单用户下，先将所有逻辑卷mount上，键入命令：&lt;br /&gt;#&amp;nbsp;mount&amp;nbsp;-a&lt;br /&gt;用bdf命令看该逻辑卷是否已经mount上，如果mount上，键入以下命令：&lt;br /&gt;#&amp;nbsp;umount&amp;nbsp;/sample&lt;br /&gt;2)&amp;nbsp;删除逻辑卷&amp;nbsp;/dev/vg01/data&amp;nbsp;，用命令：&lt;br /&gt;#&amp;nbsp;lvremove&amp;nbsp;/dev/vg01/data&lt;/p&gt;&lt;p class="p0"&gt;8.&amp;nbsp;扩大文件系统&lt;br /&gt;1)&amp;nbsp;扩大文件系统，首先要找到这个文件系统所对应的逻辑卷，只有首先扩大逻辑卷，给文件系统以扩大的空间，才能扩大文件系统。&lt;br /&gt;2)&amp;nbsp;为扩大逻辑卷，先进单用户，在根目录系统提示符下，键入命令：&lt;br /&gt;#&amp;nbsp;shutdown&amp;nbsp;-y&amp;nbsp;0&lt;br /&gt;3)&amp;nbsp;进入单用户后，先将所有文件系统mount上，键入命令：&lt;br /&gt;#&amp;nbsp;mount&amp;nbsp;-a&lt;br /&gt;4)&amp;nbsp;用bdf命令看该文件系统是否已经mount上，如果mount上，用命令&amp;nbsp;#umount文件系统名umount该文件系统。例如，想要扩大"/usr"到500M&amp;nbsp;,就键入命令：&lt;br /&gt;#&amp;nbsp;umount&amp;nbsp;/usr&lt;br /&gt;5)&amp;nbsp;用命令：&lt;br /&gt;#&amp;nbsp;lvextend&amp;nbsp;-L&amp;nbsp;500&amp;nbsp;/dev/vg00/lvol4&lt;br /&gt;这里，假定&amp;nbsp;/usr&amp;nbsp;对应&amp;nbsp;/dev/vg00/lvol4&lt;br /&gt;6)&amp;nbsp;用命令：&lt;br /&gt;#&amp;nbsp;extendfs&amp;nbsp;/dev/vg00/lvol4&amp;nbsp;扩大文件系统。&lt;br /&gt;注：如果是vxfs文件系统，则用&lt;br /&gt;#&amp;nbsp;extendfs&amp;nbsp;-F&amp;nbsp;vxfs&amp;nbsp;/dev/vg00/lvol4&lt;br /&gt;7)&amp;nbsp;用命令：&lt;br /&gt;#&amp;nbsp;mount&amp;nbsp;/dev/vg00/lvol4&amp;nbsp;/usr&lt;br /&gt;将文件系统&amp;nbsp;mount&amp;nbsp;到&amp;nbsp;/usr&lt;br /&gt;这样，文件系统"/usr"就被扩大了，&lt;br /&gt;8)&amp;nbsp;用命令：&lt;br /&gt;#&amp;nbsp;init&amp;nbsp;3&amp;nbsp;进入原来多用户运行级。&lt;/p&gt;&lt;p class="p0"&gt;UNIX&amp;nbsp;的文件系统&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UNIX的文件系统是树状结构，一般指在一个逻辑卷上的文件的集合。从根开始，从表面上看，文件系统好象是一个整体，但实际上，文件系统可以分成不同的部分，单独占据一块逻辑卷，就是一个文件系统。&lt;/p&gt;&lt;p class="p0"&gt;十一、怎样更改hostname,IP地址等？&lt;/p&gt;&lt;p class="p0"&gt;答：&lt;br /&gt;#set_parms&amp;nbsp;&amp;lt;argument&amp;gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;lt;argument&amp;gt;可以是以下各项：&lt;br /&gt;hostname&lt;span style="font-family: 宋体;"&gt;（更改主机名）&lt;/span&gt;&lt;br /&gt;ip_address（更改IP地址）&lt;/p&gt;&lt;p class="p0"&gt;怎样查看系统中安装了什么软件？&lt;/p&gt;&lt;p class="p0"&gt;答：查看系统中所安装的软件，我们可以用命令：&lt;/p&gt;&lt;p class="p0"&gt;#&amp;nbsp;swlist&lt;/p&gt;&lt;p class="p0"&gt;超级用户忘了密码怎么办？&lt;/p&gt;&lt;p class="p0"&gt;*重起机器，自检完成后，会出现这一行&amp;ldquo;To&amp;nbsp;discontinue,&amp;nbsp;press&amp;nbsp;any&amp;nbsp;key&amp;nbsp;in&amp;nbsp;10&amp;nbsp;seconds&amp;rdquo;,这时你按任意键，系统会中止启动,进入Main&amp;nbsp;Menu.&lt;/p&gt;&lt;p class="p0"&gt;*键入&amp;ldquo;bo&amp;rdquo;,在系统询问&amp;ldquo;Interact&amp;nbsp;with&amp;nbsp;IPL&amp;nbsp;(Y&amp;nbsp;or&amp;nbsp;N?)?&amp;rdquo;,输入&amp;ldquo;y&amp;rdquo;。&lt;/p&gt;&lt;p class="p0"&gt;*在提示符ISL&amp;gt;后，输入&amp;ldquo;hpux&amp;nbsp;-&amp;nbsp;is&amp;rdquo;,系统进入单用户状态。&lt;/p&gt;&lt;p class="p0"&gt;*键入&amp;ldquo;passwd&amp;rdquo;,然后输入新的密码。&lt;/p&gt;&lt;p class="p0"&gt;*键入&amp;ldquo;init&amp;nbsp;3&amp;rdquo;,恢复系统正常运行。&lt;/p&gt;&lt;p class="p0"&gt;怎样添加、删除逻辑卷&lt;/p&gt;&lt;p class="p0"&gt;1.添加逻辑卷&lt;/p&gt;&lt;p class="p0"&gt;1)添加文件系统卷。例如：在vg01上添加一个200M的文件系统卷，卷名为data，mount到目录/sample上。&lt;/p&gt;&lt;p class="p0"&gt;A.创建逻辑卷，在系统提示符下键入命令：&lt;br /&gt;"&amp;nbsp;lvcreate&amp;nbsp;-L&amp;nbsp;200&amp;nbsp;-n&amp;nbsp;data&amp;nbsp;/dev/vg01"&lt;/p&gt;&lt;p class="p0"&gt;B.在逻辑卷data上创建文件系统：&lt;br /&gt;"&amp;nbsp;newfs&amp;nbsp;-F&amp;nbsp;hfs&amp;nbsp;/dev/vg01/rdata"&lt;br /&gt;注：如果是vxfs文件系统，则用"&amp;nbsp;newfs&amp;nbsp;-F&amp;nbsp;vxfs&lt;br /&gt;/dev/vg01/rdata"&lt;/p&gt;&lt;p class="p0"&gt;C.创建目录/sample，并将逻辑卷data&amp;nbsp;mount到/sample.&lt;br /&gt;"&amp;nbsp;mkdir&amp;nbsp;sample"&lt;br /&gt;"&amp;nbsp;mount&amp;nbsp;/dev/vg01/data&amp;nbsp;/sample"&lt;/p&gt;&lt;p class="p0"&gt;D.用bdf命令，将会看到/dev/vg01/data&amp;nbsp;mount到/sample上。&lt;/p&gt;&lt;p class="p0"&gt;2)添加非文件系统卷（raw&amp;nbsp;data&amp;nbsp;volume）。例同上。&lt;/p&gt;&lt;p class="p0"&gt;A.创建逻辑卷，在系统提示符下键入命令：&lt;br /&gt;"&amp;nbsp;lvcreate&amp;nbsp;-L&amp;nbsp;200&amp;nbsp;-n&amp;nbsp;data&amp;nbsp;/dev/vg01"&lt;/p&gt;&lt;p class="p0"&gt;B.创建目录/sample，并将逻辑卷data&amp;nbsp;mount到/sample.&lt;br /&gt;"&amp;nbsp;mkdir&amp;nbsp;sample"&lt;br /&gt;"&amp;nbsp;mount&amp;nbsp;/dev/vg01/data&amp;nbsp;/sample"&lt;/p&gt;&lt;p class="p0"&gt;C.用bdf命令，将会看到/dev/vg01/data&amp;nbsp;mount到/sample上。&lt;/p&gt;&lt;p class="p0"&gt;2.删除逻辑卷&lt;/p&gt;&lt;p class="p0"&gt;例如：删除vg01中名为data的逻辑卷，mount到/sample.&lt;/p&gt;&lt;p class="p0"&gt;1)卸载所要删除的逻辑卷：&lt;br /&gt;A.首先用umount命令将逻辑卷data从/sample上卸载下来：&lt;br /&gt;"&amp;nbsp;umount&amp;nbsp;/sample"&lt;/p&gt;&lt;p class="p0"&gt;B.若系统提示设备忙，不能卸载；则在根目录系统提示符下，键入以&lt;br /&gt;下命令，进入单用户：&lt;br /&gt;"&amp;nbsp;shutdown&amp;nbsp;-y&amp;nbsp;0"&lt;br /&gt;在单用户下，先将所有逻辑卷mount上，键入命令：&lt;br /&gt;"&amp;nbsp;mount&amp;nbsp;-a&amp;nbsp;"&lt;br /&gt;用bdf命令看该逻辑卷是否已经mount上，如果mount上，键入以下命令：&lt;br /&gt;"&amp;nbsp;umount&amp;nbsp;/sample"&lt;/p&gt;&lt;p class="p0"&gt;2)删除逻辑卷/dev/vg01/data，用命令：&lt;br /&gt;"&amp;nbsp;lvremove&amp;nbsp;/dev/vg01/data"&lt;/p&gt;&lt;p class="p0"&gt;用什么命令能够看到主机中的网络设备？&lt;/p&gt;&lt;p class="p0"&gt;用lanscan命令查看主机中的网卡。例如：&lt;br /&gt;#&amp;nbsp;lanscan&lt;br /&gt;Hardware&amp;nbsp;Station&amp;nbsp;Crd&amp;nbsp;Hdw&amp;nbsp;Net-Interface&amp;nbsp;NM&amp;nbsp;MAC&amp;nbsp;HP-DLPI&amp;nbsp;DLPI&lt;br /&gt;Path&amp;nbsp;Address&amp;nbsp;In#&amp;nbsp;State&amp;nbsp;NamePPA&amp;nbsp;ID&amp;nbsp;&lt;a href="http://www.cnblogs.com/SuperXJ/admin/"&gt;Type&lt;/a&gt;&amp;nbsp;Support&amp;nbsp;Mjr#&lt;br /&gt;10/4/8&amp;nbsp;0x00108318E6E8&amp;nbsp;0&amp;nbsp;UP&amp;nbsp;lan0&amp;nbsp;snap0&amp;nbsp;1&amp;nbsp;ETHER&amp;nbsp;Yes&amp;nbsp;119&lt;br /&gt;10/12/6&amp;nbsp;0x0060B0C44462&amp;nbsp;1&amp;nbsp;UP&amp;nbsp;lan1&amp;nbsp;snap1&amp;nbsp;2&amp;nbsp;ETHER&amp;nbsp;Yes&amp;nbsp;119&lt;/p&gt;&lt;p class="p0"&gt;上述命令显示主机中有3块网卡，它们的有关参数如下：&lt;br /&gt;硬件地址分别是10/4/8、10/4/12(Hardware&amp;nbsp;Path)&lt;br /&gt;网卡名是lan0、lan1(Net-Interface&amp;nbsp;Name列)&lt;br /&gt;各网卡的NMID是1、2(NMID列)&lt;br /&gt;各网卡的工作状态是UP、DOWN、UP&amp;nbsp;(Hdw&amp;nbsp;state列)&lt;br /&gt;各网卡的MAC地址是Station&amp;nbsp;Address所对应的列。&lt;/p&gt;&lt;p class="p0"&gt;一个网卡要能够正常工作，首先它的工作状态（Net-Interface&amp;nbsp;name）必须是UP。&lt;br /&gt;用ifconfig命令查看网卡对应的IP地址。例如：&lt;/p&gt;&lt;p class="p0"&gt;#&amp;nbsp;ifconfig&amp;nbsp;lan0&lt;br /&gt;lan0:&amp;nbsp;flags=863&amp;lt;UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST&amp;gt;&lt;br /&gt;inet&amp;nbsp;15.85.114.14&amp;nbsp;netmask&amp;nbsp;fffff800&amp;nbsp;broadcast&amp;nbsp;15.85.119.255&lt;/p&gt;&lt;p class="p0"&gt;在网卡lan0上的地址是15.85.114.14(inet)，子网掩码ffff800，广播地址15.85.119.255&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;/etc/hosts&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;主机名字解析文件，提供主机名和IP地址的对应。&lt;/p&gt;&lt;p class="p0"&gt;2．/etc/passwd&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;口令文件，内容为：&lt;br /&gt;登录用户名：加密口令：用户ID：组ID：保留：初始工作目录：shell路径&lt;/p&gt;&lt;p class="p0"&gt;3．&amp;nbsp;/etc/group&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;内容为：&lt;br /&gt;组名：加密密码：组ID：所有属于该组的用户。&lt;/p&gt;&lt;p class="p0"&gt;4．&amp;nbsp;/etc/profile&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;如果该文件存在，则每个用户登录时将执行该文件。该文件一般用于设置一些通用环境变量，如果用户的home目录中存在.profile文件，则在执行/etc/profile之后，再执行用户的.profile文件。&lt;/p&gt;&lt;p class="p0"&gt;5．&amp;nbsp;/etc/inittab&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;内部初始化之后，系统将启动/etc/init这个deamon进程，使/etc/init进程取得引导序列的控制权。而init进程从文件/etc/inittab(init&amp;nbsp;table，初始化表)取得指示，该文件&amp;nbsp;的内容控制所有init状态，同时也控制那些已消亡进程的再生。&lt;/p&gt;&lt;p class="p0"&gt;6．&amp;nbsp;/etc/fstab&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;系统中可以mount的文件系统的信息。&lt;/p&gt;&lt;p class="p0"&gt;7．&amp;nbsp;/etc/lvmtab&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;使用命令：&lt;br /&gt;#&amp;nbsp;strings&amp;nbsp;/etc/lvmtab；查看系统VG和磁盘信息。&lt;/p&gt;&lt;p class="p0"&gt;8．&amp;nbsp;/etc/rc.config.d/netconf&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;包含系统名称和网络配置信息，如IP地址、子网掩码和路由信息等。&lt;/p&gt;&lt;p class="p0"&gt;9．&amp;nbsp;/stand/system&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;包含系统的驱动程序和子系统信息，内核设备信息和一些系统可调参数信息。&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;日志文件的监测与文件清理&lt;/p&gt;&lt;p class="p0"&gt;常用的日志文件：&lt;/p&gt;&lt;p class="p0"&gt;文件名&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;文件内容&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;监测方法&lt;/p&gt;&lt;p class="p0"&gt;/etc/rc.log/etc/rc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;运行记录&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;用读取文本文件的方法，&lt;/p&gt;&lt;p class="p0"&gt;/var/adm/syslog/syslog.log&amp;nbsp;一般系统日志&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;注意提示信息及对应的&lt;/p&gt;&lt;p class="p0"&gt;/var/adm/sw/*.log&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;软件安装日志&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;日期，分析发生的相关问题。&lt;/p&gt;&lt;p class="p0"&gt;/var/adm/wtmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;用户登录信息&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;用last命令查看&lt;/p&gt;&lt;p class="p0"&gt;/var/adm/btmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;用户登录失败信息&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;用lastb命令查看&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;/var/sam/log/samlog&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SAM日志&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;/var/spool/mqueue/syslog&amp;nbsp;&amp;nbsp;&amp;nbsp;sendmail日志&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;/etc/shutdownlog&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;关机(shutdown)信息&lt;/p&gt;&lt;p class="p0"&gt;/usr/adm/diag/LOGxxx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;用工具查看&lt;/p&gt;&lt;p class="p0"&gt;/var/adm/nettl.LOG*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;网络日志&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;由HP工程师负责&lt;/p&gt;&lt;p class="p0"&gt;/var/adm/crash&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;core&amp;nbsp;dump文件&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;由HP工程师负责文件清理&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/SuperXJ/aggbug/2391345.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/SuperXJ/archive/2012/03/12/2391345.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/SuperXJ/archive/2012/03/09/2386119.html</id><title type="text">网络监控netstat（转）</title><summary type="text">做计算机管理员，我们都必要了解一下netstat这个命令，它是一个查看网络连接状态的工具，在windows下也默认有这个工具。Netstat命令详解 netstat命令怎样使用 如何关闭TIME_WAIT连接 如何统计web服务器的访问量 如果查看nginx的访问流量？下面我们来看看它主要的用法和详解！（netstat -na 命令），本文主要是说Linux下的netstat工具，然后详细说明一下各种网络连接状态。netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -nr1.netstat命令详解其实我常用的是 netstat -tnl | gre</summary><published>2012-03-09T00:33:00Z</published><updated>2012-03-09T00:33:00Z</updated><author><name>sylar_xj</name><uri>http://www.cnblogs.com/SuperXJ/</uri></author><link rel="alternate" href="http://www.cnblogs.com/SuperXJ/archive/2012/03/09/2386119.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/SuperXJ/archive/2012/03/09/2386119.html"/><content type="html">&lt;p&gt;做计算机管理员，我们都必要了解一下netstat这个命令，它是一个查看网络连接状态的工具，在windows下也默认有这个工具。&lt;br /&gt;Netstat命令详解 netstat命令怎样使用 如何关闭TIME_WAIT连接 如何统计web服务器的访问量 如果查看nginx的访问流量？&lt;/p&gt;&lt;p&gt;下面我们来看看它主要的用法和详解！&lt;br /&gt;（netstat -na 命令），本文主要是说Linux下的netstat工具，然后详细说明一下各种网络连接状态。&lt;br /&gt;netstat -nat |awk &amp;lsquo;{print $6}&amp;rsquo;|sort|uniq -c|sort -nr&lt;br /&gt;1.netstat命令详解&lt;br /&gt;其实我常用的是 netstat -tnl | grep 443 （查看443端口是否被占用），如果有当前是root用户，我喜欢用netstat -pnl | grep 443 （还可显示出占用本机443端口的进程PID）。&lt;br /&gt;netstat&lt;br /&gt;功能说明：显示网络状态。&lt;br /&gt;语法：netstat [-acCeFghilMnNoprstuvVwx] [-A&amp;lt;网络类型&amp;gt;][--ip]&lt;br /&gt;补充说明：利用netstat指令可让你得知整个Linux系统的网络情况。&lt;br /&gt;参数：&lt;br /&gt;-a或&amp;ndash;all 显示所有连线中的Socket。&lt;br /&gt;-A&amp;lt;网络类型&amp;gt;或&amp;ndash;&amp;lt;网络类型&amp;gt; 列出该网络类型连线中的相关地址。&lt;br /&gt;-c或&amp;ndash;continuous 持续列出网络状态。&lt;br /&gt;-C 或&amp;ndash;cache 显示路由器配置的快取信息。&lt;br /&gt;-e或&amp;ndash;extend 显示网络其他相关信息。&lt;br /&gt;-F或 &amp;ndash;fib 显示FIB。&lt;br /&gt;-g或&amp;ndash;groups 显示多重广播功能群组组员名单。&lt;br /&gt;-h或&amp;ndash;help 在线帮助。&lt;br /&gt;-i 或&amp;ndash;interfaces 显示网络界面信息表单。&lt;br /&gt;-l或&amp;ndash;listening 显示监控中的服务器的Socket。&lt;br /&gt;-M 或&amp;ndash;masquerade 显示伪装的网络连线。&lt;br /&gt;-n或&amp;ndash;numeric 直接使用IP地址，而不通过域名服务器。&lt;br /&gt;-N 或&amp;ndash;netlink或&amp;ndash;symbolic 显示网络硬件外围设备的符号连接名称。&lt;br /&gt;-o或&amp;ndash;timers 显示计时器。&lt;br /&gt;-p 或&amp;ndash;programs 显示正在使用Socket的程序识别码和程序名称。&lt;br /&gt;-r或&amp;ndash;route 显示 Routing Table。&lt;br /&gt;-s或&amp;ndash;statistice 显示网络工作信息统计表。&lt;br /&gt;-t或&amp;ndash;tcp 显示TCP 传输协议的连线状况。&lt;br /&gt;-u或&amp;ndash;udp 显示UDP传输协议的连线状况。&lt;br /&gt;-v或&amp;ndash;verbose 显示指令执行过程。&lt;br /&gt;-V 或&amp;ndash;version 显示版本信息。&lt;br /&gt;-w或&amp;ndash;raw 显示RAW传输协议的连线状况。&lt;br /&gt;-x或&amp;ndash;unix 此参数的效果和指定&amp;rdquo;-A unix&amp;rdquo;参数相同。&lt;br /&gt;&amp;ndash;ip或&amp;ndash;inet 此参数的效果和指定&amp;rdquo;-A inet&amp;rdquo;参数相同。&lt;/p&gt;&lt;p&gt;2.网络连接状态详解&lt;br /&gt;共有12中可能的状态，前面11种是按照TCP连接建立的三次握手和TCP连接断开的四次挥手过程来描述的。&lt;br /&gt;1)、LISTEN:首先服务端需要打开一个socket进行监听，状态为LISTEN./* The socket is listening for incoming connections. 侦听来自远方TCP端口的连接请求 */&lt;/p&gt;&lt;p&gt;2)、SYN_SENT:客户端通过应用程序调用connect进行active open.于是客户端tcp发送一个SYN以请求建立一个连接.之后状态置为SYN_SENT./*The socket is actively attempting to establish a connection. 在发送连接请求后等待匹配的连接请求 */&lt;/p&gt;&lt;p&gt;3)、SYN_RECV:服务端应发出ACK确认客户端的 SYN,同时自己向客户端发送一个SYN. 之后状态置为SYN_RECV/* A connection request has been received from the network. 在收到和发送一个连接请求后等待对连接请求的确认 */&lt;/p&gt;&lt;p&gt;4)、ESTABLISHED: 代表一个打开的连接，双方可以进行或已经在数据交互了。/* The socket has an established connection. 代表一个打开的连接，数据可以传送给用户 */&lt;/p&gt;&lt;p&gt;5)、FIN_WAIT1:主动关闭(active close)端应用程序调用close，于是其TCP发出FIN请求主动关闭连接，之后进入FIN_WAIT1状态./* The socket is closed, and the connection is shutting down. 等待远程TCP的连接中断请求，或先前的连接中断请求的确认 */&lt;/p&gt;&lt;p&gt;6)、CLOSE_WAIT:被动关闭(passive close)端TCP接到FIN后，就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT./* The remote end has shut down, waiting for the socket to close. 等待从本地用户发来的连接中断请求 */&lt;/p&gt;&lt;p&gt;7)、FIN_WAIT2:主动关闭端接到ACK后，就进入了 FIN-WAIT-2 ./* Connection is closed, and the socket is waiting for a shutdown from the remote end. 从远程TCP等待连接中断请求 */&lt;/p&gt;&lt;p&gt;8)、LAST_ACK:被动关闭端一段时间后，接收到文件结束符的应用程序将调用CLOSE关闭连接。这导致它的TCP也发送一个 FIN,等待对方的ACK.就进入了LAST-ACK ./* The remote end has shut down, and the socket is closed. Waiting for acknowledgement. 等待原来发向远程TCP的连接中断请求的确认 */&lt;/p&gt;&lt;p&gt;9)、TIME_WAIT:在主动关闭端接收到FIN后，TCP 就发送ACK包，并进入TIME-WAIT状态。/* The socket is waiting after close to handle packets still in the network.等待足够的时间以确保远程TCP接收到连接中断请求的确认 */&lt;/p&gt;&lt;p&gt;10)、CLOSING: 比较少见./* Both sockets are shut down but we still don&amp;rsquo;t have all our data sent. 等待远程TCP对连接中断的确认 */&lt;/p&gt;&lt;p&gt;11)、CLOSED: 被动关闭端在接受到ACK包后，就进入了closed的状态。连接结束./* The socket is not being used. 没有任何连接状态 */&lt;/p&gt;&lt;p&gt;12)、UNKNOWN: 未知的Socket状态。/* The state of the socket is unknown. */&lt;/p&gt;&lt;p&gt;SYN: (同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TCP连接请求。&lt;br /&gt;ACK: (确认编号,Acknowledgement Number)是对TCP请求的确认标志,同时提示对端系统已经成功接收所有数据。&lt;br /&gt;FIN: (结束标志,FINish)用来结束一个TCP回话.但对应端口仍处于开放状态,准备接收后续数据。&lt;/p&gt;&lt;p&gt;PS：在windows下有个小工具挺好的，TCPView is a Windows program that will show you detailed listings of all TCP and UDP endpoints on your system, including the local and remote addresses and state of TCP connections.见 http://technet.microsoft.com/en-us/sysinternals/bb897437 ； 当然如果要详细分析数据包，可选用sniffer、Wireshark等更强大的工具。&lt;/p&gt;&lt;p&gt;参考资料：&lt;/p&gt;&lt;p&gt;http://linux.sheup.com/linux/4/31225.html&lt;/p&gt;&lt;p&gt;http://hi.baidu.com/mqbest_come_on/blog/item/18526dcef73d791a00e928e5.html&lt;/p&gt;&lt;p&gt;http://www.daxigua.com/archives/1355&lt;/p&gt;&lt;p&gt;系统连接状态篇：&lt;br /&gt;1.查看TCP连接状态&lt;br /&gt;netstat -nat |awk &amp;lsquo;{print $6}&amp;rsquo;|sort|uniq -c|sort -rn&lt;/p&gt;&lt;p&gt;netstat -n | awk &amp;lsquo;/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}&amp;rsquo; 或&lt;br /&gt;netstat -n | awk &amp;lsquo;/^tcp/ {++state[$NF]}; END {for(key in state) print key,&amp;rdquo;\t&amp;rdquo;,state[key]}&amp;rsquo;&lt;br /&gt;netstat -n | awk &amp;lsquo;/^tcp/ {++arr[$NF]};END {for(k in arr) print k,&amp;rdquo;\t&amp;rdquo;,arr[k]}&amp;rsquo;&lt;/p&gt;&lt;p&gt;netstat -n |awk &amp;lsquo;/^tcp/ {print $NF}&amp;rsquo;|sort|uniq -c|sort -rn&lt;/p&gt;&lt;p&gt;netstat -ant | awk &amp;lsquo;{print $NF}&amp;rsquo; | grep -v &amp;lsquo;[a-z]&amp;lsquo; | sort | uniq -c&lt;/p&gt;&lt;p&gt;2.查找请求数请20个IP（常用于查找攻来源）：&lt;br /&gt;netstat -anlp|grep 80|grep tcp|awk &amp;lsquo;{print $5}&amp;rsquo;|awk -F: &amp;lsquo;{print $1}&amp;rsquo;|sort|uniq -c|sort -nr|head -n20&lt;/p&gt;&lt;p&gt;netstat -ant |awk &amp;lsquo;/:80/{split($5,ip,&amp;rdquo;:&amp;rdquo;);++A[ip[1]]}END{for(i in A) print A[i],i}&amp;rsquo; |sort -rn|head -n20&lt;/p&gt;&lt;p&gt;3.用tcpdump嗅探80端口的访问看看谁最高&lt;br /&gt;tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F&amp;rdquo;.&amp;rdquo; &amp;lsquo;{print $1&amp;Prime;.&amp;rdquo;$2&amp;Prime;.&amp;rdquo;$3&amp;Prime;.&amp;rdquo;$4}&amp;rsquo; | sort | uniq -c | sort -nr |head -20&lt;/p&gt;&lt;p&gt;4.查找较多time_wait连接&lt;br /&gt;netstat -n|grep TIME_WAIT|awk &amp;lsquo;{print $5}&amp;rsquo;|sort|uniq -c|sort -rn|head -n20&lt;/p&gt;&lt;p&gt;5.找查较多的SYN连接&lt;br /&gt;netstat -an | grep SYN | awk &amp;lsquo;{print $5}&amp;rsquo; | awk -F: &amp;lsquo;{print $1}&amp;rsquo; | sort | uniq -c | sort -nr | more&lt;/p&gt;&lt;p&gt;6.根据端口列进程&lt;br /&gt;netstat -ntlp | grep 80 | awk &amp;lsquo;{print $7}&amp;rsquo; | cut -d/ -f1&lt;/p&gt;&lt;p&gt;网站日志分析篇1（Apache）：&lt;/p&gt;&lt;p&gt;1.获得访问前10位的ip地址&lt;br /&gt;cat access.log|awk &amp;lsquo;{print $1}&amp;rsquo;|sort|uniq -c|sort -nr|head -10&lt;br /&gt;cat access.log|awk &amp;lsquo;{counts[$(11)]+=1}; END {for(url in counts) print counts[url], url}&amp;rsquo;&lt;/p&gt;&lt;p&gt;2.访问次数最多的文件或页面,取前20&lt;br /&gt;cat access.log|awk &amp;lsquo;{print $11}&amp;rsquo;|sort|uniq -c|sort -nr|head -20&lt;/p&gt;&lt;p&gt;3.列出传输最大的几个exe文件（分析下载站的时候常用）&lt;br /&gt;cat access.log |awk &amp;lsquo;($7~/\.exe/){print $10 &amp;rdquo; &amp;rdquo; $1 &amp;rdquo; &amp;rdquo; $4 &amp;rdquo; &amp;rdquo; $7}&amp;rsquo;|sort -nr|head -20&lt;/p&gt;&lt;p&gt;4.列出输出大于200000byte(约200kb)的exe文件以及对应文件发生次数&lt;br /&gt;cat access.log |awk &amp;lsquo;($10 &amp;gt; 200000 &amp;amp;&amp;amp; $7~/\.exe/){print $7}&amp;rsquo;|sort -n|uniq -c|sort -nr|head -100&lt;/p&gt;&lt;p&gt;5.如果日志最后一列记录的是页面文件传输时间，则有列出到客户端最耗时的页面&lt;br /&gt;cat access.log |awk &amp;lsquo;($7~/\.php/){print $NF &amp;rdquo; &amp;rdquo; $1 &amp;rdquo; &amp;rdquo; $4 &amp;rdquo; &amp;rdquo; $7}&amp;rsquo;|sort -nr|head -100&lt;/p&gt;&lt;p&gt;6.列出最最耗时的页面(超过60秒的)的以及对应页面发生次数&lt;br /&gt;cat access.log |awk &amp;lsquo;($NF &amp;gt; 60 &amp;amp;&amp;amp; $7~/\.php/){print $7}&amp;rsquo;|sort -n|uniq -c|sort -nr|head -100&lt;/p&gt;&lt;p&gt;7.列出传输时间超过 30 秒的文件&lt;br /&gt;cat access.log |awk &amp;lsquo;($NF &amp;gt; 30){print $7}&amp;rsquo;|sort -n|uniq -c|sort -nr|head -20&lt;/p&gt;&lt;p&gt;8.统计网站流量（G)&lt;br /&gt;cat access.log |awk &amp;lsquo;{sum+=$10} END {print sum/1024/1024/1024}&amp;rsquo;&lt;/p&gt;&lt;p&gt;9.统计404的连接&lt;br /&gt;awk &amp;lsquo;($9 ~/404/)&amp;rsquo; access.log | awk &amp;lsquo;{print $9,$7}&amp;rsquo; | sort&lt;/p&gt;&lt;p&gt;10. 统计http status.&lt;br /&gt;cat access.log |awk &amp;lsquo;{counts[$(9)]+=1}; END {for(code in counts) print code, counts[code]}'&lt;br /&gt;cat access.log |awk '{print $9}'|sort|uniq -c|sort -rn&lt;/p&gt;&lt;p&gt;10.蜘蛛分析&lt;br /&gt;查看是哪些蜘蛛在抓取内容。&lt;br /&gt;/usr/sbin/tcpdump -i eth0 -l -s 0 -w - dst port 80 | strings | grep -i user-agent | grep -i -E 'bot|crawler|slurp|spider'&lt;/p&gt;&lt;p&gt;网站日分析2(Squid篇）&lt;/p&gt;&lt;p&gt;2.按域统计流量&lt;br /&gt;zcat squid_access.log.tar.gz| awk '{print $10,$7}' |awk 'BEGIN{FS="[ /]"}{trfc[$4]+=$1}END{for(domain in trfc){printf "%s\t%d\n",domain,trfc[domain]}}'&lt;/p&gt;&lt;p&gt;效率更高的perl版本请到此下载:http://docs.linuxtone.org/soft/tools/tr.pl&lt;/p&gt;&lt;p&gt;数据库篇&lt;br /&gt;1.查看数据库执行的sql&lt;br /&gt;/usr/sbin/tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | egrep -i 'SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL'&lt;/p&gt;&lt;p&gt;系统Debug分析篇&lt;/p&gt;&lt;p&gt;1.调试命令&lt;br /&gt;strace -p pid&lt;/p&gt;&lt;p&gt;2.跟踪指定进程的PID&lt;br /&gt;gdb -p pid&lt;/p&gt;&lt;p&gt;更多的请参考：&lt;/p&gt;&lt;p&gt;&lt;a href="http://bbs.linuxtone.org/forum-14-1.html"&gt;http://bbs.linuxtone.org/forum-14-1.html&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;原文出自：&lt;a href="http://www.now163.net/2011/04/460.html"&gt;http://www.now163.net/2011/04/460.html&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/SuperXJ/aggbug/2386119.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/SuperXJ/archive/2012/03/09/2386119.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/SuperXJ/archive/2012/03/08/2384753.html</id><title type="text">informix 数据库锁表分析和解决方法</title><summary type="text">在联机事务处理(OLTP)的数据库应用系统中，多用户、多任务的并发性是系统最重要的技术指标之一。为了提高并发性，目前大部分RDBMS都采用加锁技术。然而由于现实环境的复杂性，使用加锁技术又不可避免地产生了死锁问题。因此如何合理有效地使用加锁技术，最小化死锁是开发联机事务处理系统的关键。死锁产生的原因在联机事务处理系统中，造成死机主要有两方面原因。一方面，由于多用户、多任务的并发性和事务的完整性要求，当多个事务处理对多个资源同时访问时，若双方已锁定一部分资源但也都需要对方已锁定的资源时，无法在有限的时间内完全获得所需的资源，就会处于无限的等待状态，从而造成其对资源需求的死锁。另一方面，数据库本身</summary><published>2012-03-08T01:56:00Z</published><updated>2012-03-08T01:56:00Z</updated><author><name>sylar_xj</name><uri>http://www.cnblogs.com/SuperXJ/</uri></author><link rel="alternate" href="http://www.cnblogs.com/SuperXJ/archive/2012/03/08/2384753.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/SuperXJ/archive/2012/03/08/2384753.html"/><content type="html">&lt;p&gt;在联机事务处理(OLTP)的数据库应用系统中，多用户、多任务的并发性是系统最重要的技术指标之一。为了提高并发性，目前大部分RDBMS都采用加锁技术。然而由于现实环境的复杂性，使用加锁技术又不可避免地产生了死锁问题。因此如何合理有效地使用加锁技术，最小化死锁是开发联机事务处理系统的关键。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;strong&gt;死锁产生的原因&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在联机事务处理系统中，造成死机主要有两方面原因。一方面，由于多用户、多任务的并发性和事务的完整性要求，当多个事务处理对多个资源同时访问时，若双方已锁定一部分资源但也都需要对方已锁定的资源时，无法在有限的时间内完全获得所需的资源，就会处于无限的等待状态，从而造成其对资源需求的死锁。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;另一方面，数据库本身加锁机制的实现方法不同，各数据库系统也会产生其特殊的死锁情况。如在Sybase &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SQL Server 11中，最小锁为2K一页的加锁方法，而非行级锁。如果某张表的记录数少且记录的长度较短(即记录密度高，如应用系统中的系统配置表或系统参数表就属于此类表)，被访问的频率高，就容易在该页上产生死锁。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;strong&gt;容易发生死锁的几种情况如下:&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;1&amp;gt;不同的存储过程、触发器、动态SQL语句段按照不同的顺序同时访问多张表;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;2&amp;gt;在交换期间添加记录频繁的表，但在该表上使用了非群集索引(non-clustered);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;3&amp;gt;表中的记录少，且单条记录较短，被访问的频率较高；&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;4&amp;gt;整张表被访问的频率高(如代码对照表的查询等)。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;以上死锁情况的对应处理方法如下:&amp;nbsp;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;1&amp;gt;在系统实现时应规定所有存储过程、触发器、动态SQL语句段中，对多张表的操作总是使用同一顺序。如：有两个存储过程proc1、proc2，都需要访问三张表zltab、z2tab和z3tab，如果proc1按照zltab、z2tab和z3tab的顺序进行访问，那么，proc2也应该按照以上顺序访问这三张表。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;2&amp;gt;对在交换期间添加记录频繁的表，使用群集索引(clustered)，以减少多个用户添加记录到该表的最后一页上，在表尾产生热点，造成死锁。这类表多为往来账的流水表，其特点是在交换期间需要在表尾追加大量的记录，并且对已添加的记录不做或较少做删除操作。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;3&amp;gt;对单张表中记录数不太多，且在交换期间select或updata较频繁的表可使用设置每页最大行的办法，减少数据在表中存放的密度，模拟行级锁，减少在该表上死锁情况的发生。这类表多为信息繁杂且记录条数少的表。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;如：系统配置表或系统参数表。在定义该表时添加如下语句：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;with&amp;nbsp;&amp;nbsp;&amp;nbsp;max_rows_per_page=1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;在存储过程、触发器、动态SQL语句段中，若对某些整张表select操作较频繁，则可能在该表上与其他访问该表的用户产生死锁。对于检查账号是否存在，但被检查的字段在检查期间不会被更新等非关键语句，可以采用在select命令中使用at &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;isolation &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;read &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uncommitted子句的方法解决。该方法实际上降低了select语句对整张表的锁级别，提高了其他用户对该表操作的并发性。在系统高负荷运行时，该方法的效果尤为显著。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;如：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;select * from titles at isolation read uncommitted&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;对流水号一类的顺序数生成器字段，可以先执行updata流水号字段+1，然后再执行select获取流水号的方法进行操作。&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.blogjava.net/imdosop/archive/2008/11/06/239085.html"&gt;http://www.blogjava.net/imdosop/archive/2008/11/06/239085.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;数据库锁表的分析与解决&lt;/p&gt;&lt;div&gt;&lt;br /&gt;上面介绍了内存溢出的原因和处理方法，下面再介绍一下数据库锁表及阻塞的原因和处理办法。&lt;br /&gt;数据库和操作系统一样，是一个多用户使用的共享资源。当多个用户并发地存取数据时，在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据，破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。在实际应用中经常会遇到的与锁相关的异常情况，当两个事务需要一组有冲突的锁，而不能将事务继续下去的话，就会出现死锁，严重影响应用的正常执行。&lt;br /&gt;在数据库中有两种基本的锁类型：排它锁（Exclusive Locks，即X锁）和共享锁（Share Locks，即S锁）。当数据对象被加上排它锁时，其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取，但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。&lt;br /&gt;死锁的第一种情况&lt;br /&gt;一个用户A 访问表A(锁住了表A),然后又访问表B；另一个用户B 访问表B(锁住了表B)，然后企图访问表A；这时用户A由于用户B已经锁住表B，它必须等待用户B释放表B才能继续，同样用户B要等用户A释放表A才能继续，这就死锁就产生了。&lt;br /&gt;解决方法：&lt;br /&gt;这种死锁比较常见，是由于程序的BUG产生的，除了调整的程序的逻辑没有其它的办法。仔细分析程序的逻辑，对于数据库的多表操作时，尽量按照相同的顺序进行处理，尽量避免同时锁定两个资源，如操作A和B两张表时，总是按先A后B的顺序处理， 必须同时锁定两个资源时，要保证在任何时刻都应该按照相同的顺序来锁定资源。&lt;br /&gt;死锁的第二种情况&lt;br /&gt;用户A查询一条纪录，然后修改该条纪录；这时用户B修改该条纪录，这时用户A的事务里锁的性质由查询的共享锁企图上升到独占锁，而用户B里的独占锁由于A有共享锁存在所以必须等A释放掉共享锁，而A由于B的独占锁而无法上升的独占锁也就不可能释放共享锁，于是出现了死锁。这种死锁比较隐蔽，但在稍大点的项目中经常发生。如在某项目中，页面上的按钮点击后，没有使按钮立刻失效，使得用户会多次快速点击同一按钮，这样同一段代码对数据库同一条记录进行多次操作，很容易就出现这种死锁的情况。&lt;br /&gt;解决方法：&lt;br /&gt;1、对于按钮等控件，点击后使其立刻失效，不让用户重复点击，避免对同时对同一条记录操作。&lt;br /&gt;2、使用乐观锁进行控制。乐观锁大多是基于数据版本（Version）记录机制实现。即为数据增加一个版本标识，在基于数据库表的版本解决方案中，一般是通过为数据库表增加一个&amp;ldquo;version&amp;rdquo;字段来实现。读取出数据时，将此版本号一同读出，之后更新时，对此版本号加一。此时，将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对，如果提交的数据版本号大于数据库表当前版本号，则予以更新，否则认为是过期数据。乐观锁机制避免了长事务中的数据库加锁开销（用户A和用户B操作过程中，都没有对数据库数据加锁），大大提升了大并发量下的系统整体性能表现。Hibernate 在其数据访问引擎中内置了乐观锁实现。需要注意的是，由于乐观锁机制是在我们的系统中实现，来自外部系统的用户更新操作不受我们系统的控制，因此可能会造成脏数据被更新到数据库中。&lt;br /&gt;3、使用悲观锁进行控制。悲观锁大多数情况下依靠数据库的锁机制实现，如Oracle的Select &amp;hellip; for update语句，以保证操作最大程度的独占性。但随之而来的就是数据库性能的大量开销，特别是对长事务而言，这样的开销往往无法承受。如一个金融系统，当某个操作员读取用户的数据，并在读出的用户数据的基础上进行修改时（如更改用户账户余额），如果采用悲观锁机制，也就意味着整个操作过程中（从操作员读出数据、开始修改直至提交修改结果的全过程，甚至还包括操作员中途去煮咖啡的时间），数据库记录始终处于加锁状态，可以想见，如果面对成百上千个并发，这样的情况将导致灾难性的后果。所以，采用悲观锁进行控制时一定要考虑清楚。&lt;br /&gt;死锁的第三种情况&lt;br /&gt;如果在事务中执行了一条不满足条件的update语句，则执行全表扫描，把行级锁上升为表级锁，多个这样的事务执行后，就很容易产生死锁和阻塞。类似的情况还有当表中的数据量非常庞大而索引建的过少或不合适的时候，使得经常发生全表扫描，最终应用系统会越来越慢，最终发生阻塞或死锁。&lt;br /&gt;解决方法：&lt;br /&gt;SQL语句中不要使用太复杂的关联多表的查询；使用&amp;ldquo;执行计划&amp;rdquo;对SQL语句进行分析，对于有全表扫描的SQL语句，建立相应的索引进行优化。&lt;br /&gt;5．小结&lt;br /&gt;总体上来说，产生内存溢出与锁表都是由于代码写的不好造成的，因此提高代码的质量是最根本的解决办法。有的人认为先把功能实现，有BUG时再在测试阶段进行修正，这种想法是错误的。正如一件产品的质量是在生产制造的过程中决定的，而不是质量检测时决定的，软件的质量在设计与编码阶段就已经决定了，测试只是对软件质量的一个验证，因为测试不可能找出软件中所有的BUG。&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;p&gt;锁表处理步骤：&lt;br /&gt;1、onstat -ks|grep HDR+X&amp;nbsp;&amp;nbsp; //查询是那个表被锁&lt;br /&gt;address&amp;nbsp; wtlist&amp;nbsp;&amp;nbsp; owner&amp;nbsp; lklist&amp;nbsp;&amp;nbsp; type&amp;nbsp;&amp;nbsp;&amp;nbsp; tblsnum&amp;nbsp; rowid&amp;nbsp;&amp;nbsp;&amp;nbsp; key#/bsiz&lt;br /&gt;c1809510&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d656e774 c181cb3c HDR+X&amp;nbsp;&amp;nbsp;&amp;nbsp; 6002e1&amp;nbsp;&amp;nbsp; 2c602&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/p&gt;&lt;p&gt;需要关注lklist和type项，从上面来看tblsnum为6002e1（6292193十六进制转换成十进制）的表被锁了。可以重查询是那个表被锁：&lt;/p&gt;&lt;p&gt;dbaccess ：select * from systables where partnum='6292193'得到&lt;br /&gt;tabname&amp;nbsp;&amp;nbsp;&amp;nbsp; basetab_mvpn&lt;br /&gt;owner&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; smpmml&lt;br /&gt;partnum&amp;nbsp;&amp;nbsp;&amp;nbsp; 6292193&lt;br /&gt;tabid&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12813&lt;br /&gt;rowsize&amp;nbsp;&amp;nbsp;&amp;nbsp; 464&lt;br /&gt;ncols&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 61&lt;br /&gt;nindexes&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;nrows&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2984&lt;br /&gt;created&amp;nbsp;&amp;nbsp;&amp;nbsp; 12/10/2002&lt;br /&gt;version&amp;nbsp;&amp;nbsp;&amp;nbsp; 839843846&lt;br /&gt;tabtype&amp;nbsp;&amp;nbsp;&amp;nbsp; T&lt;br /&gt;locklevel&amp;nbsp; R&lt;br /&gt;npused&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 746&lt;br /&gt;fextsize&amp;nbsp;&amp;nbsp; 16&lt;br /&gt;nextsize&amp;nbsp;&amp;nbsp; 16&lt;br /&gt;flags&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/p&gt;&lt;p&gt;2、onstat -u，将owner(address)为d656e774的线程找出来&lt;/p&gt;&lt;p&gt;address&amp;nbsp; flags&amp;nbsp; sessid&amp;nbsp;&amp;nbsp; user&amp;nbsp; tty&amp;nbsp;&amp;nbsp; wait&amp;nbsp; tout locks nreads&amp;nbsp;&amp;nbsp; nwrites&lt;br /&gt;d656e774 Y--P--- 4261&amp;nbsp;&amp;nbsp; smp20&amp;nbsp; -&amp;nbsp;&amp;nbsp; d6ad2330 0&amp;nbsp;&amp;nbsp;&amp;nbsp; 180&amp;nbsp;&amp;nbsp; 99620&amp;nbsp;&amp;nbsp;&amp;nbsp; 16&lt;/p&gt;&lt;p&gt;3、onstat -g sql d656e774可以将这个线程执行过的sql语句打印出来。&lt;br /&gt;4、只要用informix用户执行onmode-z sessid干掉线程&lt;br /&gt;onmode-z 4261&lt;/p&gt;&lt;p&gt;重点说明：onstat -g ses sessid找个进程PID来,然后ps -ef|grep Pid; kill -9 pid&lt;br /&gt;在处理这些问题时还会遇到表被锁是因为该线程还没有执行完毕，此时就不能简单的 onmode -z杀线程&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/SuperXJ/aggbug/2384753.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/SuperXJ/archive/2012/03/08/2384753.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/SuperXJ/archive/2012/02/29/2373096.html</id><title type="text">ftp限速设置</title><summary type="text">针对不同的使用者限制不同的速度｡假设用户ylg所能使用的最高速度为500Kb/s,用户user1所能使用的最高速度为250Kb/s,可以通过以下方法设置｡在/etc/vsftpd/vsftpd.conf文件尾部新增以下一行:user_config_dir=/etc/vsftpd/userconf 增加一个名为/etc/vsftpd/userconf的目录:#mkdir /etc/vsftpd/userconf 在/etc/vsftpd/userconf下新增一个名为ylg的文件,其内容如下所示:local_max_rate=500000 在/etc/vsftpd/userconf目录下新...</summary><published>2012-02-29T03:18:00Z</published><updated>2012-02-29T03:18:00Z</updated><author><name>sylar_xj</name><uri>http://www.cnblogs.com/SuperXJ/</uri></author><link rel="alternate" href="http://www.cnblogs.com/SuperXJ/archive/2012/02/29/2373096.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/SuperXJ/archive/2012/02/29/2373096.html"/><content type="html">针对不同的使用者限制不同的速度｡&lt;br/&gt;&lt;br/&gt;假设用户ylg所能使用的最高速度为500Kb/s,用户user1所能使用的最高速度为250Kb/s,可以通过以下方法设置｡在/etc/vsftpd/vsftpd.conf文件尾部新增以下一行:&lt;br/&gt;&lt;br/&gt;user_config_dir=/etc/vsftpd/userconf  增加一个名为/etc/vsftpd/userconf的目录:&lt;br/&gt;&lt;br/&gt;#mkdir /etc/vsftpd/userconf  在/etc/vsftpd/userconf下新增一个名为ylg的文件,其内容如下所示:&lt;br/&gt;&lt;br/&gt;local_max_rate=500000  在/etc/vsftpd/userconf目录下新增一个名为user1的文件,其内容如下所示:&lt;br/&gt;&lt;br/&gt;local_max_rate=250000  VSFTP对于速度的限制范围大概在80%到120%之间,也就是限制最高速度为100Kb/s,但实际的速度可能在80Kb/s到120Kb/s之间｡如果频宽不足,数值会低于此限制｡&lt;br/&gt;&lt;br/&gt;配置FTP服务器6.对于每一个联机用户,都以独立的进程来运行｡&lt;br/&gt;&lt;br/&gt;一般情况下,在启动VSFTP时,只会看到一个名为vsftpd的进程在运行｡但若是读者希望每一个联机用户都能以独立的进程来呈现,则可通过在/etc/vsftpd/vsftpd.conf文件中增加以下一行来实现:&lt;br/&gt;&lt;br/&gt;setproctitle_enable=YES  配置FTP服务器7.保存/etc/vsftpd/vsftpd.conf文件,然后重新启动vsftpd: &lt;br/&gt;&lt;br/&gt;#service vsftpd restart&lt;img src="http://www.cnblogs.com/SuperXJ/aggbug/2373096.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/SuperXJ/archive/2012/02/29/2373096.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/SuperXJ/archive/2012/02/29/2372837.html</id><title type="text">SAN存储连接网络 DAS直接连接存储 NAS网络连接存储</title><summary type="text">对于一个企业来说，网络数据的安全性是极为重要的，一旦重要的数据被破坏或丢失，就会对企业造成重大的影响，甚至是难以弥补的损失。通常企业数据存储包括三种方式NAS、NAS和SAN。本文主要为读者详细介绍这三种数据存储方式以及如何根据企业自身的实际情况选择合适的数据存储方式。DAS、NAS和SAN是什么？DAS（DirectAttachedStorage，直接外挂存储）是存储方式的一种方案。这种存储方案的服务器结构如同PC机架构，外部数据存储设备（如磁盘阵列、光盘机、磁带机等）都直接挂接在服务器内部总线上，数据存储设备是整个服务器结构的一部分，同样服务器也担负着整个网络的数据存储职责。DAS这种直连</summary><published>2012-02-29T01:53:00Z</published><updated>2012-02-29T01:53:00Z</updated><author><name>sylar_xj</name><uri>http://www.cnblogs.com/SuperXJ/</uri></author><link rel="alternate" href="http://www.cnblogs.com/SuperXJ/archive/2012/02/29/2372837.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/SuperXJ/archive/2012/02/29/2372837.html"/><content type="html">&lt;div class="Section0"&gt;&lt;p class="p0"&gt;对于一个企业来说，网络数据的安全性是极为重要的，一旦重要的数据被破坏或丢失，就会对企业造成重大的影响，甚至是难以弥补的损失。通常企业数据存储包括三种方式&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。本文主要为读者详细介绍这三种数据存储方式以及如何根据企业自身的实际情况选择合适的数据存储方式。&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DAS&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;是什么？&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DAS&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;Direct&amp;nbsp;Attached&amp;nbsp;Storage&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，直接外挂存储）是存储方式的一种方案。这种存储方案的服务器结构如同&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;PC&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;机架构，外部数据存储设备（如磁盘阵列、光盘机、磁带机等）都直接挂接在服务器内部总线上，数据存储设备是整个服务器结构的一部分，同样服务器也担负着整个网络的数据存储职责。&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;DAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;这种直连方式，能够解决单台服务器的存储空间扩展、高性能传输需求，并且单台外置存储系统的容量，已经从不到&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;1TB&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，发展到了&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;2TB&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，随着大容量硬盘的推出，单台外置存储系统容量还会上升。此外，&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;DAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;还可以构成基于磁盘阵列的双机高可用系统，满足数据存储对高可用的要求。&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NAS&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;Network&amp;nbsp;Attached&amp;nbsp;Storage&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，网络附加存储）全面改进了以前低效的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;DAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;存储方式，它是采用独立于&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;PC&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;服务器，单独为网络数据存储而开发的一种文件服务器。&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;服务器中集中连接了所有的网络数据存储设备（如各种磁盘阵列、磁带、光盘机等），存储容量可以较好地扩展，同时由于这种网络存储方式是&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;服务器独立承担的，所以，对原来的网络服务器性能基本上没什么影响，以确保整个网络性能不受影响。它提供了一个简单、高性价比、高可用性、高扩展性和低总拥有成本的网络存储解决方案。&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SAN&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;Storage&amp;nbsp;Area&amp;nbsp;Network&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，存储域网络）不是把所有的存储设备集中安装在一个专门的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;服务器中，而是将这些存储设备单独通过光纤交换机连接起来，形成一个光纤通道的网络，然后这个网络再与企业现有局域网进行连接，在这种方案中，起着核心作用的当然就是光纤交换机了，它的支撑技术就是光纤通道协议，这是&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;ANSI&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;为网络和通道&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;I/O&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;接口建立的一个标准集成，支持&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;HIPPI&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;IPI&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SCSI&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;IP&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;ATM&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;等多种高级协议。在&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;中，数据以集中的方式进行存储，加强了数据的可管理性，同时适应于多操作系统下的数据共享同一存储池，降低了总拥有成本。&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DAS&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;有哪些不同？&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DAS&amp;nbsp;&lt;span style="font-family: 宋体;"&gt;直连式存储依赖服务器主机操作系统进行数据的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;IO&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;读写和存储维护管理，数据备份和恢复要求占用服务器主机资源（包括&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;CPU&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、系统&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;IO&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;等），数据流需要回流主机再到服务器连接着的磁带机（库），数据备份通常占用服务器主机资源&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;20-30%&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，因此许多企业用户的日常数据备份常常在深夜或业务系统不繁忙时进行，以免影响正常业务系统的运行。直连式存储的数据量越大，备份和恢复的时间就越长，对服务器硬件的依赖性和影响就越大。这种方案主要在早期的计算机和服务器上使用，由于当时对数据存储的需求并不大，单个服务器需要的存储能力就可以满足日常数据存储需求，因此在低档网络应用中相当普遍。&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NAS&lt;span style="font-family: 宋体;"&gt;作为一个网络附加存储设备，&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;设备内置优化的独立存储操作系统，可以有效、紧密地释放系统总线资源，全力支持&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;I/O&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;存储，同时&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;设备一般集成本地的备份软件，可以不经过服务器将&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;设备中的重要数据进行本地备份，而且&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;设备提供硬盘&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;RAID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、冗余的电源和风扇以及冗余的控制器，可以满足保证&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的稳定应用。&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NAS&lt;span style="font-family: 宋体;"&gt;设备主要用来实现在不同操作系统平台下的文件共享应用，与传统的服务器或&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;DAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;存储设备相比，&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;设备的安装、调试、使用和管理非常简单，采用&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;可以节省一定的设备管理与维护费用。&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;设备提供&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;RJ-&amp;nbsp;45&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;接口和单独的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;IP&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;地址，可以将其直接挂接在主干网的交换机或其它局域网的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;Hub&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;上，通过简单的设置（如设置机器的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;IP&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;地址等）就可以在网络即插即用地使用&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;设备，而且进行网络数据在线扩容时也无需停顿，从而保证数据流畅存储。&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NAS&lt;span style="font-family: 宋体;"&gt;数据存储方案是基于局域网而设计的，按照传统的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;TCP/IP&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;协议进行通信，面向消息传递，以文件的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;I/O&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;方式进行数据传输。在&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;LAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;环境下，&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;已经完全可以实现异构平台之间的数据级共享，比如&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;Windows&amp;nbsp;NT&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;Linux&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;UNIX&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;等平台的共享。基于这种种原因，&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;存储方案对于企业来说的使用和维护成本就相当低，完全可以由现有网管员担当。&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SAN&lt;span style="font-family: 宋体;"&gt;是通过一个单独的通常是基于光纤通道的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;网络把存储设备以及服务器相连，如此当有海量数据的存取需求时，数据完全可以通过&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;网络在相关服务器和后台的存储设备之间高速传输，对于&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;LAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的带宽占用几乎为零，而且服务器可以访问&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;上的任何一个存储设备，提高了数据的可用性。在对性能和可靠性要求较高的场合，采用先进的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;数据存储网络，可以使数据的存储、备份等活动独立在原先的局域网之外，从而将减轻&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;LAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的负载，保证原有网络应用的顺畅进行；同时&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;网采用光纤传输通道，可以得到高速的数据传输率。&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SAN&lt;span style="font-family: 宋体;"&gt;方案简化了管理和集中控制，这对于全部存储设备都集中在信息中心，是非常有现实意义的。&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;将企业的存储和服务器平台分开，可以实现&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;24&amp;nbsp;x&amp;nbsp;7&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;不间断的系统可用性和集中管理，在这个平台的基础上，还可以应用一套统一的灾难恢复解决方案，同时可经济高效地扩展存储环境。因此&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;非常适用于非线性编辑、服务器集群、远程灾难恢复、因特网数据服务等多个领域。&lt;/span&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;企业如何根据自身的实际，选择数据存储方案&amp;nbsp;&lt;br /&gt;&lt;br /&gt;企业存储应用的体系结构主要有&lt;span style="font-family: Tahoma;"&gt;DAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;三种模式，三种模式从体系架构的逻辑上看，有明显的区别。一个企业存储具有以下几方面的要求&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;:&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;性能、安全性、扩展性、易用性、整体拥有成本、服务等等。由于企业用户的存储系统构建并不是一蹴而就的事情，会经历从单机迈向网络化存储的过程，因此就存在&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;DAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;三种存储方案供企业用户进行不同的选择。&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Tahoma;"&gt;1&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&amp;nbsp;选择&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;DAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;方案&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Tahoma;"&gt;DAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;直连式存储依赖服务器主机操作系统进行数据的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;IO&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;读写和存储维护管理，数据备份和恢复要求占用服务器主机资源&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;(&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;包括&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;CPU&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、系统&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;IO&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;等&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;)&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，数据流需要回流主机再到服务器连接着的磁带机&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;(&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;库&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;)&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，数据备份通常占用服务器主机资源&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;20-30%&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，因此许多企业用户的日常数据备份常常在深夜或业务系统不繁忙时进行，以免影响正常业务系统的运行。直连式存储的数据量越大，备份和恢复的时间就越长，对服务器硬件的依赖性和影响就越大。这种方案主要在早期的计算机和服务器上使用，由于当时对数据存储的需求并不大，单个服务器需要的存储能力就可以满足日常数据存储需求，因此在低档网络应用中相当普遍。&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;span style="font-family: 宋体;"&gt;、&amp;nbsp;选择&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;方案&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;作为一个网络附加存储设备，&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;设备内置优化的独立存储操作系统，可以有效、紧密地释放系统总线资源，全力支持&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;I/O&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;存储，同时&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;设备一般集成本地的备份软件，可以不经过服务器将&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;设备中的重要数据进行本地备份，而且&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;设备提供硬盘&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;RAID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、冗余的电源和风扇以及冗余的控制器，可以满足保证&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的稳定应用。&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;设备主要用来实现在不同操作系统平台下的文件共享应用，与传统的服务器或&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;DAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;存储设备相比，&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;设备的安装、调试、使用和管理非常简单，采用&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;可以节省一定的设备管理与维护费用。&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;设备提供&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;RJ-&amp;nbsp;45&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;接口和单独的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;IP&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;地址，可以将其直接挂接在主干网的交换机或其它局域网的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;Hub&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;上，通过简单的设置&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;(&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;如设置机器的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;IP&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;地址等&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;)&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;就可以在网络即插即用地使用&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;设备，而且进行网络数据在线扩容时也无需停顿，从而保证数据流畅存储。&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;数据存储方案是基于局域网而设计的，按照传统的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;TCP/IP&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;协议进行通信，面向消息传递，以文件的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;I/O&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;方式进行数据传输。在&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;LAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;环境下，&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;已经完全可以实现异构平台之间的数据级共享，比如&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;Windows&amp;nbsp;NT&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;Linux&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;UNIX&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;等平台的共享。基于这种种原因，&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;存储方案对于企业来说的使用和维护成本就相当低，完全可以由现有网管员担当。&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;span style="font-family: 宋体;"&gt;、&amp;nbsp;选择&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;方案&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;由于&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;是通过一个单独的通常是基于光纤通道的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;网络把存储设备以及服务器相连，如此当有海量数据的存取需求时，数据完全可以通过&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;网络在相关服务器和后台的存储设备之间高速传输，对于&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;LAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的带宽占用几乎为零，而且服务器可以访问&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;上的任何一个存储设备，提高了数据的可用性。在对性能和可靠性要求较高的场合，采用先进的&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;数据存储网络，可以使数据的存储、备份等活动独立在原先的局域网之外，从而将减轻&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;LAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的负载，保证原有网络应用的顺畅进行&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;同时&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;网采用光纤传输通道，可以得到高速的数据传输率。&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;　&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;方案简化了管理和集中控制，这对于全部存储设备都集中在信息中心，是非常有现实意义的。&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;将企业的存储和服务器平台分开，可以实现&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;24&amp;nbsp;x&amp;nbsp;7&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;不间断的系统可用性和集中管理，在这个平台的基础上，还可以应用一套统一的灾难恢复解决方案，同时可经济高效地扩展存储环境。因此&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;非常适用于非线性编辑、服务器集群、远程灾难恢复、因特网数据服务等多个领域。&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;企业数据存储的发展趋势&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DAS&lt;span style="font-family: 宋体;"&gt;直连存储的最大弊病在于，各部分的存储资源相互隔离，容易形成孤岛。&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;具有无人值守、高度职能、性能稳定、功能专一的特点，但&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;技术不能满足可靠度为&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;99.999%&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的数据存储系统的要求。而&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的最大优势则在于，可以把异构环境下不同厂商的存储设备整合在一起，实现资源的共享，因此&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;将成为企业存储应用的主流。&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: 宋体;"&gt;一方面，为保证数据在不同硬件平台、不同操作系统下流转的畅通，存储架构的开放性、存储硬件的兼容性、存储软件的适应性归结在一起，就表现为存储的融合，&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;SAN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;与&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;NAS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;融合是大势所趋；另一方面，虚拟存储使主机操作系统看到的存储与实际物理存储分开，虚拟存储技术可提高存储设备利用率，通过动态地管理磁盘空间，虚拟存储技术可以避免磁盘空间被无效占用。目前虚拟技术已经引起了几乎所有存储系统厂商的关注，采用虚拟存储技术的设备将成为市场的新主流。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/SuperXJ/aggbug/2372837.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/SuperXJ/archive/2012/02/29/2372837.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/SuperXJ/archive/2012/02/10/2344828.html</id><title type="text">大话MVC模式</title><summary type="text">现在许许多多的初学者和程序员，都在趋之若鹜地学习Web开发的宝典级框架：Struts2，Spring，Hibernate。似乎这些框架成为了一个人是否精通Java，是否会写J2EE程序的唯一事实标准和找工作的必备基础。然而，为什么要学习这些框架？这些框架的本质到底是什么？似乎很少很少有人能够给我非常满意的答复。因为他们都在为了学习而学习，为了工作而学习，而不是在真正去深入了解一个框架。其实所有的人都应该思考这样的问题：为什么要学习框架？框架到底给我带来了什么？接下来，以登录作为一个最简单的例子，来看看不同的年代，我们是怎么写Web程序的在很多年前，我们这么写程序的很多年前，那是一个贫苦的年代，</summary><published>2012-02-10T01:25:00Z</published><updated>2012-02-10T01:25:00Z</updated><author><name>sylar_xj</name><uri>http://www.cnblogs.com/SuperXJ/</uri></author><link rel="alternate" href="http://www.cnblogs.com/SuperXJ/archive/2012/02/10/2344828.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/SuperXJ/archive/2012/02/10/2344828.html"/><content type="html">&lt;p&gt;现在许许多多的初学者和程序员，都在趋之若鹜地学习Web开发的宝典级框架：Struts2，Spring，Hibernate。似乎这些框架成为了一个人是否精通Java，是否会写J2EE程序的唯一事实标准和找工作的必备基础。&lt;/p&gt;&lt;p&gt;然而，为什么要学习这些框架？这些框架的本质到底是什么？似乎很少很少有人能够给我非常满意的答复。因为他们都在为了学习而学习，为了工作而学习，而不是在真正去深入了解一个框架。其实所有的人都应该思考这样的问题：为什么要学习框架？框架到底给我带来了什么？接下来，以登录作为一个最简单的例子，来看看不同的年代，我们是怎么写Web程序的&lt;/p&gt;&lt;p&gt;&lt;strong&gt;在很多年前，我们这么写程序的&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;很多年前，那是一个贫苦的年代，如果我们要使用Java在网页上做一些动态的交互功能。很多人会告诉你一个技术，叫做JSP。在我还对Java非常困惑的时候，就有人告诉我，JSP是个好东西，它可以在HTML代码里面写Java代码来完成逻辑。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Html代码&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&amp;lt;%&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;name&amp;nbsp;=&amp;nbsp;request.getParameter("name");&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;password&amp;nbsp;=&amp;nbsp;request.getParameter("password");&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UserHandler&amp;nbsp;userHandler&amp;nbsp;=&amp;nbsp;new&amp;nbsp;UserHandler();&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(userHandler.authenticate(name,&amp;nbsp;password))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;%&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;lt;p&amp;gt;恭喜你，登录成功&amp;lt;/p&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;lt;%&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;%&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;lt;p&amp;gt;对不起，登录失败&amp;lt;/p&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;lt;%&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;%&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;作为一张JSP，它可以接收从别的JSP发送过来的登录请求，并进行处理。这样，我们不需要任何额外的配置文件，也不需要任何框架的帮忙，就能完成逻辑，这显然只是一个最简单的顺序模型而已。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;后来，我们放弃了在页面上写逻辑&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;后来，程序写得越来越多，我们发现，这种在HTML代码中编写Java代码来完成逻辑的方式存在着不少问题：&lt;/p&gt;&lt;p&gt;1. Java代码由于混杂在一个HTML环境中而显得混乱不堪，可读性非常差。一个JSP文件有时候会变成几十K，甚至上百K。要找一段逻辑，经常无法定位。&lt;/p&gt;&lt;p&gt;2. 编写代码时非常困惑，不知道代码到底应该写在哪里，也不知道别人是不是已经曾经实现过类似的功能，到哪里去引用。&lt;/p&gt;&lt;p&gt;3. 突然之间，某个需求发生了变化。于是，每个人蒙头开始全程替换，还要小心翼翼的，生怕把别人的逻辑改了。&lt;/p&gt;&lt;p&gt;4. 逻辑处理程序需要自己来维护生命周期，对于类似数据库事务、日志等众多模块无法统一支持。&lt;/p&gt;&lt;p&gt;在这个时候，如果有一个产品，它能够将页面上的那些Java代码抽取出来，让页面上尽量少出现Java代码，该有多好。于是许多人开始使用servlet来处理那些业务逻辑。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Java代码&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;public&amp;nbsp;class&amp;nbsp;LoginServlet&amp;nbsp;extends&amp;nbsp;HttpServlet&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;(non-Javadoc)&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@see&amp;nbsp;javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest,&amp;nbsp;javax.servlet.http.HttpServletResponse)&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;protected&amp;nbsp;void&amp;nbsp;doPost(HttpServletRequest&amp;nbsp;req,&amp;nbsp;HttpServletResponse&amp;nbsp;resp)&amp;nbsp;throws&amp;nbsp;ServletException,&amp;nbsp;IOException&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;message&amp;nbsp;=&amp;nbsp;null;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RequestDispatcher&amp;nbsp;dispatcher&amp;nbsp;=&amp;nbsp;req.getRequestDispatcher("/result.jsp");&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;name&amp;nbsp;=&amp;nbsp;req.getParameter("name");&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;password&amp;nbsp;=&amp;nbsp;req.getParameter("password");&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UserHandler&amp;nbsp;userHandler&amp;nbsp;=&amp;nbsp;new&amp;nbsp;UserHandler();&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(userHandler.authenticate(name,&amp;nbsp;password))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message&amp;nbsp;=&amp;nbsp;"恭喜你，登录成功";&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message&amp;nbsp;=&amp;nbsp;"对不起，登录失败";&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;req.setAttribute("message",&amp;nbsp;message);&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dispatcher.forward(req,&amp;nbsp;resp);&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;}&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;在这里，我们需要在web.xml中为这个servlet配置url的请求关系。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Xml代码&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&amp;lt;servlet&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;lt;servlet-name&amp;gt;Login&amp;lt;/servlet-name&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;servlet-class&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;com.demo2do.servlet.LoginServlet&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/servlet-class&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;lt;/servlet&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;lt;servlet-mapping&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;lt;servlet-name&amp;gt;Login&amp;lt;/servlet-name&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/Login&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/url-pattern&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;lt;/servlet-mapping&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;代码重构到这里，我们发现，其实我们的工作量本身并没有减少，只是代码从JSP移动到了Servlet，使得整个流程看上去稍微清楚了一些。然而，为了这么点干净，我们付出的代价是什么？为每个servlet都在web.xml里面去做一个url的请求配置！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;再后来，出现框架&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;时代进一步发展，人们发现简单的JSP和Servlet已经很难满足人们懒惰的要求了。于是，人们开始试图总结一些公用的Java类，来解决Web开发过程中碰到的问题。这时，横空出世了一个框架，叫做struts。它非常先进地实现了MVC模式，成为了广大程序员的福音。&lt;/p&gt;&lt;p&gt;struts的代码示例我就不贴了，网上随便搜搜你可以发现一堆一堆的。在一定程度上，struts能够解决web开发中的职责分配问题，使得显示与逻辑分开。不过在很长一段时间内，使用struts的程序员往往无法分别我们到底需要web框架帮我们做什么，我们到底需要它完成点什么功能？&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;总结一下吧：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;我们到底要什么&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;在回顾了我们写代码的历史之后，我们回过头来看看，我们到底要什么？&lt;/p&gt;&lt;p&gt;无论是使用JSP，还是使用Struts1，或是Struts2，我们至少都需要一些必须的元素（如果没有这些元素，或许我还真不知道这个程序会写成什么样子）：&lt;/p&gt;&lt;p&gt;1. 数据&lt;/p&gt;&lt;p&gt;在这个例子中，就是name和password。他们共同构成了程序的核心载体。事实上，我们往往会有一个User类来封装name和password，这样会使得我们的程序更加OO。无论怎么说，数据会穿插在这个程序的各处，成为程序运行的核心。&lt;/p&gt;&lt;p&gt;2. 页面展示&lt;/p&gt;&lt;p&gt;在这个例子中，就是login.jsp。没有这个页面，一切的请求、验证和错误展示也无从谈起。在页面上，我们需要利用HTML，把我们需要展现的数据都呈现出来。同时我们也需要完成一定的页面逻辑，例如，错误展示，分支判断等等。&lt;/p&gt;&lt;p&gt;3. 处理具体业务的场所&lt;/p&gt;&lt;p&gt;在这里，不同阶段，处理具体业务的场所就不太一样。原来用JSP和Servlet，后来用Struts1或者Struts2的Action。&lt;/p&gt;&lt;p&gt;上面的这些必须出现的元素，在不同的年代，被赋予了不同的表现形式，有的受到时代的束缚，其表现形式非常落后，有的已经不再使用。但是拨开这些外在的表现形式，我们就可以发现，这不就是我们已经熟门熟路的MVC嘛？&lt;/p&gt;&lt;p&gt;数据 &amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash; Model&lt;/p&gt;&lt;p&gt;页面展示 &amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash; View&lt;/p&gt;&lt;p&gt;处理具体业务的场所 &amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash; Control&lt;/p&gt;&lt;p&gt;所以，框架不重要，概念是王道。只要能够深刻理解MVC的概念，框架对你来说，只是一个jar包而已。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/SuperXJ/aggbug/2344828.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/SuperXJ/archive/2012/02/10/2344828.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
