转自: http://blog.csdn.net/chinalinuxzend/article/details/2808467
原贴:http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/index.html
懒惰” Linux 管理员的 10 个关键技巧如何成为一名效率更高的系统管理员 |
级别: 初级 Vallard Benincosa, 认证技术销售专家, IBM 2008 年 8 月 11 日 学会这 10 个技巧后,您将成为世界上最强大的 Linux® 系统管理员,整个世界是有点夸张,但要在一个大团队中工作,这些技巧是十分必要的。学习 SHH 通道、VNC、密码恢复、控制台侦察等等。各个技巧都附有例子,可以将这些例子复制到自己的系统中。 好的系统管理员区分在效率上。如果一位高效的系统管理员能在 10 分钟内完成一件他人需要 2 个小时才能完成的任务,那么他应该受到奖励(得到更多报酬),因为他为公司节约了时间,而时间就是金钱,不是吗? 技巧是为了提高管理效率。虽然本文不打算对所有 技巧进行讨论,但是我会介绍 “懒惰” 管理员所用的 10 个基本法宝。这些技巧可以节约时间 —— 即使没有因为高效而得到更多的报酬,但至少可以有更多的时间去玩。 网络新手的经历:按下服务器(运行基于 Redmond 的操作系统)DVD 驱动器上的 Eject 按钮时,它会立即弹出。他然后抱怨说,在大多数企业 Linux 服务器中,如果在那个目录中运行某个进程,弹出就不会发生。作为一名长期的 Linux 管理员,我会重启机器。如果我不清楚正在运行什么,以及为何不释放 DVD 驱动器,我则会弹出磁盘。但这样效率很低。 下面介绍如何找到保持 DVD 驱动器的进程,并轻松弹出 DVD 驱动器:首先进行模拟。在 DVD 驱动器中放入磁盘,打开一个终端,装载 DVD 驱动器:
现在打开第二个终端并试着弹出 DVD 驱动器:
将得到以下消息:
在释放该设备之前,让我们找出谁在使用它。
进程正在运行,无法弹出磁盘其实是我们的错误。 现在,如果您是根用户,可以随意终止进程:
现在终于可以卸载驱动器了:
尝试以下操作:
注意!终端就想垃圾一样。输入的所有内容非常零乱。那么该怎么做呢? 输入 放心吧,在进行此操作时,机器不会重启。继续操作:
现在屏幕恢复正常了。这比关闭窗口后再次登陆好多了,特别是必须经过 5 台机器和 SSH 才能到达这台机器时。
来自产品工程的高级维护用户 David 打电话说:“为什么我不能在您部署的这些新机器上编译 supercode.c”。 您会问他:“您运行的是什么机器?” David 答道:“ Posh”。(这个虚够的公司将它的 5 台生产服务器以纪念 Spice Girls 的方式命名)。这下您可以大显身手了,另一台机器由 David 操作:
转到 posh:
到达之后,运行以下代码:
然后呼叫 David: “David,在终端运行命令 这使您和 David 的会话在 Linux shell 中联接在一起。您可以输入,他也可以输入,但彼此可以看到对方所做的事情。这避免了进入其他层次,而且双方都有相同的控制权。这样做的好处是 David 可以观察到您的故障诊断技巧,并能准确了解如何解决问题。 最后大家都能看到问题所在:David 的编译脚本对一个不在此新服务器上的旧目录进行了硬编码。将它装载后再次编译即可解决问题,然后 David 继续工作。您则可以继续之前的娱乐活动。 关于此技巧需要注意的一点是,双方需要以同一用户登录。 对于 然后通过再次运行
如果忘记根密码,就必须重新安装整台机器。更惨的是,许多人都会这样做。但是启动机器并更改密码却十分简单。这并非在所有情况下都适用(比如设置了一个 GRUB 密码,但也忘记了),但这里介绍一个 Cent OS Linux 示例,说明一般情况下的操作。 首先重启系统。重启时会跳出如图 1 所示的 GRUB 屏幕。移动箭头键,这样可以保留在此屏幕上,而不是进入正常启动。 图 1. 重启后的 GRUB 屏幕 然后,使用箭头键选择要启动的内核,并输入 E 编辑内核行。然后便可看到如图 2 所示的屏幕: 图 2:准备编辑内核行 再次使用箭头键突出显示以 图 3. 在参数后追加数字 1 然后按 Enter 和 B,内核会启动到单用户模式。然后运行
现在可以重启了,机器将使用新密码启动。
有很多次,我所在的站点需要某人的远程支持,而他却被公司防火强阻挡在外。很少有人意识到,如果能通过防火墙到达外部,那么也能轻松实现让外部的信息进来。 从本意讲,这称为 “在防火墙上砸一个洞”。我称之为 SSH 后门。为了使用它,必须有一台作为中介的连接到 Internet 的机器。 在本例中,将这样台机器称为 blackbox.example.com。公司防火墙后面的机器称为 ginger。此技术支持的机器称为 tech。图 4 解释了设置过程。 图 4. 在防火墙上砸一个洞 以下是操作步骤:
VNC 或虚拟网络计算已经存在很长时间了。通常,当远程服务器上的某类图形程序只能在此服务器上使用时,我才需要 VNC。 例如,假设在 技巧 5 中,ginger 是一台存储服务器。许多设备都使用 GUI 程序来管理存储控制器。这些 GUI 管理工具通常需要通过一个网络直接连接到存储服务器,而这个网络有时保存在专用的子网络中。因此,只能通过 ginger 访问这个 GUI。 可以尝试使用 假设设置与技巧 5 中的一样,但希望 tech 能访问 VNC 而不是 SSH。对于这种情况,需要进行一些类似的操作,不过转发的是 VNC 端口。执行以下操作步骤:
设置虽然有点麻烦,但比为修复存储阵列而四处奔波强多了。不过多实践几次这就变得容易了。 对此技巧我还要补充一点:如果 tech 运行的是 Windows® 操作系统,并且没有命令行 SSH 客户端,那么 tech 可以运行 Putty。Putty 可以设置为通过查找侧栏中的选项来转发 SSH 端口。如果端口是 5902 而不是本例中的 5999,则可以输入图 5 中的内容。 图 5. Putty 可以转发用作通道的 SSH 如果进行了此设置,那么 tech 就可以使用 VNC 连接到 localhost:2,如同 tech 正在 Linux 操作系统上运行一样。
设想:公司 A 有一个名为 ginger 的存储服务器,并通过名为 beckham 的客户端节点装载 NFS。公司 A 确定他们需要从 ginger 得到更多的带宽,因为有大量的节点需要 NFS 装载 ginger 的共享文件系统。 实现此操作的最常用和最便宜的方式是将两个吉比特以太网 NIC 组合在一起。这是最便宜的,因为您通常会有一个额外的可用 NIC 和一个额外的端口。 所以采取此这个方法。不过现在的问题是:到底需要多少带宽? 吉比特以太网理论上的限制是 128MBit/s。这个数字从何而来?看看这些计算: 1Gb = 1024Mb;1024Mb/8 = 128MB;"b" = "bits,"、"B" = "bytes" 但实际看到的是什么呢,有什么好的测量方法呢?我推荐一个工具 iperf。可以按照以下方法获得 iperf:
需要在 ginger 和 beckham 均可见的共享文件系统上安装此工具,或者在两个节点上编译并安装。我将在两个节点均可见的 bob 用户的主目录中编译它:
在 ginger 上,运行:
这台机器将用作服务器并以 MBit/s 为单位输出执行速度。 在 beckham 节点上,运行:
两个屏幕上的结果都指示了速度是多少。在使用吉比特适配器的普通服务器上,可能会看到速度约为 112MBit/s。这是 TCP 堆栈和物理电缆中的常用带宽。通过以端到端的方式连接两台服务器,每台服务器使用两个联结的以太网卡,我获得了约 220MBit/s 的带宽。 事实上,在联结的网络上看到的 NFS 约为 150-160MBit/s。这仍然表示带宽可以达到预期效果。如果看到更小的值,则应该检查是否有问题。 我最近碰到一种情况,即通过连接驱动程序连接两个使用了不同驱动程序的 NIC。这导致性能非常低,带宽约为 20MBit/s,比不连接以太网卡时的带宽还小!
Linux 系统管理员通过使用权威的命令行脚本会变得更高效。这包括巧妙使用循环和知道如何使用 例如,假设需要为即将安装的 Linux 集群生成一个新的 /etc/hosts 文件。一般的做法是在 vi 或文本编辑器中添加 IP 地址。不过,可以通过使用现有 /etc/hosts 文件并将以下内容追加到此文件来实现。在命令行上运行:
200 个主机名(n001 到 n200)将由 IP 地址(192.168.99.1 到 192.168.99.200)来创建。手动填充这样的文件有可能会创建重复的 IP 地址或主机名,因此这是使用内置命令行消除用户错误的好例子。请注意,这是在 bash shell(大多数 Linux 发行版的默认值)内完成的。 再举一个例子,假设要检查 Linux 集群中的各个计算节点中的内存大小是否一样。通常,拥有一个发行版或类似的 shell 是最好的。但是为了演示,以下使用 SSH。 假设 SSH 设置为不使用密码验证。然后运行:
这样的命令行相当简洁。(如果在其中放入正则表达式情况会更糟)。让我们对它进行细分,详细讨论各部分。 首先从 001 循环到 200。使用
这个命令的意思是:
在每个节点上执行这个操作。 在每个节点上执行命令后,200 个节点的整个输出就传送( 最后,使用
这个命令并不是完美无缺的。如果发现与预期不同的内存值,您就不知道是哪一个节点出了问题,或者有多少个节点。为此需要发出另一个命令。 这个技巧提供了一种查看某些内容的快速方式,而且如果发生错误,您可以立刻知道。其价值在于快速检查。
有些软件会向控制台输出错误消息,而控制台不一定会显示在 SHH 会话中。使用 vcs 设备可以进行检查。在 SSH 会话中,在远程服务器 在大多数数据场中,使用远程终端服务器、KVM 甚至 Serial Over LAN 是查看这类信息的最好方式;它也提供了带外查看功能的一些好处。使用 vcs 设备能够提供一种快速带内方法,这能节省去机房查看控制台的时间。
在 技巧 8 中,介绍了一个使用命令行获取有关系统中总内存信息的例子。在这个技巧中,我将介绍几个其他方法,用于从需要进行验证、故障诊断或给予远程支持的系统收集重要信息。 首先,收集关于处理器的信息。通过以下命令很容易实现:
这个命令给出关于处理器的速度、数量和型号的信息。在许多情况下使用 我经常做的检查是确定系统中处理器的数量。因此,如果我买了一台带双核处理器的四核服务器,我可以运行以下命令:
然后我看到值应该是 8。如果不是,我会打电话给供应商,让他们给我派送另一台处理器。 我需要的另一条信息是磁盘信息。可以使用 列表最后是查看系统固件的方式 —— 一个获取 BIOS 级别和 NIC 上的固件信息的方法。 要检查 BIOS 版本,可以运行
这比重启机器并查看 POST 输出有效得多。 要检查以太网适配器的驱动程序和固件版本,请运行
可以从精通命令行的人那里学习很多技巧。最好的学习方式是:
我希望至少有一个技巧能帮助您学习到您不知道的知识。像这样的基本技巧可以使您更高效,并且能增长经验,但最重要的是,技巧可以让您有更多的空闲时间去做自己感兴趣的事情,比如玩电子游戏。最好的管理员比较悠闲,因为他们不喜欢工作。他们能找到完成任务的最快方法,并且能快速完成任务,从而保持休闲的生活。 学习
获得产品和技术
讨论
|