云计算运维学习 day4--Linux软件包与磁盘管理
目录
1.3.5提前禁用掉CentOS 7系统软件仓文件中的contrib软件仓
3.4启用Nginx网络服务(需要提前下载),禁用其他网络服务(如: httpd)
3.5将解压后的upload目录下所有文件都移动到nginx的发布地址中
1.管理Linux软件包和进程
1.1源码下载安装文件
1.1.1概念
源码文件:程序编写者使用C或C++等语言编写的原始代码文件
压缩文件:使用.tar.gz和.tar.bz2压缩文件
1.1.2特点
1.源码包可移植性好,与待安装软件的工作环境依赖性不大
2.存在编译过程,运行效率高
3.可选择自定义功能安装
4.卸载时只需删除源码对应的目录
5.安装过程繁琐
1.1.3安装过程
1.下载源码压缩包并进行解压
2.分析安装软件环境
3.编译软件
4.安装软件
1.1.4源码编译三部曲
1. ./configure —— 配置与检查:通过执行源码目录下的 configure 脚本,完成环境检查、生成 makefile(make命令的编译说明书) 文件、功能开关和指定安装路径等任务。
格式:
1.指定安装路径
./configure --prefix==指定安装路径
2.查看软件中包含哪些配置
./configure --help
例子:
1.查看nginx软件中的相关配置
![]()

2.编译 Nginx 时,并启用相关功能

2. make——编译:根据生成的 Makefile 文件中的规则,调用编译器(如 gcc)将 .c 源码文件编译成 .o目标文件,再链接成可执行的二进制文件。
格式:
make
3. make install——安装:将第二步编译好的二进制文件、库文件、配置文件和帮助文档,从源码目录复制到第一步 --prefix 指定的系统目录中(如 /usr/local/apache2/),若没有指定目录,则会放到PATH当中。
格式:
make install
1.1.5例子:安装nginx源码包
Nginx:一个高性能的 HTTP 和反向代理服务器,同时也是一个邮件代理服务器和通用的 TCP/UDP 代理服务器。是应用最广泛的Web服务器之一。
Web服务器 :提供 Web 内容(网页、图片、API 数据等)的软件或硬件。当你在浏览器输入 www.example.com 并回车,浏览器会向 Web 服务器发送请求,服务器处理请求后,将你需要的网页内容通过互联网传回给你的浏览器显示。
1.准备工作(安装依赖环境)

2.下载Nginx源码包(使用wget命令,wget需提前安装)
1.打开nginx官网

2.下载nginx压缩包
方法一:在windows端下载nginx后,将压缩包拖进Linux系统中


方法二:复制下载地址,在Linux端使用wget命令下载至本地

wget https://nginx.org/download/nginx-1.30.3.tar.gz

3.解压缩
tar zxf nginx-1.30.tar.gz

4.安装环境分析
1.查看目录中是否存在configure文件

2.执行configure文件并开启openssh和,检测当前环境是否满足软件安装要求
![]()
成功运行:

5.编译软件(注意:软件在编译完成前都是无法使用的)


6.安装软件

7.查看是否安装成功

8.将程序放到系统环境变量当中

1.1.6报错解决
1.gcc未安装

解决方法:安装gcc
![]()
2.部分功能相关依赖
1.pcre依赖

解决方法:1.安装相关依赖(建议使用这种解决方法)
![]()

2.去除http 复写功能
![]()
2.OpenSSL依赖

解决方法:安装相关依赖

1.2RPM管理工具
1.2.1概念
RPM:是 Linux 系统中(特别是 Red Hat 系发行版,如 RHEL、CentOS、Fedora)最底层的软件包管理工具。它是一个打包好的、可直接安装的软件单元,包含了编译好的二进制文件、配置文件和安装元数据。
作用:软件制作者在其工作环境下将软件编译完成后发布,以此来减少软件编译时间,要求:软件安装环境与编译环境要一致
1.2.2安装要求
1.安装环境应与打包环境一致
2.满足软件的相关依赖
3.卸载时,不能先卸载底层软件
1.2.3rpm软件包命名格式
1.格式:软件名-版本号-发型号-操作系统版本.硬件类型平台.rpm
2.例子:zsh-5 .0.2-14.el7 .x86_64.rpm
| zsh | 5 | 0 | 2 | 14 | el7 | x86 | 64 |
| 软件名 | 主版本 | 次版本 | 修订号 | 软件发布个数 | 发型商RH7 | CPU架构平台 | 支持系统位数 |
1.2.4rpm软件安装
1.格式:
rpm -[参数] 软件名
参数:
-i,-install:安装软件
-nodeps:不验证软件包依赖
-force:安装时提示已安装则重新安装
-v,-verbose:提供更多详细信息输出
-U:软件包升级
-e:软件卸载
-h:显示进度条
2.安装过程
1.读取RPM头部数据,查询是否含有相关依赖
2.若满足条件,则安装成功否则安装失败
1.2.5rpm查询功能(目前,rpm多为查询功能)
rpm -q 软件名
参数(-q搭配使用):
-qa:查询所有已安装软件包
-ql:显示所有已安装包的相关文件列表和信息
-qf:查询文件所属的软件包
-qi:显示所有已安装的rpm软件包信息
1.2.6例子(查询功能)
1.查询 httpd 软件包是否安装

