RHCSA 第六天学习笔记
RHCSA 第六天学习笔记内容简介逻辑卷LVMPV、VG、LV、PEVDO 虚拟数据优化器容器podman 镜像管理、容器运行、网络、systemd 自启。本人个人博客地址Egg-blog一、磁盘管理前置准备先做两个分区大小自定义。添加两个新的分区不要做格式化也不要做挂载——留给后面逻辑卷实验使用。二、逻辑卷LVM逻辑卷的 2 个特点整合多个分区/磁盘可以将多个分区或磁盘整合成一个更大的逻辑磁盘然后从逻辑磁盘上划分出分区逻辑磁盘的大小 整合的物理磁盘大小之和。在线扩容当分区的存储空间不够时不需要移动数据可以直接添加硬盘或分区在原有分区的基础上直接扩容。LVM 核心概念流程PV分区或磁盘→ VG由 PV 整合含 PE→ LV由 VG 转化→ 格式化 → 挂载组件说明PV物理卷由分区或磁盘转化而来分区必须先转化成物理卷才能整合成更大的逻辑磁盘VG卷组由物理卷整合而成VG 大小约等于整合的物理卷大小之和误差大致在一个 PE 内PE物理块卷组上的最小存储单位默认 4MiB。VG 大小 单个 PE 大小 × PE 的数量LV逻辑卷从卷组上划分出来的类似前面讲的分区。有了逻辑卷之后就可以对它格式化、挂载。LV 大小由 VG 分配的 PE 数量决定实操1将未格式化的分区转化成物理卷PVpvcreate 分区路径1 分区路径2查看物理卷信息pvs pvscan pvdisplay2将 PV 整合成卷组VGvgcreate 卷组名自定义 物理卷路径1 物理卷路径2指定 PE 大小通过-s选项vgcreate-sPE大小 卷组名 物理卷路径1 物理卷路径2注意无需加单位默认 MiBPE 的大小必须是2 的倍数如果 VG 已创建好想重新修改 PE 大小只能使用vgremove 卷组名数据会删除后重新创建并指定 PE 大小查看卷组信息vgs vgscan vgdisplay3从卷组上划分逻辑卷LV两种指定 LV 大小的方式# 方式一直接指定逻辑卷的大小大写的 -Llvcreate-L逻辑卷的大小-n逻辑卷名字 卷组名# 方式二通过 PE 的数量来决定逻辑卷大小小写的 -llvcreate-lPE的数量-n逻辑卷名字 卷组名查看逻辑卷的信息lvs lvscan lvdisplay逻辑卷路径的两种写法# 第一种写法 /dev/卷组名/逻辑卷名 # 例/dev/vg123/lv123 # 第二种写法 /dev/mapper/卷组名-逻辑卷名 # 例/dev/mapper/vg123-lv123移除逻辑卷lvremove 逻辑卷的路径# 如 /dev/vg31/lv31lvscan或lvdisplay都可以显示逻辑卷的路径。4格式化与挂载格式化步骤和之前分区步骤一样# 两种方式mkfs.文件系统类型 逻辑卷路径mkfs-t文件系统类型 逻辑卷路径挂载创建挂载点/mnt/lv1然后将逻辑卷lv10永久挂载到/mnt/lv1上文件系统为 xfs 类型没有则自行创建。格式化挂载后——不要删除后续实验还要继续使用。5综合练习创建两个分区设置卷组名为vgredhatPE 大小为 16MiB逻辑卷大小为 56 个扩展块逻辑卷名为lvredhat然后进行格式化xfs并挂载到/mnt/redhat。# 参考流程pvcreate /dev/nvme0n2p1 /dev/nvme0n2p2 vgcreate-s16vgredhat /dev/nvme0n2p1 /dev/nvme0n2p2 lvcreate-l56-nlvredhat vgredhat mkfs.xfs /dev/vgredhat/lvredhatmkdir-p/mnt/redhatmount/dev/vgredhat/lvredhat /mnt/redhat逻辑卷扩容因为逻辑卷是从卷组上划分出来的所以在给逻辑卷扩容时要首先考虑卷组空间够不够。1给卷组扩容步骤创建新的物理卷 → 添加到卷组内# 1. 创建分区并把分区转化成物理卷pvcreate 分区路径# 2. 给卷组扩容vgextend 卷组名 物理卷路径12给逻辑卷存储空间扩容# lvextend指定扩容后的总大小lvextend-L扩容后逻辑卷的大小 要扩容的逻辑卷路径# lvresize在原来的基础上加指定大小lvresize-L100M 逻辑卷路径写法含义-L 100M在原来的基础上加 100M-L 1G直接扩容到 1G3给文件系统进行扩容文件系统类型扩容命令ext 系列resize2fs 逻辑卷的路径xfs 系列xfs_growfs 逻辑卷的路径重点在扩容逻辑卷存储空间时同时扩容文件系统使用-r选项可以一步完成逻辑卷和文件系统的扩容# 在原来的基础上加 10Glvextend-r-L10G 要扩容的逻辑卷路径# 直接扩容到 10Glvextend-r-L10G 要扩容的逻辑卷路径-r给逻辑卷扩容的同时也给文件系统扩容。练习将lvredhat逻辑卷格式化为 ext4永久挂载到/mnt/lv2自行创建挂载点然后对lvredhat进行扩容扩容至 5G。mkfs.ext4 /dev/vgredhat/lvredhatmkdir-p/mnt/lv2# 编辑 /etc/fstab 实现永久挂载lvextend-r-L5G /dev/vgredhat/lvredhat三、VDO虚拟数据优化器—了解内容VDOVirtual Data Optimizer是一种提供内嵌块级别的重复数据删除、压缩等功能的技术非常适合作为一个可能存在大量重复数据的使用场景例如虚拟机磁盘、用户上传的数据等。LVM VDO 的组成LVM VDO通过两个逻辑卷构成组件说明VDO POOL LV用于 LV 存储、重复数据删除和压缩的后端物理设备。设置 VDO 卷的物理大小即可保存到磁盘中的数据量实际对应消耗的卷组空间。每个 VDO POOL LV 只能有一个 VDO LVVDO LVVDO POOL LV 上的虚拟置备设备。设定 VDO 卷的置备和逻辑大小即应用在重复数据删除和压缩发生前可写入卷的数据量操作命令# 安装 vdo 相关软件dnfinstallvdo kmod-kvdo# 流程未格式化的分区 → 物理卷 → 卷组 → VDO 卷 → 格式化 → 挂载# 创建 VDO 卷lvcreate--typevdo--namevdo卷名称--size5G 卷组名称# 格式化mkfs.格式化类型 vdo路径mkfs-t格式化类型 vdo路径# 挂载同普通逻辑卷三种磁盘管理方式对比方式流程磁盘管理新加磁盘 → 分区 → 格式化文件系统→ 挂载提供入口逻辑卷未格式化分区 → PV → VG → LV → 格式化 → 挂载VDO 卷未格式化分区 → PV → VG → VDO 卷 → 格式化 → 挂载四、容器podman兼容 docker容器简介容器是一个虚拟化技术可以将软件运行所需的环境一起打包运行从而减少运维由于环境不兼容等带来的麻烦。容器和传统虚拟化的区别容器是针对内核级别的虚拟化传统虚拟化是针对操作系统级别的虚拟化所以容器的响应速度更快容器所处的系统环境是专门定制的所以容器可以更加小巧注意不要把容器想的太复杂——把容器类比成一个软件本节主要讲的就是如何下载软件、安装软件、运行软件、软件的开机自启。核心流程镜像仓库→ 拉取镜像 → 创建容器 → 运行实操准备工作请确保相关的一些文件传输到 RHEL 环境中存放在redhat用户的~/images目录下。1. 搭建容器仓库1安装容器工具首先需要确保系统环境中安装了podman程序。可以直接安装podman软件也可以安装container-tools软件包来提供完整的容器管理相关的所有工具。注意需要确保redhat用户是正常通过 SSH 登录的整个操作过程中不允许出现su -切换。2导入容器镜像可以使用podman load命令导入别人准备好的容器镜像文件。3登录镜像仓库对容器镜像注册站点进行特定身份的登录使用红帽订阅账号登录红帽官方的镜像仓库。4通过网络下载容器镜像podmanpull registry.redhat.io/ubi9/ubi:9.0.0-1703容器镜像命名规则每个容器镜像有着标准的命名规则容器注册站点/站点用户/容器镜像名:标签部分说明是否必须容器注册站点容器镜像所在的注册站点域名可省略站点用户容器镜像属于注册站点上的哪一个用户可省略容器镜像名具体描述容器镜像通常和镜像作用有关必须标签描述容器镜像版本可通过skopeo inspect的RepoTags查看默认为latest可省略红帽推荐任何时候都使用完整的容器镜像名称确保每次操作指定的容器镜像唯一。构建自定义容器镜像可以通过Containerfile或Dockerfile文件使用podman build命令构建一个自定义的容器镜像。[redhatworkstation ~]$mkdirmyimage# 准备专门的一个目录[redhatworkstation ~]$cdmyimage/# 切换工作目录[redhatworkstation myimage]$vimContainerfile# 创建 Containerfile也可以是 Dockerfile基于红帽官方 UBI9 基础镜像制作一个预装 vim 编辑器、启动后永久后台运行的容器镜像[redhatworkstation myimage]$ cat Containerfile FROM registry.redhat.io/ubi9/ubi:9.0.0-1703 RUN dnf install -y vim CMD [/bin/bash, -c, sleep infinity]各行含义行说明FROM指定构建的基础镜像红帽官方 UBI9 标准版固定版本 9.0.0-1703RUN构建时执行的操作dnf install -y vimdnf是 RHEL9/UBI9 的包管理器替代 yum-y自动确认安装CMD容器启动后执行的默认命令启动 bash 并执行sleep infinity永久休眠让容器持续运行sleep infinity会启动一个「永久休眠的进程」作为 PID1不占用 CPU 资源、不输出日志、不会异常退出。大多数容器镜像都可以依照类似文件来创建通常由开发人员编写。构建镜像[redhatworkstation myimage]$podmanbuild-tmyimage.# 在当前目录下搜索 Containerfile 或 Dockerfile读取内容构建镜像并命名为 myimage查看已有的容器镜像podmanimagespodmanimagerm镜像名# 删除镜像2. 运行容器有了容器镜像之后就可以使用podman run命令来基于一个容器镜像启动一个容器。podman run常用参数参数说明-d让容器在后台运行--name给容器指定一个名称-p将容器的某个端口和宿主机上的某个端口建立连接通过宿主机端口访问容器服务。格式-p 本地端口:容器端口-v将宿主机上的某个目录挂载到容器内的某个目录让容器和宿主机共享文件。格式-v 本地路径:容器内路径:zz保证 SELinux 上下文一致-e向容器内传递环境变量通常和容器启动脚本或方式有直接关联-p、-v、-e三个选项可以重复调用多次。示例podmanrun--nameweb-d-p8888:80 httpd# 通过本地 IP:8888 即可访问容器 IP:80 的内容# 使用 httpd 镜像创建容器 web01通过访问主机的 8080 端口访问容器内的 8080 端口挂载目录-v详解# 容器内的存储路径只是作为一个入口真正的数据保存在本地主机的存储路径上# z 的作用保证 SELinux 上下文一致[redhatlocalhost ~]$mkdir-pwww[redhatlocalhost ~]$echohello./www/index.html[redhatlocalhost ~]$podmanrun-d--nameweb03-p8081:8080\-v/home/redhat/www/:/var/www/html/:z\registry.redhat.io/ubi9/httpd-24:1-2623. 容器管理命令查看容器podmanps-a# 查看所有的容器在容器内执行命令# 执行简单命令非交互式操作的命令podmanexecweb01ls-l/root# 执行复杂命令包含管道符、重定向等使用 sh -c 或 bash -c 封装podmanexecpycontainer1sh-cls -l /root此命令模式只支持非交互式的命令vim等不可使用。容器的启动、停止、重启、删除podmanstart 容器名称# 启动容器可使用容器名称或 IDpodmanstop 容器名称# 停止容器podmanrestart 容器名称# 重启容器podmanrm容器名称# 删除容器注意如果没有在容器运行时添加-v选项删除容器时容器内的数据将全部丢失容器创建只有一次机会若想修改podman run中定义的内容需要先删除错误创建的容器再重新创建4. 容器网络创建容器网络podmannetwork create--gateway10.99.0.1--subnet10.99.0.0/16 test_net# 创建一个网关为 10.99.0.1子网为 10.99.0.0/16 的容器网络查看网络详细信息podmannetwork inspect test_net指定容器运行在某个网络中在同一个容器网络中的容器相互之间可以直接使用容器名作为互相访问的地址。podmanrun-d--nametest1--networktest_net localhost/myimage:latestpodmanrun-d--nametest2--networktest_net localhost/myimage:latest# 给容器 test1 和 test2 安装 ping 命令所需的基础软件包podmanexectest1pingtest2podmanexectest2pingtest15. 基于 systemd 的自启动容器对于 podman 创建的容器若想实现开机自启需要通过 systemd 进行管理主要针对 rootless 级别的容器——容器不推荐使用 root 用户去执行存在严重的安全问题。1允许用户进程驻留在系统中[redhatlocalhost ~]$ loginctl enable-linger2创建容器服务所需目录记住对应路径[redhatlocalhost ~]$mkdir-p~/.config/systemd/user[redhatlocalhost ~]$cd~/.config/systemd/user[redhatlocalhost user]$pwd/home/redhat/.config/systemd/user3将容器注册成用户级别的服务[redhatlocalhost user]$podmangenerate systemd--nameweb01--files/home/redhat/.config/systemd/user/container-web01.service4刷新用户级别的 systemd 单元文件[redhatlocalhost user]$ systemctl--userdaemon-reload5停止基于 podman 直接对容器的启动改用 systemd 接管[redhatlocalhost user]$podmanstop web01[redhatlocalhost user]$ systemctl--userstart container-web01.service[redhatlocalhost user]$ systemctl--userenablecontainer-web01.service

