云原生高级课前置复习(2)

七、Linux下的软件管理

1、软件的类型

压缩包(绿色安装包、源码编译)

DEB(类DEBIN)

RPM(类RHEL)

2、RPM命令的用法

RPM 是 RedHat 系 Linux(如 CentOS、RHEL)的软件包管理命令,核心用于安装、查询、更新、卸载 .rpm 包。以下是常用用法:

1、安装包:

bash 复制代码
rpm -ivh 包名.rpm # -i(安装) -v(显示详情) -h(进度条)   

2、查询已安装包:

bash 复制代码
rpm -qa              # 列出所有已安装包
rpm -qi 包名         # 查看指定包的信息
rpm -ql 包名         # 查看指定包安装的文件列表

3、更新包:

bash 复制代码
rpm -Uvh 包名.rpm  # 升级包(若未安装则直接安装)

4、卸载包:

bash 复制代码
rpm -e 包名  # 卸载指定包(需先卸载依赖它的包)

5、校验包:

bash 复制代码
rpm -V 包名  # 检查包文件是否被修改

3、实验环境设定

1、先重新安装一个新的虚拟机--->配置最大内存100G,安装成服务器

2、

3、安装成功配置:

bash 复制代码
[root@localhost]# systemctl disable --now firewalld
[root@localhost]# systemctl mask firewalld    #关闭防火墙
[root@localhost]# vim /etc/sysconfig/selinux
    #修改SElinux=disabled
[root@localhost]# vim /boot/loader/enteries/e960a86937e38r64894-5.14.0-635757382r.x86-64.conf     
        #系统启动是加载的信息文件,自己电脑的可以用tab键补齐
        #在倒数第四行的最后quiet的后面加上 net.ifnames=0
[root@localhost]# reboot   #!!!!重启动
[root@localhost]# getenforce
[root@localhost]# cd /etc/NetworkManger/system-connections/
[root@localhost]# mv ens160.nmconnection  eth0.nmconnection
[root@localhost]# vim eth0.nmconnection 
            #将里面的两个ens160都换成eth0就可以了
[root@localhost]# nmcli connection reload
[root@localhost]# nmcli connection up eth0
[root@localhost]# ip addr show eth0

4、利用镜像搭建本地软件仓库

bash 复制代码
[root@localhost ~]# mkdir  /rhel9				#挂载光驱读取镜像内容
[root@localhost ~]# mount /dev/cdrom   /rhel9/	#手动挂载光驱
[root@localhost ~]# vim /etc/rc.d/rc.local		#开启自动运行mount动作实现自动挂载
mount /dev/cdrom   /rhel9/

	
[root@localhost ~]# chmod +x /etc/rc.d/rc.local


#设定软件仓库指向
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim rhel.repo
[AppStream]
name = AppStream
baseurl = file:///rhel9/AppStream
gpgcheck = 0

[BaseOS]
name = BaseOS
baseurl = file:///rhel9/BaseOS
gpgcheck = 0

#检测软件仓库是否可用
[root@localhost yum.repos.d]# dnf list httpd
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。

AppStream                                                             82 MB/s | 7.7 MB     00:00
BaseOS                                                               155 MB/s | 2.1 MB     00:00
可安装的软件包
httpd.x86_64                                  2.4.62-4.el9                                  AppStream

5、dnf软件管理命令

DNF 是 RPM 系 Linux(如 RHEL 8+、CentOS 8+)的软件包管理器,替代了传统的 YUM,核心功能包括:

  • 安装软件:dnf install 软件名
  • 卸载软件:dnf remove 软件名
  • 更新软件:dnf update
  • 搜索软件:dnf search 关键词
  • 查看软件信息:dnf info 软件名

6、网络软件仓库的使用

网络软件仓库是存储 RPM 包的远程服务器,系统通过配置文件(如/etc/yum.repos.d/下的.repo文件)关联仓库,核心操作包括:

  • 启用 / 禁用仓库:dnf config-manager --enable/disable 仓库名
  • 列出已配置仓库:dnf repolist
  • 清理仓库缓存:dnf clean all

#比如加载docker容器的网络repo源:

https://mirrors.aliyun.com/docker-ce/linux/rhel/9.6/x86_64/stable/

root@localhost \~\]# cd /etc/yum.repos.d/ \[root@localhost yum.repos.d\]# ls redhat.repo rhel.repo \[root@localhost yum.repos.d\]# vim docker.repo \[docker

