资讯动态

90DaysOfDevOps 第16天:Linux 系统、文件系统与存储管理实战指南

发布时间:2026/10/8 23:29:37 来源:尧图企业网站定制
文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载本篇是 90DaysOfDevOps 学习路径中 Linux 模块的第三课第 16 天聚焦三大运维核心主题使用apt包管理器更新与安装软件、读懂 Linux 文件系统的关键目录、以及从磁盘识别到格式化、挂载与持久化的存储管理全流程。读者完成本讲后将能够在 Ubuntu 服务器上熟练完成软件安装与第三方源接入准确解释根目录下各系统目录的用途并具备独立完成新磁盘接入与开机自动挂载配置的能力。本讲在学习路径中的定位在开始之前先回顾一下上下文我们已经在第 14 天使用 HashiCorp Vagrant 在 Virtual Box 中搭建了 Ubuntu 桌面虚拟机vagrant up启动、vagrant ssh进入终端并在第 15 天掌握了sudo、mkdir、cd、ls、cat、grep、chmod等终端日常命令。本讲正是把这两天的基础应用到系统维护这一真实运维场景中。本讲覆盖的三个领域恰恰是 DevOps 工程师日常接触 Linux 服务器时最高频的工作软件与系统更新—— 通过apt完成操作系统补丁与软件安装文件系统认知—— 理解 Linux 根目录/下各目录的职责这是排查问题、定位配置的基础存储管理—— 识别磁盘、查看空间、格式化、挂载并让挂载在重启后依然生效。使用 apt 管理 Ubuntu 系统与软件为什么是 aptWindows 与 macOS 用户对系统更新并不陌生但 Linux 桌面和服务器的更新流程完全不同它没有统一的设置中心而是通过包管理器完成。Ubuntu及 Debian 系发行版内置的包管理器是APTAdvanced Package Tool命令行前端为apt与apt-get。在本实验环境中VAGRANTFILE 副本 指定的 Ubuntu 20.04 虚拟机所有软件安装与更新都通过它完成。apt-get是传统的底层命令apt是较新的用户友好前端两者操作同一套软件源与软件包数据库本讲中的命令在apt与apt-get之间可以互换使用。第一步更新软件包索引sudo apt-get update在安装任何软件之前首先应确保本机缓存的软件包列表与中央仓库同步。在开发工作站上这是每次安装前的习惯动作sudo apt-get update该命令会连接/etc/apt/sources.list及/etc/apt/sources.list.d/中定义的软件源默认包括 archive.ubuntu.com 与 security.ubuntu.com 等 Ubuntu 官方仓库获取最新的软件包索引。下图展示了执行结果命中各源索引、下载包列表、最后以Reading package lists... Done结束。注意apt-get update只更新索引并不实际升级系统。若需要把已安装软件升级到新版本可进一步执行sudo apt-get upgrade或sudo apt upgrade。在开发环境中先update再install是最稳妥的组合。实战安装与使用 figlet更新完成之后我们安装一个名为figlet的小工具——它用于在终端生成 ASCII 艺术风格的大号文本横幅非常适合验证软件安装流程。在终端直接输入figlet会看到类似figlet: command not found的提示同时 apt 会贴心地给出建议Command figlet not found, but can be installed with: sudo apt install figlet之所以能给出建议是因为 Ubuntu 默认仓库中已经收录了名为figlet的软件包。直接执行安装sudo apt install figlet安装过程中 apt 会读取包列表、构建依赖树、解析依赖信息并完成安装本实验环境中安装的是 figlet 2.2.5-3。之后即可使用figlet 90DaysOfDevOps屏幕会输出由字符拼成的大号 90DaysOfDevOps 横幅——这正是该工具的核心用途。卸载软件sudo apt remove软件卸载同样通过 apt 完成sudo apt remove figlet卸载完成后再次运行figlet会得到-bash: /usr/bin/figlet: No such file or directory的报错说明可执行文件已从系统中移除。这就是完整的安装 → 使用 → 卸载闭环与 Windows 的添加/删除程序在概念上对应但完全通过命令行完成。接入第三方软件源以 HashiCorp 仓库为例开箱即用的 Ubuntu 默认仓库只是冰山一角。很多软件尤其是 DevOps 工具链不在默认仓库中需要先添加第三方软件源PPA / 第三方 apt 仓库。原文档以 Vagrant 为例尝试直接sudo apt install vagrant时会报错E: Unable to locate package vagrant因为默认源里没有该包。解决思路分三步——信任该源的 GPG 密钥 → 将源写入系统 → 重新安装。在示例环境中依次执行# 1. 导入 HashiCorp 仓库的 GPG 公钥使系统信任该源的软件包签名 curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - # 2. 将 HashiCorp 官方 apt 仓库加入源列表$(lsb_release -cs) 自动取当前 Ubuntu 版本代号 sudo apt-add-repository deb [archamd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main # 3. 再次同步源索引 sudo apt-get update之后重新执行sudo apt install vagrant即可成功安装 Vagrant本实验环境中安装的是 2.2.19 版本。实操提示apt-key在当前 Ubuntu 版本中已进入弃用周期更现代的做法是直接把公钥文件安装到/etc/apt/keyrings/目录再通过signed-by参数引用。但无论哪种方式核心流程不变信任密钥 → 声明源 → update → install。添加第三方源后任何来自该源的软件包都进入了你系统的信任边界务必只添加可信任的官方源。其他软件分发方式snapapt 并非 Ubuntu 上唯一的软件管理方案。Ubuntu 内置了snap这一独立的分发与沙箱机制许多桌面应用如浏览器、编辑器优先通过 snap 商店分发。其用法同样是简单的子命令结构snap install 名称、snap remove 名称、snap list查看已安装项。当你遇到默认源中没有、又不想添加第三方 apt 源的软件时可以先用snap find 名称检索 snap 商店。至此系统更新、软件安装/卸载、第三方源接入、snap 备选方案构成了完整的 Ubuntu 软件管理工具箱。Linux 文件系统解析根目录下的关键目录Linux 系统的本质是配置文件驱动的几乎一切系统行为都由配置文件控制想改变系统行为就要修改对应的配置。Windows 以C:盘为根而 Linux 一切从根目录/开始。Linux 遵循 Filesystem Hierarchy StandardFHS文件系统层次标准各发行版目录职责大体一致。在终端中cd /后执行ls可以看到如下顶层目录本讲逐一讲解其中最关键的 16 个目录截图中还可见snap、srv、sys、lostfound等它们同样属于标准结构但不影响理解核心职责目录职责说明/binbinary 的缩写存放系统运行所需的核心可执行文件与常用工具如ls、cat/boot存放系统启动所需的一切如何启动、从哪个磁盘启动、引导加载器文件/dev设备信息所在地磁盘驱动器的指针在此。sda通常指主操作系统磁盘sda1/sda2为其分区/etc最核心的目录存放系统绝大多数配置文件如稍后要用的fstab就在此/home各用户的个人目录。实验环境中的vagrant用户文件夹就在这里第 15 天用到的Documents、Desktop等目录也在其下/lib/bin中可执行文件所依赖的共享库二者配套存在/media可移动设备的挂载点如 U 盘、光驱/mnt临时挂载点本讲存储章节会在这里挂载新磁盘/opt可选软件包的安装位置。实验环境中可看到 Vagrant、VirtualBox 等第三方软件存放于此/proc虚拟文件系统提供内核与进程信息行为上与/dev类似如cat /proc/cpuinfo可查看 CPU 信息/rootroot 用户的 home 目录普通用户需借助sudo才能访问/run应用程序运行状态的占位目录存放运行时数据/sbin类似/bin但其中的工具面向需要提升为超级用户root权限才能执行的管理操作/tmp临时文件目录系统清理机制会定期处理/usr普通用户通过包管理器安装的软件其可执行文件通常位于/usr/bin/var应用安装后产生的日志与可变数据存放地是所有日志文件的归宿掌握这份目录地图的价值在于遇到问题时你知道去哪里找答案——配置在/etc、日志在/var/log、安装的软件在/usr或/opt、设备在/dev。这是 Linux 运维的底层地图。Linux 存储管理从识别磁盘到持久挂载无论是新装系统还是扩容服务器存储管理都是绕不开的环节。本节沿查看 → 格式化 → 挂载 → 持久化的完整链路展开。查看磁盘lsblk与dflsblkList Block Devices以树状结构列出系统的块设备。在本实验环境中sda是物理磁盘其下sda1、sda2、sda5是分区从上图还可以观察到两个进阶信息sda5归属 LVM 卷组拆分为vgvagrant-root挂载到根目录/与vgvagrant-swap_1交换分区两个逻辑卷——这正是 Vagrant 预置 Ubuntu 虚拟机时常见布局。了解这些细节可以帮助你在真实服务器上解读磁盘 → 分区 → 逻辑卷 → 挂载点的完整映射。dfDisk Free则给出分区的容量细节总量、已用、可用。默认以 1K 块为单位输出日常更推荐人性化选项df -h-hhuman-readable将容量显示为 G/M 等单位直接可读。df会列出所有已挂载的文件系统及其挂载点是排查磁盘写满问题的第一命令。格式化新磁盘sudo mkfs -t ext4 /dev/sdb当你为系统添加了一块新磁盘例如在虚拟机设置中新增虚拟硬盘对应设备名/dev/sdb它并不会立即可用——与 Windows 中磁盘管理里格式化新盘同理Linux 终端下用mkfs完成格式化sudo mkfs -t ext4 /dev/sdb-t ext4指定文件系统类型为 ext4Ubuntu 默认的主流文件系统。sdb指向新添加的磁盘如果一块盘包含多个分区则格式化到具体分区设备如/dev/sdb1。格式化会清空目标设备上的所有数据操作前务必确认设备名无误。挂载与卸载mount/umount格式化后的磁盘只是可用的文件系统还需要挂载到目录树上才能访问。前面文件系统章节提到的/mnt临时挂载点在此派上用场# 在 /mnt 下创建挂载点目录 sudo mkdir NewDisk # 将新磁盘挂载到该目录 sudo mount /dev/sdb newdisk实操提示原文档命令中创建目录名为NewDisk、挂载命令中目录名为newdisk实际使用时务必保证两者大小写完全一致否则会因目录不存在而报错。挂载点也可以是/mnt/data这类带路径的目录。当需要安全移除存储设备时不要直接拔线应先卸载sudo umount /dev/sdbumount会确保缓存中的数据落盘并解除设备占用避免数据损坏。开机自动挂载/etc/fstab与sudo mount -a上述挂载是临时的——重启后系统不会自动恢复挂载。如果这块磁盘服务于数据库或其他需要持久运行的场景这正是 DevOps 生产环境的常见诉求就必须把它写入/etc/fstabfile system table配置文件让系统在每次启动时自动挂载。fstab的每一行定义一条挂载规则标准格式包含六个字段设备或UUID 挂载点 文件系统类型 挂载选项 dump标志 fsck检查顺序例如为sdb增加开机自动挂载可在/etc/fstab中追加类似行/dev/sdb /mnt/newdisk ext4 defaults 0 0不写这条配置的后果很明确机器重启后磁盘数据仍在但不会自动挂载需要手动重走一遍格式化后的挂载流程。编辑完成之后用一条命令验证配置是否正确sudo mount -amount -a会按照fstab的内容尝试挂载所有条目如果没有任何报错输出说明配置有效此后该挂载将在每次重启后自动生效。若配置有误例如设备名或挂载点拼写错误命令会立即报错此时应回到编辑器修正。关于如何编辑/etc/fstab修改系统配置文件需要用到终端文本编辑器。本讲暂不展开第 17 天将专门对比nano与vim两种最常见的编辑器届时即可亲手编辑fstab完成持久化配置。小结本讲完成了 Linux 运维三块基础拼图软件管理sudo apt-get update同步索引、sudo apt install 包/sudo apt remove 包安装与卸载、为第三方软件如 HashiCorp Vagrant添加软件源与信任密钥并了解 snap 作为备选分发通道文件系统从根目录/出发掌握bin、etc、home、var等 16 个关键目录的职责建立配置在/etc、日志在/var、软件在/usr或/opt的排查地图存储管理用lsblk识别块设备与分区、df -h查看剩余空间、mkfs格式化新盘、mount/umount挂载与卸载最终通过/etc/fstab加sudo mount -a实现重启后自动挂载。接下来的第 17 天将进入文本编辑器nano vs vim专题为你补齐修改配置文件的最后一块能力。在整个 90 天学习路径中本讲的目录认知与存储操作将是后续学习网络配置、容器存储如 Kubernetes 卷、CI/CD 构建机器管理等内容的地基。赞分享文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载相关推荐90DaysOfDevOps 第 16 天Linux 系统管理、文件系统与存储实战指南90DaysOfDevOps 第 16 天Linux 系统管理、文件系统与存储实战指南 导读 本篇文章对应 90DaysOfDevOps 学习路线中 Linu文档/教程90DaysOfDevOps 第 16 天Linux 系统管理、文件系统与存储实战指南90DaysOfDevOps 第 16 天Linux 系统管理、文件系统与存储实战指南 本文是 90DaysOfDevOps 学习路线图中 Linux 模块的文档/教程90DaysOfDevOps 第16天Linux 系统、文件系统与存储管理实战指南90DaysOfDevOps 第16天Linux 系统、文件系统与存储管理实战指南 导读本文是 90DaysOfDevOps 系列 Linux 主题的第三课文档/教程上一篇终极指南如何使用dnd-kit构建全球化拖拽应用的完整方案下一篇Albumentations完全指南70图像增强技术助力计算机视觉任务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