相关新闻

快速了解C语言基础(10)(二维函数)

快速了解C语言基础(10)(二维函数)

8.函数和一维字符型数组传参:char 数组名[100];定义:返回值 函数名 (char 数组名[]){函数体;}调用:函数名(数组名);调用:函数名(数组名);void print_str(char str[]){}print_str(str)&#xff1…

2026/9/21 3:37:40 阅读更多 →
Unity动画系统全流程解析:从状态机到性能优化

Unity动画系统全流程解析:从状态机到性能优化

1. 项目概述:从静态到动态的魔法在Unity的世界里,让一个静止的物体“活”起来,是每个开发者都会经历的第一步,也是最富成就感的一步。无论是让一个角色挥剑、一个门缓缓打开,还是一个UI按钮优雅地弹出,动画…

2026/9/21 13:28:10 阅读更多 →
MMC电压源换流器控制技术解析与应用

MMC电压源换流器控制技术解析与应用

1. MMC电压源换流器控制器的核心价值在电力电子领域,模块化多电平换流器(Modular Multilevel Converter, MMC)已经成为中高压直流输电系统的首选拓扑结构。与传统两电平或三电平换流器相比,MMC具有输出电压谐波含量低、开关损耗小…

2026/9/11 18:30:49 阅读更多 →