name = docker

baseurl = https://mirrors.aliyun.com/docker-ce/linux/rhel/9.6/x86_64/stable/

gpgcheck = 0

#测试

root@localhost yum.repos.d\]# dnf search docker 正在更新 Subscription Management 软件仓库。 无法读取客户身份 本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。 docker 48 kB/s \| 42 kB 00:00 ===================================== 名称 和 概况 匹配:docker ===================================== docker-buildx-plugin.x86_64 : Docker Buildx plugin for the Docker CLI docker-ce-rootless-extras.x86_64 : Rootless support for Docker docker-compose-plugin.x86_64 : Docker Compose plugin for the Docker CLI docker-model-plugin.x86_64 : Docker Model Runner plugin for the Docker CLI pcp-pmda-docker.x86_64 : Performance Co-Pilot (PCP) metrics from the Docker daemon podman-docker.noarch : Emulate Docker CLI using podman ========================================= 名称 匹配:docker ========================================= docker-ce.x86_64 : The open-source application container engine docker-ce-cli.x86_64 : The open-source application container engine

bash 复制代码
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
redhat.repo  rhel.repo

[root@localhost yum.repos.d]# vim docker.repo

[docker]
name  = docker
baseurl = https://mirrors.aliyun.com/docker-ce/linux/rhel/9.6/x86_64/stable/
gpgcheck = 0


[root@localhost yum.repos.d]# dnf search  docker

7、epel源的使用

EPEL(Extra Packages for Enterprise Linux)是为 RHEL/CentOS 提供额外软件包的仓库,特点是包含官方仓库未提供的常用软件,使用步骤:

  • 安装 EPEL 源:dnf install epel-release
  • 启用后即可通过 DNF 安装 EPEL 中的软件(如dnf install nginx)

#epel源的地址:

https://mirrors.aliyun.com/epel-archive/9.6-2025-11-11/Everything/x86_64/

root@localhost \~\]# cd /etc/yum.repos.d/ \[root@localhost yum.repos.d\]# vim epel.repo \[epel

name = epel

baseurl = https://mirrors.aliyun.com/epel-archive/9.6-2025-11-11/Everything/x86_64/

gpgcheck = 0

#测试:

root@localhost \~\]# dnf search ansible 正在更新 Subscription Management 软件仓库。 无法读取客户身份 本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。 epel 13 MB/s \| 20 MB 00:01 上次元数据过期检查:0:00:11 前,执行于 2026年01月14日 星期三 15时46分05秒。 ==================================== 名称 和 概况 匹配:ansible ===================================== ansible.noarch : Curated set of Ansible collections included in addition to ansible-core

复制代码
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim epel.repo

[epel]
name = epel
baseurl = https://mirrors.aliyun.com/epel-archive/9.6-2025-11-11/Everything/x86_64/
gpgcheck = 0

[root@localhost ~]# dnf search  ansible

8、自建软件仓库的方法

通常基于本地 RPM 包搭建私有仓库,常用工具为createrepo,核心步骤:

  1. 收集 RPM 包到指定目录(如/mnt/local_repo);
  2. 初始化仓库元数据:createrepo /mnt/local_repo;
  3. 编写.repo配置文件,指向本地目录;
  4. 客户端通过配置文件使用该私有仓库。

#为了把网络软件仓库中的软件下载下来后分享给本地主机,或者直接把网上下载下来的rpm加入到软件仓库中

root@localhost \~\]# dnf install httpd -y #通过http共享自建软件仓库 \[root@localhost \~\]# systemctl enable --now httpd \[root@localhost \~\]# mkdir /var/www/html/software #建立共享目录 \[root@localhost \~\]# dnf install docker-ce --downloadonly --destdir /mnt/ \[root@localhost mnt\]# mv /mnt/\* /var/www/html/software/ #将下载下来的软件存放到共享目录 \[root@localhost software\]# dnf install createrepo -y #此软件用来扫描rpm软件包信息并记录生成 #软件包信息库 \[root@localhost \~\]# ls /var/www/html/software/ containerd.io-2.2.1-1.el9.x86_64.rpm docker-ce-cli-29.1.4-1.el9.x86_64.rpm docker-buildx-plugin-0.30.1-1.el9.x86_64.rpm docker-ce-rootless-extras-29.1.4-1.el9.x86_64.rpm docker-ce-29.1.4-1.el9.x86_64.rpm docker-compose-plugin-5.0.1-1.el9.x86_64.rpm \[root@localhost \~\]# createrepo -v /var/www/html/software/ #采集软件包信息 #注意在目录中不能有不是rpm类的文件 #测试: \[root@localhost dnf\]# cd /etc/yum.repos.d/ \[root@localhost yum.repos.d\]# ls docker.repo epel.repo redhat.repo rhel.repo \[root@localhost yum.repos.d\]# vim software.repo \[software

