如何让Linux系统管理变得更轻松
“救火队员、紧迫感”,绝大多数系统管理员都这样形容他们的工作,这绝对是真的,他们大部分时间都在解决问题,刚教会一个MM接收邮件,销售部的打印机又被卡住了,不久又发现服务器的硬盘出了问题,我们身边的系统管理员就这样忙碌地度过他们的每一天。在经历了长期的折磨后,一些系统管理员变聪明了,他们开始利用各种工具和技术帮助自己完成一些任务,本文就来揭秘一下让系统管理工作变得更轻松的技巧。
我要介绍的这些技术都很基础,但不要笑我,作为“救火队员”的你应该和我一样认真对待这些技术。
首先,我们来看看消极系统管理员的工作态度:
● 这工作太烦了。
●只想做自己能做的事情。
那么有什么办法消除这种痛苦呢?首先,系统管理员应拥有一套好的工具箱,好的工具就像金子,不管你是自己编译,还是下载或购买,必须要有精良的武器装备。其次,做好一切准备工作,不要干应急的事情,应急工作会让你的生活充满惊慌,甚至影响到你的亲人,并可能让你的脾气暴躁,听我的,避免临时抱佛脚,像童子军一样做好准备吧。第三,善用别人的成果,好好利用在你之前别人做好的成果,如使用其它项目的代码,不要重新发明车轮,当然,你也应该记录下你的工作点滴,你也会成为前辈的。第四,思考,思考,再思考,如果你不善于思考,工作就不可能变得更轻松。
◇硬件
硬件是系统管理员做事的基础,因此确保硬件运行正常很重要,我们继承了以往的系统,如果不这样它们就只能慢慢等死,如果你不喜欢某个系统,或它的问题太多,最好借此机会关掉,这样的系统你扭住不放对你的组织是没有任何好处的,下面是和硬件相关的一些其它提示:
●实施熄灯管理。
●如果你使用惠普服务器可通过iLO,如果是戴尔服务器则通过DRAC,如果是Sun服务器则通过LOM,它们都允许你远程连接到服务器,获得一个控制台窗口,可远程重启服务器,或进行远程诊断,它们的价值是无法估量的,我知道惠普服务器默认是带有iLO的,无论如何,远程控制功能是购买服务器时必须考虑的一个功能。
●如果你不能远程访问服务器,你可以使用一台旧电脑和一些X10设备自己DIY一个,但如果你不是极客,显然这对你来说太难了。
RAID
RAID不是杀虫剂,而是一种廉价冗余磁盘阵列,你的服务器至少会支持RAID-1(一对磁盘,镜像),除非你在做Hadoop,RAID对磁盘故障有一定的承受能力,如果某块磁盘坏掉,不至于要从头开始搭建系统。
冗余
从冗余电源到冗余网络接口卡,从来没有人因做了一些冗余而被解雇的。
◇虚拟化和云
不必对虚拟化或云感到害怕,如果你的应用程序可以迁移到虚拟机或云端,应该认真考虑,你看你因此远离曾让你头痛的硬件问题。
但虚拟化和云并不是万能的,将应用程序部署到这些平台之前,最好仔细测试一下。
消除硬件方面的问题后,你就可以把精力放在服务上了,不用在凌晨2点再往数据中心赶了。
◇更聪明的软件
有许多不同的工具可以让你的工作变得更加简单,帮助你为你的组织提供更好的服务质量,如果你觉得某些工具不适合你,可以寻找一些替代品。
监控
如果你还没有建立一套监控系统,应立即着手创建,这样你可以远程了解数据中心的运转情况,这类工具实在是太多了,如Nagios,Hobbit或Groundwork,一个个地尝试吧,总有一个适合你,如果你现在的监控系统不好用,那用它们来代替吧。
自动化安装
准备机器是我们系统管理员的例行工作之一,如果你还在手工处理,那你就Out了,并且也容易引入错误。
Kickstart
谈到自动化安装时,Kickstart可能是Linux世界的事实标准,Red Hat和Ubuntu家族都支持它,它很灵活,可扩展性也很好,我自己多年来就一直在使用它。
Preseed
Preseed是Debian以及基于Debian的发行版使用的,包括Ubuntu,它的功能相当强大,但文档需要加强。
镜像
通过使用镜像软件,如Ghost,G4U或Acronis可以克隆一个系统,我发现,如果你的硬件平台多样化,这个方法比自动化安装还要快,但管理多平台的镜像将成为管理员头疼的问题。
不管你使用哪种自动化安装方法,最好花点时间开启PXE网络启动,这样你就不需要安装介质了。
软件包
无论何时,下载和使用与平台对应的软件包格式,如果没有现成的,那么你应该学习如何创建软件包,那样可以节省许多安装和调试时间,然后做一次系统镜像。
如果你不熟悉软件包创建技术,你可能需要从CheckInstall开始创建RPM,Debian包或Slackware tar包。
◇配置管理
版本控制
不管你使用Subversion,Mercurial,CVS还是商业产品,如Perforce,都应该将配置文件放入版本控制系统的仓库中,实现版本化控制,花点时间为每个主机建立目录树,并将它们的配置文件上传进去,如果你像软件一样对待你的配置文件,更新配置后如果出现问题,你还有机会进行回滚。
为了使管理变得容易,你可以创建一个元数据包,将所有配置都打包进去,也实行版本控制,也许开始实施时会感到很复杂,但它的确能帮你消除许多可能的操作错误。
配置自动化
前面我们提到创建元数据包,如果全部靠手工来处理是不现实的,其实有很多工具可以使用,如Puppet,Chef或Cfengine,这些工具将会真正推送和强制配置你的服务器,但它们需要一种完全不同的思维和行动方式,并且需要花时间测试。
不管怎样,你的配置信息都应该是可控制的,在故障排除期间将会感受到它的好处。
备份
备份是你最后一道防线,不管怎样,你应准备一套良好的备份策略,并确保它得到严格执行。有了备份,你可以利用备份资源执行恢复操作。只有一种情况你不需要备份,那就是系统没有数据值得备份,你可以使用kickstart从一个裸机安装一个新系统。无论如何,数据库服务器是需要备份的。
可供选择的备份软件很多,你可以逐个尝试,直到找到你满意的。
◇小结
最后我想说的是,提前做好准备总是有益的,有条件最好实现弹性或冗余架构,尽量让操作自动化,将你的时间放在那些更重大的项目上,你的组织也会从这些稳定的系统获益,你也不用担心会被解雇。缺少障碍的环境会变得敏捷起来,你的日常工作将会变得井井有条,你的生活也会因此而充满阳光。