SlideShare a Scribd company logo
51 cto linuxops_issue4
内容目录

【人物】

系统运维经验分享:守住每一天...........................................................................................................3

【交流】

系统运维秘诀:变化,监控,扩展(技术篇)..................................................................................5
                                                                                                                                   杂志策划:51CTO 系统频道
【八卦】
                                                                                                                                   本期主编:杨赛
八卦,趣闻与数字 2010.12 - 2011.01.............................................................................................10
                                                                                                                                   封面制作:高鹏飞
【专题】
                                                                                                                                   交流圈子:
为什么进行 Linux 性能监测?.............................................................................................................11
                                                                                                                                   http://g.51cto.com/linuxops
细数十个最令人头疼的性能瓶颈.........................................................................................................14
                                                                                                                                   邮件群组:
Linux 磁盘管理三板斧的使用心得......................................................................................................16         groups.google.com/group/linuxops-cn
系统负载:如何判断 Linux load 的值是否过高...............................................................................19                       订阅方式:发送 Email 到
【技巧】                                                                                                                               linuxops-cn+subscribe@googlegroups.com

在 linux 下灵活使用 expect 脚本的小窍门.......................................................................................21               专题页面:
                                                                                                                                   http://os.51cto.com/art/201011/233915.htm
系统管理员易犯错误及解决方法汇总................................................................................................23
                                                                                                                                   http://down.51cto.com/zt/71
系列连载:最牛 B 的 Linux Shell 命令(2)....................................................................................26
                                                                                                                                   投稿信箱:
                                                                                                                                   yangsai@51cto.com
人物
                                           People


  “守住每一天”的意思就在这里:每天要做一件满意的事件,那怕一天就解决一个问题。                             守住每一天(以下简称守住):我是在门户
                                                                    网 站 做 Linux 运 维 嘛 , 现 在 做 CDN 运 维 这 块。
系统运维经验分享:守住每一天                                                      近期核心主要放在集中化管理,分布式监控,
                                                                    和分布式日志系统上。

                                                     文字整理/杨赛          51CTO : 您 最 初 接 触 Linux 是 什 么 时 候 ?
                                                                    最开始做运维这个工作是从什么时候开始的?

                     人物简介:                                            守住:我是 03 年开 始接触 linux ,那时 主

                     刘宇,网名守住每一天,现新浪运维工程师,                           要是自学。也没怎么去论坛交流之类的。从事

                   LinuxTone.org 管理员之一,擅长 CDN 运维。目前关注               工 作 是 在 07 年 , 这 个 过 程 倒 是 还 挺 顺 利 的 。

                   集中化管理,分布式监控,以及分布式日志系统。                           主要是诚恳,踏实,肯学,底子要打好。这样

                     他的博客: http://liuyu.blog.51cto.com/             的小伙一般企业都会要的。

                                                                      51CTO:一开始做运维的几年,有什么印象


 运
                                                                    深刻的事情吗?
     维是一个所含范围很广泛的职业,          为此,51CTO 系统频道计划展开一项长期活
    在 不 同 的 企 业 、 不 同 的 工 作 环 境 下 , 动,请各个岗位上的、有数年运维经验的在职              守住:刚开始做的时候很难,遇到问题时,

运维的职责可能是完全不同的。即使单就系统        系统运维们分享他们自己的成长经验。本次我                    总是喜欢问人。不先查文档。这是一个很不好

运维而言,有些运维可能专注于内网服务器的        们 邀 请 到 新 浪 系 统 运 维 工 程 师 、 LinuxTone   的习惯。后来慢慢改了:)

维护,工作偏向网管和帮助台的职责;有些运        的管理员刘宇(守住每一天)来分享一下他的                      最痛苦的是最开始工作那会儿,刚接手设备
维可能从开发环境、数据库到线上应用部分都        运维经验。                                   的时候,一下遇到 3 台机器陆续宕机。不是硬
负责;有些可能仅仅负责特定应用的运维。所                                                盘故障,就是主板故障,最终换新设备,迁移
                              51CTO:首先,简单的跟我们介绍一下您现
以,即使是在职的系统运维,也可能对这个行                                                解决。这么折腾一大圈,一下子就让我接触到
                            在的工作情况吧。您现在负责哪方面的工作?
业的同行们的工作内容了解有限。                                                     了故障分析、服务器迁移方面的很多东西。


                                              3                                   http://g.51cto.com/linuxops/
                                                                                    http://os.51cto.com/linux/
                                                                                    投稿信箱:yangsai@51cto.com
人物
                                                        People


  51CTO:您自己感觉在您的运维经历中,哪                  , allcommands , cyberciti 等 , 国 内          守住:技术方面,主要还是集中化管理,分
段时间是您成长最快的?那段时间您关注的技                     就是 CU , 51CTO , LinuxTone 这些我比           布式监控,和分布式日志系统方面的继续深入
术点主要是哪些?有什么人提供指导或是交流                     较常去。                                     具体计划方面其实我是没有的。我觉得计划不
吗?                                                                                如变化。“守住每一天”的意思就在这里:每
                                           51CTO : 说 说 LinuxTone.org 这 个 站 吧 。
  守住:压力越大,成长越快。我成长也就是                                                             天要做一件满意的事件,那怕一天就解决一个
                                         当初建立这个社区是怎样的一个情况?主要是
08 年的时候吧。当时整个公司的网站迁移、升                                                            问题。计划得再好,也赶不上你遇到的问题。
                                         针对哪些层次的 Linux 技术人的?
级,从机房选择一直到全部迁移升级完成,都                                                              有些时候一个问题解决就需要几天,那你的计
                                           守住: 2008 年那会儿, netseek 创立了这
是我一个人,压力相当大。那会儿主要是关注                                                              划就全打乱了。今日事今日毕。早上在地铁里
                                         个站,我也是同年加入管理团队的。正如同
负载均衡的部署。秋香给我帮助挺大的。                                                                想好今天做什么,下班地铁记录今天做的工作
                                         LinuxTone 的 建 站 宗 旨 说 的 , 我 们 主 要 专 注
                                                                                  这 样 就 OK 了 。 手 机 和 GOOGLE 如 此 方 便 。 有
  51CTO:有什么对您帮助特别大的技术书籍                  于系统服务、集群架构、安全监控、性能调优
                                                                                  什么不方便的呢?
么?或者文章/讲座?                               程序设计这些方面,算是比较偏中高端的综合
                                                                                    51CTO:感谢守住每一天的分享!本次内容
  守住:书我看得少 ~人懒,网上的文案看得                   IT 运维人员吧。
                                                                                  到此结束。如果您有什么问题想要沟通,或者
多。然后再实践,再找相关的书进行一个系统                       51CTO : 您 认 为 一 个 理 想 的 Linux 运 维 交    希望听到某个运维进行分享,欢迎与守住或编
的学习。我喜欢反着来,对我来说效率更高吧。 流社区应该是怎样的?
                                                                                  辑交流。
  有关文案这方面可以给大家一些建议:我一                      守住:还是那句话:“我为人人,人人为
                                                                                    原文:
般 的 学 习 方 法 是 , 先 阅 读 官 网 README , 再 看   我”。每个人因为分享自己的经验获得快乐,                       http://os.51cto.com/art/201012/240498.htm
WIKI , 再 看 INSTALL , 这 就 差 不 多 了 , 可 以   我认为就是理想的社区。
                                                                                    相关推荐:
准备动手操作。所以英文一定要有些基础。如
                                           51CTO:最后,介绍一下您现在的关注方向                    系统管理员访谈系列:Tom Limoncelli 谈交流
果感觉英文吃力,那就只好搜索相关的中文做
                                         吧 。 2011 年 您 在 技 术 上 和 个 人 成 长 上 有 什 么     http://os.51cto.com/art/201010/229500.htm
参考了。国内很多文档都有问题,尤其是那些
                                         计划么?
瞎搜索出来的,所以建议大家选择比较靠谱的
论 坛 或 网 站 搜 索 , 比 如 国 外 有 howtoforge

                                                           4                                      http://g.51cto.com/linuxops/
                                                                                                    http://os.51cto.com/linux/
                                                                                                    投稿信箱:yangsai@51cto.com
交流
                                                     Interact


   不要手动构建任何东西。如果你一定需要手动构建,那么就做两遍,在做第二遍的时候把                                     ◆下面这一点十分重要:将新硬件上线到生
 用到所有的命令都提取出来。                                                               产 环 境 的 过 程 不 应 该 超 过 15 分 钟 , 而 且 这 个
                                                                             过程必须足够简单。否则,当一个服务器出现
系统运维秘诀:变化,监控,扩展(技术篇)                                                         故障,而没有人知道如何更换它的时候,你就
                                                                             该倒霉了。

                                                                文/Dormando     ◆下面这一条是普世真理:这个世界上不存
                                                                 编译/周雪峰      在“一次性”的服务器构建。即使你的服务器



 在
                                                                             只需要构建一次,但只要你构建过一次,就一
       运维管理的过程中,我发现了很多                  实上这跟把它们完全隔离一样糟。如果实在有
                                                                             定会有第二次。比如,当它损坏的时候,或者
      有价值的秘诀,本文是这些秘诀的                   必要,你可以进行分层,并使用一点间接性。
                                                                             你必须进行一次重大的升级才能让它在在接下
一个总结。虽然这些秘诀可能比较“唯心”,                      ◆这并不意味着你的系统必须是平台无关的                来的两年时间里更加稳定的时候。
但是我还是把它们总结出来了,相信它们会对                    其实我们的目的很简单:一变二,二变二十,
                                                                               ◆测试,检查新构建好的服务器。这应该是
你有帮助的。                                  一个系统必须可以应对各种突发事件。也就是
                                                                             比较容易的,因为你的构建过程都是自动化的
                                        说,如果一个系统管理员被公共汽车撞了,你
为变化而设计                                                                       对吧!
                                        有应对的方案!如果挂载的硬盘出现故障了,
 ◆ Google 的 秘 诀 是 正 确 的 — — “ 为 变 化 而                                          ◆脚本化的构建,意味着从某个 Linux 发行
                                        你 有 应 对 的 方 案 ! 如 果 某 些 人 运 行 了 rm
设计”。“变化”就是不得不部署新的软件,                                                         版 的 V3 升 级 到 V4 应 该 是 很 快 的 。 安 装 V4 ,
                                        -rf /,你也有应对的方案!增量的进行变更。
升级现有的软件,进行扩展,设备损坏,以及                                                         对脚本进行测试。如果有问题,参考文档并修
                                        记得安全更新,以及保持内容更新。
人员流动等。                                                                       复它,直到它可以再次正常工作。这最多应该

 ◆每一件事情都是在寻找平衡点。你也许会                    使用自动的,可重复的构建过程                       是一个星期的工作,而不是一个长达一年的浩

认为把你的系统和某个操作系统或某个 Linux                   ◆不要手动构建任何东西。如果你一定需要                大 工 程 ( 因 为 那 时 , 刚 刚 完 成 的 V5 已 经 发 布

发行版牢牢地绑定在一起是一个好主意,但事                    手动构建,那么就做两遍,在做第二遍的时候                 了!)

                                        把用到所有的命令都提取出来。

                                                        5                                  http://g.51cto.com/linuxops/
                                                                                             http://os.51cto.com/linux/
                                                                                             投稿信箱:yangsai@51cto.com
交流
                                                      Interact



使用冗余                                     监控正确的东西                             数据进行平均化处理,然后保存在存储空间中
                                                                             这不仅仅是难以阅读的问题:这根本是错误的!
  ◆容易重新构建,并不意味着你可以忽视冗                      ◆监控你能监控的所有东西,而且要用正确
余。跳转盒,邮件服务器,计费网关,等等。                     的方法来进行监控。如果你的 NFS 服务器挂掉              ◆如果你要浏览数百张图才能精确地对一个
如果其中的一半挂掉了却并不造成客户的宕机                     了, 不 要 让你 的监 控工 具 发 送 1000 条 警报 。   问题进行定位,那真是糟透了。想要找出极值
生活将会变得更加简单。                              如果对你的系统来说,超时的警报没有什么实                请使用脚本提取数据。

  ◆按照以上方针来做的话,当某个设备在凌                    际意义,那就别让它发。要针对各种具体的情                 ◆如果你必须使用图形来解决问题,尽量把
晨 3 点出现故障的时候,你可以“以后再处理                   况进行成功性测试:是的,这个服务可以进行                各种高级的概念整合到一个单一的页面中,然
那个出现故障的设备!”,把冗余的机器先替                     一个新的 TCP 连接,它甚至可以响应,但是它             后让这个页面链接到拥有具体信息的子页面中
换上去。                                     还记得它要做什么工作吗?                        如果你在数据库负载中可以看到一个峰值,你
                                           ◆如果你有 500 个 Web 服务器,其中一个挂         可以点击这个页面对那些数据库进行概览,然
  ◆下面这一条是个聊胜于无的解决方案:
                                         掉了,你可能不必马上知道这个情况。但是,                后找到那一两台可疑的机器。基本的理念是尽
Rsync 。 DRBD 也 许 也 不 是 一 个 完 美 的 解 决 方
                                         如果负载均衡器没有把这台机子踢出去,导致                快地缩小范围,尽可能的减少猜测。
案,但是它可以提供令人称奇的服务。
                                         错误报告出现在了用户的屏幕上,那么你必须
                                                                             日志记录,使用多个数据流
使用备份                                     知道这个情况!
                                                                              ◆无论是独立工作还是与开发部门合作,都
  ◆备份是个严肃的话题。使用硬盘,烧录磁
                                         有关数据图形化,历史数据                        要把尽可能多的有用的信息记录到日志中。无
带。压缩它们,移动它们,并行地运行。对每
                                           ◆图形的作用是让趋势可视化。历史数据的               论是分析之后再保存,还是直接扔进数据库中
一样东西进行备份!
                                         作用是让你对数据进行精确的分析。不要把这                生成报告,这些都无所谓。信息终归是有用的。
  ◆如果你的构建过程是自动的,整个过程都
                                         两者混为一谈!对图形进行目测,很容易获得                 ◆有用的例子:页面呈现时间(哪个页面?
可以被备份。如果到目前为止的几条你都做到
                                         错误的数值。许多站点都使用 rrd 类型的系统             哪个设备?),面向用户的错误,数据库和内
了,那么一个真正的“灾难恢复”计划也许并
                                         或其他的数据聚合系统,此类系统按照时间对                部服务错误,带宽使用率等。
不是那么遥不可及的。



                                                         6                          http://g.51cto.com/linuxops/
                                                                                      http://os.51cto.com/linux/
                                                                                      投稿信箱:yangsai@51cto.com
交流
                                                        Interact


  ◆建立图表,报告,并对产生的历史数据进                    们绝对应该对巨大的数据集进行分割。我们也                       ◆尽可能的横向扩展,但是不要傻乎乎的扩
行比较。                                     可 以 考 虑 一 下 像 starling 和 Gearman 这 样     展。在 MySQL 复制中有一个经典的白痴扩展的

  ◆报告是十分重要的。每周或每天对你的基                    具有一定创新性的软件。了解一下这些软件的                     例子:使用一个 master 对很 多个 slave 。所

础设施变更进行汇总。                               用途,同时,了解一下并不是一切东西都要保                     有的 slave 必须完成全部的写入,而写入次数
                                         存在一个数据库中的。                               是与读取次数成比例增加的(大多数应用都是
数据存储方式,数据库                                                                        这样)。也就是说,你添加的 slave 越多,通
                                           ◆善用你的过滤器!如果这些数据很重要,
  ◆诚然,数据库运维是一套完整而独立的知                    应该对它们进行备份!单片的 NFS 服务器的快                  过添加 slave 扩展的资源就越少。
识体系。但是有时,你不能把一切都丢给你的                     照很奇妙,它并不是一个备份!                             ◆留意一下替代的解决方案。按照用户或区
DBA。                                                                              域对多个数据库进行划分,同时避免增加过多
                                           ◆ 可 以 虑 一 下 替 代 的 解 决 方 案 。 MogileFS
  ◆拥有多个冗余的数据库会给你带来很多好                    现在变得越来越好了。实际上,还有其他类似                     的 slave。实际上,有许多种方法可以达到这
处。对于一个庞大的 Oracle 实例来说,从前, 的项目可以免费(或廉价)地维护大量的存储                                    个目的。
很多运维工作需要好几个小时的关机维护时间 文 件 。 类 似 的 系 统 基 本 上 都 是 是 为                                  ◆一切都可能扩展!路由器,交换机,负载
而 现 在 , 完 全 可 以 在 服 务 运 行 的 同 时 进 行 。 youtube.com 、 archive.org 等 站 点 而 开 发 均衡器,Web 服务器,数据库,等等。
MySQL 和数据库复制功能是一件奇妙的事情。               的。我们最终会让廉价的 NFS 过滤器成为标准!                ◆记得纵向扩展吗?以前那些邪恶的大型机
  ◆和 DBA 们一起努力,尽量为可能会发生问                                                    们 有 很 多 核 , 很 多 IO 板 , 配 备 了 非 常 昂 贵 的
                                         多一些横向扩展,少一些纵向扩展
题的数据库争取到最好的硬件。 RAID 10,大                                                          存储设备。而现在,多核这个概念开始蔓延了。
量的 RAM,高速硬盘,乃至于强悍的 RAM 磁盘                  ◆横向扩展是我们应该走的路。应该使用常
                                                                                    ◆RAM 是廉价的。
和 SSD。运维人员对提供商要货比三家,这样                   规的(即:可用的,价格适中的,标准的。而
                                         不是特便宜的!)硬件,然后和大家一起努力                       ◆将以上两点合并起来,这意味着你只需要
可以减轻 DBA 对硬件的恐惧。从长远来看,找
                                                                                  再次合并服务就可以了。这儿有一个负载均衡
出哪个品牌的硬件更加优秀会节省大量的资金。 确保各方面都可以进行横向扩展。
                                                                                  器, 那儿 有一个 Web 服务器 …… 如果一个应用
  ◆数据库配置一直在改变。现在出现了                        ◆横向扩展从两台机子开始。另外,进行冗
                                                                                  程 序 可 以 使 用 许 多 个 CPU ( 比 如 apache ) ,
HiveDB , MySQL Proxy , DPM 这 些 软 件 。 我   余的时候也会涉及到横向扩展。
                                                                                  那么这是完美的。如果它不能(比如

                                                           7                                    http://g.51cto.com/linuxops/
                                                                                                  http://os.51cto.com/linux/
                                                                                                  投稿信箱:yangsai@51cto.com
交流
                                                         Interact


memcached),那么你最终可能会由于离散的                 让工作异步化                                     “拉”。这个是相对于 HTTP 中大量推/拉的状
服务太多而浪费掉大量的可用资源。                                                                    态而言的。
                                           ◆ 可 以 使 用 Starling, Gearman, The
  ◆作业系统(job systems)也许可以填补               Schwartz 等 工 具。作业系统可以 给 应用程 序              安全和巡查
这个鸿沟。哪里的核心的越多,哪里的工作线                     提供更多的灵活性。工作线程可以一次性地产
                                                                                     ◆一定要安装安全更新!这十分重要!有很
程就越多。                                    生出来,也可以是持久的(载入缓存数据,准
                                                                                    多疯狂的网络专家致力于在尽可能短的时间内
                                         备数据等)。它们可以在不同的硬件上,它们
缓存                                                                                  给你提供这些更新。不要因为你害怕改变而让
                                         的地理位置也可以不同。它们既可以是同步的
  ◆对于开发者和系统运维人员来说,缓存可                                                               他们白白地付出劳动。
                                         也可以是异步的。
是个好东西,值得大力发展!的确,它是不可                                                                 ◆安全性也是分层的。明白你能确保什么,
                                           ◆维护这些东西是一个运维人员的问题。使
思议的。它是与众不同的。有时你可能必须要                                                                以及不能做什么。 MySQL 有密码访问机制,并
                                         用它们既是开发者的问题也是运维人员的问题。
为它做一个权衡。有效地使用缓存可以让系统                                                                不意味着可以允许直接通过互联网来访问它。
的 整 体 性 能 提 升 10 倍 之 多 。 对 于 你 当 前 的 系     ◆当用户点击“给我所有的朋友发送邮件”
                                                                                     ◆ 在 SSH 上 禁 用 密 码 。 使 用 经 过 加 密 的
