系统管理员须知

掌握这些基本技能,开启您的系统管理员职业生涯。
176 位读者喜欢这篇文章。
Avoiding data disasters with Sanoid

Opensource.com

过去的系统管理员整天忙于管理用户和服务器,并在早晚之间花费大量时间铺设数百米的电缆。今天仍然如此,而且还增加了云计算、容器和虚拟机的复杂性。

从外部来看,很难准确指出系统管理员到底是做什么的,因为他们在很多方面都扮演着至少很小的角色。没有人一开始就掌握工作所需的一切知识,但每个人都需要坚实的基础。如果您正考虑踏上系统管理之路,以下是您在个人或正式培训中应该重点关注的内容。

Bash

当您学习 Bash shell 时,您不仅仅是在学习 Bash shell。您学习的是 Linux 系统、BSD、MacOS 甚至 Windows(在适当条件下)的通用接口。您学习语法的 важность,以便您可以快速适应 Cisco 路由器的命令行或 Microsoft 的 PowerShell 等系统,最终,您甚至可以学习更强大的语言,如 Python 或 Go。并且您也开始以程序化的方式思考,以便您可以分析复杂的问题并将其分解为各个组件,这至关重要,因为就是系统(如互联网、组织内部网、Web 服务器或备份解决方案)的设计方式。

不止这些,还有更多。

了解 Bash shell 变得尤为重要,因为最近 DevOps 和容器的趋势。您作为系统管理员的职业生涯可能会引导您进入一个将基础设施视为代码的世界,这通常意味着您必须了解脚本编写的基础知识、基于 YAML 的配置结构,以及如何与交互 容器(在沙箱文件内运行的微型 Linux 系统)。 掌握 Bash 是高效管理最令人兴奋的开源技术的敲门砖,所以快去重新学习 Bourne shell吧。

资源

有很多方法可以练习 Bash shell。

尝试便携式 Linux 发行版。您无需安装 Linux 即可使用 Linux,所以找一个备用 U 盘,花些晚上或周末的时间来熟悉基于文本的界面。

在 opensource.com 上以及在 Enable SysAdmin 上,有几篇关于 Bash 的优秀文章

告诉别人练习 Bash 的问题在于,要练习,您必须有事可做。在您知道如何使用 Bash 之前,您可能无法想到任何事情可做。如果那是您的情况,请访问 Over The Wire 并玩Bandit。这是一个面向绝对初学者的游戏,包含 34 个级别的互动式基础黑客技术,让您熟悉 Linux shell。

Web 服务器设置

一旦您熟悉了 Bash,您应该尝试设置 Web 服务器。并非所有系统管理员都会设置 Web 服务器,甚至维护 Web 服务器,但是您在安装和启动 HTTP 守护程序、配置 Apache 或 Nginx、设置正确的权限以及配置防火墙时获得的技能,正是您日常所需的技能。稍加努力后,您可能会开始注意到您劳动中的某些模式。有些概念您可能在尝试管理生产就绪的软件和硬件之前认为是理所当然的,并且作为一名刚起步的管理员,您不再受到这些概念的保护。起初可能会令人沮丧,因为每个人都喜欢擅长他们所做的每件事,但这实际上是一件好事。让自己不擅长新技能。这就是您学习的方式。

此外,您在最初的步骤中挣扎得越多,当您最终看到令人欢欣鼓舞的“it works!”默认 index.html 时,就越甜蜜。

资源

David Both 写了一篇关于 Apache Web 服务器配置的优秀文章。为了获得额外奖励,请逐步阅读他的后续文章,了解如何在一台机器上托管多个站点

DHCP

动态主机配置协议 (DHCP) 是将 IP 地址分配给网络设备的系统。在家里,您的 ISP(互联网服务提供商)支持的调制解调器或路由器可能内置了 DHCP 服务器,因此它可能不在您的职权范围之内。如果您曾经登录过您的家用路由器来调整 IP 地址范围或为您的某些网络设备设置静态地址,那么您至少对这个概念有点熟悉。您可能理解网络上的设备被分配了相当于电话号码的 IP 地址,并且您可能意识到计算机通过广播寻址到特定 IP 地址的消息来相互通信。消息头被路径上的路由器读取,每个路由器都努力将消息定向到路径上最合乎逻辑的下一个路由器,朝着其最终目标前进。

即使您理解这些概念,对 DHCP 的基本熟悉程度的不可避免的升级是设置 DHCP 服务器。安装和配置您自己的 DHCP 服务器为您提供了在家用网络上引入 DHCP 冲突的机会(如果可以的话,尽量避免这种情况,因为它肯定会使您的网络瘫痪,直到问题解决为止)、控制地址的分配、创建子网以及监控连接和租约时间。

更重要的是,设置 DHCP 并尝试不同的配置有助于您理解互联网联网。您了解网络如何表示数据传输中的“分区”,以及您必须采取哪些步骤才能将信息从一个分区传递到另一个分区。这对于系统管理员来说至关重要,因为网络很容易成为工作中最重要的方面之一。

资源

在运行您自己的 DHCP 服务器之前,请确保您家用路由器中的 DHCP 服务器(如果有)处于非活动状态。一旦您启动并运行了它,请阅读 Archit Modi 的网络命令指南,获取有关如何探索您的网络的技巧。

