对于新手系统管理员:如何在混乱中创建秩序

对于新手系统管理员:如何在混乱中创建秩序

我是一名 FirstVDS 系统管理员,这是我关于帮助新手同事的短期课程的第一个介绍性讲座的文本。 最近开始从事系统管理的专家面临着许多同样的问题。 为了提供解决方案,我着手撰写这一系列讲座。 其中的一些内容是特定于托管技术支持的,但总的来说,它们可能有用,即使不是对每个人来说,也是对很多人来说。 因此,我改编了讲座文本以在此处分享。

你的职位叫什么并不重要——重要的是你实际上参与了管理工作。 因此,让我们从系统管理员应该做什么开始。 它的主要任务是整理、维持秩序并为未来秩序的增加做好准备。 没有系统管理员,服务器就会变得一团糟。 日志没有写入,或者写入了错误的内容,资源没有得到最佳分配,磁盘上充满了各种垃圾,系统开始慢慢地因如此混乱而死亡。 冷静! 您身边的系统管理员开始解决问题并消除混乱!

系统管理的支柱

然而,在开始解决问题之前,有必要熟悉管理的四个主要支柱:

  1. 文档
  2. 模板化
  3. 优化
  4. 自动化

这是基础知识。 如果您不根据这些原则构建工作流程,它将是低效的、低效的,并且通常与真正的管理没有什么相似之处。 让我们分别看一下每一项。

Документация

Документация 并不意味着阅读文档(尽管你离不开它),而是维护它。

如何保存文档:

  • 您是否遇到过以前从未见过的新问题? 写出主要症状、诊断方法及排除原则。
  • 您是否针对常见问题提出了新的、优雅的解决方案? 把它写下来,这样一个月后你就不用重新发明它了。
  • 他们是否帮助您解决了您不明白的问题? 写下要点和概念,自己画一个图表。

主要思想是:在掌握和应用新事物时,你不应该完全相信自己的记忆。

您将采用什么格式来执行此操作取决于您:它可以是带有注释的系统、个人博客、文本文件、物理记事本。 最主要的是您的记录满足以下要求:

  1. 别太长。 突出主要思想、方法和工具。 如果理解某个问题需要深入了解 Linux 中内存分配的低级机制,请不要重写您从中学到的文章 - 请提供指向该文章的链接。
  2. 您应该清楚这些条目。 如果线 race cond.lockup 不允许您立即理解您用此行描述的内容 - 请解释。 好的文档不需要半个小时就能理解。
  3. 搜索是一个非常好的功能。 如果您写博客文章,请添加标签; 如果在实体笔记本中,请贴上带有说明的小便利贴。 如果您在文档中寻找答案所花费的时间与从头开始解决问题所花费的时间一样多,那么文档就没有什么意义了。

对于新手系统管理员:如何在混乱中创建秩序

这就是文档的样子:从记事本中的原始注释(上图),到带有标签、搜索和所有可能的便利功能的成熟的多用户知识库(下图)。

对于新手系统管理员:如何在混乱中创建秩序

您不仅不必两次寻找相同的答案,而且记录将对学习新主题有很大帮助(注意!),将提高您的蜘蛛意识(一眼就能诊断出复杂问题的能力),并将为您的行动添加组织。 如果您的同事可以使用该文档,那么他们就可以在您不在场时弄清楚您在那里堆积了什么以及如何堆积。

模板化

模板化 是模板的创建和使用。 为了解决最典型的问题,值得创建一个特定的操作模板。 应使用标准化的步骤序列来诊断大多数问题。 当您修复/安装/优化某些东西时,应该使用标准化检查表检查该东西的性能。

模板化是组织工作流程的最佳方式。 通过使用标准程序来解决最常见的问题,您会得到很多很酷的东西。 例如,使用检查表将允许您诊断对您的工作重要的所有功能,并放弃对不重要功能的诊断。 标准化的程序将最大限度地减少不必要的投掷并减少出错的可能性。