统来说,这是一个巨大的“放大镜”,并且,                     的时候,把这个工作列入计划,然后马上说:
                                                                                    passphrase 密钥来进行身份验证。远程的用
它的成本在总成本中只占很小的一部分。                       “OK,已经完成了!你的朋友马上会收到你的
                                                                                    户无法猜出你的私有密钥。他们必须从你这里
                                         邮件!”——通过异步化的方式来处理这个工
  ◆Memcached。它可以为服务提供缓存,让                                                           才能得到它。把它保管好。做好这点,就没必
                                         作。
数据库结构非标准化(这可以提升性能!),                                                                要在防火墙中关闭你的 SSH 端口了。
对 squid 缓存进行优化,甚至可以提高操作系                   ◆作业系统是衔接各个服务的一个场所。博
                                                                                     ◆搞清楚你的应用程序是如何工作的,它具
统缓存的利用率。                                 客 投 递 - 〉 IM 通 知 , 定 期 计 费 - 〉 收 费 服 务 ,
                                                                                    体需要做些什么,并相应的进行调整。比如说
                                         网关认证等。
  ◆测试它,玩弄它,并打破它。使用缓存会                                                               如果你的应用当中,只有付费页面和 Twitter
带来新的问题。要做好准备。                              ◆容易扩展。在请求进入的地方会有一些瓶                      投递服务是需要连接外部互联网的,那么就把
                                         颈,所有的工作线程必须要做的事情就是                         它们做成工作线程。将这部分工作线程放在特
                                                                                    定的设备中,让它们只能访问特定的主机。这


                                                            8                                   http://g.51cto.com/linuxops/
                                                                                                  http://os.51cto.com/linux/
                                                                                                  投稿信箱:yangsai@51cto.com
交流
                                   Interact


可以神不知鬼不觉地把你的网络的其余部分保      然后彻底禁止输入超出范围的值。做你能做的   到一些方法来绕过安全机制。如果他们可以绕
护起来。                      所有事情,让数据以可追溯的方式工作。     过它,那说明你的工作并没有做好。如果他们

 ◆对于 PHP 站点来说,以上这些建议尤其重    ◆如果你怀疑某些东西可能会被破坏,应该   不能绕过它,那么他们也许会放弃,然后离开。

要,但是在其他地方,它们也可以发挥作用。      采取适当的预防措施,最好懂得一点计算机取    ◆紧抓访问控制。这意味着运维人员必须要
如果有人要入侵,那么多半是通过你的应用。      证方面的知识(或者聘请一个专门从事这项业   为已经锁上门的“房间”提供一些窗户。不让
即使有人从前门入侵了系统,也要让他们花费      务的公司)。通过移除可疑的网络访问来做出   开发人员进入生产环境,意味着他们必须抹黑
很大精力才能进入保险箱。你需要确保的是他      响应,通过一系列的控制台或直接通过终端来   解决难题。你的确不能让开发者们直接对服务
们无法将数据带走或上传至别的什么服务器上。 检查整个系统。在已经被破坏的机器上,避免       进行修改,但是你可以提供日志工具和调试工

 ◆除了这些具体的建议之外,你还应该多读      使用任何的服务,配置文件,或数据。很多人   具等等。对于各种产品来说,这些都是成功的

一些资料。自己判断,自己动手测试。如果你      都是“清除了一个木马”,但是不知道它是怎   秘诀。

不知道一个安全模型是如何工作的,一时半会      么进来的——这样并不算真正地清除了这个木
                                                  原文:
儿可能问题不大,但是这就会导致你不知道它      马。                      http://dormando.livejournal.com/484577.html
的限制在哪里,甚至于无法判断它是否在工作。      ◆如果你有安全团队,取证专家,或其他人
                                                  译文:
 ◆基于测试,理论,攻击树的安全机制是不      手,那么你尽量不要接触那台机器,把它隔离    http://os.51cto.com/art/201101/241769.htm

会在背后给你一刀的。当人们构想出模糊的安      起来。这意味着不要重新启动它来“清除一些
                                                  相关阅读:
全模型的时候我也很喜欢它,但是像我这样的      奇怪的进程”。他们需要这些证据。如果你必
                                                  系统运维枯燥生活中的那一丝快乐
普通人都可以把它弄的支离破碎。           须这么做,就去做吧,但是要记得把系统彻底
                                                  http://os.51cto.com/art/201012/241108.htm
                          地清理干净,打上所有的安全更新,尽量搞清
 ◆尽可能地进行巡查!登录,退出,以及使
                          楚他们是否已经破坏了重要的数据。做你能做    2010 年十大 Linux 运维小窍门
用的命令都要进行审查。对面向外部服务的所                              http://os.51cto.com/art/201012/238961.htm
                          的所有事情。
有访问,包括所有在请求中指定的参数,都要
进行审查。对于你的应用程序来说,找出极值       ◆安全实际上是一种权衡。如果你做错了,
                          开发者和用户们都会“揭竿而起”:他们会找


                                      9                         http://g.51cto.com/linuxops/
                                                                  http://os.51cto.com/linux/
                                                                  投稿信箱:yangsai@51cto.com
八卦
                                                                    News


    在 2010 年 12 月到 2011 年 1 月之间,发生了下面这些事儿……                                                         【Novell】Attachmate 公司宣布以 22 亿
                                                                                                  美 元 现 金 收 购 Novell , 同 时 Novell 公 司 的
八卦,趣闻与数字 2010.12 - 2011.01                                                                        882 项专利将以 4.5 亿美元的价格出售给一家
                                                                                                  名为 CPTN Holdings LLC 的公司。而日前根

                                                                     收集整理/51CTO 系统频道              据 德 国 官 方 披 露 的 资 料 , 这 家 CPTN
                                                                                                  Holdings LLC 公司的背后居然是四家业界巨
                                                                                                  头:微软、苹果、甲骨文和 EMC。
  【 Linux 安 全 漏 洞 】 系 统 安 全 高 手 Dan                 【 LibreOffice 】 Ubuntu 开 发 者 已 经 确                 http://os.51cto.com/art/201012/239047.htm
Rosenberg 发 布 了 一 段 C 程 序 , 这 段 200             认    LibreOffice       将 会 包 括 在 Ubuntu
                                                                                                    【OpenBSD】Perry 是 NETSEC 的前 CTO,
多 行 的 程 序 利 用 了 Linux Econet 协 议 的 3            11.04 Natty Narwhal 当中。
                                                                                                  负 责 资 助 OpenBSD Crypto Framework , 同
个安全漏洞,可以导致本地帐号对系统进行拒                                  http://os.51cto.com/art/201101/242171.htm
                                                                                                  时 还 在 2000——2001 期 间 担 任 FBI 的 咨 询 师。
绝服务或特权提升。
                                                    【 Hotmail 】 Hotmail 服 务 器 健 康 度 监 控           Perry 声 称 有 些 开 发 者 在 OpenBSD 的 IPsec
    http://os.51cto.com/art/201012/237990.htm
                                                中有一 种方式是 通 过自动化测 试 进行的 …… 在                       栈中加入了大量后门,这是根据 FBI 的要求做
  【支付宝】支付宝正式对外发布支付宝安全                           12 月 30 日,我们的一个脚本代码意外地将部                          的。
控 件    for   Linux 版 本 , 同 期 还 为                分真实用户的帐号与测试帐号一并从目录服务                                   http://os.51cto.com/art/201012/241115.htm
iPad、iPhone、Android 等系统环境提供了                    器上删除了。
                                                                                                    【国产操作系统】民用的“中标 Linux”操
无控件登录浏览模式。                                            http://os.51cto.com/art/201101/242496.htm
                                                                                                  作系统和解放军研制的“银河麒麟”操作系统
    http://os.51cto.com/art/201012/239221.htm
                                                    【 Apache 】 截 止 2010 年 底 , 互 联 网 上 有           在上海正式宣布合并,双方今后将共同以“中
  【 Mint 】 圣 诞 之 际 , 基 于             Debian     2.55 亿 站 点 ; Apache 2009 年 托 管 1.09 亿             标麒麟”的新品牌统一出现在市场上,并将开
Testing   的 滚 动 升 级 Linux Mint          版本      个站点,而 2010 年数字变成了 1.52 亿。                         发军民两用的操作系统。
2012 发布,包含 64 位版本支持。                                  http://os.51cto.com/art/201101/241932.htm        http://os.51cto.com/art/201012/239006.htm
    http://os.51cto.com/art/201012/240558.htm


                                                                      10                                           http://g.51cto.com/linuxops/
                                                                                                                     http://os.51cto.com/linux/
                                                                                                                     投稿信箱:yangsai@51cto.com
专题
                                          Special



                                                              为什么进行 Linux 性能监测?
     本期专题:Linux 性能瓶颈
                                                                                           文/易龙



                                                               系   统优化是一项复杂、繁琐、长期的
                                                                   工作,优化前需要监测、采集、测
                                                              试、评估,优化后也需要测试、采集、评估、
                                                              监测,而且是一个长期和持续的过程,不是说
                                                              现在优化了,测试了,以后就可以一劳永逸了
                                                              也不是说书本上的优化就适合眼下正在运行的
                                                              系统,不同的系统、不同的硬件、不同的应用
                                                              优化的重点也不同、优化的方法也不同、优化

 瓶颈:当整个系统的性能或资源被某个或数个组件或元素限制的时候,这种现象被                         的参数也不同。性能监测是系统优化过程中重

称之为瓶颈。该词取自水流的类比:当你从瓶子里往外倒水的时候,水流出的速度是                         要的一环,如果没有监测、不清楚性能瓶颈在

由瓶口的宽度限制的,即所谓的瓶颈。                                             哪里,优化什么呢、怎么优化呢?所以找到性
                                                              能瓶颈是性能监测的目的,也是系统优化的关
                              -自由的维基百科,Bottleneck 词条
                                                              键。系统由若干子系统构成,通常修改一个子
 图片文字解说:(在这个应用中),针对模块 A 或 C 进行特性优化是无法提升整个                     系统有可能影响到另外一个子系统,甚至会导
应用的性能的。只有当模块 B 的性能问题得到解决的时候,整个应用的性能才会提升。                      致整个系统不稳定、崩溃。所以说优化、监测
        http://polymorphicpodcast.com/shows/webperformance/   测试通常是连在一起的,而且是一个循环而且
                                                              长期的过程。

                                                               通常,我们监测的子系统有以下这些:

                                            11                         http://g.51cto.com/linuxops/
                                                                         http://os.51cto.com/linux/
                                                                         投稿信箱:yangsai@51cto.com
专题
                                                Special


 ◆CPU                            /视频处理、科学计算等都可被视作 CPU 相关                  底线
 ◆Memory                         的应用。
                                                                            我们如何知道系统性能是好还是差呢?这需
 ◆IO                               看看实际中的例子,第 1 个是文件服务器拷                  要事先建立一个底线,如果性能监测得到的统
                                 贝一个大文件时表现出来的特征,第 2 个是                    计数据跨过这条线,我们就可以说这个系统性
 ◆Network
                                 CPU 做大量计算时表现出来的特征:                       能差,如果数据能保持在线内我们就说性能好
 这些子系统互相依赖,了解这些子系统的特             $ vmstat 1
性,监测这些子系统的性能参数以及及时发现             procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
可能会出现的瓶颈对系统优化很有帮助。                r b    swpd   free   buff cache    si   so    bi    bo   in   cs us sy id wa st
                                  0 4     140 1962724 335516 4852308 0     0   388 65024 1442 563 0 2 47 52 0
应用类型                              0 4     140 1961816 335516 4853868 0     0   768 65536 1434 522 0 1 50 48 0
                                  0 4     140 1960788 335516 4855300 0     0   768 48640 1412 573 0 1 50 49 0
 不同的系统用途也不同,要找到性能瓶颈需              0 4     140 1958528 335516 4857280 0     0 1024 65536 1415 521 0 1 41 57 0
要知道系统跑的是什么应用、有些什么特点,              0 5     140 1957488 335516 4858884 0     0   768 81412 1504 609 0 2 50 49 0
                                 $ vmstat 1
比如 web server 对系统的要求肯定和 file
                                 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
server 不一样,所以分清不同系统的应用类           r b    swpd   free   buff cache    si   so    bi    bo   in   cs us sy id wa st
型很重要,通常应用可以分为两种类型:                4 0     140 3625096 334256 3266584 0     0     0    16 1054 470 100 0 0 0 0
                                  4 0     140 3625220 334264 3266576 0     0     0    12 1037 448 100 0 0 0 0
 IO 相关 , IO 相关 的应用 通 常用 来处 理 大    4 0     140 3624468 334264 3266580 0     0     0   148 1160 632 100 0 0 0 0
量数据,需要大量内存和存储,频繁 IO 操作            4 0     140 3624468 334264 3266580 0     0     0     0 1078 527 100 0 0 0 0
读 写数据,而对 CPU 的要 求则 较少 , 大部分       4 0     140 3624712 334264 3266580 0     0     0    80 1053 501 100 0 0 0 0

时候 CPU 都在 等待 硬盘, 比如,数据库服务          上面两个例子最明显的差别就是 id 一栏,                  建立这样底线需要知道一些理论、额外的负载
器、文件服务器等。                        代表 CPU 的空 闲率 ,拷贝文 件时候 id 维 持             测试和系统管理员多年的经验。如果自己没有
 CPU 相关,CPU 相关的应用需要使用大量          在 50% 左右,CPU 大量计算的时候 id 基本               多年的经验,有一个简单划底线的办法就是:
CPU,比如高并发的 web/mail 服务器、图像       为 0。                                     把这个底线建立在自己对系统的期望上。自己
                                                                          期望这个系统有个什么样的性能,这是一个底

                                                   12                                    http://g.51cto.com/linuxops/
                                                                                           http://os.51cto.com/linux/
                                                                                           投稿信箱:yangsai@51cto.com
专题
                                           Special


线,如果没有达到这个要求就是性能差。比如                                          (本文为系列第一篇,后面针对 CPU、内存
                             工具         简单介绍
VPSee 上个月有个 RAID0 的测试,期望的测                                   IO、网络等每一部分都各有文章叙述。更多内
                             top
试结果应该是 RAID0 的 IO 性能比单硬盘有               查看 进程 活动 状态 以及 一些    容可参考原文。)
显著提高,底线是 RAID0 的 IO 至少要比单               系统状况
                                                              原文:
硬盘要好(好多少不重要,底线是至少要好)         vmstat
                                        查看 系统 状态 、 硬 件和 系统    http://www.vpsee.com/2009/11/linux-system-
测试结果却发现 RAID0 性能还不如单硬盘,                 信息等                   performance-monitoring-introduction/
说明性能差,这个时候需要问个为什么,这往                                          相关阅读:
                             iostat
                                        查看 CPU 负载,硬盘状况
往是性能瓶颈所在,经过排查发现是原硬盘有
                                                              linux 进程查看连载之 linux top 命令
硬件瑕疵造成性能测试结果错误。              sar
                                        综合工具,查看系统状况           http://os.51cto.com/art/200910/158910.htm
                             mpstat
                                        查看多处理器状况              Linux 系统监控工具之 vmstat 详解
                             netstat                          http://os.51cto.com/art/201005/200672.htm
                                        查看网络状况
                                                              Linux 性能检测工具 iostat,ps 和 pstree
                             iptraf
                                        实时网络状况监测              http://os.51cto.com/art/201006/203887.htm
                             tcpdump
                                        抓取网络数据包,详细分析          mpstat:监测 CPU(包括多 CPU)性能
                             tcptrace                         http://book.51cto.com/art/201008/217272.htm
                                        数据包分析工具
                                                              Linux 网络性能调试工具 Netstat 命令篇
                             netperf
                                        网络带宽工具                http://os.51cto.com/art/201006/203422.htm
  底线是 RAID0 的 IO 至少要比单硬盘好    dstat
                                        综合工具,综合了 vmstat,
                                        iostat,  ifstat,
监测工具
                                        netstat 等多个信息
 我们只需要简单的工具就可以对 Linux 的
性能进行监测,以下是 VPSee 常用的工具:


                                               13                           http://g.51cto.com/linuxops/
                                                                              http://os.51cto.com/linux/
                                                                              投稿信箱:yangsai@51cto.com
专题
                                     Special


   关于内存的常规经验法则是“增加再增加”。当性能问题指向内存的时候,一般的共识是                      3.存储
 增加更多的内存。不过,这种做法只能在短期内有效。
                                                                 磁盘 速 度 、 RAID 类型 、 存 储 类 型 和 控制 器
                                                                技术这些结合在一起就产生了我们所认识的磁
细数十个最令人头疼的性能瓶颈                                                  盘 I/O。磁盘 I/O 是系统管理员和用户们普遍
                                                                焦虑的性能问题来源。这里有实际和物理的性
                                               文/Kenneth Hess   能限制,即使是使用现在最好的磁盘技术也不
                                                     编译/哲婷      例外。当在磁盘上结合和分离工作负载的时候


 当
                                                                请使用最佳做法。
        你听到“性能瓶颈”这个名词,马    就会受到影响。当 CPU 支持大于 75%的运算的
        上出现在你脑海中的形象应该是     时候,整个系统的运行速度就会减缓。 CPU 需              4.网络
CPU 、内存、磁盘和网络 。不可否 认,这些是   要一些空间来承载不定时的数据冲击,在这个                  网络往往被大家认为是一种常见的性能瓶颈
寻找性能问题所在很好的出发点,但是它们并       时候,工作负载可能会在很短的时间内达到                  来源,但是事实上并非如此。除非有一个网络
不是所有性能问题唯一的聚集点。以下我们将       100%。CPU 负载是性能瓶颈的一个常见来源。             组件发生硬件故障,比如交换机端口损坏、电
列出另外六个问题可能潜在的地方,当你在出                                            缆损坏、网卡或者路由器配置出错。所以在你
                           2.内存
现性能故障的时候就可以对其进行一一排除。                                            怀疑“网络”性能出现问题的时候最好检查一
有时候,知道问题的根源所在可以很好地防止        关于内存的常规经验法则是“增加再增加”。
                                                                下其它地方。网络上感知到的运行缓慢问题通
你的个人系统崩溃。                  当性能问题指向内存的时候,一般的共识是,
                                                                常应该指向本列表中的其它九项。
                           增加更多的内存。不过,这种做法只能在短期
 请注意,以下排序不分先后。
                           内有效。其实,当性能瓶颈指向内存的时候,                 5.应用程序
1.CPU
                           往往是因为欠缺的软件设计(内存泄露)或者                  虽然没有应用程序开发人员愿意承认,但是
 CPU 是电脑进行计算和指令操作的中枢。      其它的系统缺陷,只不过其表现为内存问题。                 劣质编码的应用程序成为了硬件问题的导火线
 CPU 可以处理数以百万计的计算和指令,但     解决内存性能问题的关键在于要在尝试增加内                 处于静止状态的系统将严重受到应用程序启动
是在这些操作超过负荷的时候,它的性能可能       存之前找到真正的问题根源所在。                      并且没有任何迹象表明的关闭的影响。这是一

                                       14                                   http://g.51cto.com/linuxops/
                                                                              http://os.51cto.com/linux/
                                                                              投稿信箱:yangsai@51cto.com
专题
                                      Special


场在系统管理员和开发人员之间一直在持续的   作。最好的建议是衡量所有系统的工作能力和                     10.技术
斗争。他们都声称是对方的责任。不过,在进   性能并对报告给你的数据进行分析。转移工作
                                                                  你为自己的基础架构所选择的技术在性能方
行了无数小时的硬件性能测试之后,人们发现   负载,加强系统并小心留意它的表现。
                                                                面扮演着非常重要的角色。比如,如果你的服
问题出在应用程序。
                       8.故障或者过期的硬件                              务致力于一个虚拟架构技术,你可能会遇到在