网线

这听起来可能很普通,但熟悉网线的工作原理不仅能让您度过一个非常有趣的周末,还能让您对数据如何在电线上传输产生全新的理解。最好的学习方法是去您当地的爱好商店购买一个 Cat 5 剪线钳和压线钳以及一些 Cat 5 端子。然后回家,拿起一根备用以太网电缆,剪掉端子。花任何时间将电缆恢复正常工作。

一旦您解决了这个难题,请再次执行此操作,这次创建一个工作交叉电缆

您现在还应该开始痴迷于电缆管理。如果您天生不喜欢沿着地板踢脚线或桌子边缘整齐地布线,或者将电缆捆绑在一起以保持整洁,那么请将自己永久性地条件反射为害怕杂乱的电缆。您一开始不会理解为什么这是必要的,但是当您第一次走进服务器机房时,您会立刻明白。

Ansible

Ansible 是配置管理软件,它有点像是系统管理员和 DevOps 之间的桥梁。系统管理员使用 Ansible 来配置操作系统的全新安装,并在机器上维护特定状态。DevOps 使用 Ansible 来减少在工具上花费的时间和精力,以便将更多时间和精力用于开发。您应该将 Ansible 作为系统管理员培训的一部分来学习,并着眼于 DevOps 的实践,因为 DevOps 现在正在开创的大部分内容最终都将成为您未来系统管理工作流程的一部分。

Ansible 的优点是您可以立即开始使用它。它是跨平台的,并且可以向上和向下扩展。Ansible 对于单用户计算机来说可能有点过头,但是,Ansible 可能会改变您启动虚拟机的方式,或者它可以帮助您同步家庭或家庭实验室中所有计算机的状态。

资源

阅读 Jay LaCroix 的“如何使用 Ansible 管理您的工作站配置”,以获得关于开始随意使用 Ansible 的精髓介绍。

弄坏东西

计算机出现问题的原因可能是用户错误、软件错误、管理员(就是您!)错误以及许多其他因素。无法预测什么会发生故障或原因,因此您的个人系统管理员培训计划的一部分应该是戳弄您设置的系统,直到它们发生故障。您对自己的实验室基础设施越糟糕,您就越有可能发现薄弱环节。您修复这些薄弱环节的次数越多,您就越有信心解决问题的能力。

除了设置所有常用软件和硬件的严谨性之外,您作为系统管理员的主要工作是找到解决方案。有时您会遇到超出您的工作范围的问题,甚至您可能无法修复它,但这将取决于您找到一种解决方法。

您现在弄坏的东西越多,并努力修复它,您就越能为担任系统管理员做好准备。


您是正在工作的系统管理员吗?是否有您希望自己事先做好更好准备的任务?请在下面的评论中添加它们!

Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算机行业工作,通常是同时进行。

13 条评论

不错的入门清单……我可能会建议将 Vim 编辑器添加到列表中 :)

在所有技巧中,我真的很喜欢“弄坏东西”,因为这种经验方法会将您带到对问题解决技能至关重要的基本知识的信心状态。

我非常同意 Marco 和 Kim 的观点;我还想将 LVM 添加到列表中,可能还有 DNS 和虚拟化的概念,至少。

这些都是很棒的补充。您可以想象,这篇文章本来可以写得更长,所以很难选择重点关注什么。

回复 作者 Dave Harding (未验证)

我也同意……除了 LVM 之外,添加如何识别新添加的驱动器(使用热插拔、光纤通道或虚拟附加)对于在磁盘空间不足时保持系统不中断运行至关重要。

回复 作者 Dave Harding (未验证)

我想添加“man pages”(手册页)。参考给定命令的手册页真的很有益。

别告诉我的客户,但我知道的一些重要的事情,是我通过在他们的电脑和服务器上进行实验学到的(有时我会修复它,有时我会让它变得更糟);-)

非正式地说……我*可能* 非常认同这条评论。

回复 作者 Axarlinux (未验证)

只是在这里回复 Ansible 部分
>> Ansible 对于单用户计算机来说可能有点过头

我强烈建议系统管理员不要因为 1 台机器的工作量太大而跳过学习某些东西。这种行为使我们陷入许多低影响的手动任务中,我们需要记住一遍又一遍地执行这些任务。

我鼓励人们开始为他们的 1 或 2 台机器学习 Ansible,并使用这些机器来练习您的技能。Ansible 非常简单的 playbook 语法会自动为您创建关于您所做事情的优秀文档,并最终节省大量时间,否则这些时间将花费在琐碎而平凡的任务上……更不用说您为 1 台机器开发的任何任务通常都可以轻松地在其他机器上重复使用。

我喜欢它!并后悔我花了所有时间推迟学习它,因为手头的问题“太简单了”。

> 我强烈建议系统管理员不要因为工作量而跳过学习某些东西
> 对于 1 台机器来说太高。这种行为使我们陷入许多
> 低影响的手动任务,我们需要记住一遍又一遍地执行这些任务。

多么棒的观点。谢谢!

回复 作者 JamesF

© . All rights reserved.