2.查看系统中已安装软件包的个数

3.查看 ls 命令属于哪个软件包

4.查看 openssh-server 软件包的自动脚本

1.3YUM/DNF管理工具
1.3.1概念
yum:是基于 RPM 的高级包管理工具,自动解决软件依赖,从软件仓库中安装、更新和卸载软件。RHEL9中默认使用的软件批量管理工具由原版本的yum换成了速度更快的dnf,原有的yum命令仅为dnf的软链接,当然依旧可以使用
1.3.2功能
1.在线下载、安装、卸载、升级软件
2.自动查找并解决rpm间的依赖问题,一次性安装软件包所需的所有具有依赖性的rpm包。
1.3.3工作原理
1.将编译好的软件放置在YUM服务器中,并将这些软件的依赖性等信息记录下载组成数据库
2.用户安装软件时会从网络中的YUM服务器中下载对应的表格并与本机的RPM数据库进行比较,然后自动下载软件及其所需的所有依赖
3.YUM仓库:记录软件依赖等信息的数据库
4.系统会自动读取 /etc/yum.repos.d/ 目录下的 .repo 结尾的文件,并从文件中读取以下内容实现安装:
包含各种rpm安装文件的软件仓库(rhel8开始有两个仓库,rhel7只有一个仓库) BaseOS存储库:提供一套核心的底层操作系统功能,为基础软件安装库 AppStream存储库:包括额外的用户空间应用程序、运行时语言和数据库
1.3.4命令格式
1.查看包、包组的相关信息
yum repolist [ALL] #查看系统中yum资源库的配置信息
yum list all #列出yum中所有可安装的软件包
yum list installed [包名] #列出yum中所有已安装的软件包或者指定的rpm软件包
yum info 包名 #查看指定软件包的详细信息
yum grouplist #查看软件仓库中的所有包组
yum groupinfo 包组名 #查看指定包组的详细信息
2.安装、更新包和包组
yum install [-y] 包名 #安装指定的软件包,-y:无需手动确认
yum update [-y] [包名] #升级所有已安装的软件包或者指定的软件包
yum groupinstall 包组名 #安装指定包组里的所有软件包
3.卸载软件包
yum remove [-y] 软件包 #卸载已安装的指定软件包,-y:无需手动确认
4.搜素文件由哪个软件包产生
yum provides/whatprovides 文件名 #查看指定文件属于哪个软件包
5.模糊搜素包名
yum search 模糊包名(不完全包名) #搜素名字不全的软件包
6.清除yum下载缓存
yum clean 包名或all #清楚指定软件包的下载缓存或者所有已安装软件包的缓存
1.3.5提前禁用掉CentOS 7系统软件仓文件中的contrib软件仓
作用:CentOS 7 在 2024 年 6 月 30 日结束生命周期(EOL)后,其官方仓库(包括 contrib)已被归档或移除了。启用该软件仓,会报如下图所示的错误:

注意:这个报错,不影响上述yum命令的运行,可以通过ctrl + c键退出这个软件仓的访问,同样也可得到输出结果。这里是为了美观,将他禁用掉。

解决方法(禁用contrix):
1.进入系统软件仓库文件(CentOS-Base.repo)

2.下滑找到contrib软件仓,插入一行命令,禁用掉contrib这个软件仓库

3.保存并退出文件,清理和重启缓存

4.验证是否禁用成功(没有报错)

1.3.6例子
1.查看系统软件仓库资源信息

2.搜索与ssh相关的软件包

1.4配置yum源
1.4.1本地yum源
1.移动到 yum 资源目录中,查看 .repo 文件
·
2.确保你的虚拟机上存在光驱

3.将光驱挂载到 /meida 目录下

4./meida 目录下存放着两个文件夹(Packages 和 repodata)
repodata:存放着yum缓存,yum检索时读取的是这里的缓存信息
![]()

5.编辑你的yum源仓库 .repo 文件(名字自拟)

6. 文件内容如下:
[local] #仓库的唯一标识符(ID)
name=local repo for CentOS 7 #仓库的描述性名称
baseurl=file:///media #仓库的核心地址
gpgcheck=0 #GPG 签名验证开关
enabled=1 #仓库启用开关
仓库的唯一标识符(ID):必须放在方括号内,并且与其他仓库区分开。YUM 内部通过这个 ID 来引用这个仓库
仓库的描述性名称:仅用于给人阅读,帮助管理员理解这个仓库的用途。
仓库的核心地址:指定了 YUM 去哪里寻找
repodata目录。YUM 会访问这个 URL,然后读取repodata/repomd.xml来获取软件包列表和依赖信息。GPG 签名验证开关。设置为
0表示关闭 GPG 签名检查。这意味着 YUM 不会验证软件包的来源和完整性,通常用于本地或内部可信仓库。若设置为1,则必须额外指定gpgkey=...。不写的话默认是0,关闭状态仓库启用开关:设置为
0表示该仓库禁用状态。这意味着在执行yum install时,YUM 不会从这个仓库查找软件包。设置为1,表示启用这个软件仓库。不写的话默认是1,开启状态