最新新闻

Presto Exchange Materialization 实战指南:以物化 Shuffle 突破 MPP 内存瓶颈

Presto Exchange Materialization 实战指南:以物化 Shuffle 突破 MPP 内存瓶颈

大数据数据库后端 【免费下载链接】presto The official home of the Presto distributed SQL query engine for big data 项目地址: https://gitcode.com/gh_mirrors/pre/presto 点击查看 免费下载 Exchange Materialization 是 Presto 为内存密集型查询提供的一种…

2026/9/21 16:39:36 阅读更多 →
MCP Python SDK 服务端订阅机制全解析:从 `subscriptions/listen` 到跨进程扩展

MCP Python SDK 服务端订阅机制全解析:从 `subscriptions/listen` 到跨进程扩展

人工智能MCP 服务MCP Clients 【免费下载链接】python-sdk The official Python SDK for Model Context Protocol servers and clients 项目地址: https://gitcode.com/gh_mirrors/pythonsd/python-sdk 点击查看 免费下载 本篇文章以 Model Context Protocol 官方 …

2026/9/21 16:39:36 阅读更多 →
Cluster Scorecard: [Seed Keyword]

Cluster Scorecard: [Seed Keyword]

【免费下载链接】claude-seo Universal SEO skill for Claude Code. 25 sub-skills 18 sub-agents covering technical SEO, E-E-A-T, schema, GEO/AEO, backlinks, local SEO, maps intelligence, semantic clustering, e-commerce SEO, international SEO, Google APIs, and…