name = software

baseurl = http://172.25.254.129/software/

gpgcheck = 0

root@localhost yum.repos.d\]# dnf info docker-ce.x86_64 名称 : docker-ce 时期 : 3 版本 : 29.1.4 发布 : 1.el9 架构 : x86_64 大小 : 22 M 源 : docker-ce-29.1.4-1.el9.src.rpm 仓库 : software #软件仓库信息 概况 : The open-source application container engine URL : https://www.docker.com 协议 : Apache-2.0 描述 : Docker is a product for you to build, ship and run any application as a : lightweight container. : : Docker containers are both hardware-agnostic and platform-agnostic. This means : they can run anywhere, from your laptop to the largest cloud compute instance : and everything in between - and they don't require you to use a particular : language, framework or packaging system. That makes them great building blocks : for deploying and scaling web apps, databases, and backend services without : depending on a particular stack or provider.

复制代码
[root@localhost ~]# dnf install httpd -y	
[root@localhost ~]# systemctl enable --now httpd
[root@localhost ~]# mkdir  /var/www/html/software
[root@localhost ~]# dnf install docker-ce --downloadonly  --destdir /mnt/
[root@localhost mnt]# mv /mnt/* /var/www/html/software/	
[root@localhost software]# dnf install createrepo -y
[root@localhost ~]# ls /var/www/html/software/
[root@localhost ~]# createrepo -v /var/www/html/software/	

#测试:
[root@localhost dnf]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
[root@localhost yum.repos.d]# vim software.repo
[software]
name = software
baseurl = http://172.25.254.129/software/
gpgcheck = 0
[root@localhost yum.repos.d]# dnf info docker-ce.x86_64

八.Linux下的网络管理

1、网络IP通信原理

IP 通信的核心是通过 IP 地址定位设备,并基于分组交换机制,将数据拆分成小数据包在网络中传输、重组,最终实现不同设备间的通信,核心流程如下:

数据拆分: 发送端把要传输的大文件 / 消息,拆成一个个带编号的IP 数据包(每个包包含:目标 IP 地址、源 IP 地址、数据片段、校验信息)。

**地址寻址:**发送端通过子网掩码判断目标设备是否在同一局域网:

  • 同一局域网:直接通过 ARP 协议获取目标设备的 MAC 地址,直接发送数据包。
  • 不同局域网:将数据包发给网关(路由器),由网关转发。

路由转发: 网关通过路由表,选择最优路径,逐跳转发数据包(每经过一个路由器,数据包的 "生存时间 TTL" 减 1,防止无限循环)。

**数据重组:**接收端收到所有数据包后,根据包的编号,按顺序拼接还原成原始数据;若有丢包,通过上层协议(如 TCP)请求重传。

关键特点:IP 负责 "寻址和转发",不保证数据可靠传输(可靠传输由 TCP 协议实现,UDP 则是无连接的不可靠传输)。

2、网络IP的配置方法

root@localhost system-connections\]# ls /sys/class/net/ \| grep eth1 eth1 #判定网卡是否存在 \[root@localhost \~\]# nmcli connection show #拍档网卡是否被使用 NAME UUID TYPE DEVICE eth0 e2d9530e-954f-3acd-b77e-d219e93d9348 ethernet eth0 lo 5a264164-e40e-46ad-88fe-eb31f5e1f9e2 loopback lo #如果要配置的网卡已经被使用了。那么修改配置文件后一定要刷新网络并重启连接 \[root@localhost \~\]# nmcli connection modify eth0 ipv4.addresses 172.25.254.100/24 \[root@localhost \~\]# nmcli connection reload \[root@localhost \~\]# nmcli connection up eth0 #如果没有被系统使用那么直接可以设定或者编辑配置文件激活 \[root@localhost \~\]# cd /etc/NetworkManager/system-connections/ \[root@localhost system-connections\]# vim eth1.nmconnection \[connection

id=eth1

type=ethernet

interface-name=eth1

ipv4

method=manual

address1=172.25.254.100/24