7.禁用掉原来的系统自带的 .repo 文件(改文件名或者禁用掉文件中的所有仓库)
方法一:改文件名(备份)

启用方式:将文件名改回原来的 CentOS-Base。
方法二:禁用掉文件中的所有仓库
![]()

启用方式:将修改的 enabled 置为 1,即修改成 enabled = 1。
8. 清除缓存和重建缓存
yum clean all #清除缓存
yum makecache #重建缓存

9.查看yum源仓库软件包个数,验证是否成功配置yum源

注意:这里两个软件包个数不一致是因为:YUM 出于架构兼容性或依赖关系,自动过滤掉了一个。
1.4.2使用httpd服务本地部署一个自己的软件仓库
服务端虚拟机:存放和发布你软件包的虚拟机
客户端虚拟机:远程下载你软件包的虚拟机
1.新建一个存放软件包的目录,存放目录的虚拟机叫作服务端
mkdir /mysoftware #这里的目录可以自定

2.向你新建的目录中放入你的软件包(我这里拿的系统的软件包举例子)
mv 你的软件包 你新建的目录
例如:cp libXrandr-1.5.1-2.el7.x86_64.rpm tuned-2.11.0-9.el7.noarch.rpm util-linux-2.23.2-65.el7.x86_64.rpm /mysoftware


注意:挂载光驱是为了复制系统上的软件包,如果你已经打包好了软件包,则不用挂载光驱

3.安装 createrepo 软件包(记得将yum源改回之前的系统源,本地源里没有createrepo软件包,修改方式在1.4.1的第七步有说明)
createrepo:一个用于创建和管理 YUM/DNF 软件仓库元数据的命令行工具。当你有许多
.rpm软件包时,需要用它来生成一个“目录”(即repodata文件夹),YUM 或 DNF 才能识别并安装这些包。
yum install -y createrepo

4.进入你的新建目录(目录下存放着生成的repodata文件夹)自动生成软件包的repodata目录
cd /mysoftware #目录是你新建的目录
createrepo .
![]()

5.安装 httpd 软件包
httpd:是 Apache HTTP Server 软件包的名称。它的任务是处理 HTTP 请求,将你存放在服务器上的网页文件(HTML、图片、脚本等)通过浏览器展示给访问者。
yum install -y httpd

6.实现 httpd 服务开机自启
systemctl enable --now httpd

7.查看你的 httpd 网络服务是否启动
netstat -anp | grep 80 #80是httpd服务端口号

8.在windows系统的浏览器上搜素虚拟机的IP地址,观察能否输出 httpd 服务的测试界面

注意:如果显示无法访问,根据第七步检查你的httpd服务是否开启,如以下情况:

9.将你新建的存放软件包的目录,放到 /var/www/html 目录下(只能放在这个目录)
/var/www/html:该目录是Apache(阿帕奇)网站的发布地址
mv 你的目录 /var/www/html

10.在windows端访问你虚拟机的IP地址后面跟上你新建的目录名
服务端虚拟机的IP地址 + 你的目录

注意:如果未放到该目录下,会出现下面的错误:

11.新开一个虚拟机(用作客户端),用来检测能否访问到你的软件仓库

12.在客户端上cd 进系统的软件配置源目录,禁用掉所有yum源文件(改完后再测试完后记得修改回来,以防报错),重启缓存后接着用yum repolist检测是否禁用成功,如果检测到0个软件包个数,说明禁用成功(非必须,目的用来检测是否成功访问服务端的软件仓库)
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.back #有其他.repo文件也是同理,重命名
yum makecache [fast] #fast加快重启缓存速度
yum repolist
![]()


注意:如果重启缓存后,查看依然没改变,记得先使用yum clean all清除所有缓存,接着再使用 yum makecache 重启缓存查看软件包个数
13. 在客户端的yum源目录(/etc/yum.repos.d)上新建一个yum软件源文件,将你服务端的虚拟机IP跟你新建的目录名路径放进baseurl 中
[localrepo]
name=server package
baseurl=http://192.168.7.135/mysoftware #http://表示通过web服务器访问
gpgcheck=0
enabled=1


14.在客户端上重启缓存,使用yum repolist查看你的软件包个数,观察是否与服务端虚拟机中你创建的目录下的软件包个数是否一致,一致说明搭建成功。
客户端:
yum makecache [fast] #重启缓存
yum repolist

服务端:
ls -1 /var/www/html/mysoftware 2>/dev/null | wc -l