6.恶意软件                                                          物理系统中不曾见过的性能问题。另外,有些
                         旧的硬件很容易出故障。硬件问题可能会导
                                                                工 作 负 载 可 以 在 虚 拟 技 术 中 生 机 勃 勃 。 例 如,
 病毒、木马和间谍软件在由于恶意软件导致   致系统重启、数据丢失,它的不可预测性让系
                                                                LAMP(Linux、Apache、MySQL、PHP)工作
的性能问题中占很大一部分。在出现问题的时   统管理员们叫苦不迭。阻止这类悲剧最好的办
                                                                负载比在 KVW 上的速度更快。不过,集装箱式
候,用户大多会抱怨网络、应用程序或者他们   法是保持硬件更新频率,使用冗余硬件,并对
                                                                的 虚 拟 化 ( OpenVZ 、 Parallels 、 Solaris
的计算机。这些性能杀手可能隐匿在一个或者   你的系统进行仔细的监控。
                                                                Zones)拥有适合任何工作负载的性能。
多个服务器系统中、用户工作站中或者两者的
                       9.文件系统
结合体中。恶意软件的感染十分普遍,因此,                                              原文:
你必须采取全方位的防御措施来阻止他们。杀     你是否知道你对文件系统的选择可能会对性                      http://www.serverwatch.com/trends/article.ph
                       能产生深远的影响?答案是肯定的。有些文件                       p/3912821/Uncover-Your-10-Most-Painful-
毒软件、反间谍软件、本地防火墙和定期补丁                                              Performance-Bottlenecks.htm
能够帮助你保护系统并防止由此产生的性能问   系 统 , 比 如 JFS , 可 能 只 占 用 很 少 的
                                                                  译文:
题。                     CPU。XFS 拥有很高的可扩展性和性能。 NTFS
                                                                  http://os.51cto.com/art/201011/233490.htm
                       是 一 个 可 恢 复 的 高 性 能 文 件 系 统 。 新 的 EXT4
7.工作负载                 文件系统能够有效地支持庞大的文档。每种文                       相关阅读:

 智能工作负载管理可以帮助你防止由于欠缺   件系统都有它自己的针对性,如果不能为一个                       十大 x86 服务器常见故障——系统篇
平衡的工作负载或者负载平衡计划设计不周而   应用程序选择正确的文件系统就可能导致灾难                       http://os.51cto.com/art/201008/220004.htm
引起的性能问题。把另外一个系统添加到有问   性的后果。慎重考虑你的文件系并做出适合你
题的集群中去可以缓解它的工作压力。但是在   工作的正确选择。
虚拟环境下的物理机上似乎更容易完成这一操


                                         15                                      http://g.51cto.com/linuxops/
                                                                                   http://os.51cto.com/linux/
                                                                                   投稿信箱:yangsai@51cto.com
专题
                                                         Special


                                                                                    /dev/hda2            27474876
    对 Linux 磁盘管理稍微有一些学习和经验的朋友们应该都知道 df 、 du 和 fdisk 这三个常
                                                                                     24130460   1948772 93% /usr
  用命令: df 用于检查文件系统磁盘占用情况, du 检查磁盘空间占用情况,而 fdisk 用于磁盘                                /dev/hda6              256667
  分区。                                                                                232729     10686 96% /var
                                                                                      第 1 列是代表文件系统对应的设备文件的路

Linux 磁盘管理三板斧的使用心得                                                                  径名(一般是硬盘上的分区);第 2 列给出分
                                                                                    区 包 含 的 数 据 块 ( 1024 字 节 ) 的 数 目 ; 第
                                                                                    3,4 列分别表示已用的和可用的数据块数目。
                                                                             文/李洋
                                                                                      用户 也许 会感 到奇 怪,第 3 ,4 列块数 之和



  对
                                                                                    不等于第 2 列中的块数。这是因为默认的每个
        Linux 磁 盘 管 理 稍 微 有 一 些 学 习 和     -t:显示各指定类型的文件系统的磁盘空间使
                                          用情况。                                      分区都留了少量空间供系统管理员使用的缘故
        经验的朋友们应该都知道 df、du 和
                                          -x:列出不是某一指定类型文件系统的磁盘空                     即使遇到普通用户空间已满的情况,管理员仍
fdisk 这三个常用命令。这三个工具是本人在                   间使用情况(与 t 选项相反)。                          能登录和留有解决问题所需的工作空间。清单
进行 Linux 磁盘管理时常用的工具。                      -T:显示文件系统类型。
                                                                                    中 Use% 列 表 示 普 通 用 户 空 间 使 用 的 百 分 比 ,
                                           我们先看看使用 df 命令的例子:                        若 这 一 数 字 达 到 100% , 分 区 仍 然 留 有 系 统 管
1.df
                                        //列出各文件系统的磁盘空间使用情况                          理员使用的空间。
   df 命 令 可 以 获 取 硬 盘 被 占 用 了 多 少 空 间 , #df
目前还剩下多少空间等信息,它也可以显示所 Filesystem                               1k-blocks               最后,Mounted on 列表示文件系统的安装
                                         Used    Available Use% Mounted on          点。
有文件系统对 i 节点和磁盘块的使用情况。
                                        /dev/hda5                381139
                                         332921      28540 93% /                    //列出各文件系统的 i 节点使用情况。
   df 命令各个选项的含义如下:
                                        /dev/hda1                 46636             #df -ia
  -a:显示所有文件系统的磁盘使用情况,包括                  6871      37357 16% /boot                  Filesystem            Inodes IUsed
 0 块(block)的文件系统,如/proc 文件系统。 /dev/hda3                        10041144              IFree IUse% Mounted on
  -k:以 k 字节为单位显示。                        6632528    2898556 70% /home               /dev/hda5              98392 23919
  -i:显示 i 节点信息,而不是磁盘块。                  none                     127372              74473    25% /
                                         0    127372    0% /dev/shm

                                                           16                                     http://g.51cto.com/linuxops/
                                                                                                    http://os.51cto.com/linux/
                                                                                                    投稿信箱:yangsai@51cto.com
专题
                                                      Special


none                         0      0                                           3     /mnt
 0     - /proc                          2. du
                                                                                //列出各目录所占的磁盘空间,但不详细列出每
/dev/hda1                12048     38    du 的 功 能 是 逐 级 进 入 指 定 目 录 的 每 一 个 子     个文件所占的空间
 12010     1% /boot                                                             #du
none                         0      0   目录并显示该目录占用文件系统数据块(1024
                                                                                3684  ./log
 0     - /dev/pts                       字节)的情况。若没有给出指定目录,则对当                    84    ./libnids-1.17/doc
/dev/hda3              1275456 355008
                                        前目录进行统计。                                720   ./libnids-1.17/src
 920448    28% /home
                                                                                32    ./libnids-1.17/samples
none                     31843      1    df 命令的各个选项含义如下:
 31842     1% /dev/shm                                                          1064  ./libnids-1.17
                                        -s:对每个 Names 参数只给出占用的数据块总               4944  .
/dev/hda2              3489792 133637
 3356155      4% /usr                   数。
                                                                                 第 1 列是以块为单位计的磁盘空间容量,第
/dev/hda6                66264   9876   -a:递归地显示指定目录中各文件及子目录中
                                        各文件占用的数据块数。若既不指定-s,也不                   2 列列出目录中使用这些空间的目录名称。
 56388    15% /var
//列出文件系统的类型。                            指定-a,则只显示 Names 中的每一个目录及其                清单有时很长,有时只需要一个总数。这时
#df -T                                  中的各子目录所占的磁盘块数。
                                                                                可在 du 命令中加-s 选项来取得总数:
Filesystem      Type   1k-blocks        -b:以字节为单位列出磁盘空间使用情况(系
 Used Available Use% Mounted on         统默认以 k 字节为单位)。                          #du –s /mnt
/dev/hda5       ext3      381139                                                3       /mnt
                                        -k:以 1024 字节为单位列出磁盘空间使用情
 332921       28540 93% /               况。                                      //列出所有文件和目录所占的空间(使用 a 选
/dev/hda1       ext3       46636                                                  项),并以字节为单位(使用 b 选项)来计算
                                        -c:最后再加上一个总计(系统默认设置)。
 6871      37357 16% /boot                                                        大小
                                        -l:计算所有的文件大小,对硬链接文件,则
/dev/hda3       ext3    10041144                                                #du –ab /root/mail
 6632528    2898556 70% /home           计算多次。
                                                                                6144    mail/sent-mail
none           tmpfs      127372        -x:跳过在不同文件系统上的目录不予统计。                   1024    mail/saved-messages
 0     127372    0% /dev/shm             下面举例说明 du 命令的使用:                       8192    mail
/dev/hda2       ext3    27474876
 24130460     1948772 93% /usr          //查看/mnt 目录占用磁盘空间的情况
                                                                                3、fdisk
/dev/hda6       ext3      256667        #du –abk /mnt
 232729       10686 96% /var2           1       /mnt/cdrom                       fdisk 可以划分磁盘分区。
                                        1       /mnt/floppy


                                                         17                               http://g.51cto.com/linuxops/
                                                                                            http://os.51cto.com/linux/
                                                                                            投稿信箱:yangsai@51cto.com
专题
                                                          Special


#fdisk /dev/had    //使用/dev/had 作为默       Disk /dev/sda: 4294 MB, 4294967296
                                                                                      这里要选择新建的分区类型,是主分区还是
 认的分区设备                                    bytes
                                          255 heads, 63 sectors/track, 522          扩展分区 ;并 选择 p 或是 e 。 然后 就是 设置分
Command (m for help): m //选择命令选项
                                           cylinders                                区的大小。
Command action
                                          Units = cylinders of 16065 * 512 =
   a   toggle a bootable flag                                                         要提醒注意的是,如果硬盘上有扩展分区,
                                           8225280 bytes
   b   edit bsd disklabel
                                             Device Boot    Start       End         就只能增加逻辑分区,不能增加扩展分区。
   c   toggle the dos compatibility        Blocks    Id System
 flag                                                                                 在增加分区的时候,其类型都是默认的
                                          /dev/hda1    *        41      522
   d   delete a partition                  3871665    83 Linux
   l   list known partition types                                                   Linux Native ,如果要把其中的某些分区改
                                          /dev/hda2              1       40
   m   print this menu                     321268+ 82 Linux swap                    变 为 其 他 类 型 , 例 如 Linux Swap 或 FAT32
   n   add a new partition                Partition table entries are not in disk   等,可以通过命令 t 来改变;如果想知道系统
   o   create a new empty DOS partition    order
 table                                                                              所支持的分区类型,键入 l,如下所示:
                                          Command (m for help):
   p   print the partition table                                                    Command (m for help): t
                                            如果想完全改变硬盘的分区格式,就可以通                     Partition number (1-4): 1
   q   quit without saving changes
   s   create a new empty Sun disklabel   过 d 参数一个一个地删除存在的硬盘分区。删                    Hex code (type L to list codes): 82
   t   change a partition's system id     除完毕,就可以通过 n 参数来增加新的分区。                    Changed system type of partition 1 to
   u   change display/entry units                                                    82 (Linux swap)
                                          当按下“n”后,可以看到如下所示:
   v   verify the partition table                                                     改 变 完 了 分 区 类 型 , 就 可 以 按 下 “ w” , 保
   w   write table to disk and exit       Command (m for help): n
                                          Command action                            存并退出。如果不想保存,那么可以选择“ q”
   x   extra functionality (experts
 only)                                       e   extended                           直接退出,如下所示:
                                             p   primary partition (1-4)            Command (m for help):w
  用 户 通 过 提 示 键 入 “ m” , 可 以 显 示 Fdisk       p
命令各个参数的说明。                                   Partiton number(1-4):1                   原文:
                                             First cylinder(1-1023):1                 http://os.51cto.com/art/201012/240726.htm
  在 Linux 分 区 过 程 , 一 般 是 先 通 过 p 参 数
                                             Last cylinder or + size or +sizeK or
来显示硬盘分区表信息,然后根据信息确定将                       + sizeM(1-1023):+258M
来的分区。如下所示:

                                                            18                                      http://g.51cto.com/linuxops/
                                                                                                      http://os.51cto.com/linux/
                                                                                                      投稿信箱:yangsai@51cto.com
专题
                                                         Special


                                                                                * the CPU loadavg code.
    load average 是 0 的时候都认为他很低, 10 的时候就觉得高, 20 就不用讲了!但是除
                                                                                */
  了这两种极端的情况之外,那什么时候是这两个值的临界点?当别人问起我这个问题的时候                                      static void spu_calc_load(void)
  我也不知道如何回答。                                                                    {
                                                                                unsigned long active_tasks; /* fixed-
                                                                                  point */
系统负载:如何判断 Linux load 的值是否过高
                                                                                active_tasks = count_active_contexts()
                                                                                  * FIXED_1;
                                                                       文/色萝卜    CALC_LOAD(spu_avenrun[0], EXP_1,
                                                                                  active_tasks);
                                                                                CALC_LOAD(spu_avenrun[1], EXP_5,


  接
                                                                                  active_tasks);
        触过和使用过 unix 或 linux 的朋友          系 统 不 行 了 。 load average 是 0 的 时 候 都   CALC_LOAD(spu_avenrun[2], EXP_15,
        都知道如何查看 Unix/Linux load          认为他很 低 , 10 的 时候 就 觉 得高, 20 就不用          active_tasks);
                                                                                }
的值,这边我也重复一下查看 load 的方法:                  讲了!但是除了这两种极端的情况之外,那什
[root@aaronw ~]# uptime                                                           CALC_LOAD 是这样定义:
                                         么时候是这两个值的临界点?当别人问起我这
13:33:37 up 7 days, 1:52, 1 user, load                                          #define LOAD_FREQ (5*HZ+1) /* 5 sec
                                         个问题的时候,我也不知道如何回答,在我大                    intervals */
 average: 4.15, 2.00, 3.14
[root@aaronw ~]# w                       脑里就根本就没有考虑过。困扰了我很久,我                   #define EXP_1 1884 /* 1/exp(5sec/1min)
13:35:35 up 1 days, 1:54, 1 user, load                                           as fixed-point */
                                         觉得要搞明白他!
 average: 0.00, 0.00, 0.00                                                      #define EXP_5 2014 /* 1/exp(5sec/5min)
USER TTY FROM LOGIN@ IDLE JCPU PCPU        先 从 linux 的 kernel 的 源 码 开 始 吧 ! 在    */
 WHAT                                                                           #define EXP_15 2037 /*
                                         linux 2.6.36 版本中有这样一段代码:
root pts/1 192.168.2.2 13:33 0.00s                                               1/exp(5sec/15min) */#define
                                         /**                                     CALC_LOAD(load,exp,n) 
 0.02s 0.00s w
                                         * spu_calc_load – update the avenrun   load *= exp; 
  load average 后 面 三 个 值 代 表 系 统 在 1       load estimates.                      load += n*(FIXED_1-exp); 
分钟、5 分钟和 15 分钟的负载情况,都知道数                 *                                      load >>= FSHIFT;
                                         * No locking against reading these
字越高表示系统负载越大,第一直觉就是这个                       values from userspace, as for          从这里我们能看到取负载值的最小周期 5 秒。

                                                           19                                 http://g.51cto.com/linuxops/
                                                                                                http://os.51cto.com/linux/
                                                                                                投稿信箱:yangsai@51cto.com
专题
                                                            Special



什么是 load?                                CPU 高不等同于 load 高
  load 的 就 是 一 定 时 间 内 计 算 机 有 多 少 个       在 Unix/Linux 可 能 经 常 会 遇 到 cpu 的 使
active_tasks ,也就是说 是计 算机 的任 务执           用率为 100%,但是 load 却不高!这是为什么
行队列的长度,cpu 计算的队列。                        呢?因为几乎所有的任务和会和 CPU 进行交互,
                                         但是由于各个设备的使用频率不同,造成了不
load 多少是正常?
                                         能同步进行的问题。比如说,当对硬盘进行读
  既然 load 是 cpu 计算的队列,那就应该和              写 的 时 候 , 出 现 IO 的 等 待 时 候 , 事 实 上 cpu
cpu 个处理方式和 cpu 的个数有关系。所以我                已经被切换到别的进程上了。该任务就处于等
个 人 认 为 应 该 按 系 统 识 别 的 cpu 个 数 来 确 定    待状态,当这样的任务过多,导致队列长度过
load 的 临 界 值 , 系 统 识 别 为 8 个 cpu , 那 么   大,这样就体现到负载过大了,但实际是此时
load 为 8 就 是 临 界 点 , 高 于 8 就 属 于 over    cpu 被 分 配 去 干 执 行 别 的 任 务 或 空 闲 , 因 此
load 了。                                  CPU 高 不 等 同 于 load 高 , load 高 也 不 能 于
                                         cpu 高。
什么叫系统识别 cpu 个数?
  我是这样认为的,这里涉及到 cpu 物理个数                   原文:
和超线程技术的问题。个人认为 4 个物理 cpu                   http://selboo.com.cn/post/885/

和 2 个双核是不能够等同的,当然这是物理层                     相关阅读:
面 的 事 了 ! 在 系 统 里 识 别 的 都 是 4 个 CPU. 所     查询系统负载信息 Linux uptime 命令详解
以应该要以系统识别的为准。毕竟是系统去支                       http://os.51cto.com/art/201005/200703.htm
配他的使用。
                                           十三个强大的 Linux 性能监测工具
                                           http://os.51cto.com/art/201005/201618.htm




                                                               20                      http://g.51cto.com/linuxops/
                                                                                         http://os.51cto.com/linux/
                                                                                         投稿信箱:yangsai@51cto.com
技巧
                                                          Tips


    Expect 是由 Don Libes 基于 Tcl 语言开发的,并被广泛应用于交互式操作和自动化                              2,使用“-i”选项交互地执行 expect 脚
  测试的场景之中,它尤其适用于需要对多台服务器执行相同操作的环境中,可以大幅度提高                                         本
  系统管理人员的工作效率。
                                                                                     使用“-i”选项,可以通过来自于标准输入
                                                                                   的读 命令 来交 互地 执行 expect 脚本。如下所
在 linux 下灵活使用 expect 脚本的小窍门                                                        示:
                                                                                   $ expect -i arg1 arg2 arg3
                                                       文/Balakrishnan Mariyappan   expect1.1>set argv
                                                                                   arg1 arg2 arg3
                                                                       译/周雪峰
                                                                                   expect1.2>

  对 于 喜 爱 自 动 化 的 Linux 系 统 管 理 员 而 言,     如果你是 expect 脚本语言的新手,可以首                   正常情况下,当你执行上面的 expect 命令

一定使用过 expect 这个命令行工具。Expect              先 从 我 们 的 expect 的 “ hello world” 样 例     的 时 候 ( 没 有 “ -i” 选 项 ) , 它 会 把 arg1 当

是 由 Don Libes 基 于 Tcl 语言开发的, 并           (英文)开始。                                   成脚本的 文件 名 ,所以 “ -i” 选项可以 让 脚本

被广泛应用于交互式操作和自动化测试的场景                                                               把多个参数当成一个连续的列表。
                                         1 , 使 用 “ -c” 选 项 , 从 命 令 行 执 行
之中,它尤其适用于需要对多台服务器执行相                                                                 当你 执 行 带 有 “ -c” 选 项 的 expect 脚本 的
                                         expect 脚本                                 时候,这个选项是十分有用的。因为默认情况
同操作的环境中,可以大幅度提高系统管理人
员 的 工 作 效 率 。 本 文 是 thegeekstuff.com       expect 可 以 让 你 使 用 “ -c” 选 项 , 直 接 在    下,expect 是交互地执行的。
最近更新的一篇技术分享文章,其中详细讲述                     命令行中执行它,如下所示:
                                         $ expect -c 'expect "n" {send "pressed
                                                                                   3 , 当 执 行 expect 脚 本 的 时 候 , 输 出 调
了如何通过不同的命令行选项来执行一个
                                           entern"}                               试信息
expect 脚 本 。 具 体 有 什 么 用 , 大 家 可 以 自 由   pressed enter
发挥想象力。                                   $                                           当你用“-d”选项执行代码的时候,你可以

                                           如果你执行了上面的脚本,它会等待输入换                     输出诊断的信息。如下所示:
  本文假设您对 expect 的基本使用方法已经
                                                                                   $ cat sample.exp
有一定的了解。                                  行 符 ( n ) 。 按 “ enter” 键 以 后 , 它 会 打 印
                                                                                   # !/usr/bin/expect -f
                                         出“pressed enter”这个消息,然后退出。

                                                           21                                    http://g.51cto.com/linuxops/
                                                                                                   http://os.51cto.com/linux/
                                                                                                   投稿信箱:yangsai@51cto.com
技巧
                                                           Tips


expect "n";
                                            “-D”选项左边的选项会在调试器启动以前                     当执行上面的脚本的时候,会跳过命令行选
send "pressed enter";
                                          被处理。然后,在调试器启动以后,剩下的命                     项 , 它 们 会 被 当 成 参 数 ( 而 不 是 expect 选
$ expect -d sample.exp                    令才会被执行。                                  项),如下所示:
expect version 5.43.0                     $ expect -c 'set timeout 10' -D 1 -c     $ expect print_cmdline_args.exp -d -c
argv[0] = expect argv[1] = -d argv[2]      'set a 1'                               argv0 : -d
 = sample.exp                             1: set a 1                               argv1 : -c
set argc 0                                dbg1.0>
set argv0 "sample.exp"                                                               原文:
set argv ""                               5,逐行地执行 expect 脚本                          http://www.thegeekstuff.com/2010/12/5-
executing commands from command file                                                 expect-script-command-line-argument-
                                            通常,expect 会在执行脚本之前,把整个                   examples/
 sample.exp
expect: does "" (spawn_id exp0) match     脚 本 都 读 入 到 内 存 中 。 “ -b” 选 项 可 以 让
                                                                                     译文:
 glob pattern "n"? no                    expect 一 次 只 读 取 脚 本 中 的 一 行 。 当 你 没 有
expect: does "n" (spawn_id exp0) match                                              http://os.51cto.com/art/201012/240260.htm
 glob pattern "n"? yes                   写完整个脚本的时候,这是十分有用的,
                                                                                     相关阅读:
expect: set expect_out(0,string) "n"     expect 可 以 开 始 执 行 这 个 不 完 整 的 脚 本 , 并
expect: set expect_out(spawn_id) "exp0"   且,它可以避免把脚本写入到临时文件中。                        Hotmail 系统故障:都是自动化脚本惹的祸
expect: set expect_out(buffer) "n"                                                  http://os.51cto.com/art/201101/242496.htm
                                          $ expect -b
send: sending "pressed enter" to { exp0
 pressed enter}                                                                      使用 Perl 脚本彻底实现系统管理自动化
                                          6,让 expect 不解释命令行参数
                                                                                     http://os.51cto.com/art/201012/240483.htm
4,使用“-D”选项启动 expect 调试器                     你可以使用标识符让 expect 不解释命令行
                                                                                     不看后悔的 Linux 生产服务器 Shell 脚本分享
  “-D”选项用于启动调试器,它只接受一个                    参数。
                                                                                     http://os.51cto.com/art/201010/229129.htm
布尔值的参数。这个参数表示提示器必须马上                        你可以像下面这样的读入命令行参数:
启动,还是只是初始化调试器,以后再使用它。 $ cat print_cmdline_args.exp
$ expect -D 1 script  #!/usr/bin/expect
                      puts 'argv0 : [lindex $argv 0]';
                      puts 'argv1 : [lindex $argv 1]';

                                                            22                                     http://g.51cto.com/linuxops/
                                                                                                     http://os.51cto.com/linux/
                                                                                                     投稿信箱:yangsai@51cto.com
技巧
                                                          Tips


    我在配置某机房 Linux 服务器的 iptables 时,不小心设置了某一项错误参数,结果锁定                               可以解决引导问题,然后进入 loader 界面
  了 SSH 会话,导致我们经理及另一技术员连不上服务器。                                                     * 这 个 引 导 盘 符 根 据 da0s1x 的 x 得 来 ,
                                                                                 因此你安装系统的时候 /boot 所在分区区号,
系统管理员易犯错误及解决方法汇总                                                                 才是真正的 x 字母,如果不知道就从往后试试

                                                                                   同   样   由   于   默   认   kernel   位   置
                                                                      文/抚琴煮酒     是/boot/kernel 所以依然需要手动加载
                                                                                 ok load kernel/kernel


  本
                                         10G For /root                             获得 kernel 信息后
        文分享的都是系统管理员在工作的
                                         256M For /boot                          ok boot
        时候容易犯的错误,经抚琴煮酒整理
                                         其余 for /usr                               这样就可以正常引导了。
并提供解决方法,希望可以给大家一些指导,
                                           安装正常,结果安装重启后便出现杯具了:
避免在工作中出现此类问题。                                                                      但是这样还没有彻底解决问题,随后还需要
                                         >> FreeBSD/i386 BOOT
                                                                                 在磁盘挂载的时候输入
                                         Default: 0:da(0,a)/boot/kernel/kernel
一、安装 FreeBSD 后无法重启                       boot:                                   mount root>ufs:/dev/da0s1a
  问题描述:                                    原因:                                     才能进入系统,而且每次重启都手动一次。

  装 惯 了 Linux 的 人 肯 定 知 道 一 般 会 有 个                                              所以其实问题没有彻底解决。
                                           通过网上查资料,了解到手动引导的全过程,
boot 分 区 , 可 是 在 bsd 就 不 那 么 容 易 了 。 在   发现了问题所在:                                  所以,为了避免以上的/boot 问题,目前我
安 装 FreeBSD 8.1 的 时 候 遇 到 了 问 题 , 查 阅                                            装机一般规范化操作,一般只分三个区,避免
                                           由 于 独 立 分 区 /boot 造 成 了 FreeBSD 引 导
了 chinaunix 上 面 , 正 好 也 有 相 关 问 题 整 理,                                           独立分区/boot,也希望玩 Linux 的朋友们重
                                         过程中无法正确找到内核引导的位置。
特摘录如下:                                                                           视下这个问题。
                                           解决方法:                                 2048M For /
  我要求 FreeBSD 分区:
                                           通过                                    4096M For swap
2G For /
                                         boot: 0:da(0,e)/loader                  其余的均 For /usr
4G For swap

                                                           23                                  http://g.51cto.com/linuxops/
                                                                                                 http://os.51cto.com/linux/
                                                                                                 投稿信箱:yangsai@51cto.com
技巧
                                                         Tips



二、root 密码更改后无法远程登录                      了 SSH 会话,导致我们经理及另一技术员连不                  移走了硬盘后就直接启动了,不是跟 windows
                                        上服务器。                                    2003 一样嘛,有什么问题?我都无语了……
  问题描述:
                                          解决方法:                                    解决办法:
  系统总监嫌托管的新 Linux 服务器 root 密
码过于简单,吩咐公司的系统管理员将密码改                      下面介绍的这个方法及其有用,强烈推荐给                      耐 心 跟 他 讲 解 了 Linux 下 /etc/fatab 的
复 杂 些 , 急 躁 的 系 统 管 理 员 用 passwd root   大家:为了预防此类问题出现,可以配置一计                     作 用 及 语 法 , 告 诉 他 可 以 在 Emergency 模 式
密码改掉后赶车回公司,杯具的发现密码设置                    划任务 crontab,每 5 分钟运行一次,即                 下输入 root 密码进入此模式,然后用
得过于复杂,密码给忘了。由于机器是新装,                    */5 * * * * root /bin/sh                 mount –o remount,rw /
                                         /root/firestop.sh
没 有 配置 具有 sudo 权限 的用 户 , 自己 远程 都                                                   将 / 分 区 设 置 成 可 读 写 , 编
                                          firestop.sh 内容为:
进不 了 root 了 。这 种问 题就 只 有 百 分 百靠 系                                                辑/etc/fatab,将移除的硬盘用#号屏蔽掉后
                                        service iptables stop
统管理员负责了。                                                                         重启服务器,故障解除。
                                          这样即使你的脚本存在错误设置(或丢失
  解决方法:                                                                          五、sudoer 文件损坏,无法进入 root
                                        的)规则时,也不至于将你锁在计算机外而无
  这个问题只要养成良好的习惯就可以预防,                   法返回与计算机的连接。这样你就可以放心大                       问题描述:
就是 大家 更改 完 root 密码 后, 别 急 着 退 出 ,       胆的调试你的脚本啦。这都是生产环境下逼出
                                                                                   同事远程处理一台机房的 FreeBSD 8.1 机
可以用 ctrl+shift+F2 或 F3-F8 尝试用另一         来的,呵呵。
                                                                                 器, 想加 一个 具有 sudo 用 户 的特 殊 用 户, 所
个终端进去下,如果当时就忘了,马上切换到
                                        四、移走硬盘造成 Emergency 模式                    以 编 辑 了 /etc/sudoer 文 件 , 却 不 小 心 多 加
F1 更换。抚琴煮酒经常犯这种错误,呵呵,希
                                                                                 了一个.,然后直接保存退出了。结果杯具发
望此法对大家有效。                                 问题描述:
                                                                                 生了:由于 sudoer 文件损坏,所有具有 sudo
                                          同 事 在 处 理 Linux 服 务 器 时 , 移 走 了 一 块
三、锁定了 SSH 会话                                                                     权 限 的用 户均 不能 切 换 到 root 模 式下 工作 ,
                                        硬盘,然后就直接启动红帽 RHEL5,发现进了
                                                                                 而 FreeBSD8.1 与 Linux 不 同 , 它 默 认 是 不
  问题描述:
                                        Emergency 模 式 , 焦 急 中 他 连 忙 跑 过 来 找 我;
                                                                                 允许 root 远程连接的。
  我在配置某机房 Linux 服务器的 iptables           我第一句就是问他:你改动了硬件没,他说他
                                                                                   解决方法:
时,不小心设置了某一项错误参数,结果锁定

                                                          24                                   http://g.51cto.com/linuxops/
                                                                                                 http://os.51cto.com/linux/
                                                                                                 投稿信箱:yangsai@51cto.com
技巧
                                                          Tips


  这时只有请专人到机房去处理问题了……                     文 件 libintl.so.8 发 生 丢 失 , 导 致 了 root      其实只要保存时加上:
                                         不能登陆。具体报障如下:                             :w !sudo tee %
六、root 密码被更改
                                         /libexec/ld-elf.so.1: Shared object        就可以了。
  问题描述:                                   "libintl.so.8" not found, required by
                                          "bash"                                    “ :w !sudo tee %” 这 条 命令的含 义是 把
  一 个 开 发 小 组 都 是 用 内 部 机 房 的            Connection to 192.168.21.36 closed.      当前编辑的文件的内容当做标准输入输入到命
Linux/FreeBSD 机 器 , 大 家 都 知 道 root 的       解决方法:                                  令 sudo tee 文件名里去。也就是 sudo 保存
密码;不知哪个兄弟是搞着好玩还是怎么的,                                                              为当前文件名,相当管用的命令,尤其适用于
                                           ①用单用户模式进入系统;
偷偷 的 改 了 root 密码 却 不 通知 大家 ,结 果大                                                  FreeBSD 和 Debian 系 统 ( 我 经 常 忘 了 自 己 原
                                           ②扫描磁盘(此步非做不可,而且是安全
家都用不了 root 密码,杯具了。                                                                来不是 root 了),相当 very nice.
                                         的)
  解决办法:                                  fsck -y                                    原文:
  此时处理办法有 2 种,一种就是大家都知道                    ③将文件系统重新挂载                               http://os.51cto.com/art/201101/241510.htm
的 单 用 户 模 式 修 改 root , 其 实 另 一 个 办 法 也   mount -a
                                                                                    相关阅读:
蛮简单的,系统管理员应该多配置一个具有                        ④将 root 的默认 shell 切换到 sh
                                                                                    FreeBSD 与 Linux 十个本质上的区别
sudo 权 限 的 用 户 , 遇 到 此 种 情 况 时 可 以 用     chsh -s sh
                                                                                    http://os.51cto.com/art/201012/236797.htm
sudo 权限来修改 root 的密码,至少免得跑到                 重启后一切正常。
                                                                                    FreeBSD 系统管理员都应该知道的那点秘密
机房去。毕竟有时候,机房未必在市内或在国
                                         八、忘记以 su 模式进入编辑器                           http://os.51cto.com/art/201012/236729.htm
内的。
                                           问题描述:
七、库文件丢失导致 root 无法登陆
                                           普通用户用 vi 编辑 nginx.conf 等配置文
  问题描述:
                                         件 , 保 存 的 时 候 会 提 示 : 没 有 Root
  我 们 的 jail 母 机 192.168.21.36 , 因 为     Permission

root 的 shell 设置成的 bash,而其依赖的库              解决办法:


                                                           25                                      http://g.51cto.com/linuxops/
                                                                                                     http://os.51cto.com/linux/
                                                                                                     投稿信箱:yangsai@51cto.com
技巧
                                                        Tips


    如果你试过不小心 cat 了某个二进制文件,很可能整个终端就傻掉了,可能不会换行,没                                     但这里没有“前部命令”,输出为空,于是就
  法回显,大堆乱码之类的,这时候敲入 reset 回车,不管命令有没有显示,就能恢复正常了。 覆盖(或创建)成一个空文件了。

                                                                                     有 些 脚 本 的 写 法 是 :>file.txt , 因 为 : 是
系列连载:最牛 B 的 Linux Shell 命令(2)                                                      bash 默认存在的空函数。

                                                                                     单 纯 创 建 文 件 也 可 以 用 $touch
                                                               文/Peteris Krumins   file.txt , touch 本 来 是 用 作 修 改 文 件 的 时
                                                                    编译/BOY PT      间戳,但如果文件不存在,就自动创建了。

1.用你最喜欢的编辑器来敲命令                         的 一 个 绑 定 。 如 果 你 习 惯 使 用 vi 模 式 , 按       3.用 ssh 创建端口转发通道
command <CTRL-x CTRL-e>                 <ESC v>可以实现同样功能。                           ssh -N -L2001:remotehost:80
                                                                                    user@somemachine
  在 已 经 敲 完 的 命 令 后 按 <CTRL-x CTRL-       如 果 你 喜 欢 别 的 编 辑 器 , 可 以 在
                                                                                     这个命令在本机打开了 2001 端口,对本机
e>,会打开一个你指定的编辑器(比如 vim,                 ~/.bashrc    里 面 放 上 比 如         export
                                                                                   2001 端口的请求通过 somemachine 作为跳板
通过环境变量$EDITOR 指定),里面就是你刚                EDITOR=nano 的命令。
                                                                                   转到 remotehost 的 80 端口上。
输入的命令,然后爱怎么编辑就怎么编辑吧,
                                          另 外 一 个 修 改 命 令 的 方 法 是 使 用 fc 命 令
特别是那些参数异常复杂的程序,比如                                                                    实现效果跟术语反向代理是相似的,实际上
                                        (Fix Command),在编辑器里面打开上一句
mencoder/ffmpeg,一个命令动辄 3、4 行的,                                                     就是端口转发,注意上面的描述涉及了 3 台主
                                        命令。我们的第一辑连载提过一个 ^foo^bar^
要修改其中的参数,这个方法最合适不过了,                                                               机 , 但 当 然 somemachine 可 以 变 成
                                        命令可以用 fc 来实现:fc -s foo=bar。
保存退出后自动执行这个程序。                                                                     localhost。
                                        2.清空或创建一个文件                                  这个命令比较抽象,但有时候是很有用的,
  实际上这是 readline 库的功能,在默认情
                                        > file.txt
况 下 , bash 使用 的是 emacs 模 式 的命 令行 操                                                 比如因为众所周知的原因国内的 IP 的 80 端口
                                          >在 shell 里面是标准输出重定向符,即把                  无法使用,又或者公司的防火墙只给外网开了
作 方 式 , <CTRL-x CTRL-e> 是 调 用 这 个 功 能
                                        (前部个命令的)命令行输出转往一个文件内                       ssh 端口,需要访问内部服务器一个 web 应用,



                                                         26                                      http://g.51cto.com/linuxops/
                                                                                                   http://os.51cto.com/linux/
                                                                                                   投稿信箱:yangsai@51cto.com