第一个重要的一点是程序和检查表也需要记录下来。 如果你仅仅依靠记忆,你可能会错过一些非常重要的检查或操作并毁掉一切。 第二个要点是,如果情况需要,所有模板实践都可以而且应该进行修改。 不存在理想且绝对通用的模板。 如果存在问题,但模板检查没有发现问题,这并不意味着没有问题。 然而,在开始测试一些不太可能的假设问题之前,首先进行快速模板测试总是值得的。

优化

优化 不言而喻。 工作流程需要在时间和劳动力成本方面尽可能优化。 有无数的选择:学习键盘快捷键、缩写、正则表达式、可用工具。 寻找这些工具的更实际用途。 如果您每天调用某个命令 100 次,请将其分配给键盘快捷键。 如果您需要定期连接到相同的服务器,请用一个单词写一个别名来将您连接到那里:

对于新手系统管理员:如何在混乱中创建秩序

熟悉可用的工具的不同选项 - 也许有更方便的终端客户端、DE、剪贴板管理器、浏览器、电子邮件客户端、操作系统。 了解您的同事和朋友使用哪些工具 - 也许他们选择它们是有原因的。 一旦你拥有了这些工具,就学习如何使用它们:学习按键、缩写、提示和技巧。

充分利用标准工具 - coreutils、vim、正则表达式、bash。 对于最后三个,有大量精彩的手册和文档。 在他们的帮助下,你可以很快从“我感觉自己像一只用笔记本电脑敲坚果的猴子”的状态转变为“我是一只用笔记本电脑给自己点坚果钳的猴子”。

自动化

自动化 将把困难的操作从我们疲惫的双手转移到不知疲倦的自动化手中。 如果某个标准过程是用五个相同类型的命令执行的,那么为什么不将所有这些命令包装在一个文件中并调用一个下载并执行该文件的命令呢?

自动化本身 80% 是编写和优化您自己的工具(另外 20% 是试图让它们正常工作)。 它可能只是一个高级的单行工具,也可能是一个带有 Web 界面和 API 的巨大万能工具。 这里的主要标准是,创建一个工具所花费的时间和精力不应超过该工具为您节省的时间和精力。 如果您花费五个小时编写一个您永远不再需要的脚本,而对于一个在没有脚本的情况下需要花费一两个小时才能解决的任务,这是一个非常糟糕的工作流程优化。 仅当任务数量、类型和时间允许时,您才可以花费五个小时来创建工具,但这种情况并不常见。

自动化并不一定意味着编写成熟的脚本。 例如,要从列表中创建一堆相同类型的对象,您所需要的只是一个聪明的单行代码,它将自动执行您手动执行的操作,在窗口之间切换,并进行大量复制粘贴。

实际上,如果您在这四个支柱上构建管理流程,您可以快速提高效率、生产力和资质。 然而,这份清单还需要补充一项,没有它,从事 IT 工作几乎是不可能的——自我教育。

系统管理员自我教育

想要在这方面有一点能力,就需要不断地学习和学习新的东西。 如果你没有丝毫的欲望去面对未知并找出答案,你很快就会陷入困境。 IT领域不断出现各种新的解决方案、技术和方法,如果你不至少从表面上研究它们,你就走上了失败之路。 信息技术的许多领域都建立在非常复杂和庞大的基础上。 比如网络运营。 网络和互联网无处不在,你每天都会遇到它们,但一旦你深入研究它们背后的技术,你就会发现一门庞大且非常复杂的学科,研究它绝非易事。

我没有将此项包含在列表中,因为它对于一般 IT 而言非常关键,而不仅仅是对于系统管理而言。 当然,你不可能立刻就学会所有的东西——你根本没有足够的时间。 因此,在自学时,您应该记住必要的抽象级别。