15.当你更新服务端的软件仓库时(即向你的新建目录下放入新的软件包),再客户端需要重启yum缓存,才能看见你新加入的软件包
服务端:


windows端:

客户端:

16.服务端和客户端重新开启系统yum源
cd /etc/yum.repos.d
mv CentOS-Base.repo.back CentOS-Base.repo
yum makecache fast

1.5管理进程
1.5.1概念(程序、线程和进程)
程序:二进制文件,存储在硬盘上,一般存放在 /usr/bin 目录下
进程:已启动的可执行程序的运行实例
线程:进程中的一条执行流,是操作系统能够调度的最小单位
注意:
1.进程与程序不是一一对应的关系,相同的程序运行在不同的数据集上是不同的进程
2.一个进程中存在多个线程,但一个线程只能属于一个进程
3.线程不能单独执行,但每个线程都有程序入口、执行序列和程序出口,它必须组成进程才能执行
4.每个进程之间都有独立的地址空间,一个进程的崩溃不会引发另一个进程的崩溃
1.5.2进程分类

1.5.3ps命令
1.作用:显示某个时间点的程序运行情况(静态)
2.格式:(默认为显示当前用户进程)
ps -[参数]
参数:
-a:显示当前所有用户的进程
-u:显示用户名和启动时间
-x:显示没有控制终端的进程
-e:显示所有进程,包括没有控制终端的进程
-l:长格式显示
-f:更完整的输出
3.例子:
1.以长格式形式输出当前用户进程

F(程序标志):标识进程的属性。0表示普通用户,4表示root用户
S(程序状态):程序的运行状态,R表示运行,S表示休眠,D表示不可唤醒的休眠,T表示 停止状态,Z表示僵尸状态(程序已终止,但无法移除),+表示后台进程
<:表示拥有更高的优先级
UID(用户ID):程序运行的创建用户ID
PID(进程ID):当前进程的ID
PPID(父进程ID):当前进程的父进程ID
C(CPU):当前进程的CPU使用率(百分比)
PRI(优先级):程序运行的先后顺序,数值越小,优先级越高
NI(Nice值):用户自定的优先级,范围(-20~19)负值表示高优先级,正值表示低优先级
ADDR(内存地址):进程的内存地址,通常用 - 表示
SZ(内存大小):当前进程的内存大小
WCHAN(等待通道):do_wait:等待I/O通道或者输入,-:表示不用等待
TTY(终端类型):远程连接终端界面为ptr/数字(n)
TIME(时间):程序运行的CPU时间
CMD(命令名):当前进程的指令
2.显示当前所有用户的所有进程
ps -aux

3.查看指定进程名(例如sshd、httpd)的所有进程号(PID)
方法一:使用ps命令查看ssh所有PID
ps -aux | grep 进程名

方法二:使用pgrep命令查看httpd所有PID
pgrep 进程名

1.5.4pstree命令
1.作用:以树状结构显示进程间父子关系
2.前提条件:安装pstree
yum provides */pstree #搜索命令文件
yum install -y psmisc-22.20-17.el7.x86_64 #安装软件包

![]()
3.格式:
pstree

1.5.5top命令
1.作用:实时系统监控工具(动态),会持续占用你的空间
2.格式:
top -[参数]
参数:
-d 数字:隔多少秒刷新一次进程界面
-b:以批次方式执行top,
-n 次数:常与-b搭配,刷新几次界面后退出
-i:不显示闲置状态或者僵尸状态的进程
-c:显示进程的整个命令路径
-s:安全模式下运行,不支持交互
-p PID1,PID2:查看指定PID的进程情况
3.例子:
1.top实时监控系统界面(按ctrl + c退出)

2.每隔一秒刷新一次查看PID号为1的进程信息,按(ctrl + z)退出
top -d 1 -p 1
![]()

1.5.6kill命令
1.作用:杀死进程,(结束进程)
2.格式:
kill -[参数] 进程名/PID(你的进程ID号)
参数:
-f:强制杀死进程
2.磁盘管理
2.1磁盘简介
硬盘:由一片或多片带有磁性的铝合金制的盘片构成,是一种大容量、永久性的外部存储设备
传统设备名称:
| IDE设备 | /dev/ht[a-d] |
| STAT/SCIS设备 | /dev/sd[a-p] |
| 光驱 | /dev/cdrom |
2.2为虚拟机添加新硬盘
1.关闭虚拟机,打开磁盘设备

2.选择硬盘后,点击添加

3.选择硬盘,点击下一步:

4.选择硬盘类型,点击下一步:
SCIS:“企业备选”,主要适配需要连接大量硬盘或使用高级存储功能(如磁盘阵列)
SATA:“通用默认”,兼容性好、性能足够,适合绝大多数场景

5.点击创建新的虚拟硬盘

6.选择你要创建的磁盘大小

7.默认命名,默认位置建立文件,点击完成

8.查看新磁盘

9.开启虚拟机,查看硬盘是否被加入

2.3硬盘分区概述
2.3.1MBR分区
1.概念:由分区程序(如Fdisk.exe)所产生的,它不依赖任何操作系统,而且硬盘引导程序也是可以改变的,从而实现多系统共存
2.作用:检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分区上的操作系统,并将控制权交给启动程序
3.分区类型:主分区、扩展分区、逻辑分区
主分区:
1.一块硬盘最多4个主分区,主分区不可二次分区
2.主分区可直接建立文件系统,存放数据
3.能够用来启动、引导操作系统
扩展分区:
1.一块硬盘只能有一个扩展分区,如果已经存在4个主分区,则必须牺牲一个主分区转换成扩展分区
2.扩展分区不能创建文件系统,但可划分逻辑分区
逻辑分区:
1.可以创建文件系统
2.可以创建多个分区
注意:支持的分区数量:4个主分区或者3个主分区1个扩展分区
4.MBR只能拥有4个分区表原因:因为分区表占据64个字节,其中每个分区的信息占用16个字节,分区表里面可以记录四个分区信息描述。
2.3.2GPT分区(简单了解)
1.出现原因(MBR不足):
1.MBR分区表最高磁盘容量支持2.2TB
2.MBR分区表中没有备份功能
3.MBR存储管理程序容量只有446B
2.概述:MBR 的现代替代方案,用来解决 MBR 在容量、分区数量和数据安全上的根本限制。
3.特点:
1.不再分主分区与其他分区,最高可存在128个区
2.磁盘容量最高可支持18EB
3.LAB区块共68块,前34块记录分区信息,后34块用来备份
2.3.3lsblk命令
1.作用:查看磁盘的信息
2.格式:
lsblk -[参数] [设备名]
参数:
-d:仅列出磁盘本身信息,不显示分区
-f:列出磁盘内的文件系统名称
-i:使用 ASCII 码 形式输出内容
-t:显示磁盘的详细信息
-p:显示设备的完整名称
3.例子:lsblk命令查看信息

NAME 设备或分区的名称(树状结构)
MAJ:MIN 主设备号:次设备号(内核用于识别设备驱动)
RM 是否可移动设备(1=是,0=否)
SIZE 容量大小
RO 是否为只读设备(0=否,1=是)
TYPE 设备类型(disk=物理磁盘,part=分区,lvm=逻辑卷,rom=光驱)
MOUNTPOINT 挂载点(即该分区在系统中的访问目录)
2.4磁盘分区(创建分区与删除分区)
2.4.1使用fdisk管理分区(fdisk 命令)
1.作用:fdisk命令默认将此磁盘划分为MBR格式
2.格式:
fdisk 设备名
3.管理指令:
a:调整磁盘的启动分区
d:删除磁盘分区
l(小写L):显示所有支持的分区类型
m:查看所有指令的帮助信息 q:
g:新建一个空的GPT分区表
p:显示当前的磁盘分区信息
t:更改分区类型
u:切换所显示的分区大小单位
n:创建一个新分区
w:将修改写入分区表并退出,最后如果没有w命令,则修改不生效
o:新建一个空的DOS分区表
4.例子:
1.新建一个新的分区(为上面新添加的硬盘分区)
1.1新建一个主分区,新建后分区存在,但不能使用(不能创建文件系统)
注意:若该硬盘之前已用gdisk创建过分区,则不能使用fdisk命令创建分区
分区的意义:创建多种文件系统
顺序:n(新建)+p(查看)+w(保存)

注意:若无法查看,则表示分区信息还未写入内核(常见情况),输入 partprobe 命令进行将分区信息同步到内核,再不行就重启
partprobe #刷新内核分区表

1.2格式化新建分区
方法一:
mkfs.ext4 /dev/sdb1
方法二:
mkfs.xfs /dev/sdb1

1.3新建一个空目录,并将设备挂载到该空目录上,挂载完成后即可正常使用分区
注意:挂载只在当前虚拟机生效,重启后需重新挂载
mkdir /sdb1 #新建一个空目录,作为挂载点
mount /dev/sdb1 /sdb1 #将分区挂载到空目录上

补充:1.4自动挂载(可选,非必须)
作用:重启后无需手动挂载,但删除分区时需要提前删除自动挂载,否则无法重启虚拟机
方法:使用blikid命令查看设备的UUID值,编辑 /etc/fstab 文件,将挂载信息插入文件尾行,保存文件即可完成自动挂载
blikd #查看UUID
vim /etc/fstab #编辑文件
设备标识(名称或是UUID(推荐)) 挂载点 设备类型 挂载参数 是否备份 检查顺序 #文件添加内容
mount -a #检查挂载,未挂载则自动挂载
设备标识:要挂载的设备(分区、逻辑卷或 UUID)
挂载点:设备挂载到的目录
设备类型:文件系统类型,格式化时的类型,可通过blkid命令查看
挂载参数:挂载选项,
defaults是一组通用挂载选项的简写,等于允许读写、设置用户和用户组、访问设备文件、挂载点执行二进制文件、启动自动挂载、只允许根用户挂载该分区等,适合大多数日常使用场景。是否备份:备份标志(
0=不备份,1=备份)检查顺序:启动时磁盘检查顺序(
0=不检查,1=最先检查,2=次检查)

![]()


2.备份与恢复分区表(重要)
2.1查看分区表信息,并注意分区表中的起始位置和结束位置(这是恢复的关键)
fdisk -l 设备名

2.2备份 /dev/sdb 的 MBR(主引导记录,即硬盘的前 512 字节)
扇区:硬盘的“身份证”+“导航地图”+“大门钥匙”。 计算机在启动时,必须首先读取这个扇区,才知道硬盘是谁、如何分区、以及如何启动操作系统。
MBR 所在的是硬盘的第一个扇区(LBA 0),因为传统硬盘的物理扇区大小就是 512 字节,且 BIOS 启动时只读取一个扇区,所以 MBR 被严格限定在 512 字节内。这 512 字节中,446 字节是启动代码,64 字节是分区表,2 字节是结束标志
dd if=/dev/sdb of=/mbr bs=512 count=1

2.3先卸载设备,破坏分布表(后续观察能否恢复)
注意:只破坏了硬盘,但没有破坏掉硬盘的数据
umount /sdb1(你的挂载点) #卸载设备
![]()
一定要提前备份,再破坏:
dd if=/dev/zero of=/dev/sdb bs=512 count=1

2.4恢复分区表(提前有备份)
dd if=/mbr(备份文件) of=/dev/sdb(被破环的设备) #恢复分区表

2.5查看恢复结果
lsblk

3.删除分区(用什么命令创建的分区,用什么命令删除分区)
切记:删除分区前,先卸载,同时查看 /etc/fstab,删除开机挂载
顺序:d(删除分区)+p(查看)+w(写入,修改)
3.1卸载分区(开机挂载,也要卸载)
1.先在shell端卸载
umount /sdb1(挂载点)
lsblk

2.编辑/etc/fstab文件,删除之前添加的分区挂载信息,保存并退出
vim /ect/fstab
mount -a #测试
lsblk #查看挂载情况



3.2删除分区
fdisk /dev/sdb(你的设备名(硬盘)) #管理你的硬盘
lsblk #查看你的分区


2.4.2使用gdisk管理分区(gdisk命令)
1.作用:针对GPT分区格式 。注意:若在MBR分区格式下进行添加分区,则所有数据会全部丢失, 一块硬盘中fdisk与gdisk不能混用
2.格式:具体用法与fdisk类似,请查看fdisk的例子
gdisk 设备名
2.5格式化
2.5.1介绍
1.目的:对分区建立文件系统(操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法)
2.文件系统组成:(超级快、索引块、数据块)
超级块:记录文件系统的整体信息
索引块:记录文件的属性信息
数据块:记录文件的真实内容
3.查看文件系统格式
格式:输入mkfs在键入tab(点击2次)进行命令补全,可显示支持的文件系统格式
mkfs #按两下TAB
mkfs.ext4:最常用,格式化后,设备里会有lost+found文件,用来在分区自动恢复后,存储自动修复后的数据
mkfs.xfs:快速格式化容量大的分区
例子:查看可格式化的形式

2.5.2格式化命令(mkfs)
mkfs.xfs -[参数] 硬盘分区名
mkfs.ext4 -[参数] 硬盘分区名
参数:
-f:强制格式化,分区存在文件系统时使用
-c:建立文件系统前,先检查块
-v:输出建立文件系统的输出信息
例子:
1.使用 mkfs.ext4 格式化 sdb1 分区

2.挂载后,查看mkfs.ext4格式化后的分区中的 lost+found 文件

2.5.3查看设备UUID(blkid命令)
1.作用:显示设备的UUID值和文件系统名称(UUID:Linux系统会给所有设备分配一个唯一的UUID值,方便挂载)
2.格式:
blkid 设备名
3.例子:

2.6挂载
2.6.1mount命令
1.作用:
挂载点:一个目录,该目录是进入磁盘分区的入口
挂载:将一个分区或者设备挂载到挂载点目录,建立连接,通过挂载点进入分区空间
2.格式:
mount -[参数] 设备名 挂载点
参数:
-a:挂载
/etc/fstab中所有定义的设备-t 文件类型:指定文件系统类型
注意:
1.单一文件系统不应该被重复挂载在不同的挂载点(目录)中
2.单一目录不应该重复挂载多个文件系统
3.作为挂载点的目录,应为空目录,否则原有数据会隐藏
3.例子:将sdb1分区挂载到空目录/sdb1(挂载点)上
mkdir /sdb1 #新建一个空目录,作为挂载点
mount /dev/sdb1 /sdb1 #将分区挂载到空目录上

2.6.2umount命令
1.作用:卸载分区,(移除USB磁盘、光盘、U盘前需要先卸载)
2.格式:
umount -参数 设备名称
参数:
-f:强制卸载
注意:若正使用文件系统,则应使用cd命令离开该目录后再卸载
3.例子:卸载 /dev/sdb1 在/sdb1目录的挂载

2.6.3开机挂载
1.作用:由于mount为手动挂载,重启后就会卸载,则修改/etc/fstab配置文件,实现开机自动挂载,但删除分区时需要提前删除自动挂载,否则无法重启虚拟机
2.方法:使用blikid命令查看设备的UUID值,编辑 /etc/fstab 文件,将挂载信息插入文件尾行,保存文件即可完成自动挂载
/etc/fstab:一个专门用于设定系统分区挂载的文件,推荐使用UUID的方式替代设备名实现分区挂载,防止因Linux内核发生错乱,引发硬盘编号错乱,导致挂载失败
blikd #查看UUID
vim /etc/fstab #编辑文件
设备标识(名称或是UUID(推荐)) 挂载点 设备类型 挂载参数 是否备份 检查顺序 #文件添加内容
mount -a #检查挂载,未挂载则自动挂载
设备标识:要挂载的设备(分区、逻辑卷或 UUID)
挂载点:设备挂载到的目录
设备类型:文件系统类型,格式化时的类型,可通过blkid命令查看
挂载参数:挂载选项,
defaults是一组通用挂载选项的简写,等于允许读写、设置用户和用户组、访问设备文件、挂载点执行二进制文件、启动自动挂载、只允许根用户挂载该分区等,适合大多数日常使用场景。是否备份:备份标志(
0=不备份,1=备份)检查顺序:启动时磁盘检查顺序(
0=不检查,1=最先检查,2=次检查)

![]()


2.6.4swap分区(不推荐当作物理内存)
1.作用:将一部分硬盘空间虚拟成内存来使用,从而解决内存容量不足的情况,但是swap速度上比真实物理内存要慢,好处是可以防止数据过大,造成的死机问题
2.查看swap内存命令
free -h

3.增加swap分区
3.1新建一个2G的分区,充当swap分区
fdisk /dev/sdb

3.2将sdb1分区swap格式化,激活新建的swap分区(永久激活需要编辑/etc/fstab文件)并查看结果
mkswap /dev/sdb1 #swap格式化你新建的分区
swapon /dev/sdb1 #激活swap分区
free -h #查看swap内存

补充:3.3开机挂载(可选):编辑fstab文件,尾部插入swap分区设备信息
blkid
vim /etc/fstab


4.删除swap分区
4.1删除开机挂载信息
vim /etc/fstab

4.2移除swap分区
swapoff /dev/sdb1

2.7查看磁盘空间的使用量
2.7.1 df命令
1.作用:列出文件系统的磁盘空间占用情况
2.工作机制:通过文件系统来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件,df记录的是通过文件系统获取到的文件的大小,他比du强的地方就是能够看到已经删除的文件,而且计算大小的时候,把这一部分的空间也加上了,
3.格式:
df -[参数] 目录或文件名
参数:
-a:列出所有的文件系统,包括系统特有的/proc等文件系统
-k:以KB的容量显示各文件系统
-m:以MB的容量显示各文件系统
-h:以人们较易阅读的GB ,MB ,KB等格式自行显示
-H:以M=1000K替代M=1024K的进位方式
-T:连同该分区的文件系统名称(例如ext3)也列出
-i:不用硬盘容量,而以inode的数量来显示
4.例子:df -h 查看设备信息

2.7.2du命令
1.作用::显示磁盘空间使用量(统计目录或文件所占磁盘空间大小),在默认情况下,文件大小的单位是KB。
2.工作机制:是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和,当文件系统也确定删除了该文件后,这时候du与df就一致了
3.格式
du -[参数] 文件或目录名
参数:
-a : 列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已
-h : 以人们较易读的容量格式(G/M)显示
-s : 列出总量,而不列出每个个别的目录占用了容量
-S : 不包括子目录下的总计,与-s有点差别
-k : 以KB列出容量显示
-m : 以MB列出容量显示
2.8管理逻辑卷
2.8.1工作原理
作用:允许用户对硬盘资源进行动态调整
1. LVM是Logical Volume Manager(逻辑卷管理)的简写,LVM将若干个磁盘或者磁盘分区连接为一个整块的卷组,形成一个存储池。
2.通过LVM技术,屏蔽了磁盘分区的底层差异,管理员可以在卷组上任意创建逻辑卷,并进一步在逻辑卷上创建文件系统
3.管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。
4. PE(physical extent)物理区域:物理区域是物理卷中可用于分配的最小存储单元,物理区域的大小默认为4MB。物理区域大小一旦确定将不能更改,同一卷组中的所有物理卷的物理区域大小需要一致
5.物理卷(physical volume):简称PV,物理卷可以是整个硬盘、硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数
6.卷组(Volume Group):简称VG,可以看成单独的逻辑磁盘,建立在PV之上,一个卷组中至少要包括一个PV,在卷组建立之后可以动态的添加PV到卷组中。卷组的名称可以自定义
7.逻辑卷(logical volume):简称LV,相当于物理分区。逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态的扩展或缩小空间。系统中的多个逻辑卷,可以属于同一个卷组,也可以属于不同的多个卷组
2.8.2部署逻辑卷
常用部署命令
| 功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
| 扫描 | pvscan | vgscan | lvscan |
| 建立 | pvcreate | vgcreate | lvcreate |
| 显示 | pvdisplay | vgdisplay | lvdisplay |
| 删除 | pvremove | vgremove | lvremove |
| 扩展 | vgextend | lvextend | |
| 缩小 | vgreduce | lvreduce |
2.8.3创建逻辑卷
1.拿出一块空硬盘
fdisk -l /dev/sdb #检查是否为空硬盘

