Linux 系统管理:首要任务
Linux 系统管理在信息技术专业化等级中占有自己的一席之地。有些人擅长自由软件技术的特定领域,但不需要学习系统管理。例如,您可能专精于配置电子邮件或使用 Apache 和 MySQL 编写应用程序。您可能只专注于域名服务,并且知道在经常更改 IP 地址的提供商线路中设置服务器的深奥方法。但是,如果我请您照看繁忙的服务器或多个服务器,您可能没有耐心,或者没有学到完成这项工作所需的众多技能。
以上并不意味着优秀的系统管理员不擅长配置 Apache、维护 DNS 区域文件或编写 Perl 脚本等领域。这仅仅意味着,如果您想在 Linux 世界中担任系统管理员,您需要知道如何完成从安装服务器到保护文件系统免受互联网上恶意破解者的侵害的一切工作。在此期间,您需要准备好您的系统,以便从服务器可能发生的无数种故障中恢复。
例如,考虑这样一种情况:您发现您管理的某个网站宕机了;服务器已锁定,无法工作。您如何以最快的方式恢复?两周前我遇到了这样的事件。我的一篇文章同时出现在 Slashdot.org、Digg.com、NewsForge 和其他网站上。我的同事以前从未在 Linux 网站上见过如此大的流量。除了我们服务器上的数百万次点击之外,我们在五个小时内集中了 25 万独立访客。
当您看到这种流量时,您不希望服务器宕机,否则您将错过新的读者。在我们的情况下,重启使系统在几分钟内恢复服务,但随后它再次锁定。通常,我们使用的系统资源不到百分之十,所以我们认为我们已经为一年中最热的一天做好了准备。
了解服务器和所有正在运行的进程后,我们可以关闭一些进程,并将重点放在允许同时连接到我们数据库的大量增加上。尽管我们有数千名订阅者,但我们关闭了诸如限制注册读者评论的进程。最终,我们度过了这一天,只有短暂的停机时间。但是流量的激增震撼了我们的“小船”。
如上所述的服务中断也可能发生在专用网络的范围内。许多服务在特定时间经历高峰使用。例如,管理员知道他们一天中最重的负载之一发生在早上第一件事,即人们查看电子邮件时。人们大约在同一时间到达工作场所,启动他们的电子邮件客户端,并在喝咖啡时阅读邮件。
邮件服务器可能会在上午 8 点到 10 点之间经历 75% 的使用率。网关流量也会增加,并且网络带宽会下降。您是否应该为邮件、路由、代理和网关服务提供单独的专用服务器?大多数 IT 部门都这样做。
如果这些计算机在一天中的平均 CPU 和内存容量仅为 10%,但每周五天每天仅在几个小时内需要 75% 的资源,该怎么办?供应商已开始推荐更高容量的机器并创建虚拟服务器,而不是购买单独的计算机。
您可能希望配置稍大的“金属”来为电子邮件和相关应用程序提供虚拟机。然后,例如,使用 Xen,您可以让每个应用程序在自己的空间中运行。在这种情况下,您可能会发现服务器容量利用率约为 50%,这有助于最大限度地利用您的资源并减少服务器蔓延。
系统管理员应该知道如何快速攀登学习曲线。如果出现一项新技术,例如虚拟化,您需要在它掌握您之前掌握它。您还需要知道如何在您的环境中应用它。
系统管理员的一天都忙于哪些任务?这取决于他或她工作的环境。您可能会发现自己管理着数十甚至数百台 Web 服务器。相反,您可能会发现自己运行着一个支持知识工作者和/或开发人员的局域网。
无论您的环境如何,您都会发现某些任务是所有系统管理功能共有的。例如,监视系统服务以及启动和停止它们本身就扮演着一个角色。您的 Linux 机器可能看起来运行平稳,而一个或多个进程已停止。例如,Linux 服务器可能在外部看起来很正常,而服务于网页的数据库却已失败。
当面向用户的服务变得至关重要时,您需要做好准备并领先于问题。想象一下,一个失败的打印作业正在锁定队列,阻止用户打印他们的文档。您是否会等到听到愤怒用户的抱怨才采取行动,或者您是否有办法领先于问题?
大多数系统管理员都必须面对这样的事实:在某个时候会发生一些导致停机的事情。此类事件通常发生在我们的控制之外。也许您的系统遇到停电或尖峰电压。有时,由于仅在您的服务器上存在的一系列因素,会出现系统错误;这是在项目测试期间从未发生过的事情。实际上,系统管理员永远不知道问题何时会发生;他们只知道最终会发生问题。
管理员需要以高效有效的方式监控他们的系统。为此,许多管理员已经在自由软件社区中发现了大量的监控和警报工具。有些工具要求您通过 SSH 登录到远程系统并运行命令行工具,例如 pstree、lsof、dstat 和 chkconfig。
另一个有用的监控工具是 Checkservice,它提供(远程)主机上服务的状态。它通过日志、PHP 状态页面或输出到其他工具来提供结果。一些管理员喜欢 tiger,它可以对系统进行彻底检查并将结果报告到日志文件。您可以在此处找到 Debian 工具的列表和说明。
当您必须监控一个较大的服务器群,并且不想将所有时间都花在登录远程服务器和运行命令行测试时,请寻找您可以与浏览器一起使用的自由软件工具。我喜欢一个名为 monit 的工具。此监控和警报系统可在多种 Linux 类型系统上运行。Monit 为系统管理员提供了定义、管理和监控进程、文件系统甚至设备的能力。您还可以将 monit 配置为在进程失败时重新启动它们。
斯坦福大学维护着一个更新的网络监控工具列表,并赞助一个名为互联网端到端性能监控组的工作组。请务必查看斯坦福列表顶部的最新工具。例如,Cacti 已成为系统管理员中较流行的工具之一。
专业的 Linux 系统管理要求您了解与网络和向用户提供服务相关的广泛任务。从事这项工作需要一种特殊的人。显然,许多人既有性格又有兴趣来完成这项工作。在接下来的几个月中,我们将探讨构成 Linux 系统管理的任务。我希望您能加入我的旅程。