gateway=172.25.254.2

dns=114.114.114.114;

root@localhost system-connections\]# chmod 600 eth1.nmconnection #检测 \[root@localhost system-connections\]# ls /sys/class/net/ eth0 eth1 lo \[root@localhost system-connections\]# ip a s eth1 #查看ip 3: eth1: \ mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:67:23:80 brd ff:ff:ff:ff:ff:ff altname enp19s0 altname ens224 inet 172.25.254.100/24 brd 172.25.254.255 scope global noprefixroute eth1 valid_lft forever preferred_lft forever inet6 fe80::b7e8:d88a:6485:552a/64 scope link noprefixroute valid_lft forever preferred_lft forever \[root@localhost system-connections\]# route -n #网关 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.25.254.2 0.0.0.0 UG 100 0 0 eth0 0.0.0.0 172.25.254.2 0.0.0.0 UG 101 0 0 eth1 172.25.254.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 172.25.254.0 0.0.0.0 255.255.255.0 U 101 0 0 eth1 \[root@localhost system-connections\]# cat /etc/resolv.conf #查看dns # Generated by NetworkManager search localdomain nameserver 172.25.254.2 nameserver 114.114.114.114

3、网关的作用及配置方法

网关(Gateway)是不同网络之间的 "中转站",本质是一个网络通向另一个网络的 IP 地址(通常是路由器的局域网 IP),核心作用有 3 个:

  1. 跨网段通信转发 当设备需要访问不同网段的设备(比如局域网电脑访问互联网、A 子网访问 B 子网),数据无法直接传输,会先发送到网关,由网关转发到目标网络。
  2. **协议转换(可选)**不同类型网络(如以太网和 WiFi、局域网和广域网)的通信协议可能不同,网关可完成协议转换,让异构网络能互通。
  3. 网络隔离与安全网关(如路由器)可作为局域网的 "出入口",通过防火墙规则过滤非法数据,保护内网设备安全。

4、dns的作用及配置方法

DNS(Domain Name System,域名系统)是 "域名和 IP 地址的翻译官"。

  • 问题:人类容易记住域名(如www.baidu.com),但电脑只认识 IP 地址(如180.101.50.242)。
  • 作用:DNS 服务器接收域名查询请求,返回对应的 IP 地址,让设备能通过域名访问目标服务器。

5、网络脚本的编写

root@node10 \~\]# vim /bin/vmset.sh #!/bin/bash \[ "$#" -lt "3" \] \&\& { echo "error!!" exit } CONNECTION=\`nmcli connection show \| awk "/$1/"'{print $1}'\|grep $1\` \[ "$?" -ne "0" \] \&\& { echo "$1" is in used !! nmcli connection delete $CONNECTION } \[ "$4" = "noroute" \] \&\& { cat \>\> /etc/NetworkManager/system-connections/$1.nmconnection \<\

id=$1

type=ethernet

interface-name=$1

ipv4

method=manual

address1=$2/24

EOF

}||{

cat >> /etc/NetworkManager/system-connections/$1.nmconnection <<EOF

connection

id=$1

type=ethernet

interface-name=$1

ipv4

method=manual

address1=$2/24,172.25.254.2

dns=8.8.8.8;

EOF

}

chmod 600 /etc/NetworkManager/system-connections/$1.nmconnection

nmcli connection reload

nmcli connection up $1

hostnamectl hostname $3

cat > /etc/hosts<< EOF

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

2 3

EOF

ip a s $1

hostname

root@node10 \~\]# chmod +x /bin/vmset.sh \[root@node10 \~\]# vmset.sh eth0 172.25.254.100 server

九.Linux下的本地存储管理

1.磁盘分区表原理

磁盘分区表是记录磁盘分区信息的核心数据结构,位于磁盘的第一个扇区(MBR 分区表)或 GUID 分区表(GPT)的特定位置,操作系统通过它识别磁盘的分区数量、大小、类型和起始位置。

核心原理:

磁盘的第一个扇区(512 字节)称为 MBR 扇区,MBR 分区表占用其中的 64 字节,每 16 字节描述一个主分区。

GPT 则将分区表存储在磁盘的起始和末尾区域(双重备份),每个分区用唯一的 GUID 标识,解决了 MBR 的容量和分区数量限制。

2.磁盘分区命令

Linux 下常用的磁盘分区命令有 fdisk(适用于 MBR)和 gdisk(适用于 GPT),还有通用工具 parted(支持 MBR 和 GPT)。

  1. 前提:识别磁盘设备名