2.创建物理卷,将这个硬盘初始化成物理卷,并检查是否系统上的物理卷
pvcreate /dev/sdb
pvs/pvscan #检查


3.创建一个卷组,并查看
vgcreate vg0(卷组名自拟) /dev/sdb #创建一个卷组
vgs/vgscan

4.查看卷组信息
vgdisplay vg0

5.创建一个名为lv1,大小为5G的逻辑卷,并浏览它
lvcreate -L 5G(容量) -n lv1(名字自拟) vg0(卷组)
lvs/lvscan


6.格式化逻辑卷,并挂载(也可以开机挂载)


2.8.4扩容逻辑卷(不影响虚拟机的使用)
1.使用lvextend扩容逻辑卷,在LVM层面扩容(vg0还有多余容量)
注意:如果你的逻辑卷容量不够,需要向虚拟机中加入新的硬盘扩容
lvextend -L +2G(+扩容大小) /dev/vg0/lv1 #方法一
lvextend -L +12pe(+扩容pe) /dev/vg0/lv1 #方法二

注意:当你增加后的容量大于卷组时,会发生一下报错,逻辑卷容量不会增加

2.文件系统在线扩容并查看挂载容量
xfs_growfs /dev/vg0/lv1 #在线扩展文件系统
df -h /lvm

3.扩充卷组:先虚拟机加硬盘,加完硬盘后,创建物理卷,使用vgextend扩充卷组
vgextend vg0 /dev/sdc(你新建的物理卷) #扩充卷组
![]()
2.8.5删除物理卷
1.卸载(包括开机挂载也要卸)
umount /lvm
df -h /dev/vg0/lv1

2.从逻辑卷到卷组到物理卷依次删除
lvremove /dev/vg0/lv1 #删除逻辑卷
lvs #查看
vgremove vg0 #删除卷组
vgs #查看
pvremove /dev/sdb #删除物理卷
pvs #查看

3. 综合项目:搭建论坛
3.1组成
论坛(lamb架构):Linux/windows + apache/nginx + Mysql/maradis + php/jpg
3.2下载论坛压缩包
百度网盘:

3.3解压缩包
1.下载解压缩软件(unzip)
yum intsall -y unziip
2.解压zip
mkdir /lamb
mv Discuz_X3.5_SC_UTF8_20260504.zip /lamb
cd /lamb
unzip Discuz_X3.5_SC_UTF8_20260504.zip


3.4启用Nginx网络服务(需要提前下载),禁用其他网络服务(如: httpd)
1.禁用其他网络服务
systemctl disable --now httpd

2.启用nginx网络服务,并检查是否启用
usr/local/nginx/sbin/nginx #源码编译安装nginx,手动启动nginx服务
netstat -tunlp | grep 80 #-tunlp 选项来查看 TCP/UDP 端口监

3.5将解压后的upload目录下所有文件都移动到nginx的发布地址中
cd /lamb/upload #你存放解压缩文件的upload目录下
mv * /usr/local/nginx/html # 将目录中的所有文件都移动到nginx的发布目录下

3.6给文件设置权限,防止报错
为config、data、uc_client、uc_server四个目录赋予读、写执行权限
cd /usr/local/nginx/html #进入nginx发布目录下
chmod -R 777 config data uc_client uc_server #赋权
![]()
3.7安装php(端口是9000)软件,处理动态网页
yum install -y centos-release-scl #安装SCL仓库
vim /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo #修改核心仓库路径,改到阿里云
yum install -y rh-php73-php-fpm rh-php73-php-mysqlnd.x86_64 rh-php73-php-xml #安装软件包
systemctl enable --now rh-php73-php-fpm #设置开机自启
netstat -antlp | grep 9000 #查看服务是否开启
![]()
![]()
![]()

3.8安装并启动mariadb
yum install -y mariadb-server mariadb
systemctl enable --now mariadb

3.9修改论坛的nginx网络配置文件
vim /usr/local/nginx/conf/nginx.conf
告诉网站的首页在哪里:


3.10检测nginx文件的语法,刷新并检测nginx网络
nginx -t #检测文件语法
nginx -s reload #刷新nginx
netstat -antlp | grep 80 #检测nginx端口


3.11打开论坛






更多推荐


所有评论(0)