运维工作直接关系到应用系统运行的正常稳定,但运维;笔者通过自己的多年运维经验,总结出以下必须遵守的;一、系统变更、升级应先在同样的环境测试通过,执行;运维是一门经验的学科、是一门试错的学科;二、对破坏性的操作要先确认符合预定方案,然后谨慎~
交流篇
通过多种方式来学习
◆订阅一些RSS feed,每星期至少阅读几篇好文章。LWN,kerneltrap,undeadly.org。凡是相关的,或是仅仅是有点擦边的内容都应该关注。
◆阅读“达人”的博文。有时他们会投递一些有趣的主题,并且我们还可以通过评论直接和博主进行交流。
◆阅读几篇非“达人”的博文。通过他们遇到的问题,或者他们做了但没有做好的工作,我们可以找到一些感觉。(译注:这一点我个人深有体会。阅读一些新手的博文,我们常常可以得到启发,因为我们的一些做法虽然不会出问题,但是太程式化了,每天都重复同样的事情,我们无法进步,而新手由于缺乏经验,他们会不断地尝试各种做法,他们遇到的问题很可能是我们没有遇到过的,这对我们来说是一笔财富。)
◆想尽办法认识一些可以“痛扁”你的人。注意,一定要谦虚。
◆通过多种来源学习。通过多种方式吸收知识有助于找到最适合你的方式。
◆仔细研读其他公司成功或失败方面的故事。可以尝试打电话给他们的CTO,通过免费的午餐从他们那里获取一些有价值的建议。
尝试各种事情
◆如果你不断地进行尝试,你会发现你能做的事情远远超出了你的想象。以前从来没有见到过?那就试试看。
◆尽量不做一只危险的“菜鸟”。在你有把握不会把整个房间都烧掉以前,应该在“沙箱”中进行尝试。
真正地搞清楚冗余是怎么一回事
◆真正地搞清楚冗余会对哪些事情造成怎样的影响。在什么情况下它可以发挥作用,在什么情况下它无法发挥作用。
◆尝试破坏你的系统。你可以在测试实验室中尝试,有时也可以在生产系统中这样做。了解一下当你处于受限状态中的时候可以做什么。比如,拔掉电源,抽出网卡,杀死进程,拔掉几根内存,抽掉硬盘,拔掉网线。
◆在冗余存在的情况下尝试替换和升级系统。
真正地理解可扩展性
◆关于如何开发出可扩展的系统,有很多的资料可以参考。虽然你不用自己编写一个这样的系统,但是你要尽量搞清楚这方面的理论知识。
◆学习虚拟化。创建几个虚拟机,然后尝试着摆弄一下针对多台机器的应用程序。在本地的不同的端口上运行多个实例。
◆通常,运维人员要做一些系统承载量方面的计划。如果你不清楚应该把什么资源应该添加到哪里,你就不会知道应该添加些什么。
成为一个能够解决问题的超级明星
◆问题忽然发生,而时间是宝贵的。你必须要有自己的知识储备,并高效的使用它们。
◆经常练习着解决问题。挑选出一个可以正常工作的完美页面,然后试着跟踪一下它是如何工作的。
◆strace, ltrace, lsof, logs
◆搞清楚load != load(编者注:此处理解为load参数不等同于真正的系统负载情况)。主机运行情况的所有信息都需要查看。
◆熟悉IO系统相关的工具。“不可思议”的性能问题通常都是由于你的RAID或SAN配置出了什么问题。
◆记录文档。Checklist,解决问题的技巧,构建工具等。
◆构建更多的工具。不只是为了你自己,也是为了其他人。你也可以给现有的工具添加一些功能。
和IT人员一起工作
◆信不信由你,运维人员和IT人员之间存在交集。
◆运维人员必须要为服务器维护高带宽的网络访问。IT人员必须要做同样的事情,只是他们的服务对象是人。IT人员也往往是运维人员进入数据中心的“桥梁”。在这一点上,大家在一起工作是很有实际意义的。
◆彼此的分工要明确。IT人员应该负责管理邮件,而运维人员应该负责管理开发环境的服务器。不要插手职责之外的事情,尽最大的努力把你自己的事情做好。
◆不要疏远他人。Mac是流行的,Linux也(慢慢地)获得了一些市场份额。信不信由你,强迫大家都使用微软的生产软件可能会对你造成不好的影响。实际上有许多替代品,你可以试试看。在你的公司中,很可能熟悉Google应用的人比熟悉Outlook的人要多。
◆尽可能的让大家觉得Unix并不难用,毕竟这是他们要支持的系统,你肯定希望他们对Unix更加熟悉一些。当然,除非你家里是卖Windows的。
和开发人员一起工作
◆你们都为同一个产品工作,你们的目的也是一致的。试着多配合一下。
◆一起开策略会议并不等于在一起工作。
◆开发人员更了解代码资源,运维人员更了解硬件和部署。把这一切都记在心里,你可以让一些事情变得更高效。
◆交叉培训。传播双方使用和设计工具的心得,这可以提高工具的可管理性和灵活性。
◆注意不要过多地要求对方。这不是“我们”VS“他们”。每一个人都是有人权的。每一个人都应该尽可能地为公司多做贡献,而不是为了他们自己。
◆如果大家相处的很融洽,就可以从容地应对各种紧急事件了。
和其他领域的运维一起工作
◆每个领域的运维都有他们自己的专长。网络,数据库,OS。不要忘记彼此多交流!
◆一味地墨守陈规是消极的,令人厌烦的。让你的运维们重复的做相同的工作可以很快的增加他们的流失率。要尊重系统运维们在网络运维们的背后观察学习的机会。
◆时刻记得给人们尝试,学习和成长的机会。
◆注意别给你最优秀的运维安排了太多的活儿。你想要用的运维是那种有能力给自己找出空闲时间的人。
◆浑水摸鱼者(编者注:原文为bad eggs,直译为坏蛋)。对待他们要足够强硬。大多数人在帮助之下是可以完成任务的,但是他们必须要学会独立。
分享:系统运维之存储
存储
这里顺带着提一下存储,给新手做一个概念上的介绍。当然,这类东西在数据量大的企业中也是经常用到的。
先说SAN。SAN是专门用于提供企业商务数据或运营商数据的存储和备份管理的网络。因为是基于网络化的存储,SAN比传统的存储技术拥有更大的容量和更强的性能。
通过专门的存储管理软件,可以直接在SAN里的大型主机、服务器或其他服务端电脑上添加硬盘和磁带设备(现在大多数的SAN是基于光纤信道交换机和集线器的。
相当于一个高速的子网,通常SAN由RAID阵列连接光纤通道组成,SAN和服务器和客户机的数据通信通过SCSI命令而非TCP/IP,数据处理是“块级”。
NAS则以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能、降低总拥有成本、保护投资。其成本远远低于使用服务器存储,而效率却远远高于后者。这类设备相对来说还算简单。
SAN和NAS的应用都非常广泛,现成的解决方案也有很多,它们可以混用,也可以单独使用,主要还是根据自己公司的实际情况来定。
网络设备
熟悉网络基础知识、网络通信协议和常见的网络设备是必须的。建议把思科和华为这两家的产品摸熟。
友情提示:很多人会把华为和H3C当成一家,其实他们两家设备的命令并不怎么兼容。
如果是在稍微大一点的公司工作或者哥们你就是在IDC混,那还得学会对企业局域网和广域网进行规划、实现和检查排错,VLAN是必须的。其他就是视频、语音之类的网络服务了。
结尾:运维工作在一家公司中至关重要,但传统的运维模式一定程度上限制了运维工程师的技术发展,更抑制了创新思维,我们需要利用运维“宽泛技术”定位的优势开拓思路。更多内容,尽在编程学习网教育~