首先查看系统中的磁盘和分区,确定要操作的磁盘(如 /dev/sda 是第一块 SATA 盘,/dev/vdb 是第二块虚拟盘):

复制代码
lsblk  # 列出所有块设备
fdisk -l  # 查看磁盘分区详情
  1. fdisk 命令(MBR 分区,适用于 ≤2TB 磁盘)

保姆级操作步骤(以 /dev/sdb 为例):

复制代码
# 1. 进入 fdisk 交互模式
fdisk /dev/sdb

# 2. 查看分区表(交互模式下输入命令)
m  # 查看帮助菜单
p  # 打印当前分区表(初始为空)

# 3. 创建主分区
n  # 新建分区
p  # 选择主分区(primary)
1  # 分区编号(1-4)
回车  # 按默认起始扇区
+10G  # 设置分区大小为 10GB(或直接输结束扇区)

# 4. 更改分区类型(可选,如改为 Linux LVM 类型)
t  # 更改分区类型
8e  # 输入 LVM 类型的代码(默认 83 是 Linux 普通分区)

# 5. 保存分区表并退出
w  # 保存并退出(q 表示放弃修改退出)

# 6. 刷新分区表(让系统识别新分区)
partprobe /dev/sdb
  1. gdisk 命令(GPT 分区,适用于 >2TB 磁盘)

操作逻辑和 fdisk 类似,专门用于 GPT 分区表:

复制代码
# 1. 进入 gdisk 交互模式
gdisk /dev/sdb

# 2. 新建分区
n  # 新建分区
回车  # 默认分区编号
回车  # 默认起始扇区
+20G  # 分区大小 20GB
8e00  # 分区类型代码(Linux LVM,默认 8300 是普通分区)

# 3. 保存退出
w  # 保存分区表
y  # 确认写入

# 4. 刷新分区表
partprobe /dev/sdb
  1. parted 命令(通用工具,支持 MBR/GPT)

支持非交互模式,适合脚本批量操作:

复制代码
# 示例:将 /dev/sdb 格式化为 GPT,创建 10GB 分区
parted -s /dev/sdb mklabel gpt  # 设置分区表类型为 GPT
parted -s /dev/sdb mkpart primary 0% 10GB  # 创建 0-10GB 的主分区
parted -s /dev/sdb set 1 lvm on  # 开启 LVM 标志

3.文件系统的作用及制作方式

  1. 文件系统的核心作用

文件系统是操作系统管理磁盘数据的规则和结构,没有文件系统的磁盘是 "裸盘",无法存储和读取文件。核心作用:

  1. 管理文件存储:定义文件的命名规则、存储位置、大小,通过索引(如 inode)快速定位文件。
  2. 维护元数据:记录文件的创建时间、权限、所有者、数据块位置等信息。
  3. 保障数据安全:提供日志功能(如 ext4 的 journal),防止断电 / 崩溃导致的数据丢失。
  4. 支持权限控制:通过用户 / 组权限(rwx)限制对文件的访问。

|-------|---------------------|---------------|
| 文件系统 | 特点 | 适用场景 |
| ext4 | 稳定、兼容性好、支持最大 1EB 分区 | 系统盘、普通数据盘 |
| xfs | 高性能、大文件支持好、恢复速度快 | 大容量存储、数据库 |
| btrfs | 支持快照、RAID、动态扩容 | 企业级存储、需要快照的场景 |
| swap | 虚拟内存分区 | 内存不足时作为交换空间 |

4.raid磁盘阵列

  1. RAID 定义与核心作用

RAID(独立磁盘冗余阵列)是将多块物理磁盘组合成一个逻辑磁盘的技术,核心目的是 提升读写性能 或 保障数据冗余(容错),或两者兼顾。

5.lvm逻辑卷

LVM(逻辑卷管理)是动态管理磁盘分区的技术,它将物理磁盘分区抽象为物理卷(PV),整合为卷组(VG),再从卷组中划分出逻辑卷(LV)。

核心优势:解决了传统分区大小固定的问题,可动态扩容 / 缩容逻辑卷,无需重启系统。

相关推荐
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
盟接之桥2 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿2 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
湘-枫叶情缘2 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
Fcy6483 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满3 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠3 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Gary Studio3 小时前
rk芯片驱动编写
linux·学习
mango_mangojuice3 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习
Harvey9034 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s