您不必立即了解每个实用程序的内部内存管理如何工作,以及它如何与 Linux 内存管理交互,但最好了解 RAM 的概念以及为什么需要它。 您不需要知道 TCP 和 UDP 标头在结构上有何不同,但了解协议工作方式的基本差异将是一个好主意。 您不需要了解光学中的信号衰减是什么,但最好了解为什么实际损耗总是跨节点继承。 知道某些元素如何在一定的抽象级别上工作并没有必要在根本没有抽象的情况下完全理解所有级别(你会发疯),这并没有什么问题。

然而,在你的领域,在抽象层面上思考“嗯,这是一个允许你显示网站的东西”并不是很好。 以下讲座将专门概述系统管理员在较低抽象级别工作时必须处理的主要领域。 我会尽力将复习的知识量限制在最低抽象水平。

系统管理的10条戒律

所以,我们已经了解了四个主要支柱和基础。 我们可以开始解决问题了吗? 还没有。 在此之前,建议您熟悉所谓的“最佳实践”和良好礼仪规则。 如果没有它们,您可能弊大于利。 那么,让我们开始吧:

  1. 我的一些同事认为首要规则是“不伤害”。 但我倾向于不同意。 当你试图不去伤害时,你就无能为力——太多的行为可能具有潜在的破坏性。 我认为最重要的规则是—— “进行备份”。 即使你造成了一些伤害,你也可以随时回滚,一切都不会那么糟糕。

    您应该始终在时间和地点允许的情况下进行备份。 您需要备份您将要更改的内容以及由于潜在的破坏性操作而可能丢失的内容。 建议检查备份的完整性以及所有必要数据的存在。 检查完所有内容后不应立即删除备份,除非需要释放磁盘空间。 如果该位置需要,请将其备份到您的个人服务器并在一周后将其删除。

  2. 第二个最重要的规则(我自己经常违反)是 “别隐藏”。 如果您做了备份,请写下备份位置,这样您的同事就不必寻找它。 如果您做了一些不明显或复杂的操作,请写下来:您将回家,问题可能会重复或出现在其他人身上,并且将使用关键字找到您的解决方案。 即使您做了自己熟悉的事情,您的同事也可能不会。
  3. 第三条规则无需解释: “永远不要做一些你不知道、想象或理解其后果的事情”。 如果你不知道命令的作用,不要从网上复制命令,先调用 man 并解析它们。 如果您无法理解现成的解决方案的作用,请不要使用它们。 将混淆代码的执行保持在绝对最低限度。 如果您没有时间弄清楚,那么您就做错了,您应该阅读下一点。
  4. “测试”。 新的脚本、工具、单行语句和命令应该在受控环境中进行测试,而不是在客户端计算机上进行测试,即使破坏性操作的可能性很小。 即使您备份了所有内容(并且确实做到了),停机也不是最酷的事情。 为此创建一个单独的服务器/虚拟/chroot 并在那里进行测试。 有什么东西坏了吗? 然后你就可以在“战斗”中启动它。

    对于新手系统管理员:如何在混乱中创建秩序

  5. “控制”。 尽量减少所有您无法控制的操作。 一个软件包依赖关系曲线可以拖垮一半的系统,为 yum remove 设置的 -y 标志使您有机会从头开始练习系统恢复技能。 如果该操作没有不受控制的替代方案,那么下一点就是现成的备份。
  6. “查看”。 检查您的操作的后果以及是否需要回滚到备份。 检查问题是否真的得到解决。 检查错误是否重现以及在什么条件下重现。 检查你的行动可以打破什么。 没有必要相信我们的工作,但永远不要去检查。
  7. “交流”。 如果您无法解决问题,请询问您的同事是否遇到过此问题。 如果您想应用有争议的决定,请了解同事的意见。 也许他们会提供更好的解决方案。 如果您对自己的行为没有信心,请与同事讨论。 即使这是您的专业领域,重新审视一下情况也可以澄清很多事情。 不要为自己的无知感到羞耻。 问一个愚蠢的问题,看起来像个傻瓜并得到答案,比不问问题,得不到答案,最终成为一个傻瓜要好。
  8. “不要无理拒绝帮助”。 这一点与上一点相反。 如果你被问到一个愚蠢的问题,请澄清并解释。 他们要求不可能的事情——解释这是不可能的以及为什么,提供替代方案。 如果你没有时间(你真的没有时间,不是欲望)——说你有一个紧急问题,很多工作,但你稍后会解决。 如果同事没有紧急任务,请主动联系他们并将问题委托给他们。
  9. “给予反馈”。 您的一位同事是否开始使用新技术或新脚本,您是否遇到了这一决定的负面后果? 报告一下。 也许这个问题可以通过三行代码或五分钟的改进技术来解决。 您在软件中遇到过错误吗? 报告错误。 如果它是可重现的或不需要重现的,那么它很可能会被修复。 表达您的愿望、建议和建设性批评,并提出相关问题供讨论。
  10. “寻求反馈”。 我们都是不完美的,就像我们的决定一样,检验决定正确性的最好方法就是提出来进行讨论。 如果您为客户优化了某些内容,请让他们监控工作;也许系统中的瓶颈不是您要寻找的地方。 您已经编写了一个帮助脚本 - 将其展示给您的同事,也许他们会找到改进它的方法。

