七、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,核心步骤:
- 收集 RPM 包到指定目录(如/mnt/local_repo);
- 初始化仓库元数据:createrepo /mnt/local_repo;
- 编写.repo配置文件,指向本地目录;
- 客户端通过配置文件使用该私有仓库。
#为了把网络软件仓库中的软件下载下来后分享给本地主机,或者直接把网上下载下来的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 个:
- 跨网段通信转发 当设备需要访问不同网段的设备(比如局域网电脑访问互联网、A 子网访问 B 子网),数据无法直接传输,会先发送到网关,由网关转发到目标网络。
- **协议转换(可选)**不同类型网络(如以太网和 WiFi、局域网和广域网)的通信协议可能不同,网关可完成协议转换,让异构网络能互通。
- 网络隔离与安全网关(如路由器)可作为局域网的 "出入口",通过防火墙规则过滤非法数据,保护内网设备安全。
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)。
- 前提:识别磁盘设备名
首先查看系统中的磁盘和分区,确定要操作的磁盘(如 /dev/sda 是第一块 SATA 盘,/dev/vdb 是第二块虚拟盘):
lsblk # 列出所有块设备
fdisk -l # 查看磁盘分区详情
- 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
- 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
- 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.文件系统的作用及制作方式
- 文件系统的核心作用
文件系统是操作系统管理磁盘数据的规则和结构,没有文件系统的磁盘是 "裸盘",无法存储和读取文件。核心作用:
- 管理文件存储:定义文件的命名规则、存储位置、大小,通过索引(如 inode)快速定位文件。
- 维护元数据:记录文件的创建时间、权限、所有者、数据块位置等信息。
- 保障数据安全:提供日志功能(如 ext4 的 journal),防止断电 / 崩溃导致的数据丢失。
- 支持权限控制:通过用户 / 组权限(rwx)限制对文件的访问。
|-------|---------------------|---------------|
| 文件系统 | 特点 | 适用场景 |
| ext4 | 稳定、兼容性好、支持最大 1EB 分区 | 系统盘、普通数据盘 |
| xfs | 高性能、大文件支持好、恢复速度快 | 大容量存储、数据库 |
| btrfs | 支持快照、RAID、动态扩容 | 企业级存储、需要快照的场景 |
| swap | 虚拟内存分区 | 内存不足时作为交换空间 |
4.raid磁盘阵列
- RAID 定义与核心作用
RAID(独立磁盘冗余阵列)是将多块物理磁盘组合成一个逻辑磁盘的技术,核心目的是 提升读写性能 或 保障数据冗余(容错),或两者兼顾。
5.lvm逻辑卷
LVM(逻辑卷管理)是动态管理磁盘分区的技术,它将物理磁盘分区抽象为物理卷(PV),整合为卷组(VG),再从卷组中划分出逻辑卷(LV)。
核心优势:解决了传统分区大小固定的问题,可动态扩容 / 缩容逻辑卷,无需重启系统。