技巧
                                                          Tips


                                         printf("033c033(K033[J033[0m033[?
以 及 需 要 访 问 某 些 限 定 了 来 源 IP 的 服 务 , 就                                              这个命令开了一 块 1G 内存 来当目录 用。不
                                          25h");
可以用上这个方法了。                                                                        过放心,如果里面没文件,是不会占用内存的
                                           输出的这些字符对 Shell 是有特殊意义的:
  举一个具体例子,运行:                                                                     用多少占多少。
                                         033c: “ESC c” – 发送重置命令;
ssh -f -N -L                             033(K: “ESC ( K” – 重载终端的字符映射;             不过一般来说没必要手动挂载,因为多数发
 0.0.0.0:443:twitter.com:443
 shell.cjb.net
                                         033[J: “ESC [ J” – 清空终端内容;              行版都会在 fstab 内预留了一个内存目录,挂
ssh -f -N -L 0.0.0.0:80:twitter.com:80   033[0m: “ESC [ 0 m” – 初始化字符显示属          载在/dev/shm,直接使用即可;
 shell.cjb.net                            性;
                                         033[?25h: “ESC [ ? 25 h” – 让光标可见;         最 常 见 的 用 途 是 用 内 存 空 间 来 放 Firefox
  然 后 在 /etc/hosts 里 面 添 加 127.0.0.1
                                                                                  的 配 置 , 可 以 让 慢 吞 吞 的 FF 快 很 多 , 参 见
twitter.com,好吧剩下的你懂的。                      其中字符显示属性经常用来设定打印字符的
                                                                                  Shellex 的 博 文 : 用 tmpfs 让 Firefox 在 内
                                         颜色等,可参考这个博文。
  当然通常做这个功能的反向代理,应该要用                                                             存 中 飞 驰 , 以 及 后 来 的 改 进 : 用 tmpfs 让
squid 、nginx 之类,ssh 就算是 轻量 级的 尝          5.在午夜的时候执行某命令                            Firefox 在 内 存 中 飞 驰 II , 其 中 提 到 的 脚 本
试吧!                                      echo cmd | at midnight                   来 自 speeding up firefox with tmpfs
                                           说 的 就 是 at 这 个 组 件 , 通 常 跟 cron 相 提    and automatic rsync。
4.重置终端
                                         并 论 , 不 过 at 主 要 用 于 定 时 一 次 性 任 务 , 而
reset                                                                               那 个 破 烂 LinuxQQ 也 可 以 用 这 个 方 法 , 减
                                         cron 定时周期性任务。
  如果你试过不小心 cat 了某个二进制文件,                                                          少因为大量磁盘 IO 导致的问题。
很可能整个终端就傻掉了,可能不会换行,没                       at 的 参 数 比 较 人 性 化 , 跟 英 语 语 法 一 样 ,
                                                                                    原文(本文为节选):
法回显,大堆乱码之类的,这时候敲入 reset                  可以 tomorrow, next week 之类的,详细的
                                                                                    http://www.catonmat.net/blog/top-ten-one-
回车,不管命令有没有显示,就能恢复正常了。 查看手册 man at。                                                  liners-from-commandlinefu-explained

  实 际 上 reset 命 令 只 是 输 出 了 一 些 特 殊 字    6.映射一个内存目录                                 译文:
符 , 我 们 看 BusyBox 里 面 最 简 单 的 reset 程    mount -t tmpfs -o size=1024m tmpfs         http://www.isspy.com/most_useful_linux_com
                                          /mnt/ram                                  mands_2/
序的实现:



                                                           27                                      http://g.51cto.com/linuxops/
                                                                                                     http://os.51cto.com/linux/
                                                                                                     投稿信箱:yangsai@51cto.com
招募启事                                         下期预告
 《Linux 运维趋势》的建设需要您的加入!                       下期主题为:内网与外网的运维管理。

 您可以通过如下方式参与我们杂志的建设:                        敬请期待!

 1、推荐文章                                       本刊为月刊,预定每月发布日期为:
                                              每个月的第二个星期五
 无论是您在互联网上看到的好文章,还是您自己总结 /整理的资料;无论是英文还
是中文;无论是入门的还是高端的,都欢迎推荐!推荐方式包括:                 您可以通过如下方式检查是否有新刊发

 a)在技术圈中分享:http://g.51cto.com/linuxops      布:

 b)在邮件群中分享:linuxops-cn@googlegroups.com       1、加入电子邮件群组:
                                              linuxops-cn@googlegroups.com
 c)发邮件给编辑:yangsai@51cto.com
                                              获得邮件提醒
 2、投稿
                                              2、经常光顾 51CTO Linux 频道:
 如果您认为自己在 Linux 方面具有专家级别的能力,并且有与大家分享您技术经验     http://os.51cto.com/linux/
的热诚,同时也有兴趣挣点稿费花花,那么欢迎您的投稿!
 如果您在 IT 技术方面的翻译有很高的能力,能够快速、高质量的完成译文,并且
                                            《Linux 运维趋势》是由 51CTO 系统频道策划、针
也经常浏览到一些 Linux 方面的优秀外文,那么也欢迎您的投稿!
                                             对 Linux/Unix 系统运维人员的一份电子杂志,内
 投稿信箱:yangsai@51cto.com                      容从基础的技巧心得、实际操作案例到中、高端
 3、推广与意见                                     的运维技术趋势与理念等均有覆盖。

 如果您喜欢我们的杂志,认为这本杂志对于您的工作有所帮助,请向您的 Linux 好   《Linux 运维趋势》是开放的非盈利性电子杂志,
友、同事们推荐它!                                    其中所有内容均收集整理自国内外互联网(包含

 如果您觉得这份杂志还有什么地方需要改进或补充,也希望您能够提出您的宝贵意        51CTO 系统频道本身的内容)。对于来自国内的

见!                                           内容,编辑都会事先征求原作者的许可(八卦,
                                             趣闻&数字栏目例外)。如果您认为本杂志的内
 联系人:yangsai@51cto.com
                                             容 侵 犯 到 了 您 的 版 权 , 请 发 信 至
                                             yangsai@51cto.com 进行投诉。

More Related Content

PDF
51 cto linuxops_issue3
PDF
Linux运维趋势 第16期 cdn缓存系统
PDF
51 cto linuxops_issue0
PDF
Linux运维趋势 第15期 虚拟化管理软件选型
PDF
Linux运维趋势 第13期 服务器优化(最终版)
PDF
Linux运维趋势 第13期 服务器优化
DOC
130条最常用的电脑知识[上]
 
PDF
Doing.business.in.st.petersburg.2012
51 cto linuxops_issue3
Linux运维趋势 第16期 cdn缓存系统
51 cto linuxops_issue0
Linux运维趋势 第15期 虚拟化管理软件选型
Linux运维趋势 第13期 服务器优化(最终版)
Linux运维趋势 第13期 服务器优化
130条最常用的电脑知识[上]
 
Doing.business.in.st.petersburg.2012

Viewers also liked (16)

PDF
Система для организации коллективной работы сотрудников - Zimbra
PDF
Возможности для делового сотрудничества: Финляндия - Вирпи Херранен - глава F...
PPT
Public.council.on.sme.development
PDF
как вести таможенное декларирование через интернет
PPTX
Introducing The Shout Lounge
PDF
07.associacija medicinyianalitiki
DOC
PDF
淘宝前台系统优化实践“吞吐量优化”-Qcon2011
DOC
Mysql proxy+mysql-mmm
PDF
Возможности для делового сотрудничества: Италия - Карло Феррари - директор от...
PPT
Community Based Research
PDF
2 Как анализировать сайты конкурентов и определять трудности продвижения сайт...
PDF
Лаппеенранта-Иматра: Ваш ближайший партнер в Евросоюзе - Игорь Куприенко, Фин...
Система для организации коллективной работы сотрудников - Zimbra
Возможности для делового сотрудничества: Финляндия - Вирпи Херранен - глава F...
Public.council.on.sme.development
как вести таможенное декларирование через интернет
Introducing The Shout Lounge
07.associacija medicinyianalitiki
淘宝前台系统优化实践“吞吐量优化”-Qcon2011
Mysql proxy+mysql-mmm
Возможности для делового сотрудничества: Италия - Карло Феррари - директор от...
Community Based Research
2 Как анализировать сайты конкурентов и определять трудности продвижения сайт...
Лаппеенранта-Иматра: Ваш ближайший партнер в Евросоюзе - Игорь Куприенко, Фин...
Ad

Similar to 51 cto linuxops_issue4 (20)

PDF
Linux运维趋势 第0期 运维自动化
PDF
51 cto linuxops_issue2
PDF
《Linux运维趋势》2012年5月号 总第19期
PDF
51 cto linuxops_issue5
PDF
Linux运维趋势 第12期 故障排除
PDF
《Linux运维趋势》2012年2月号:运维安全准则
PDF
51 cto linuxops_issue1
PDF
Linux运维趋势 第1期 监控与报警
PDF
Linux运维趋势 第14期 高性能电子商务网站
PDF
Usb disk driver
PDF
Java explore
PDF
开源时代2010.05(总第二十期)
PDF
Architect 201003-by-info q
PDF
Skan it 6.0 user manual chinese
PDF
Design Guideline for NC (An ERP System) - Vanbin Fan 2010.01.28
PDF
Linux二十周年 -致辞
PDF
程式人雜誌 -- 2013年3月號
PDF
自动化运维管理
PDF
《云计算核心技术剖析》Mini书
PDF
邮:xsalesuk@gmail.com,怎么找黑客黑客真的可以修改国外大学成绩吗!黑客入侵网站,找黑客入侵服务器,找黑客入侵电脑,找黑客入侵服务器,找...
Linux运维趋势 第0期 运维自动化
51 cto linuxops_issue2
《Linux运维趋势》2012年5月号 总第19期
51 cto linuxops_issue5
Linux运维趋势 第12期 故障排除
《Linux运维趋势》2012年2月号:运维安全准则
51 cto linuxops_issue1
Linux运维趋势 第1期 监控与报警
Linux运维趋势 第14期 高性能电子商务网站
Usb disk driver
Java explore
开源时代2010.05(总第二十期)
Architect 201003-by-info q
Skan it 6.0 user manual chinese
Design Guideline for NC (An ERP System) - Vanbin Fan 2010.01.28
Linux二十周年 -致辞
程式人雜誌 -- 2013年3月號
自动化运维管理
《云计算核心技术剖析》Mini书
邮:xsalesuk@gmail.com,怎么找黑客黑客真的可以修改国外大学成绩吗!黑客入侵网站,找黑客入侵服务器,找黑客入侵电脑,找黑客入侵服务器,找...
Ad

More from Yiwei Ma (20)

PDF
Cibank arch-zhouweiran-qcon
PDF
Cibank arch-zhouweiran-qcon
PDF
Taobao casestudy-yufeng-qcon
PDF
Alibaba server-zhangxuseng-qcon
PDF
Zhongxing practice-suchunshan-qcon
PDF
Taobao practice-liyu-qcon
PDF
Thoughtworks practice-hukai-qcon
PDF
Ufida design-chijianqiang-qcon
PDF
Spring design-juergen-qcon
PDF
Netflix web-adrian-qcon
PDF
Google arch-fangkun-qcon
PDF
Cibank arch-zhouweiran-qcon
PDF
Alibaba arch-jiangtao-qcon
PDF
Twitter keynote-evan-qcon
PDF
Netflix keynote-adrian-qcon
PDF
Facebook keynote-nicolas-qcon
PDF
Domainlang keynote-eric-qcon
PDF
Devjam keynote-david-qcon
PDF
Baidu keynote-wubo-qcon
PDF
淘宝线上线下性能跟踪体系和容量规划-Qcon2011
Cibank arch-zhouweiran-qcon
Cibank arch-zhouweiran-qcon
Taobao casestudy-yufeng-qcon
Alibaba server-zhangxuseng-qcon
Zhongxing practice-suchunshan-qcon
Taobao practice-liyu-qcon
Thoughtworks practice-hukai-qcon
Ufida design-chijianqiang-qcon
Spring design-juergen-qcon
Netflix web-adrian-qcon
Google arch-fangkun-qcon
Cibank arch-zhouweiran-qcon
Alibaba arch-jiangtao-qcon
Twitter keynote-evan-qcon
Netflix keynote-adrian-qcon
Facebook keynote-nicolas-qcon
Domainlang keynote-eric-qcon
Devjam keynote-david-qcon
Baidu keynote-wubo-qcon
淘宝线上线下性能跟踪体系和容量规划-Qcon2011

51 cto linuxops_issue4

  • 2. 内容目录 【人物】 系统运维经验分享:守住每一天...........................................................................................................3 【交流】 系统运维秘诀:变化,监控,扩展(技术篇)..................................................................................5 杂志策划:51CTO 系统频道 【八卦】 本期主编:杨赛 八卦,趣闻与数字 2010.12 - 2011.01.............................................................................................10 封面制作:高鹏飞 【专题】 交流圈子: 为什么进行 Linux 性能监测?.............................................................................................................11 http://g.51cto.com/linuxops 细数十个最令人头疼的性能瓶颈.........................................................................................................14 邮件群组: Linux 磁盘管理三板斧的使用心得......................................................................................................16 groups.google.com/group/linuxops-cn 系统负载:如何判断 Linux load 的值是否过高...............................................................................19 订阅方式:发送 Email 到 【技巧】 linuxops-cn+subscribe@googlegroups.com 在 linux 下灵活使用 expect 脚本的小窍门.......................................................................................21 专题页面: http://os.51cto.com/art/201011/233915.htm 系统管理员易犯错误及解决方法汇总................................................................................................23 http://down.51cto.com/zt/71 系列连载:最牛 B 的 Linux Shell 命令(2)....................................................................................26 投稿信箱: yangsai@51cto.com
  • 3. 人物 People “守住每一天”的意思就在这里:每天要做一件满意的事件,那怕一天就解决一个问题。 守住每一天(以下简称守住):我是在门户 网 站 做 Linux 运 维 嘛 , 现 在 做 CDN 运 维 这 块。 系统运维经验分享:守住每一天 近期核心主要放在集中化管理,分布式监控, 和分布式日志系统上。 文字整理/杨赛 51CTO : 您 最 初 接 触 Linux 是 什 么 时 候 ? 最开始做运维这个工作是从什么时候开始的? 人物简介: 守住:我是 03 年开 始接触 linux ,那时 主 刘宇,网名守住每一天,现新浪运维工程师, 要是自学。也没怎么去论坛交流之类的。从事 LinuxTone.org 管理员之一,擅长 CDN 运维。目前关注 工 作 是 在 07 年 , 这 个 过 程 倒 是 还 挺 顺 利 的 。 集中化管理,分布式监控,以及分布式日志系统。 主要是诚恳,踏实,肯学,底子要打好。这样 他的博客: http://liuyu.blog.51cto.com/ 的小伙一般企业都会要的。 51CTO:一开始做运维的几年,有什么印象 运 深刻的事情吗? 维是一个所含范围很广泛的职业, 为此,51CTO 系统频道计划展开一项长期活 在 不 同 的 企 业 、 不 同 的 工 作 环 境 下 , 动,请各个岗位上的、有数年运维经验的在职 守住:刚开始做的时候很难,遇到问题时, 运维的职责可能是完全不同的。即使单就系统 系统运维们分享他们自己的成长经验。本次我 总是喜欢问人。不先查文档。这是一个很不好 运维而言,有些运维可能专注于内网服务器的 们 邀 请 到 新 浪 系 统 运 维 工 程 师 、 LinuxTone 的习惯。后来慢慢改了:) 维护,工作偏向网管和帮助台的职责;有些运 的管理员刘宇(守住每一天)来分享一下他的 最痛苦的是最开始工作那会儿,刚接手设备 维可能从开发环境、数据库到线上应用部分都 运维经验。 的时候,一下遇到 3 台机器陆续宕机。不是硬 负责;有些可能仅仅负责特定应用的运维。所 盘故障,就是主板故障,最终换新设备,迁移 51CTO:首先,简单的跟我们介绍一下您现 以,即使是在职的系统运维,也可能对这个行 解决。这么折腾一大圈,一下子就让我接触到 在的工作情况吧。您现在负责哪方面的工作? 业的同行们的工作内容了解有限。 了故障分析、服务器迁移方面的很多东西。 3 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 4. 人物 People 51CTO:您自己感觉在您的运维经历中,哪 , allcommands , cyberciti 等 , 国 内 守住:技术方面,主要还是集中化管理,分 段时间是您成长最快的?那段时间您关注的技 就是 CU , 51CTO , LinuxTone 这些我比 布式监控,和分布式日志系统方面的继续深入 术点主要是哪些?有什么人提供指导或是交流 较常去。 具体计划方面其实我是没有的。我觉得计划不 吗? 如变化。“守住每一天”的意思就在这里:每 51CTO : 说 说 LinuxTone.org 这 个 站 吧 。 守住:压力越大,成长越快。我成长也就是 天要做一件满意的事件,那怕一天就解决一个 当初建立这个社区是怎样的一个情况?主要是 08 年的时候吧。当时整个公司的网站迁移、升 问题。计划得再好,也赶不上你遇到的问题。 针对哪些层次的 Linux 技术人的? 级,从机房选择一直到全部迁移升级完成,都 有些时候一个问题解决就需要几天,那你的计 守住: 2008 年那会儿, netseek 创立了这 是我一个人,压力相当大。那会儿主要是关注 划就全打乱了。今日事今日毕。早上在地铁里 个站,我也是同年加入管理团队的。正如同 负载均衡的部署。秋香给我帮助挺大的。 想好今天做什么,下班地铁记录今天做的工作 LinuxTone 的 建 站 宗 旨 说 的 , 我 们 主 要 专 注 这 样 就 OK 了 。 手 机 和 GOOGLE 如 此 方 便 。 有 51CTO:有什么对您帮助特别大的技术书籍 于系统服务、集群架构、安全监控、性能调优 什么不方便的呢? 么?或者文章/讲座? 程序设计这些方面,算是比较偏中高端的综合 51CTO:感谢守住每一天的分享!本次内容 守住:书我看得少 ~人懒,网上的文案看得 IT 运维人员吧。 到此结束。如果您有什么问题想要沟通,或者 多。然后再实践,再找相关的书进行一个系统 51CTO : 您 认 为 一 个 理 想 的 Linux 运 维 交 希望听到某个运维进行分享,欢迎与守住或编 的学习。我喜欢反着来,对我来说效率更高吧。 流社区应该是怎样的? 辑交流。 有关文案这方面可以给大家一些建议:我一 守住:还是那句话:“我为人人,人人为 原文: 般 的 学 习 方 法 是 , 先 阅 读 官 网 README , 再 看 我”。每个人因为分享自己的经验获得快乐, http://os.51cto.com/art/201012/240498.htm WIKI , 再 看 INSTALL , 这 就 差 不 多 了 , 可 以 我认为就是理想的社区。 相关推荐: 准备动手操作。所以英文一定要有些基础。如 51CTO:最后,介绍一下您现在的关注方向 系统管理员访谈系列:Tom Limoncelli 谈交流 果感觉英文吃力,那就只好搜索相关的中文做 吧 。 2011 年 您 在 技 术 上 和 个 人 成 长 上 有 什 么 http://os.51cto.com/art/201010/229500.htm 参考了。国内很多文档都有问题,尤其是那些 计划么? 瞎搜索出来的,所以建议大家选择比较靠谱的 论 坛 或 网 站 搜 索 , 比 如 国 外 有 howtoforge 4 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 5. 交流 Interact 不要手动构建任何东西。如果你一定需要手动构建,那么就做两遍,在做第二遍的时候把 ◆下面这一点十分重要:将新硬件上线到生 用到所有的命令都提取出来。 产 环 境 的 过 程 不 应 该 超 过 15 分 钟 , 而 且 这 个 过程必须足够简单。否则,当一个服务器出现 系统运维秘诀:变化,监控,扩展(技术篇) 故障,而没有人知道如何更换它的时候,你就 该倒霉了。 文/Dormando ◆下面这一条是普世真理:这个世界上不存 编译/周雪峰 在“一次性”的服务器构建。即使你的服务器 在 只需要构建一次,但只要你构建过一次,就一 运维管理的过程中,我发现了很多 实上这跟把它们完全隔离一样糟。如果实在有 定会有第二次。比如,当它损坏的时候,或者 有价值的秘诀,本文是这些秘诀的 必要,你可以进行分层,并使用一点间接性。 你必须进行一次重大的升级才能让它在在接下 一个总结。虽然这些秘诀可能比较“唯心”, ◆这并不意味着你的系统必须是平台无关的 来的两年时间里更加稳定的时候。 但是我还是把它们总结出来了,相信它们会对 其实我们的目的很简单:一变二,二变二十, ◆测试,检查新构建好的服务器。这应该是 你有帮助的。 一个系统必须可以应对各种突发事件。也就是 比较容易的,因为你的构建过程都是自动化的 说,如果一个系统管理员被公共汽车撞了,你 为变化而设计 对吧! 有应对的方案!如果挂载的硬盘出现故障了, ◆ Google 的 秘 诀 是 正 确 的 — — “ 为 变 化 而 ◆脚本化的构建,意味着从某个 Linux 发行 你 有 应 对 的 方 案 ! 如 果 某 些 人 运 行 了 rm 设计”。“变化”就是不得不部署新的软件, 版 的 V3 升 级 到 V4 应 该 是 很 快 的 。 安 装 V4 , -rf /,你也有应对的方案!增量的进行变更。 升级现有的软件,进行扩展,设备损坏,以及 对脚本进行测试。如果有问题,参考文档并修 记得安全更新,以及保持内容更新。 人员流动等。 复它,直到它可以再次正常工作。这最多应该 ◆每一件事情都是在寻找平衡点。你也许会 使用自动的,可重复的构建过程 是一个星期的工作,而不是一个长达一年的浩 认为把你的系统和某个操作系统或某个 Linux ◆不要手动构建任何东西。如果你一定需要 大 工 程 ( 因 为 那 时 , 刚 刚 完 成 的 V5 已 经 发 布 发行版牢牢地绑定在一起是一个好主意,但事 手动构建,那么就做两遍,在做第二遍的时候 了!) 把用到所有的命令都提取出来。 5 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 6. 交流 Interact 使用冗余 监控正确的东西 数据进行平均化处理,然后保存在存储空间中 这不仅仅是难以阅读的问题:这根本是错误的! ◆容易重新构建,并不意味着你可以忽视冗 ◆监控你能监控的所有东西,而且要用正确 余。跳转盒,邮件服务器,计费网关,等等。 的方法来进行监控。如果你的 NFS 服务器挂掉 ◆如果你要浏览数百张图才能精确地对一个 如果其中的一半挂掉了却并不造成客户的宕机 了, 不 要 让你 的监 控工 具 发 送 1000 条 警报 。 问题进行定位,那真是糟透了。想要找出极值 生活将会变得更加简单。 如果对你的系统来说,超时的警报没有什么实 请使用脚本提取数据。 ◆按照以上方针来做的话,当某个设备在凌 际意义,那就别让它发。要针对各种具体的情 ◆如果你必须使用图形来解决问题,尽量把 晨 3 点出现故障的时候,你可以“以后再处理 况进行成功性测试:是的,这个服务可以进行 各种高级的概念整合到一个单一的页面中,然 那个出现故障的设备!”,把冗余的机器先替 一个新的 TCP 连接,它甚至可以响应,但是它 后让这个页面链接到拥有具体信息的子页面中 换上去。 还记得它要做什么工作吗? 如果你在数据库负载中可以看到一个峰值,你 ◆如果你有 500 个 Web 服务器,其中一个挂 可以点击这个页面对那些数据库进行概览,然 ◆下面这一条是个聊胜于无的解决方案: 掉了,你可能不必马上知道这个情况。但是, 后找到那一两台可疑的机器。基本的理念是尽 Rsync 。 DRBD 也 许 也 不 是 一 个 完 美 的 解 决 方 如果负载均衡器没有把这台机子踢出去,导致 快地缩小范围,尽可能的减少猜测。 案,但是它可以提供令人称奇的服务。 错误报告出现在了用户的屏幕上,那么你必须 日志记录,使用多个数据流 使用备份 知道这个情况! ◆无论是独立工作还是与开发部门合作,都 ◆备份是个严肃的话题。使用硬盘,烧录磁 有关数据图形化,历史数据 要把尽可能多的有用的信息记录到日志中。无 带。压缩它们,移动它们,并行地运行。对每 ◆图形的作用是让趋势可视化。历史数据的 论是分析之后再保存,还是直接扔进数据库中 一样东西进行备份! 作用是让你对数据进行精确的分析。不要把这 生成报告,这些都无所谓。信息终归是有用的。 ◆如果你的构建过程是自动的,整个过程都 两者混为一谈!对图形进行目测,很容易获得 ◆有用的例子:页面呈现时间(哪个页面? 可以被备份。如果到目前为止的几条你都做到 错误的数值。许多站点都使用 rrd 类型的系统 哪个设备?),面向用户的错误,数据库和内 了,那么一个真正的“灾难恢复”计划也许并 或其他的数据聚合系统,此类系统按照时间对 部服务错误,带宽使用率等。 不是那么遥不可及的。 6 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 7. 交流 Interact ◆建立图表,报告,并对产生的历史数据进 们绝对应该对巨大的数据集进行分割。我们也 ◆尽可能的横向扩展,但是不要傻乎乎的扩 行比较。 可 以 考 虑 一 下 像 starling 和 Gearman 这 样 展。在 MySQL 复制中有一个经典的白痴扩展的 ◆报告是十分重要的。每周或每天对你的基 具有一定创新性的软件。了解一下这些软件的 例子:使用一个 master 对很 多个 slave 。所 础设施变更进行汇总。 用途,同时,了解一下并不是一切东西都要保 有的 slave 必须完成全部的写入,而写入次数 存在一个数据库中的。 是与读取次数成比例增加的(大多数应用都是 数据存储方式,数据库 这样)。也就是说,你添加的 slave 越多,通 ◆善用你的过滤器!如果这些数据很重要, ◆诚然,数据库运维是一套完整而独立的知 应该对它们进行备份!单片的 NFS 服务器的快 过添加 slave 扩展的资源就越少。 识体系。但是有时,你不能把一切都丢给你的 照很奇妙,它并不是一个备份! ◆留意一下替代的解决方案。按照用户或区 DBA。 域对多个数据库进行划分,同时避免增加过多 ◆ 可 以 虑 一 下 替 代 的 解 决 方 案 。 MogileFS ◆拥有多个冗余的数据库会给你带来很多好 现在变得越来越好了。实际上,还有其他类似 的 slave。实际上,有许多种方法可以达到这 处。对于一个庞大的 Oracle 实例来说,从前, 的项目可以免费(或廉价)地维护大量的存储 个目的。 很多运维工作需要好几个小时的关机维护时间 文 件 。 类 似 的 系 统 基 本 上 都 是 是 为 ◆一切都可能扩展!路由器,交换机,负载 而 现 在 , 完 全 可 以 在 服 务 运 行 的 同 时 进 行 。 youtube.com 、 archive.org 等 站 点 而 开 发 均衡器,Web 服务器,数据库,等等。 MySQL 和数据库复制功能是一件奇妙的事情。 的。我们最终会让廉价的 NFS 过滤器成为标准! ◆记得纵向扩展吗?以前那些邪恶的大型机 ◆和 DBA 们一起努力,尽量为可能会发生问 们 有 很 多 核 , 很 多 IO 板 , 配 备 了 非 常 昂 贵 的 多一些横向扩展,少一些纵向扩展 题的数据库争取到最好的硬件。 RAID 10,大 存储设备。而现在,多核这个概念开始蔓延了。 量的 RAM,高速硬盘,乃至于强悍的 RAM 磁盘 ◆横向扩展是我们应该走的路。应该使用常 ◆RAM 是廉价的。 和 SSD。运维人员对提供商要货比三家,这样 规的(即:可用的,价格适中的,标准的。而 不是特便宜的!)硬件,然后和大家一起努力 ◆将以上两点合并起来,这意味着你只需要 可以减轻 DBA 对硬件的恐惧。从长远来看,找 再次合并服务就可以了。这儿有一个负载均衡 出哪个品牌的硬件更加优秀会节省大量的资金。 确保各方面都可以进行横向扩展。 器, 那儿 有一个 Web 服务器 …… 如果一个应用 ◆数据库配置一直在改变。现在出现了 ◆横向扩展从两台机子开始。另外,进行冗 程 序 可 以 使 用 许 多 个 CPU ( 比 如 apache ) , HiveDB , MySQL Proxy , DPM 这 些 软 件 。 我 余的时候也会涉及到横向扩展。 那么这是完美的。如果它不能(比如 7 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 8. 交流 Interact memcached),那么你最终可能会由于离散的 让工作异步化 “拉”。这个是相对于 HTTP 中大量推/拉的状 服务太多而浪费掉大量的可用资源。 态而言的。 ◆ 可 以 使 用 Starling, Gearman, The ◆作业系统(job systems)也许可以填补 Schwartz 等 工 具。作业系统可以 给 应用程 序 安全和巡查 这个鸿沟。哪里的核心的越多,哪里的工作线 提供更多的灵活性。工作线程可以一次性地产 ◆一定要安装安全更新!这十分重要!有很 程就越多。 生出来,也可以是持久的(载入缓存数据,准 多疯狂的网络专家致力于在尽可能短的时间内 备数据等)。它们可以在不同的硬件上,它们 缓存 给你提供这些更新。不要因为你害怕改变而让 的地理位置也可以不同。它们既可以是同步的 ◆对于开发者和系统运维人员来说,缓存可 他们白白地付出劳动。 也可以是异步的。 是个好东西,值得大力发展!的确,它是不可 ◆安全性也是分层的。明白你能确保什么, ◆维护这些东西是一个运维人员的问题。使 思议的。它是与众不同的。有时你可能必须要 以及不能做什么。 MySQL 有密码访问机制,并 用它们既是开发者的问题也是运维人员的问题。 为它做一个权衡。有效地使用缓存可以让系统 不意味着可以允许直接通过互联网来访问它。 的 整 体 性 能 提 升 10 倍 之 多 。 对 于 你 当 前 的 系 ◆当用户点击“给我所有的朋友发送邮件” ◆ 在 SSH 上 禁 用 密 码 。 使 用 经 过 加 密 的 统来说,这是一个巨大的“放大镜”,并且, 的时候,把这个工作列入计划,然后马上说: passphrase 密钥来进行身份验证。远程的用 它的成本在总成本中只占很小的一部分。 “OK,已经完成了!你的朋友马上会收到你的 户无法猜出你的私有密钥。他们必须从你这里 邮件!”——通过异步化的方式来处理这个工 ◆Memcached。它可以为服务提供缓存,让 才能得到它。把它保管好。做好这点,就没必 作。 数据库结构非标准化(这可以提升性能!), 要在防火墙中关闭你的 SSH 端口了。 对 squid 缓存进行优化,甚至可以提高操作系 ◆作业系统是衔接各个服务的一个场所。博 ◆搞清楚你的应用程序是如何工作的,它具 统缓存的利用率。 客 投 递 - 〉 IM 通 知 , 定 期 计 费 - 〉 收 费 服 务 , 体需要做些什么,并相应的进行调整。比如说 网关认证等。 ◆测试它,玩弄它,并打破它。使用缓存会 如果你的应用当中,只有付费页面和 Twitter 带来新的问题。要做好准备。 ◆容易扩展。在请求进入的地方会有一些瓶 投递服务是需要连接外部互联网的,那么就把 颈,所有的工作线程必须要做的事情就是 它们做成工作线程。将这部分工作线程放在特 定的设备中,让它们只能访问特定的主机。这 8 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 9. 交流 Interact 可以神不知鬼不觉地把你的网络的其余部分保 然后彻底禁止输入超出范围的值。做你能做的 到一些方法来绕过安全机制。如果他们可以绕 护起来。 所有事情,让数据以可追溯的方式工作。 过它,那说明你的工作并没有做好。如果他们 ◆对于 PHP 站点来说,以上这些建议尤其重 ◆如果你怀疑某些东西可能会被破坏,应该 不能绕过它,那么他们也许会放弃,然后离开。 要,但是在其他地方,它们也可以发挥作用。 采取适当的预防措施,最好懂得一点计算机取 ◆紧抓访问控制。这意味着运维人员必须要 如果有人要入侵,那么多半是通过你的应用。 证方面的知识(或者聘请一个专门从事这项业 为已经锁上门的“房间”提供一些窗户。不让 即使有人从前门入侵了系统,也要让他们花费 务的公司)。通过移除可疑的网络访问来做出 开发人员进入生产环境,意味着他们必须抹黑 很大精力才能进入保险箱。你需要确保的是他 响应,通过一系列的控制台或直接通过终端来 解决难题。你的确不能让开发者们直接对服务 们无法将数据带走或上传至别的什么服务器上。 检查整个系统。在已经被破坏的机器上,避免 进行修改,但是你可以提供日志工具和调试工 ◆除了这些具体的建议之外,你还应该多读 使用任何的服务,配置文件,或数据。很多人 具等等。对于各种产品来说,这些都是成功的 一些资料。自己判断,自己动手测试。如果你 都是“清除了一个木马”,但是不知道它是怎 秘诀。 不知道一个安全模型是如何工作的,一时半会 么进来的——这样并不算真正地清除了这个木 原文: 儿可能问题不大,但是这就会导致你不知道它 马。 http://dormando.livejournal.com/484577.html 的限制在哪里,甚至于无法判断它是否在工作。 ◆如果你有安全团队,取证专家,或其他人 译文: ◆基于测试,理论,攻击树的安全机制是不 手,那么你尽量不要接触那台机器,把它隔离 http://os.51cto.com/art/201101/241769.htm 会在背后给你一刀的。当人们构想出模糊的安 起来。这意味着不要重新启动它来“清除一些 相关阅读: 全模型的时候我也很喜欢它,但是像我这样的 奇怪的进程”。他们需要这些证据。如果你必 系统运维枯燥生活中的那一丝快乐 普通人都可以把它弄的支离破碎。 须这么做,就去做吧,但是要记得把系统彻底 http://os.51cto.com/art/201012/241108.htm 地清理干净,打上所有的安全更新,尽量搞清 ◆尽可能地进行巡查!登录,退出,以及使 楚他们是否已经破坏了重要的数据。做你能做 2010 年十大 Linux 运维小窍门 用的命令都要进行审查。对面向外部服务的所 http://os.51cto.com/art/201012/238961.htm 的所有事情。 有访问,包括所有在请求中指定的参数,都要 进行审查。对于你的应用程序来说,找出极值 ◆安全实际上是一种权衡。如果你做错了, 开发者和用户们都会“揭竿而起”:他们会找 9 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 10. 八卦 News 在 2010 年 12 月到 2011 年 1 月之间,发生了下面这些事儿…… 【Novell】Attachmate 公司宣布以 22 亿 美 元 现 金 收 购 Novell , 同 时 Novell 公 司 的 八卦,趣闻与数字 2010.12 - 2011.01 882 项专利将以 4.5 亿美元的价格出售给一家 名为 CPTN Holdings LLC 的公司。而日前根 收集整理/51CTO 系统频道 据 德 国 官 方 披 露 的 资 料 , 这 家 CPTN Holdings LLC 公司的背后居然是四家业界巨 头:微软、苹果、甲骨文和 EMC。 【 Linux 安 全 漏 洞 】 系 统 安 全 高 手 Dan 【 LibreOffice 】 Ubuntu 开 发 者 已 经 确 http://os.51cto.com/art/201012/239047.htm Rosenberg 发 布 了 一 段 C 程 序 , 这 段 200 认 LibreOffice 将 会 包 括 在 Ubuntu 【OpenBSD】Perry 是 NETSEC 的前 CTO, 多 行 的 程 序 利 用 了 Linux Econet 协 议 的 3 11.04 Natty Narwhal 当中。 负 责 资 助 OpenBSD Crypto Framework , 同 个安全漏洞,可以导致本地帐号对系统进行拒 http://os.51cto.com/art/201101/242171.htm 时 还 在 2000——2001 期 间 担 任 FBI 的 咨 询 师。 绝服务或特权提升。 【 Hotmail 】 Hotmail 服 务 器 健 康 度 监 控 Perry 声 称 有 些 开 发 者 在 OpenBSD 的 IPsec http://os.51cto.com/art/201012/237990.htm 中有一 种方式是 通 过自动化测 试 进行的 …… 在 栈中加入了大量后门,这是根据 FBI 的要求做 【支付宝】支付宝正式对外发布支付宝安全 12 月 30 日,我们的一个脚本代码意外地将部 的。 控 件 for Linux 版 本 , 同 期 还 为 分真实用户的帐号与测试帐号一并从目录服务 http://os.51cto.com/art/201012/241115.htm iPad、iPhone、Android 等系统环境提供了 器上删除了。 【国产操作系统】民用的“中标 Linux”操 无控件登录浏览模式。 http://os.51cto.com/art/201101/242496.htm 作系统和解放军研制的“银河麒麟”操作系统 http://os.51cto.com/art/201012/239221.htm 【 Apache 】 截 止 2010 年 底 , 互 联 网 上 有 在上海正式宣布合并,双方今后将共同以“中 【 Mint 】 圣 诞 之 际 , 基 于 Debian 2.55 亿 站 点 ; Apache 2009 年 托 管 1.09 亿 标麒麟”的新品牌统一出现在市场上,并将开 Testing 的 滚 动 升 级 Linux Mint 版本 个站点,而 2010 年数字变成了 1.52 亿。 发军民两用的操作系统。 2012 发布,包含 64 位版本支持。 http://os.51cto.com/art/201101/241932.htm http://os.51cto.com/art/201012/239006.htm http://os.51cto.com/art/201012/240558.htm 10 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 11. 专题 Special 为什么进行 Linux 性能监测? 本期专题:Linux 性能瓶颈 文/易龙 系 统优化是一项复杂、繁琐、长期的 工作,优化前需要监测、采集、测 试、评估,优化后也需要测试、采集、评估、 监测,而且是一个长期和持续的过程,不是说 现在优化了,测试了,以后就可以一劳永逸了 也不是说书本上的优化就适合眼下正在运行的 系统,不同的系统、不同的硬件、不同的应用 优化的重点也不同、优化的方法也不同、优化 瓶颈:当整个系统的性能或资源被某个或数个组件或元素限制的时候,这种现象被 的参数也不同。性能监测是系统优化过程中重 称之为瓶颈。该词取自水流的类比:当你从瓶子里往外倒水的时候,水流出的速度是 要的一环,如果没有监测、不清楚性能瓶颈在 由瓶口的宽度限制的,即所谓的瓶颈。 哪里,优化什么呢、怎么优化呢?所以找到性 能瓶颈是性能监测的目的,也是系统优化的关 -自由的维基百科,Bottleneck 词条 键。系统由若干子系统构成,通常修改一个子 图片文字解说:(在这个应用中),针对模块 A 或 C 进行特性优化是无法提升整个 系统有可能影响到另外一个子系统,甚至会导 应用的性能的。只有当模块 B 的性能问题得到解决的时候,整个应用的性能才会提升。 致整个系统不稳定、崩溃。所以说优化、监测 http://polymorphicpodcast.com/shows/webperformance/ 测试通常是连在一起的,而且是一个循环而且 长期的过程。 通常,我们监测的子系统有以下这些: 11 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 12. 专题 Special ◆CPU /视频处理、科学计算等都可被视作 CPU 相关 底线 ◆Memory 的应用。 我们如何知道系统性能是好还是差呢?这需 ◆IO 看看实际中的例子,第 1 个是文件服务器拷 要事先建立一个底线,如果性能监测得到的统 贝一个大文件时表现出来的特征,第 2 个是 计数据跨过这条线,我们就可以说这个系统性 ◆Network CPU 做大量计算时表现出来的特征: 能差,如果数据能保持在线内我们就说性能好 这些子系统互相依赖,了解这些子系统的特 $ vmstat 1 性,监测这些子系统的性能参数以及及时发现 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ 可能会出现的瓶颈对系统优化很有帮助。 r b swpd free buff cache si so bi bo in cs us sy id wa st 0 4 140 1962724 335516 4852308 0 0 388 65024 1442 563 0 2 47 52 0 应用类型 0 4 140 1961816 335516 4853868 0 0 768 65536 1434 522 0 1 50 48 0 0 4 140 1960788 335516 4855300 0 0 768 48640 1412 573 0 1 50 49 0 不同的系统用途也不同,要找到性能瓶颈需 0 4 140 1958528 335516 4857280 0 0 1024 65536 1415 521 0 1 41 57 0 要知道系统跑的是什么应用、有些什么特点, 0 5 140 1957488 335516 4858884 0 0 768 81412 1504 609 0 2 50 49 0 $ vmstat 1 比如 web server 对系统的要求肯定和 file procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ server 不一样,所以分清不同系统的应用类 r b swpd free buff cache si so bi bo in cs us sy id wa st 型很重要,通常应用可以分为两种类型: 4 0 140 3625096 334256 3266584 0 0 0 16 1054 470 100 0 0 0 0 4 0 140 3625220 334264 3266576 0 0 0 12 1037 448 100 0 0 0 0 IO 相关 , IO 相关 的应用 通 常用 来处 理 大 4 0 140 3624468 334264 3266580 0 0 0 148 1160 632 100 0 0 0 0 量数据,需要大量内存和存储,频繁 IO 操作 4 0 140 3624468 334264 3266580 0 0 0 0 1078 527 100 0 0 0 0 读 写数据,而对 CPU 的要 求则 较少 , 大部分 4 0 140 3624712 334264 3266580 0 0 0 80 1053 501 100 0 0 0 0 时候 CPU 都在 等待 硬盘, 比如,数据库服务 上面两个例子最明显的差别就是 id 一栏, 建立这样底线需要知道一些理论、额外的负载 器、文件服务器等。 代表 CPU 的空 闲率 ,拷贝文 件时候 id 维 持 测试和系统管理员多年的经验。如果自己没有 CPU 相关,CPU 相关的应用需要使用大量 在 50% 左右,CPU 大量计算的时候 id 基本 多年的经验,有一个简单划底线的办法就是: CPU,比如高并发的 web/mail 服务器、图像 为 0。 把这个底线建立在自己对系统的期望上。自己 期望这个系统有个什么样的性能,这是一个底 12 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 13. 专题 Special 线,如果没有达到这个要求就是性能差。比如 (本文为系列第一篇,后面针对 CPU、内存 工具 简单介绍 VPSee 上个月有个 RAID0 的测试,期望的测 IO、网络等每一部分都各有文章叙述。更多内 top 试结果应该是 RAID0 的 IO 性能比单硬盘有 查看 进程 活动 状态 以及 一些 容可参考原文。) 显著提高,底线是 RAID0 的 IO 至少要比单 系统状况 原文: 硬盘要好(好多少不重要,底线是至少要好) vmstat 查看 系统 状态 、 硬 件和 系统 http://www.vpsee.com/2009/11/linux-system- 测试结果却发现 RAID0 性能还不如单硬盘, 信息等 performance-monitoring-introduction/ 说明性能差,这个时候需要问个为什么,这往 相关阅读: iostat 查看 CPU 负载,硬盘状况 往是性能瓶颈所在,经过排查发现是原硬盘有 linux 进程查看连载之 linux top 命令 硬件瑕疵造成性能测试结果错误。 sar 综合工具,查看系统状况 http://os.51cto.com/art/200910/158910.htm mpstat 查看多处理器状况 Linux 系统监控工具之 vmstat 详解 netstat http://os.51cto.com/art/201005/200672.htm 查看网络状况 Linux 性能检测工具 iostat,ps 和 pstree iptraf 实时网络状况监测 http://os.51cto.com/art/201006/203887.htm tcpdump 抓取网络数据包,详细分析 mpstat:监测 CPU(包括多 CPU)性能 tcptrace http://book.51cto.com/art/201008/217272.htm 数据包分析工具 Linux 网络性能调试工具 Netstat 命令篇 netperf 网络带宽工具 http://os.51cto.com/art/201006/203422.htm 底线是 RAID0 的 IO 至少要比单硬盘好 dstat 综合工具,综合了 vmstat, iostat, ifstat, 监测工具 netstat 等多个信息 我们只需要简单的工具就可以对 Linux 的 性能进行监测,以下是 VPSee 常用的工具: 13 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 14. 专题 Special 关于内存的常规经验法则是“增加再增加”。当性能问题指向内存的时候,一般的共识是 3.存储 增加更多的内存。不过,这种做法只能在短期内有效。 磁盘 速 度 、 RAID 类型 、 存 储 类 型 和 控制 器 技术这些结合在一起就产生了我们所认识的磁 细数十个最令人头疼的性能瓶颈 盘 I/O。磁盘 I/O 是系统管理员和用户们普遍 焦虑的性能问题来源。这里有实际和物理的性 文/Kenneth Hess 能限制,即使是使用现在最好的磁盘技术也不 编译/哲婷 例外。当在磁盘上结合和分离工作负载的时候 当 请使用最佳做法。 你听到“性能瓶颈”这个名词,马 就会受到影响。当 CPU 支持大于 75%的运算的 上出现在你脑海中的形象应该是 时候,整个系统的运行速度就会减缓。 CPU 需 4.网络 CPU 、内存、磁盘和网络 。不可否 认,这些是 要一些空间来承载不定时的数据冲击,在这个 网络往往被大家认为是一种常见的性能瓶颈 寻找性能问题所在很好的出发点,但是它们并 时候,工作负载可能会在很短的时间内达到 来源,但是事实上并非如此。除非有一个网络 不是所有性能问题唯一的聚集点。以下我们将 100%。CPU 负载是性能瓶颈的一个常见来源。 组件发生硬件故障,比如交换机端口损坏、电 列出另外六个问题可能潜在的地方,当你在出 缆损坏、网卡或者路由器配置出错。所以在你 2.内存 现性能故障的时候就可以对其进行一一排除。 怀疑“网络”性能出现问题的时候最好检查一 有时候,知道问题的根源所在可以很好地防止 关于内存的常规经验法则是“增加再增加”。 下其它地方。网络上感知到的运行缓慢问题通 你的个人系统崩溃。 当性能问题指向内存的时候,一般的共识是, 常应该指向本列表中的其它九项。 增加更多的内存。不过,这种做法只能在短期 请注意,以下排序不分先后。 内有效。其实,当性能瓶颈指向内存的时候, 5.应用程序 1.CPU 往往是因为欠缺的软件设计(内存泄露)或者 虽然没有应用程序开发人员愿意承认,但是 CPU 是电脑进行计算和指令操作的中枢。 其它的系统缺陷,只不过其表现为内存问题。 劣质编码的应用程序成为了硬件问题的导火线 CPU 可以处理数以百万计的计算和指令,但 解决内存性能问题的关键在于要在尝试增加内 处于静止状态的系统将严重受到应用程序启动 是在这些操作超过负荷的时候,它的性能可能 存之前找到真正的问题根源所在。 并且没有任何迹象表明的关闭的影响。这是一 14 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 15. 专题 Special 场在系统管理员和开发人员之间一直在持续的 作。最好的建议是衡量所有系统的工作能力和 10.技术 斗争。他们都声称是对方的责任。不过,在进 性能并对报告给你的数据进行分析。转移工作 你为自己的基础架构所选择的技术在性能方 行了无数小时的硬件性能测试之后,人们发现 负载,加强系统并小心留意它的表现。 面扮演着非常重要的角色。比如,如果你的服 问题出在应用程序。 8.故障或者过期的硬件 务致力于一个虚拟架构技术,你可能会遇到在 6.恶意软件 物理系统中不曾见过的性能问题。另外,有些 旧的硬件很容易出故障。硬件问题可能会导 工 作 负 载 可 以 在 虚 拟 技 术 中 生 机 勃 勃 。 例 如, 病毒、木马和间谍软件在由于恶意软件导致 致系统重启、数据丢失,它的不可预测性让系 LAMP(Linux、Apache、MySQL、PHP)工作 的性能问题中占很大一部分。在出现问题的时 统管理员们叫苦不迭。阻止这类悲剧最好的办 负载比在 KVW 上的速度更快。不过,集装箱式 候,用户大多会抱怨网络、应用程序或者他们 法是保持硬件更新频率,使用冗余硬件,并对 的 虚 拟 化 ( OpenVZ 、 Parallels 、 Solaris 的计算机。这些性能杀手可能隐匿在一个或者 你的系统进行仔细的监控。 Zones)拥有适合任何工作负载的性能。 多个服务器系统中、用户工作站中或者两者的 9.文件系统 结合体中。恶意软件的感染十分普遍,因此, 原文: 你必须采取全方位的防御措施来阻止他们。杀 你是否知道你对文件系统的选择可能会对性 http://www.serverwatch.com/trends/article.ph 能产生深远的影响?答案是肯定的。有些文件 p/3912821/Uncover-Your-10-Most-Painful- 毒软件、反间谍软件、本地防火墙和定期补丁 Performance-Bottlenecks.htm 能够帮助你保护系统并防止由此产生的性能问 系 统 , 比 如 JFS , 可 能 只 占 用 很 少 的 译文: 题。 CPU。XFS 拥有很高的可扩展性和性能。 NTFS http://os.51cto.com/art/201011/233490.htm 是 一 个 可 恢 复 的 高 性 能 文 件 系 统 。 新 的 EXT4 7.工作负载 文件系统能够有效地支持庞大的文档。每种文 相关阅读: 智能工作负载管理可以帮助你防止由于欠缺 件系统都有它自己的针对性,如果不能为一个 十大 x86 服务器常见故障——系统篇 平衡的工作负载或者负载平衡计划设计不周而 应用程序选择正确的文件系统就可能导致灾难 http://os.51cto.com/art/201008/220004.htm 引起的性能问题。把另外一个系统添加到有问 性的后果。慎重考虑你的文件系并做出适合你 题的集群中去可以缓解它的工作压力。但是在 工作的正确选择。 虚拟环境下的物理机上似乎更容易完成这一操 15 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 16. 专题 Special /dev/hda2 27474876 对 Linux 磁盘管理稍微有一些学习和经验的朋友们应该都知道 df 、 du 和 fdisk 这三个常 24130460 1948772 93% /usr 用命令: df 用于检查文件系统磁盘占用情况, du 检查磁盘空间占用情况,而 fdisk 用于磁盘 /dev/hda6 256667 分区。 232729 10686 96% /var 第 1 列是代表文件系统对应的设备文件的路 Linux 磁盘管理三板斧的使用心得 径名(一般是硬盘上的分区);第 2 列给出分 区 包 含 的 数 据 块 ( 1024 字 节 ) 的 数 目 ; 第 3,4 列分别表示已用的和可用的数据块数目。 文/李洋 用户 也许 会感 到奇 怪,第 3 ,4 列块数 之和 对 不等于第 2 列中的块数。这是因为默认的每个 Linux 磁 盘 管 理 稍 微 有 一 些 学 习 和 -t:显示各指定类型的文件系统的磁盘空间使 用情况。 分区都留了少量空间供系统管理员使用的缘故 经验的朋友们应该都知道 df、du 和 -x:列出不是某一指定类型文件系统的磁盘空 即使遇到普通用户空间已满的情况,管理员仍 fdisk 这三个常用命令。这三个工具是本人在 间使用情况(与 t 选项相反)。 能登录和留有解决问题所需的工作空间。清单 进行 Linux 磁盘管理时常用的工具。 -T:显示文件系统类型。 中 Use% 列 表 示 普 通 用 户 空 间 使 用 的 百 分 比 , 我们先看看使用 df 命令的例子: 若 这 一 数 字 达 到 100% , 分 区 仍 然 留 有 系 统 管 1.df //列出各文件系统的磁盘空间使用情况 理员使用的空间。 df 命 令 可 以 获 取 硬 盘 被 占 用 了 多 少 空 间 , #df 目前还剩下多少空间等信息,它也可以显示所 Filesystem 1k-blocks 最后,Mounted on 列表示文件系统的安装 Used Available Use% Mounted on 点。 有文件系统对 i 节点和磁盘块的使用情况。 /dev/hda5 381139 332921 28540 93% / //列出各文件系统的 i 节点使用情况。 df 命令各个选项的含义如下: /dev/hda1 46636 #df -ia -a:显示所有文件系统的磁盘使用情况,包括 6871 37357 16% /boot Filesystem Inodes IUsed 0 块(block)的文件系统,如/proc 文件系统。 /dev/hda3 10041144 IFree IUse% Mounted on -k:以 k 字节为单位显示。 6632528 2898556 70% /home /dev/hda5 98392 23919 -i:显示 i 节点信息,而不是磁盘块。 none 127372 74473 25% / 0 127372 0% /dev/shm 16 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 17. 专题 Special none 0 0 3 /mnt 0 - /proc 2. du //列出各目录所占的磁盘空间,但不详细列出每 /dev/hda1 12048 38 du 的 功 能 是 逐 级 进 入 指 定 目 录 的 每 一 个 子 个文件所占的空间 12010 1% /boot #du none 0 0 目录并显示该目录占用文件系统数据块(1024 3684 ./log 0 - /dev/pts 字节)的情况。若没有给出指定目录,则对当 84 ./libnids-1.17/doc /dev/hda3 1275456 355008 前目录进行统计。 720 ./libnids-1.17/src 920448 28% /home 32 ./libnids-1.17/samples none 31843 1 df 命令的各个选项含义如下: 31842 1% /dev/shm 1064 ./libnids-1.17 -s:对每个 Names 参数只给出占用的数据块总 4944 . /dev/hda2 3489792 133637 3356155 4% /usr 数。 第 1 列是以块为单位计的磁盘空间容量,第 /dev/hda6 66264 9876 -a:递归地显示指定目录中各文件及子目录中 各文件占用的数据块数。若既不指定-s,也不 2 列列出目录中使用这些空间的目录名称。 56388 15% /var //列出文件系统的类型。 指定-a,则只显示 Names 中的每一个目录及其 清单有时很长,有时只需要一个总数。这时 #df -T 中的各子目录所占的磁盘块数。 可在 du 命令中加-s 选项来取得总数: Filesystem Type 1k-blocks -b:以字节为单位列出磁盘空间使用情况(系 Used Available Use% Mounted on 统默认以 k 字节为单位)。 #du –s /mnt /dev/hda5 ext3 381139 3 /mnt -k:以 1024 字节为单位列出磁盘空间使用情 332921 28540 93% / 况。 //列出所有文件和目录所占的空间(使用 a 选 /dev/hda1 ext3 46636 项),并以字节为单位(使用 b 选项)来计算 -c:最后再加上一个总计(系统默认设置)。 6871 37357 16% /boot 大小 -l:计算所有的文件大小,对硬链接文件,则 /dev/hda3 ext3 10041144 #du –ab /root/mail 6632528 2898556 70% /home 计算多次。 6144 mail/sent-mail none tmpfs 127372 -x:跳过在不同文件系统上的目录不予统计。 1024 mail/saved-messages 0 127372 0% /dev/shm 下面举例说明 du 命令的使用: 8192 mail /dev/hda2 ext3 27474876 24130460 1948772 93% /usr //查看/mnt 目录占用磁盘空间的情况 3、fdisk /dev/hda6 ext3 256667 #du –abk /mnt 232729 10686 96% /var2 1 /mnt/cdrom fdisk 可以划分磁盘分区。 1 /mnt/floppy 17 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 18. 专题 Special #fdisk /dev/had //使用/dev/had 作为默 Disk /dev/sda: 4294 MB, 4294967296 这里要选择新建的分区类型,是主分区还是 认的分区设备 bytes 255 heads, 63 sectors/track, 522 扩展分区 ;并 选择 p 或是 e 。 然后 就是 设置分 Command (m for help): m //选择命令选项 cylinders 区的大小。 Command action Units = cylinders of 16065 * 512 = a toggle a bootable flag 要提醒注意的是,如果硬盘上有扩展分区, 8225280 bytes b edit bsd disklabel Device Boot Start End 就只能增加逻辑分区,不能增加扩展分区。 c toggle the dos compatibility Blocks Id System flag 在增加分区的时候,其类型都是默认的 /dev/hda1 * 41 522 d delete a partition 3871665 83 Linux l list known partition types Linux Native ,如果要把其中的某些分区改 /dev/hda2 1 40 m print this menu 321268+ 82 Linux swap 变 为 其 他 类 型 , 例 如 Linux Swap 或 FAT32 n add a new partition Partition table entries are not in disk 等,可以通过命令 t 来改变;如果想知道系统 o create a new empty DOS partition order table 所支持的分区类型,键入 l,如下所示: Command (m for help): p print the partition table Command (m for help): t 如果想完全改变硬盘的分区格式,就可以通 Partition number (1-4): 1 q quit without saving changes s create a new empty Sun disklabel 过 d 参数一个一个地删除存在的硬盘分区。删 Hex code (type L to list codes): 82 t change a partition's system id 除完毕,就可以通过 n 参数来增加新的分区。 Changed system type of partition 1 to u change display/entry units 82 (Linux swap) 当按下“n”后,可以看到如下所示: v verify the partition table 改 变 完 了 分 区 类 型 , 就 可 以 按 下 “ w” , 保 w write table to disk and exit Command (m for help): n Command action 存并退出。如果不想保存,那么可以选择“ q” x extra functionality (experts only) e extended 直接退出,如下所示: p primary partition (1-4) Command (m for help):w 用 户 通 过 提 示 键 入 “ m” , 可 以 显 示 Fdisk p 命令各个参数的说明。 Partiton number(1-4):1 原文: First cylinder(1-1023):1 http://os.51cto.com/art/201012/240726.htm 在 Linux 分 区 过 程 , 一 般 是 先 通 过 p 参 数 Last cylinder or + size or +sizeK or 来显示硬盘分区表信息,然后根据信息确定将 + sizeM(1-1023):+258M 来的分区。如下所示: 18 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 19. 专题 Special * the CPU loadavg code. load average 是 0 的时候都认为他很低, 10 的时候就觉得高, 20 就不用讲了!但是除 */ 了这两种极端的情况之外,那什么时候是这两个值的临界点?当别人问起我这个问题的时候 static void spu_calc_load(void) 我也不知道如何回答。 { unsigned long active_tasks; /* fixed- point */ 系统负载:如何判断 Linux load 的值是否过高 active_tasks = count_active_contexts() * FIXED_1; 文/色萝卜 CALC_LOAD(spu_avenrun[0], EXP_1, active_tasks); CALC_LOAD(spu_avenrun[1], EXP_5, 接 active_tasks); 触过和使用过 unix 或 linux 的朋友 系 统 不 行 了 。 load average 是 0 的 时 候 都 CALC_LOAD(spu_avenrun[2], EXP_15, 都知道如何查看 Unix/Linux load 认为他很 低 , 10 的 时候 就 觉 得高, 20 就不用 active_tasks); } 的值,这边我也重复一下查看 load 的方法: 讲了!但是除了这两种极端的情况之外,那什 [root@aaronw ~]# uptime CALC_LOAD 是这样定义: 么时候是这两个值的临界点?当别人问起我这 13:33:37 up 7 days, 1:52, 1 user, load #define LOAD_FREQ (5*HZ+1) /* 5 sec 个问题的时候,我也不知道如何回答,在我大 intervals */ average: 4.15, 2.00, 3.14 [root@aaronw ~]# w 脑里就根本就没有考虑过。困扰了我很久,我 #define EXP_1 1884 /* 1/exp(5sec/1min) 13:35:35 up 1 days, 1:54, 1 user, load as fixed-point */ 觉得要搞明白他! average: 0.00, 0.00, 0.00 #define EXP_5 2014 /* 1/exp(5sec/5min) USER TTY FROM LOGIN@ IDLE JCPU PCPU 先 从 linux 的 kernel 的 源 码 开 始 吧 ! 在 */ WHAT #define EXP_15 2037 /* linux 2.6.36 版本中有这样一段代码: root pts/1 192.168.2.2 13:33 0.00s 1/exp(5sec/15min) */#define /** CALC_LOAD(load,exp,n) 0.02s 0.00s w * spu_calc_load – update the avenrun load *= exp; load average 后 面 三 个 值 代 表 系 统 在 1 load estimates. load += n*(FIXED_1-exp); 分钟、5 分钟和 15 分钟的负载情况,都知道数 * load >>= FSHIFT; * No locking against reading these 字越高表示系统负载越大,第一直觉就是这个 values from userspace, as for 从这里我们能看到取负载值的最小周期 5 秒。 19 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 20. 专题 Special 什么是 load? CPU 高不等同于 load 高 load 的 就 是 一 定 时 间 内 计 算 机 有 多 少 个 在 Unix/Linux 可 能 经 常 会 遇 到 cpu 的 使 active_tasks ,也就是说 是计 算机 的任 务执 用率为 100%,但是 load 却不高!这是为什么 行队列的长度,cpu 计算的队列。 呢?因为几乎所有的任务和会和 CPU 进行交互, 但是由于各个设备的使用频率不同,造成了不 load 多少是正常? 能同步进行的问题。比如说,当对硬盘进行读 既然 load 是 cpu 计算的队列,那就应该和 写 的 时 候 , 出 现 IO 的 等 待 时 候 , 事 实 上 cpu cpu 个处理方式和 cpu 的个数有关系。所以我 已经被切换到别的进程上了。该任务就处于等 个 人 认 为 应 该 按 系 统 识 别 的 cpu 个 数 来 确 定 待状态,当这样的任务过多,导致队列长度过 load 的 临 界 值 , 系 统 识 别 为 8 个 cpu , 那 么 大,这样就体现到负载过大了,但实际是此时 load 为 8 就 是 临 界 点 , 高 于 8 就 属 于 over cpu 被 分 配 去 干 执 行 别 的 任 务 或 空 闲 , 因 此 load 了。 CPU 高 不 等 同 于 load 高 , load 高 也 不 能 于 cpu 高。 什么叫系统识别 cpu 个数? 我是这样认为的,这里涉及到 cpu 物理个数 原文: 和超线程技术的问题。个人认为 4 个物理 cpu http://selboo.com.cn/post/885/ 和 2 个双核是不能够等同的,当然这是物理层 相关阅读: 面 的 事 了 ! 在 系 统 里 识 别 的 都 是 4 个 CPU. 所 查询系统负载信息 Linux uptime 命令详解 以应该要以系统识别的为准。毕竟是系统去支 http://os.51cto.com/art/201005/200703.htm 配他的使用。 十三个强大的 Linux 性能监测工具 http://os.51cto.com/art/201005/201618.htm 20 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 21. 技巧 Tips Expect 是由 Don Libes 基于 Tcl 语言开发的,并被广泛应用于交互式操作和自动化 2,使用“-i”选项交互地执行 expect 脚 测试的场景之中,它尤其适用于需要对多台服务器执行相同操作的环境中,可以大幅度提高 本 系统管理人员的工作效率。 使用“-i”选项,可以通过来自于标准输入 的读 命令 来交 互地 执行 expect 脚本。如下所 在 linux 下灵活使用 expect 脚本的小窍门 示: $ expect -i arg1 arg2 arg3 文/Balakrishnan Mariyappan expect1.1>set argv arg1 arg2 arg3 译/周雪峰 expect1.2> 对 于 喜 爱 自 动 化 的 Linux 系 统 管 理 员 而 言, 如果你是 expect 脚本语言的新手,可以首 正常情况下,当你执行上面的 expect 命令 一定使用过 expect 这个命令行工具。Expect 先 从 我 们 的 expect 的 “ hello world” 样 例 的 时 候 ( 没 有 “ -i” 选 项 ) , 它 会 把 arg1 当 是 由 Don Libes 基 于 Tcl 语言开发的, 并 (英文)开始。 成脚本的 文件 名 ,所以 “ -i” 选项可以 让 脚本 被广泛应用于交互式操作和自动化测试的场景 把多个参数当成一个连续的列表。 1 , 使 用 “ -c” 选 项 , 从 命 令 行 执 行 之中,它尤其适用于需要对多台服务器执行相 当你 执 行 带 有 “ -c” 选 项 的 expect 脚本 的 expect 脚本 时候,这个选项是十分有用的。因为默认情况 同操作的环境中,可以大幅度提高系统管理人 员 的 工 作 效 率 。 本 文 是 thegeekstuff.com expect 可 以 让 你 使 用 “ -c” 选 项 , 直 接 在 下,expect 是交互地执行的。 最近更新的一篇技术分享文章,其中详细讲述 命令行中执行它,如下所示: $ expect -c 'expect "n" {send "pressed 3 , 当 执 行 expect 脚 本 的 时 候 , 输 出 调 了如何通过不同的命令行选项来执行一个 entern"} 试信息 expect 脚 本 。 具 体 有 什 么 用 , 大 家 可 以 自 由 pressed enter 发挥想象力。 $ 当你用“-d”选项执行代码的时候,你可以 如果你执行了上面的脚本,它会等待输入换 输出诊断的信息。如下所示: 本文假设您对 expect 的基本使用方法已经 $ cat sample.exp 有一定的了解。 行 符 ( n ) 。 按 “ enter” 键 以 后 , 它 会 打 印 # !/usr/bin/expect -f 出“pressed enter”这个消息,然后退出。 21 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 22. 技巧 Tips expect "n"; “-D”选项左边的选项会在调试器启动以前 当执行上面的脚本的时候,会跳过命令行选 send "pressed enter"; 被处理。然后,在调试器启动以后,剩下的命 项 , 它 们 会 被 当 成 参 数 ( 而 不 是 expect 选 $ expect -d sample.exp 令才会被执行。 项),如下所示: expect version 5.43.0 $ expect -c 'set timeout 10' -D 1 -c $ expect print_cmdline_args.exp -d -c argv[0] = expect argv[1] = -d argv[2] 'set a 1' argv0 : -d = sample.exp 1: set a 1 argv1 : -c set argc 0 dbg1.0> set argv0 "sample.exp" 原文: set argv "" 5,逐行地执行 expect 脚本 http://www.thegeekstuff.com/2010/12/5- executing commands from command file expect-script-command-line-argument- 通常,expect 会在执行脚本之前,把整个 examples/ sample.exp expect: does "" (spawn_id exp0) match 脚 本 都 读 入 到 内 存 中 。 “ -b” 选 项 可 以 让 译文: glob pattern "n"? no expect 一 次 只 读 取 脚 本 中 的 一 行 。 当 你 没 有 expect: does "n" (spawn_id exp0) match http://os.51cto.com/art/201012/240260.htm glob pattern "n"? yes 写完整个脚本的时候,这是十分有用的, 相关阅读: expect: set expect_out(0,string) "n" expect 可 以 开 始 执 行 这 个 不 完 整 的 脚 本 , 并 expect: set expect_out(spawn_id) "exp0" 且,它可以避免把脚本写入到临时文件中。 Hotmail 系统故障:都是自动化脚本惹的祸 expect: set expect_out(buffer) "n" http://os.51cto.com/art/201101/242496.htm $ expect -b send: sending "pressed enter" to { exp0 pressed enter} 使用 Perl 脚本彻底实现系统管理自动化 6,让 expect 不解释命令行参数 http://os.51cto.com/art/201012/240483.htm 4,使用“-D”选项启动 expect 调试器 你可以使用标识符让 expect 不解释命令行 不看后悔的 Linux 生产服务器 Shell 脚本分享 “-D”选项用于启动调试器,它只接受一个 参数。 http://os.51cto.com/art/201010/229129.htm 布尔值的参数。这个参数表示提示器必须马上 你可以像下面这样的读入命令行参数: 启动,还是只是初始化调试器,以后再使用它。 $ cat print_cmdline_args.exp $ expect -D 1 script #!/usr/bin/expect puts 'argv0 : [lindex $argv 0]'; puts 'argv1 : [lindex $argv 1]'; 22 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 23. 技巧 Tips 我在配置某机房 Linux 服务器的 iptables 时,不小心设置了某一项错误参数,结果锁定 可以解决引导问题,然后进入 loader 界面 了 SSH 会话,导致我们经理及另一技术员连不上服务器。 * 这 个 引 导 盘 符 根 据 da0s1x 的 x 得 来 , 因此你安装系统的时候 /boot 所在分区区号, 系统管理员易犯错误及解决方法汇总 才是真正的 x 字母,如果不知道就从往后试试 同 样 由 于 默 认 kernel 位 置 文/抚琴煮酒 是/boot/kernel 所以依然需要手动加载 ok load kernel/kernel 本 10G For /root 获得 kernel 信息后 文分享的都是系统管理员在工作的 256M For /boot ok boot 时候容易犯的错误,经抚琴煮酒整理 其余 for /usr 这样就可以正常引导了。 并提供解决方法,希望可以给大家一些指导, 安装正常,结果安装重启后便出现杯具了: 避免在工作中出现此类问题。 但是这样还没有彻底解决问题,随后还需要 >> FreeBSD/i386 BOOT 在磁盘挂载的时候输入 Default: 0:da(0,a)/boot/kernel/kernel 一、安装 FreeBSD 后无法重启 boot: mount root>ufs:/dev/da0s1a 问题描述: 原因: 才能进入系统,而且每次重启都手动一次。 装 惯 了 Linux 的 人 肯 定 知 道 一 般 会 有 个 所以其实问题没有彻底解决。 通过网上查资料,了解到手动引导的全过程, boot 分 区 , 可 是 在 bsd 就 不 那 么 容 易 了 。 在 发现了问题所在: 所以,为了避免以上的/boot 问题,目前我 安 装 FreeBSD 8.1 的 时 候 遇 到 了 问 题 , 查 阅 装机一般规范化操作,一般只分三个区,避免 由 于 独 立 分 区 /boot 造 成 了 FreeBSD 引 导 了 chinaunix 上 面 , 正 好 也 有 相 关 问 题 整 理, 独立分区/boot,也希望玩 Linux 的朋友们重 过程中无法正确找到内核引导的位置。 特摘录如下: 视下这个问题。 解决方法: 2048M For / 我要求 FreeBSD 分区: 通过 4096M For swap 2G For / boot: 0:da(0,e)/loader 其余的均 For /usr 4G For swap 23 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 24. 技巧 Tips 二、root 密码更改后无法远程登录 了 SSH 会话,导致我们经理及另一技术员连不 移走了硬盘后就直接启动了,不是跟 windows 上服务器。 2003 一样嘛,有什么问题?我都无语了…… 问题描述: 解决方法: 解决办法: 系统总监嫌托管的新 Linux 服务器 root 密 码过于简单,吩咐公司的系统管理员将密码改 下面介绍的这个方法及其有用,强烈推荐给 耐 心 跟 他 讲 解 了 Linux 下 /etc/fatab 的 复 杂 些 , 急 躁 的 系 统 管 理 员 用 passwd root 大家:为了预防此类问题出现,可以配置一计 作 用 及 语 法 , 告 诉 他 可 以 在 Emergency 模 式 密码改掉后赶车回公司,杯具的发现密码设置 划任务 crontab,每 5 分钟运行一次,即 下输入 root 密码进入此模式,然后用 得过于复杂,密码给忘了。由于机器是新装, */5 * * * * root /bin/sh mount –o remount,rw / /root/firestop.sh 没 有 配置 具有 sudo 权限 的用 户 , 自己 远程 都 将 / 分 区 设 置 成 可 读 写 , 编 firestop.sh 内容为: 进不 了 root 了 。这 种问 题就 只 有 百 分 百靠 系 辑/etc/fatab,将移除的硬盘用#号屏蔽掉后 service iptables stop 统管理员负责了。 重启服务器,故障解除。 这样即使你的脚本存在错误设置(或丢失 解决方法: 五、sudoer 文件损坏,无法进入 root 的)规则时,也不至于将你锁在计算机外而无 这个问题只要养成良好的习惯就可以预防, 法返回与计算机的连接。这样你就可以放心大 问题描述: 就是 大家 更改 完 root 密码 后, 别 急 着 退 出 , 胆的调试你的脚本啦。这都是生产环境下逼出 同事远程处理一台机房的 FreeBSD 8.1 机 可以用 ctrl+shift+F2 或 F3-F8 尝试用另一 来的,呵呵。 器, 想加 一个 具有 sudo 用 户 的特 殊 用 户, 所 个终端进去下,如果当时就忘了,马上切换到 四、移走硬盘造成 Emergency 模式 以 编 辑 了 /etc/sudoer 文 件 , 却 不 小 心 多 加 F1 更换。抚琴煮酒经常犯这种错误,呵呵,希 了一个.,然后直接保存退出了。结果杯具发 望此法对大家有效。 问题描述: 生了:由于 sudoer 文件损坏,所有具有 sudo 同 事 在 处 理 Linux 服 务 器 时 , 移 走 了 一 块 三、锁定了 SSH 会话 权 限 的用 户均 不能 切 换 到 root 模 式下 工作 , 硬盘,然后就直接启动红帽 RHEL5,发现进了 而 FreeBSD8.1 与 Linux 不 同 , 它 默 认 是 不 问题描述: Emergency 模 式 , 焦 急 中 他 连 忙 跑 过 来 找 我; 允许 root 远程连接的。 我在配置某机房 Linux 服务器的 iptables 我第一句就是问他:你改动了硬件没,他说他 解决方法: 时,不小心设置了某一项错误参数,结果锁定 24 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 25. 技巧 Tips 这时只有请专人到机房去处理问题了…… 文 件 libintl.so.8 发 生 丢 失 , 导 致 了 root 其实只要保存时加上: 不能登陆。具体报障如下: :w !sudo tee % 六、root 密码被更改 /libexec/ld-elf.so.1: Shared object 就可以了。 问题描述: "libintl.so.8" not found, required by "bash" “ :w !sudo tee %” 这 条 命令的含 义是 把 一 个 开 发 小 组 都 是 用 内 部 机 房 的 Connection to 192.168.21.36 closed. 当前编辑的文件的内容当做标准输入输入到命 Linux/FreeBSD 机 器 , 大 家 都 知 道 root 的 解决方法: 令 sudo tee 文件名里去。也就是 sudo 保存 密码;不知哪个兄弟是搞着好玩还是怎么的, 为当前文件名,相当管用的命令,尤其适用于 ①用单用户模式进入系统; 偷偷 的 改 了 root 密码 却 不 通知 大家 ,结 果大 FreeBSD 和 Debian 系 统 ( 我 经 常 忘 了 自 己 原 ②扫描磁盘(此步非做不可,而且是安全 家都用不了 root 密码,杯具了。 来不是 root 了),相当 very nice. 的) 解决办法: fsck -y 原文: 此时处理办法有 2 种,一种就是大家都知道 ③将文件系统重新挂载 http://os.51cto.com/art/201101/241510.htm 的 单 用 户 模 式 修 改 root , 其 实 另 一 个 办 法 也 mount -a 相关阅读: 蛮简单的,系统管理员应该多配置一个具有 ④将 root 的默认 shell 切换到 sh FreeBSD 与 Linux 十个本质上的区别 sudo 权 限 的 用 户 , 遇 到 此 种 情 况 时 可 以 用 chsh -s sh http://os.51cto.com/art/201012/236797.htm sudo 权限来修改 root 的密码,至少免得跑到 重启后一切正常。 FreeBSD 系统管理员都应该知道的那点秘密 机房去。毕竟有时候,机房未必在市内或在国 八、忘记以 su 模式进入编辑器 http://os.51cto.com/art/201012/236729.htm 内的。 问题描述: 七、库文件丢失导致 root 无法登陆 普通用户用 vi 编辑 nginx.conf 等配置文 问题描述: 件 , 保 存 的 时 候 会 提 示 : 没 有 Root 我 们 的 jail 母 机 192.168.21.36 , 因 为 Permission root 的 shell 设置成的 bash,而其依赖的库 解决办法: 25 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 26. 技巧 Tips 如果你试过不小心 cat 了某个二进制文件,很可能整个终端就傻掉了,可能不会换行,没 但这里没有“前部命令”,输出为空,于是就 法回显,大堆乱码之类的,这时候敲入 reset 回车,不管命令有没有显示,就能恢复正常了。 覆盖(或创建)成一个空文件了。 有 些 脚 本 的 写 法 是 :>file.txt , 因 为 : 是 系列连载:最牛 B 的 Linux Shell 命令(2) bash 默认存在的空函数。 单 纯 创 建 文 件 也 可 以 用 $touch 文/Peteris Krumins file.txt , touch 本 来 是 用 作 修 改 文 件 的 时 编译/BOY PT 间戳,但如果文件不存在,就自动创建了。 1.用你最喜欢的编辑器来敲命令 的 一 个 绑 定 。 如 果 你 习 惯 使 用 vi 模 式 , 按 3.用 ssh 创建端口转发通道 command <CTRL-x CTRL-e> <ESC v>可以实现同样功能。 ssh -N -L2001:remotehost:80 user@somemachine 在 已 经 敲 完 的 命 令 后 按 <CTRL-x CTRL- 如 果 你 喜 欢 别 的 编 辑 器 , 可 以 在 这个命令在本机打开了 2001 端口,对本机 e>,会打开一个你指定的编辑器(比如 vim, ~/.bashrc 里 面 放 上 比 如 export 2001 端口的请求通过 somemachine 作为跳板 通过环境变量$EDITOR 指定),里面就是你刚 EDITOR=nano 的命令。 转到 remotehost 的 80 端口上。 输入的命令,然后爱怎么编辑就怎么编辑吧, 另 外 一 个 修 改 命 令 的 方 法 是 使 用 fc 命 令 特别是那些参数异常复杂的程序,比如 实现效果跟术语反向代理是相似的,实际上 (Fix Command),在编辑器里面打开上一句 mencoder/ffmpeg,一个命令动辄 3、4 行的, 就是端口转发,注意上面的描述涉及了 3 台主 命令。我们的第一辑连载提过一个 ^foo^bar^ 要修改其中的参数,这个方法最合适不过了, 机 , 但 当 然 somemachine 可 以 变 成 命令可以用 fc 来实现:fc -s foo=bar。 保存退出后自动执行这个程序。 localhost。 2.清空或创建一个文件 这个命令比较抽象,但有时候是很有用的, 实际上这是 readline 库的功能,在默认情 > file.txt 况 下 , bash 使用 的是 emacs 模 式 的命 令行 操 比如因为众所周知的原因国内的 IP 的 80 端口 >在 shell 里面是标准输出重定向符,即把 无法使用,又或者公司的防火墙只给外网开了 作 方 式 , <CTRL-x CTRL-e> 是 调 用 这 个 功 能 (前部个命令的)命令行输出转往一个文件内 ssh 端口,需要访问内部服务器一个 web 应用, 26 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 27. 技巧 Tips printf("033c033(K033[J033[0m033[? 以 及 需 要 访 问 某 些 限 定 了 来 源 IP 的 服 务 , 就 这个命令开了一 块 1G 内存 来当目录 用。不 25h"); 可以用上这个方法了。 过放心,如果里面没文件,是不会占用内存的 输出的这些字符对 Shell 是有特殊意义的: 举一个具体例子,运行: 用多少占多少。 033c: “ESC c” – 发送重置命令; ssh -f -N -L 033(K: “ESC ( K” – 重载终端的字符映射; 不过一般来说没必要手动挂载,因为多数发 0.0.0.0:443:twitter.com:443 shell.cjb.net 033[J: “ESC [ J” – 清空终端内容; 行版都会在 fstab 内预留了一个内存目录,挂 ssh -f -N -L 0.0.0.0:80:twitter.com:80 033[0m: “ESC [ 0 m” – 初始化字符显示属 载在/dev/shm,直接使用即可; shell.cjb.net 性; 033[?25h: “ESC [ ? 25 h” – 让光标可见; 最 常 见 的 用 途 是 用 内 存 空 间 来 放 Firefox 然 后 在 /etc/hosts 里 面 添 加 127.0.0.1 的 配 置 , 可 以 让 慢 吞 吞 的 FF 快 很 多 , 参 见 twitter.com,好吧剩下的你懂的。 其中字符显示属性经常用来设定打印字符的 Shellex 的 博 文 : 用 tmpfs 让 Firefox 在 内 颜色等,可参考这个博文。 当然通常做这个功能的反向代理,应该要用 存 中 飞 驰 , 以 及 后 来 的 改 进 : 用 tmpfs 让 squid 、nginx 之类,ssh 就算是 轻量 级的 尝 5.在午夜的时候执行某命令 Firefox 在 内 存 中 飞 驰 II , 其 中 提 到 的 脚 本 试吧! echo cmd | at midnight 来 自 speeding up firefox with tmpfs 说 的 就 是 at 这 个 组 件 , 通 常 跟 cron 相 提 and automatic rsync。 4.重置终端 并 论 , 不 过 at 主 要 用 于 定 时 一 次 性 任 务 , 而 reset 那 个 破 烂 LinuxQQ 也 可 以 用 这 个 方 法 , 减 cron 定时周期性任务。 如果你试过不小心 cat 了某个二进制文件, 少因为大量磁盘 IO 导致的问题。 很可能整个终端就傻掉了,可能不会换行,没 at 的 参 数 比 较 人 性 化 , 跟 英 语 语 法 一 样 , 原文(本文为节选): 法回显,大堆乱码之类的,这时候敲入 reset 可以 tomorrow, next week 之类的,详细的 http://www.catonmat.net/blog/top-ten-one- 回车,不管命令有没有显示,就能恢复正常了。 查看手册 man at。 liners-from-commandlinefu-explained 实 际 上 reset 命 令 只 是 输 出 了 一 些 特 殊 字 6.映射一个内存目录 译文: 符 , 我 们 看 BusyBox 里 面 最 简 单 的 reset 程 mount -t tmpfs -o size=1024m tmpfs http://www.isspy.com/most_useful_linux_com /mnt/ram mands_2/ 序的实现: 27 http://g.51cto.com/linuxops/ http://os.51cto.com/linux/ 投稿信箱:yangsai@51cto.com
  • 28. 招募启事 下期预告 《Linux 运维趋势》的建设需要您的加入! 下期主题为:内网与外网的运维管理。 您可以通过如下方式参与我们杂志的建设: 敬请期待! 1、推荐文章 本刊为月刊,预定每月发布日期为: 每个月的第二个星期五 无论是您在互联网上看到的好文章,还是您自己总结 /整理的资料;无论是英文还 是中文;无论是入门的还是高端的,都欢迎推荐!推荐方式包括: 您可以通过如下方式检查是否有新刊发 a)在技术圈中分享:http://g.51cto.com/linuxops 布: b)在邮件群中分享:linuxops-cn@googlegroups.com 1、加入电子邮件群组: linuxops-cn@googlegroups.com c)发邮件给编辑:yangsai@51cto.com 获得邮件提醒 2、投稿 2、经常光顾 51CTO Linux 频道: 如果您认为自己在 Linux 方面具有专家级别的能力,并且有与大家分享您技术经验 http://os.51cto.com/linux/ 的热诚,同时也有兴趣挣点稿费花花,那么欢迎您的投稿! 如果您在 IT 技术方面的翻译有很高的能力,能够快速、高质量的完成译文,并且 《Linux 运维趋势》是由 51CTO 系统频道策划、针 也经常浏览到一些 Linux 方面的优秀外文,那么也欢迎您的投稿! 对 Linux/Unix 系统运维人员的一份电子杂志,内 投稿信箱:yangsai@51cto.com 容从基础的技巧心得、实际操作案例到中、高端 3、推广与意见 的运维技术趋势与理念等均有覆盖。 如果您喜欢我们的杂志,认为这本杂志对于您的工作有所帮助,请向您的 Linux 好 《Linux 运维趋势》是开放的非盈利性电子杂志, 友、同事们推荐它! 其中所有内容均收集整理自国内外互联网(包含 如果您觉得这份杂志还有什么地方需要改进或补充,也希望您能够提出您的宝贵意 51CTO 系统频道本身的内容)。对于来自国内的 见! 内容,编辑都会事先征求原作者的许可(八卦, 趣闻&数字栏目例外)。如果您认为本杂志的内 联系人:yangsai@51cto.com 容 侵 犯 到 了 您 的 版 权 , 请 发 信 至 yangsai@51cto.com 进行投诉。