如果你在工作中不断地应用这些做法,大多数问题将不再是问题:你不仅可以将自己的错误和弄虚作假的次数减少到最低限度,而且你还将有机会纠正错误(在备份形式以及会建议您备份的同事)。 此外 - 只有技术细节,正如我们所知,魔鬼就在其中。

您 50% 以上的时间必须使用的主要工具是 grep 和 vim。 还有什么可以更简单呢? 文本搜索和文本编辑。 然而,grep 和 vim 都是功能强大的多功能工具,可让您有效地搜索和编辑文本。 如果某些 Windows 记事本允许您简单地写入/删除一行,那么在 vim 中您几乎可以对文本执行任何操作。 如果你不相信我,从终端调用 vimtutor 命令并开始学习。 至于 grep,它的主要优势在于正则表达式。 是的,该工具本身允许您相当灵活地设置搜索条件和输出数据,但如果没有 RegExp,这就没多大意义。 而且您需要了解正则表达式! 至少在基本层面上是这样。 首先,我建议你看看这个 视频,它涵盖了正则表达式的基础知识及其与 grep 的结合使用。 哦,是的,当您将它们与 vim 结合使用时,您将获得使用文本执行操作的终极能力,而您必须用 18 个以上的图标来标记它们。

剩下的 50% 中,40% 来自 coreutils 工具包。 对于 coreutils,您可以查看以下列表: 维基百科,整个列表的手册都在网站上 GNU。 本套中未涵盖的内容在实用程序中 POSIX。 您不必记住所有按键,但至少大致了解基本工具的功能是有帮助的。 你不必拄着拐杖重新发明轮子。 不知何故,我需要在某些实用程序的输出中用空格替换换行符,而我生病的大脑诞生了这样的结构 sed ':a;N;$!ba;s/n/ /g',一个同事上来用扫帚把我从控制台赶走了,然后通过写解决了问题 tr 'n' ' '.

对于新手系统管理员:如何在混乱中创建秩序

我建议您记住每个工具的用途以及最常用命令的键;对于其他一切,都有人。 如果您有任何疑问,请随时致电 man。 并且一定要阅读该人本身 - 它包含有关您将发现的内容的重要信息。

了解这些工具,您将能够有效地解决您在实践中遇到的大部分问题。 在接下来的讲座中,我们将了解何时使用这些工具以及它们所适用的底层服务和应用程序的框架。

FirstVDS 系统管理员 Kirill Tsvetkov 与您同在。

来源: habr.com

添加评论