2026/9/21 16:39:36 阅读更多 →
Diem Swiss Knife 实战指南:BCS 序列化交易生成、签名与验证命令行工具

Diem Swiss Knife 实战指南:BCS 序列化交易生成、签名与验证命令行工具

Diem Swiss Knife 实战指南:BCS 序列化交易生成、签名与验证命令行工具 【免费下载链接】diem Diem’s mission is to build a trusted and innovative financial network that empowers people and businesses around the world. 项目地址: https://gitcode.com/…

2026/9/21 16:39:36 阅读更多 →
easy-vibe 跨平台开发技术全景:React Native / Flutter / Electron / Tauri 架构流派与选型实战指南

easy-vibe 跨平台开发技术全景:React Native / Flutter / Electron / Tauri 架构流派与选型实战指南

教程文档 【免费下载链接】easy-vibe 从 0 到 1 学会 vibe coding,项目制学习 项目地址: https://gitcode.com/datawhalechina/easy-vibe 点击查看 免费下载 "Write once, run anywhere"(一次编写,处处运行&#xff09…

2026/9/21 16:39:36 阅读更多 →
VitePress 自定义主题完全指南:从零构建、分发与消费自己的主题

VitePress 自定义主题完全指南:从零构建、分发与消费自己的主题

前端文档 【免费下载链接】vitepress Vite & Vue powered static site generator. 项目地址: https://gitcode.com/gh_mirrors/vi/vitepress 点击查看 免费下载 VitePress 默认主题开箱即用,但当你需要完全掌控站点的外观与交互时,自定义…

2026/9/21 16:38:36 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →