系统安全设计与应用

服务器硬件基础

在这里插入图片描述

  • 刀片服务器每一个刀片都可以作为单独的服务器使用,分为全刀和半刀
  • 服务器按照厚度分类(4.445cm/U)
    • 1U
    • 2U
    • 3U
    • ……
  • 服务器的特点

image-20220221085814922

在这里插入图片描述

image-20220221103152097

  • RISC:速度快,占用空间小,功耗低

image-20220221105148866

image-20220221111749579

  • PCle扩展卡:可以外接显卡,和提高性能的扩展卡

一、CPU

image-20220221113523939

Linux查看CPU

  • lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Thread(s) per core:    1
Core(s) per socket:    1
座:                 2
NUMA 节点:         1
厂商 ID:           GenuineIntel
CPU 系列:          6
型号:              165
型号名称:        Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz
步进:              2
CPU MHz:             2591.999
BogoMIPS:            5183.99
虚拟化:           VT-x
超管理器厂商:  VMware
虚拟化类型:     完全
L1d 缓存:          32K
L1i 缓存:          32K
L2 缓存:           256K
L3 缓存:           12288K
NUMA 节点0 CPU:    0,1
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec arat pku ospke md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
  • cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 165
model name	: Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz
stepping	: 2
microcode	: 0xc8
cpu MHz		: 2591.999
cache size	: 12288 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 22
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec arat pku ospke md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
bogomips	: 5183.99
clflush size	: 64
cache_alignment	: 64
address sizes	: 43 bits physical, 48 bits virtual
power management:

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 165
model name	: Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz
stepping	: 2
microcode	: 0xc8
cpu MHz		: 2591.999
cache size	: 12288 KB
physical id	: 2
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 2
initial apicid	: 2
fpu		: yes
fpu_exception	: yes
cpuid level	: 22
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec arat pku ospke md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
bogomips	: 5183.99
clflush size	: 64
cache_alignment	: 64
address sizes	: 43 bits physical, 48 bits virtual
power management:
  • 外频匹配主板速度

image-20220221141843886

  • CISC:inerl i3 i5 i7 AMD r5 r7

二、内存

在这里插入图片描述

image-20220221221555074

image-20220221221604515

  • Cache:读取磁盘内容
  • Buffer:更快的写入磁盘

三、硬盘

image-20220221221645973

四、主板

在这里插入图片描述

五、BMC

在这里插入图片描述

虚拟化基础

一、虚拟化架构

image-20220223085809557

image-20220223090851445

  • 裸金属型虚拟化(原生架构)

    • Server
    • VMware ESXi //直接基于硬件
      • 如果电脑安装了多台ESXi,可以是使用VSophere来进行管理
  • Xenserver

  • 宿主型虚拟化(寄居架构)

    • PC
    • Workstation和Virtualbox都是基于Windows然后底层才是硬件
  • 操作系统虚拟化(容器技术)

    • Docker //docker是容器的一种但是不能代表容器

    • Podman(红帽)

    • 直接使用物理机资源,速度快,但是容易发生资源抢夺,通过LXC技术的cgroup/namesspace限制容器的资源限制,防止容器无限制的使用物理机资源

    • 本地运行Centos的容器系统,下载

      • docker pull centos/httpd
    • 创建centos的时候就可以限制占用的资源

    • create images

      • commit
      • dockerfile
  • 混合虚拟化 KVM,属于特殊类型的寄居架构

    • rhel5 kernel的核心 2.6.18

      • 5.4以前支持Xen
      • 之间同时支持
      • 6以后仅仅支持KVM
    • rhel6 kernel的核心 2.6.32

    • rhel7 kernel的核心 3.10.0

    • rhel8 kernel的核心 4.18.0

    • Linux------xen/kvm-------Windows10

    • Windows10--------VMware-------Linux

    • 需要修改内核,通过KVM技术虚拟出一台Windows

  • linux安装虚拟机

    • xen/kvm为两种解决方法,这时候为xen/kvm为VMM

在这里插入图片描述

1、全虚拟化KVM

Ring0 1 2 3 标识CPU的运行级别,0级别最高

  • 架构和虚拟化创建都在Hypervisor

  • ring3为用户经常使用的空间用户态

  • ring0内核态

  • 需要提权就需要从用户态切换到内核态,变向提权

  • 可以控制比自己权限低和本身自己

  • ring 1和 ring 2为驱动

  • VMM负责捕获异常,应用越权

  • 全虚拟化:VMM做异常捕获 、翻译给硬件、模拟,让虚拟机认为自己是物理机 =====两种模式都支持

2、半虚拟化XEN
  • 只做了翻译工作

  • XEN需要修改内核,修改Guest OS,修改内核所以代码需要公开,所以说不可以安装win10

  • 修改内核为了替换掉不能虚拟化的指令

  • 明确告诉系统是虚拟机,通过hypercall直接和底层虚拟化进行通信

  • 效率是要高于全虚拟化的,省去了两个工作

3、Xen VS KVM(半虚拟化 VS 全虚拟化)

在这里插入图片描述

  • DomU受Dom0控制

  • Dom0:特权虚拟机

  • 基于KVM加QEMU技术,使得虚拟机速度非常接近物理机,实现全虚拟化

  • QEMU可以作为一种托管

image-20220223111722159

  • KVM底层是Linux属于寄居
  • XEM底层可以是Linux或者hardware就可以属于寄居或原生
  • Xen支持虚拟化和半虚拟化
  • Xen由于安全性所以的调用都需要Dom0通过
  • 前端驱动,后端驱动作用类似于大使馆,需要通过驱动来进行交互,一次同意之后不需要再次申请

image-20220223140819143

hardware        硬件设备
hostOS		物理机上的操作系统
hypervisor 别称VMM  可以基于底层操作系统,也可以将物理硬件作为底层,虚拟成虚拟化的资源,根据需求
3、硬件辅助虚拟化
  • Intel

image-20220223143832406

  • IO-through速度最快,但是需要底层硬件支持

二、虚拟化开源主流技术

image-20220223144127668

image-20220223145833607

三、容器

2008 Linux容器 LXC

2013 Docke底层依赖于LXC技术

四、虚拟化

1、Xen

剑桥大学研发

内核时定制的

首先安装Dom0,由Dom0控制DomU,Dom0类似于防火墙,缺点是因为都经过Dom0,所以速度较低

2、KVM

红帽收购

5.0到6.0版本之间Zen和KVM全部支持

6.0版本以后仅提供KVM虚拟机制

目录文件结构与管理

一、系统目录结构和文件属性

wc

行数   关键词  大小
创建一个账户时
  1. /home/username
  2. /etc/passwd /etc/shadow
  3. /var/spool/mail/username
useradd -r:删除用户的同时删除用户家目录
不加-r默认只删除第二个

/etc/skel/:里面存放模板,每建一个用户的家都要给一套模板

rm -rf /home/test

rm -rf /var/spool/mail/test

  • boot目录:内核文件、驱动
  • dev目录:设备、存储
    • c表示特殊设备
    • b表示块设备
  • home目录:用户家目录
  • etc目录系统启动、用户管理、规则配置文件
  • lib目录:内核模块文件,32位库,内核模块在/lib/modules
  • media目录:rhel6临时挂载设备,rhel7开始以后放在/run/media/username
  • mnt目录:临时挂载点
  • proc目录:基于内存展示信息的目录
    • 数字代表进程
    • 其他的代表和内核相关的文件
    • 不可以直接写入文件
  • sys目录:存放主机硬件信息,虚拟化信息
    • power : 电源管理
    • 也没有办法创建文件夹
  • tmp目录:类似于bin 10天自动删除
    • 针对普通账户临时文件存放,面向所有人
    • 备份放在tmp里,可以实现超时自动删除
    • /usr/lib/tmpfiles.d/tmp.conf 针对tmp的监控文件

image-20220225085458477

  • var目录:业务数据
    • /var/tmp目录:类似于sbin 30天自动删除
      • 面向系统程序和超级用户
    • /var/log目录:大部分的日志
    • /var/lib目录:服务或应用相关的业务数据
  • usr目录:用户自定义文件夹,主要用于软件安装
    • 类似于 windows 下的 program files 目录。
/bin:
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。

/boot:
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。

/dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

/etc:
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。

/home:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。

/lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。

/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。

/opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc:
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin:
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。

/selinux:
 这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv:
 该目录存放一些服务启动之后需要提取的数据。

/sys:

这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。

sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp:
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。

/usr:
 usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

/usr/bin:
系统用户使用的应用程序。

/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:
内核源代码默认的放置目录。

/var:
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

二、查看信息

查看cpu

cat /proc/cpuinfo

查看mem

cat /proc/meminfo

查看分区

cat /proc/partitions

文件系统

5 ext3

6 ext4

基础指令

ls----显示目录文件

-d  查看目录
-a  隐藏文件和目录
ls -d .* 		//只查看隐藏文件

pwd----显示当前工作目录

cd----切换工作目录

cd ..  //回到父目录
cd -   //回到上一次工作过的目录z

touch----创建文件,更新文件时间戳

-a			//仅修改“读取时间”  atime
-m			//仅修改"修改时间"	 mtime
-d			//同时修改atime和mtime

mkdir----创建目录

-p			//递归创建目录或者子目录

rmdir----删除空目录

rm----删除文件

-r    		//递归删除
-f			//强制删除
普通用户不显示是否删除

mv----移动,为文件或目录重命名

mv 源文件路径 目标路径

-b   若存在同名文件,覆盖前备份原来的文件
-f   强制覆盖同名文件

more---- 分页查看

显示百分比
-s   可以让多行空行统一变为一行 

常用指令与VIM使用

一、指令分类

​ 指令分为内部指令和外部指令

  • 内部指令:Shell自带的命令,比如cd、history,内部命令是不可删除的
  • 外部命令:一些软件安装后添加的命令,如is、cp,外部命令可以根据安装包或指令的路径删除

二、获取帮助信息

  • man 命令字

    无需区分内部或者外部
    可以根据/进行全文搜索
    n为下一个,q退出
    
  • help 内部命令

三、常用命令

1、more
  • 简介

    /可以搜索,但是没有对应的回执分页查看,显示百分比,看到最后一行自动退出(适用于翻页快速浏览),查看二进制文件只能使用more
    
  • 语法格式

    more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
    
  • 参数

    -s:多行空行变为一行
    
  • 适用于

    • 翻页快速浏览
    • 查看二进制文件
2、less
  • 简介

    less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。hui
    上下方向键可以一行一行的查看,空格可以翻页
    /搜索有对应的回值
    n向下,不会自动退出
    
  • 语法格式

    less [参数] 文件 
    
  • 参数

    -N 显示每行的行号
    -i 忽略搜索时的大小写
    
  • 适用于

    • 快速查找
3、head
  • 简介

    head 命令可用于查看文件的开头部分的内容,默认为 10,即显示 10 行的内容。
    
  • 语法格式

    head [参数] [文件]  
    
  • 参数

    -n<行数> 显示的行数。
    
4、tail
  • 简介

    tail 命令可用于查看文件的结尾内容,默认为10,即显示10行内容。
    
  • 语法格式

    tail [参数] [文件]  
    
  • 参数

    -f 常用于查阅正在改变的日志文件。
    
5、grep
  • 简介

    过滤文件内容
    
  • 语法格式

    grep [参数][搜索内容][文件或目录...]
    
  • 参数

    -v  取反,显示不存在关键词的行
    -n	显示关键词的行数
    -i	搜索时忽略大小写
    -AX X为数字,表示搜索的同时显示关键词后X行
    -BX X为数字,表示搜索的同时显示关键词前X行
    -c	只显示匹配行的数量
    
6、du
  • 简介

    显示目录或文件的大小。
    
  • 语法格式

    du [参数] [文件]  
    
  • 参数

    -s 	显示汇总信息,总目录
    -h	以人性化方式显示大小
    
7、wc
  • 简介

    统计文件内容计算字数。
    默认显示信息
    	行数、单词数量、字节数
    
  • 语法格式

    wc [参数] [文件]  
    
  • 参数

    -l	显示行数
    -w 	统计单词数
    -c	统计大小
    
8、alias
  • 简介

    设置指令的别名
    
    建立时有三种方式
    	1、在当前终端新建别名,只有当前终端生效,退出终端后失效,针对测试时使用
    	2、在当前用户的家目录中,找到隐藏文件bashrc(~/.bashrc),在文件中添加alias,再次登录时生效,只针对当前用户
    	3、在/etc/bashrc文件中,添加alias,全局生效,所有用户都可以调用
    
    用户登录时必须加载的初始化文件bashrc
    使用命令:srouce ~/.bashrc   可以临时重新加载文件,不需要重新登录,重启系统,则可让文件生效
    
    切换用户不具备退出用户的条件,需要exit或者ctrl+d才可以完全退出
    
  • 语法格式

    alias 别名='指令名称+选项'
    
  • unalias

    移除别名
    
9、find
  • 简介

    用来在指定目录下查找文件。
    因为find对管道支持比较弱,所以可以借助exec扩展选项(exec后面添加进一步处理的结果)
    
  • 语法格式

    find 指定目录 选项 关键词 
    find 指定目录 选项 关键词 -exec 其他命令 {} \;
    	-exec 通常需要和\;一起使用
    
  • 参数

    -name 根据文件名查找
    -type	根据文件类型查找
    	f:普通文件
    	d:目录
    	b:块设备
    	c:字符设备
    -perm	匹配权限
    -user	匹配所有者
    -group	匹配所有组
    -nouser	匹配无所有者文件
    -nogroup	匹配无所有组文件
    -maxdepth	需要查找目录的深度,需要查找的是几级目录
    
  • 综合使用

    mkdir /tmp/find;find /etc/ -size +1M -exec cp -a {} /tmp/find/ \;
    									把文件复制到/tmp/find目录下
    
10、gzip/gunzip
  • 简介

    gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。默认压缩比为6.范围为1-9
    
  • 语法格式

    gzip [参数] [文件]  
    
  • 参数

    -[1-9]	指定压缩比
    
11、bzip2/bunzip2
  • 简介

    bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始的文件。
    
  • 语法格式

    bzip2 [参数] [文件]  
    
  • 参数

    -k	bzip2在压缩或解压缩后,会删除原始的文件。若要保留原始文件,请使用此参数。
    
12、tar
  • 简介

    tar 是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。
    解压缩的时候可以不选选项,单独压缩文件的时候需要进入目录,写相对路径,否则的话会连带父目录一起压缩
    
  • 语法格式

    tar [参数] [文件]  
    
  • 参数

    
    

Linux系统下的软件安装

一、Linux系统下的软件分类

封装类型说明
rpm软件包扩展名为“.rpm” ,安装时可以使用rpm、yum、dnf,是别人定制好的
deb软件包扩展名为“.deb”,安装时候 apy-get
源代码软件包一般为“.tar.gz”、“.tar.bz2”压缩包,包含程序的源代码
附带安装程序的软件安装包压缩包内提供install.sh、setup等安装程序或以".bin"格式的单个执行文件提供
绿色免安装的软件包压缩包内提供已编译好的执行程序文件解压后的文件即可直接使用

二、应用程序的目录结构

文件类型保存目录
普通执行程序文件/usr/bin
服务器执行程序文件和管理程序文件(系统用户、程序用户)/usr/sbin
应用程序配置文件/etc
日志文件(需要重点关注、需要做好备份、存放标准日志/var/log
应用程序文档文件(说明手册)/usr/share/doc
应用程序手册页文件(怎么去使用)/usr/share/man

/usr/local/bin 本地增加的命令

三、挂载光盘

  • 一次性挂载

    • mkdir /mnt/cdrom
    • mount /dev/sr0/ /mnt/cdrom
  • 永久挂载

    • vim /etc/fstab

    • 在最后一行添加/dev/sr0/ /mnt/cdrom/ iso9660 defaults 0 0

    • mount -a将文件种没有挂载的设备挂载上,重新读取fstab文件,重新加载

四、源码包安装

源码包的优点

​ 1、获取最新的软件版本、即使修复BUG

​ 2、可以灵活定制软件功能

使用场景

​ 1、需要安装新版本的应用程序

​ 2、保证安全性

​ 3、需要为应用程序添加新的功能

源码包的安装过程

./configure --prefix=/opt/mlterm可以指定安装目录

image-20220301163450941

RPM包安装

  • 安装rpm包的网站

rpmfind.net

  • 撰写SPEC文档,就可以编写自己的RPM包

  • RPM包的命令格式

    • firefox-68.1.0-1.el7.centos.x86_64.rp,m
    • 软件名称-版本号-发行次数-硬件平台.扩展名
  • 必须在目录下才能进行安装,管理和升级,而yum则不需要

一、首先需要挂载ISO镜像

导入镜像文件,确保设备状态以链接

rhel6之前临时设备(硬盘、U盘)挂载点:/media/

rhel7以后临时挂载点为:/run/media/root

  • 新建光驱文件夹

    mkdir /mnt/cdrom         #mnt为临时挂载点
    
  • 通过mount进行挂载

    mount为一次性挂载行为
    mount /dev/sr0 /mnt/cdrom
    
  • 挂载完成以后,就可以通过rpm安装镜像里的rpm包

二、rpm常用功能

指令功能
-qa查询已安装软件的rpm包信息,列出包的版本
-qi 软件名列出已安装软件的详细信息
-qc 软件名查询包的配置文件 config file

三、rpm的拓展功能

选项作用
–replacepkgs无论软件包是否已被安装,都强行安装软件包
–test安装测试、并不实际安装
rpmbuild --recompile 包名安装指定的源包文件并解压缩原始源
rpmbuild --rebuild 包名安装指定的源包文件并解压缩原始源,编译并重新封装成i386.rpm的RPM软件包(二进制包文件)

四、故障维护

1、重建RPM数据库(初始化数据库)
rpm --initdb
rpm --rebuilddb
	//有时候rpm系统出了问题,不能安装和查询,大多数是这里出了问题
2、恢复missing的文件(扩展)
  • 第一种方法重新安装RPM包
    • rpm -ivh --replacepkgs name.rpm
  • 第二种方法
    • 把rpm包种对应的文件提取出来,拷贝到对应位置
      • rpm2cpio /mnt/cdrom/Fedora/RPMS/openssh-server-4.3p2-10.i386.rpm | cpio -idv ./etc/ssh/sshd _config
      • cp etc/ssh/sshd_config /etc/ssh/
      • 通过使用rpm2cpio命令可以将RPM软件包转换成cpio格式,cpio是一个标准工具,它用于创建软件归档文件和从档案文件中提取文件。其中选项“i”表示提取文件、“v”表示指示执行进程、“d“表示根据包中文件原来的路径建立目录,如果需要保持源文件的更新时间还可以增加选项”m”
      • -aV系统变化过的包文件
        • -V选项增加-a就可以列出当前系统中安装后,所有变化过的包文件,可以以此来检查文件包的完整性,安全性定
        • rpm -aV | grep bin(检查bin目录中变化过的文件)grep missing
      • -K安装包校验(–checksig) -v显示更多信息
        • rpm -K nmap.86_64.rpm 显示ok代表检验通过
3、RPM数据库维护(扩展)
查询RPM数据库构成,数据库位于/var/lib/rpm目录,数据文件格式为BerkeleyDB,使用file命令就可以列出其格式:
	file /var/lib/rpm/*
	查询可执行文件和DB哈希表,如果文件被删除或丢失,安装卸载都会出现问题
数据库备份(crontab rsync)
	tar cvfJ RPMDB-0916.tar.xz /var/lib/rpm
数据库恢复  --rebulddb
	1、重建之前一定要注意备份数据
	2、备份好后移除 /var/lib/rpm/__db* 文件
		rm /var/lib/rpm/__db.00* -f 或者
			mkdir /tmp/rpmdb
			mv /var/lib/rpm/__db* /tmp/remdb
	3、rpm --rebuilddb 添加-vv可以显示具体详细过程
	如果重建报错,首先通过移除/var/lib/rpm目录再试,依然报错则重新生成RPM数据
		rpm --rebuilddb
	4、新建一个目录重建数据库
		rpm --initdb --dbpath /rpm/rpmdb
	5、在目录下,再次执行重构数据库命令
		rpm --revuilddb
4、入侵后的常规操作
  • 对于要检查的文件或命令,找出它属于那个软件包

    • which name
    • rpm -qf /…
  • 使用-dump选项查看每个文件的信息,使用grep命令提取对于文件信息

    • rpm -ql --dump name | grep '文件路径'
    • 得到md5sum值
  • 检查实际的文件,查看内容是否被更改过:

    • ls -l /etc/sysconfig/sshd
    • md5sum /etc/sysconfig/sshd

Yum软件管理(DNF)

yum所在目录 /usr/bin/yum

noarch:不区分架构

rm -rf /run/yum.pid强制结束yum进程

一、仓库源的要求

  • 仓库源必须存放在/etc/yum.repos.d/目录中
  • 仓库源文件的后缀必须以‘.repo’结尾
  • 同一台主机,不要起相同名字的仓库源

二、repo文件格式

  • 本地yum源
[base] 	#仓库源名称,通常为字母和数字
name=my new repo cdrom	#name表示对yum源的描述,方便管理当前yum
#baseurl表示声明yum可以管理并使用rpm包的路径。可以基于本地,也可以基于网络,可以有多条。也可以使用单斜杠
baseurl=file:///mnt/cdrom	
		file://10.0.0.1/packages
enabled=1		#enabled代表当前仓库是否开启,1为开启,0为关闭,默认为开启
gpgcheck=0		#gpgcheck表示安装rpm包时,是否基于公私钥匹配包的安全信息,1为开启,0为关闭,默认为开启,企业中建议开启。实验中不需要

配置完成后执行yum clean all来清空缓存信息,使得repo文件生效

  • 阿里源
#1、下载阿里云的repo文件
wget http://mirrors.aliyun.com/repo/Centos-7.repo

#2、移动到/etc/yum.repos.d/目录下

#3、配置repo文件,防止出错
:%s/$releaseserver/7/g
#4、yum claen all && yum makecache

三、yum的拓展功能

命令作用
yum list <package_name>列出所有指定包名的信息
yum info <package_name>
rpm -qi <package_name>
rpm -qpi <package_name>
显示包的详细信息,rpm看到的信息更全面一点
yum install <package_name>安装指定的rpm包,d只下载不安装
etc/yum.conf里可以查看下载下来的位置
yum remove <package_name>移除指定的rpm包
yum search <package_name>根据关键词,在已发现的repo源种搜索包含关键词的rpm包
只要包的描述里有包名都会显示出来,寻找汇总信息,只要是相关的都会列出来
yum provides 命令根据命令,在已发现的repo源中搜索安装指令的rpm包,有的包不存在本地的话,可使用此命令查看命令是由那个包提供的,然后使用yum 下载包
yum-config-manager --enable cdrom开启cdrom仓库源
yum-config-manager --disable cdrom关闭cdrom仓库源
yum history list查看历史安装概要信息,如果需要详细信息。则yum history list 加对应的序号
yum history info 序号查看安装过程的详细信息(安装所需时间,安装用户等等)
yum history undo 序号可以进行反向操作。删除的变为安装
yum history redo 序号再次操作

四、制作本地YUM源

1、导入mplayer包
2、解压
3、createrepo mplayer/
  • 针对文件夹执行,文件夹里是rpm包,用于区分安装包的依赖关系,生成repodata
  • repomd.xml索引,关系源,yum用来管理包
  • 压缩包辅助xml做资源调用
4、编写repo源
[mplayer]
name=my video player
baseurl=file:/// (mplayer包路径)
enabled=1
gpgcheck=0

yum clean all

五、rar和unrar

  • rar
rar a -r 压缩包名称 压缩源路径
	a表示追加文件
	-r 创建压缩文件
  • unrar
unrar x 解压包名称

六、更新

1、更换7.9光盘

yum clean all ;yum makecache

yum update:查看有那些包可以更新

  • 更新kernel

    //与别的文件不同的是不直接进行覆盖,同时保留两颗核心,保证新核心出问题可以使用旧核心启动服务器
    
    yum update kernel
    
2、利用互联网升级
#1、下载阿里云的repo文件
wget http://mirrors.aliyun.com/repo/Centos-7.repo

#2、移动到/etc/yum.repos.d/目录下

#3、配置repo文件,防止出错,改为自己指定7版本,不需要匹配
:%s/$releaseserver/7/g
4、yum claen all && yum makecache
  • 使用yum update -y可进行系统升级

七、嵌套虚拟化安装

需要在虚拟机设置里把CPU虚拟化打开

1、安装底层环境
yum groupinstall Virtualization\ *
2、安装软件可以使用ssh远程发送
scp /mnt/cdrom/Packages/ba………………………… roor@192.168.1.1:/路径
3、卸载虚拟化
yum groupremove Virtualization\ *

账号与权限管理

一、账户分类

认证方式(pam):如果账户不存在,不进行密码验证,windows则进行双重认证

1、用户
  • 超级用户:UID=0 权限最大
  • 程序用户
    • RHEL5/6,UID=1-499;
    • RHEL7,UID=1-999(其中1-200为系统占用)
  • 普通用户
    • RHEL5/6,UID=500-65535;
    • RHEL7,UID=1000-60000
2、组
  • 基本组:默认组,有且今有一个,等号后面的是基本组
  • 附加组:可以没有,可以有一个或多个

二、passwd文件

student:x:1000:1000:student:/home/student:/bin/bash
   用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
字段1:用户名
字段2:密码占位符
字段3:UID
字段4:GID
字段5:用户描述信息(有的有有的没有,不会影响账户的正常使用)
字段6:用户的家目录
字段7:是否可以登录,户使用的shell
	/bin/bash:可以登录
	/sbin/nologin:不可登录,没用权限将指令交给系统

三、shadow文件

行数一定和passwd一样,而且每一行都相互对应

dent:$6$lIxALR.D$5pcK2QEJbpVXo.dbGTU7CU.wPnaDn8C0seeoIwdpv5BlsDN0LfF.UgkKPueAtNzvny7hh90NVNSsQnpY0b2RG1:18977:0:99999:7:::
字段1:用户名
字段2:通过二次SHA512加密后的密码
	加随机值再做二次哈希,密码相同值也是随机的,!!代表没设置密码,单个!代表密码锁定
	$0:md5加密
	$5:sha-256加密
	$6:sha-512加密
字段3:最后一次修改密码距离1970年1月1日的天数间隔
字段4:密码最短有效期(多久允许你再次更改密码,单位是天)
字段5:密码最长有效期(密码过期时间)
	99999代表永不过期
字段6:密码过期前多久警告
字段7:账户过期后,被锁定的天数
字段8:账号锁定时间距离元年的时间间隔
	date +%s:距离元年过去了多少秒
	date $(($(date +%s)/86400))
字段9:保留未分配

四、group文件

student:x:1000:
字段1、组名称
字段2、占位符
字段3、组的GID
字段4、当前组所包含的成员,成员与成员之间用,隔开

五、相关指令

命令功能
id显示当前用户信息0代表超级用户,后面加用户名也可查看其他用户的信息
groups默认显示当前组信息,后面加user显示对应账户的组信息
finger显示当前用户的详细信息
ac当前在线用户统计的时长信息,在线!在线!(ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连接的时间(小时),如果不使用标志,则报告总的时间)
lastlog显示最后登录用户的用户名、登录端口和时间
lastb登录的失败账户信息
1、useradd username
  • 新建账户时,系统会将/etc/skel中的目录及文件拷贝到新建用户的家目录中

    • 可以通过修改/etc/skel,从而实现创建新用户时家目录的格式,生成新生成用户按照模板适配,旧用户不做改变
  • /var/spool/mail中,新建用户名的邮箱

  • 在passwd、shadow和group文件中,增加用户的信息

-g 指定基本组
-G 指定附加组
-u 指定udi
//建立一个自己名字的用户要求基本组为simplexue,uid为10000
	useradd -g simplexue -u 10000 YangYubo  
2、userdel -r username
  • 不加-r选项,只删除passwd和shadow文件中的用户信息
  • 加-r选项,删除所有信息,包括邮箱、家目录
3、usermod

对已存在的账户做属性修改

  • -s:修改用户的登录Shell
    • usermod -s /sbin/nologin curry :不允许账户登录
    • usermod -s /bin/bash : 允许登录
  • -L 账户锁定
    • usermod -L james
      • 没有密码会卡在输入密码过程中
      • 锁定以后,/etc/shadow文件里第二栏密码位前面增加
  • -U 账户解锁
    • usermod -U james
4、passwd
  • root
    • 不需要知道当前的密码
    • 设置新密码的时候,不需要遵循密码规则
  • 普通用户
    • 需要知道当前用户密码
    • 设置新密码时,必须遵循密码要求
passwd -l james  //对james用户进行账户锁定
passwd -u james   //对james账户进行解锁
    //与usermod可以进行相互解锁
    
-S	:查看用户状态
   	正常状态:james PS 2022-03-08 0 99999 7 -1 (Password set, SHA512 crypt.)

    不设置密码:curry LK 2022-03-08 0 99999 7 -1 (Password locked.)
    
    账户被锁定:james LK 2022-03-08 0 99999 7 -1 (Password locked.)
    
--stdin  可以直接设置用户密码,不需要交互
    echo 123456 | passwd --stdin tom
5、groupadd
  • 增加新组,创建时通过-g可以指定GID
6、groupdel
  • 设置为基本组。则不允许删除
7、cut
  • 主要用于按列提取文本字符
-d	设置间隔符号
-f	设置需要查看的列数
	1-3:查看1到3列
	6,9:查看第6列和第9列

sort 	排序
unqi	过滤重复的选项

cat /etc/passwd | cut -d : -f 7  | sort | uniq
8、chage

用户创建时,默认的属性(比如UID、GID,是否会创建家目录、创建邮箱等)都是通过/etc/login.defs文件控制的,修改此文件的属性,会影响以后创建的所有用户,如果需要对现存的账户做属性修改,可以结束chage命令。修改用户的密码策略,也可通过编辑/etc/shadow文件需改(不推荐)

  • 修改用户的密码策略

    chage
    	-l:查看用户的密码策略
    	-M:密码保持有效的最大天数
    		chage -M 90 username  //将用户的密码有效期设置为90天
    	-m:密码可更改的最小天数
    	-w:用户密码到期前,提前收到警告信息的天数。
    	-E:帐号到期的日期。过了这天,此帐号将不可用。
    

    修改/etc/shadow:先保存后强制退出(wq!)

六、文件、目录权限及归属

  • 权限

    文件目录
    读取r读取文件内容列出目录内容
    写入w修改文件内容添加删除文件
    执行x运行程序、脚本进入目录
  • 归属

    • 属主:拥有该文件或目录的用户
    • 属组:拥有该文件或目录的组
1、相关命令
功能项命令实例作用
chmodchmod [权限] [文件或目录]更改文件或目录的权限
用户授权问题ls -l hello.txt查看文件的详细属性,对其进行解释
左边10位中的第一位代表文件类型d------目录,------普通文件,l----链接文件
左边10位的后9位代表权限前三位代表文件所有者的权限(用u表示)中间3位代表文件所在组的权限(用g表示)后三位代表其他组的权限(用o表示)
权限rwx的含义r----4----可读,w----2----写,x----1----可执行
chmod u+x hello.txt为hello.txt文件的所有者添加可执行权限
chmod u-w hello.txt为hello.txt文件的所有者去除可执行权限
chmod g-r hello.txt为hello.txt文件的所在组去除可读权限
chmod o+w hello.txt为hello.txt文件的所在组的其他组添加可写权限
chmod a+w hello.txt为所有三种角色添加可写权限
chmod a+wx hello.txt为所有三种角色添加可写权限
chmod a-rwx hello.txt去除hello.txt的所有权限(此时仅有root可以编辑)
chmod 777 hello.txt将hello.txt的权限设置为rwxrwxrwx
chmod 643 hello.txt将hello.txt的权限设置为rw-,r–,-wx
chmod 777 /opt/test将目录/opt/test的权限更改为777
chmod -R 755 /opt/test将目录/opt/test及其下所有的文件和子目录的权限更改为755
  • chown
即可单独修改属主、属组,也可同时修改

chown 属主:属组 file/directory
chown :属组 file/directory
chown .属组 file/directory
  • chgrp

    只能修改属组
    
    chgrp 属组  file /direvtory
    
2、相关知识
  • 只要用户目录有对应的权限。那么在此目录内,用户可以删除、修改root的文件
  • 文件目录权限为rwx
    • 针对文件
      • r表示可以打开和读取文件
      • w表示可以对文件内容写入修改(但不能删除,除非文件的父目录有对应的权限)
      • x表示文件可执行
    • 针对目录
      • r表示可以列出目录内容
      • w表示可以在目录中增删改查(即删除文件)
      • x表示可以进入目录,同时可以查看目录中文件的详细信息
  • 文件属性当中第十一个字段为扩展属性
    • .代表没有扩展属性
    • +代表设置了ACL扩展属性

七、扩展权限控制

因为默认的属主属组只能控制一个用户和组,无法针对每个用户做到权限控制,所以借助ACL属性,完善权限控制

文件系统的建立

一、MBR和GPT

image-20220309205243623
1、MBR(主引导记录)
  • 缺点

    • 空间限制:支持单块磁盘容量不超2.2TB
    • 最多只能创建4个主分区
  • 介绍

    • MBR(提供磁盘引导位置512 bytes

      • 446+64+2组成

        • 446:boot启动引导项(windows的c盘,Linux的boot)(80 20以前)

        • 64:分区(80到00结束)

          • 每一个分区至少有16个字节做描述信息(最多只能创建4个分区)
          • 默认主分区
          • 可以把最后一个设置为扩展分区,在里面创建逻辑分区
        • 2:结束位,引导结束(55 aa)

          image-20220309210848154
    • LBA64以下

      • 物理分区
      • 扩展分区(不可写数据,有且只有一个)
        • 逻辑分区(sda5)
2、GPT(全局唯一标识分区表)
  • 有备份信息,在启动的时候如果主要信息出错,会从备份信息中调取,重新引导,自动修复

  • 单块硬盘支持8ZB

  • Protected GPT:声明自己是GPT,防止MBR工具管理,造成损坏(512字节,也有引导作用)

  • LBA1:存放引导的位置,定义了分区在什么地方,安装那些系统,多系统如何进行引导,(备份为LBA-1

  • LBA2-LBA33:每个区域都有512个字节作为描述(4个Entry作为分区描述信息,每个占128个字节),可以支持最少128个分区(备份为LBA-33—LBA-2)

  • LBA34开始

    • 存放数据

二、磁盘基础

1、Linux将磁盘和分区光驱等设备表示为文件

image-20220309214019446

  • /dev为设备文件存放目录
  • sd表示usb、sata、scsi、或者sas接口磁盘设备
  • a表示第一个硬盘 第二个为b
  • 5表示第一个逻辑分区1234代表4个主分区
  • 在GPT中,只有主分区 ,从1开始编号
  • vda为嵌套虚拟磁盘

三、RHEL/CentOS默认使用的文件系统

1、EXT4/ext3/ext2:第四代扩展文件系统,用于数据的存储
  • 小文件小目录
2、XFS高性能的日志文件系统(使用率最高)
  • 空间只能扩大不能缩小(针对逻辑卷)
  • 针对大目录大文件(针对小文件小目录处理较为欠缺)
3、SWAP:交换文件系统,作用类似于虚拟内存
  • Windows虚拟内存必须存在,否则不能正常启动
  • linux虚拟内存为了临时弥补物理内存的不足

四、fdisk分区工具的使用

1、Fdisk(交互式)
  • MBR和GPT都适用

  • 传统磁盘分区实用程序

  • 利用基于提示的交互式用户界面

  • 必须以正在分区的磁盘为参数执行示例:fdisk /dev/sda

2、Parted(一次生效)/gdisk(交互式)
  • 偏向于GPT
  • 更强大但更复杂的分区实用程序
  • 支持GPT和2TB+分区
  • 可以检测、创建、删除、调整并移动包含swap、ext[2,3,4]、reiserfs和VFAT文件系统的分区

五、相关命令

1、lsblk
  • 介绍

    列出所有可用块设备的信息
    
    [root@localhost ~]# lsblk /dev/sda
    NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sda             8:0    0  20G  0 disk 
    ├─sda1          8:1    0   1G  0 part /boot
    └─sda2          8:2    0  19G  0 part 
      ├─rhel-root 253:0    0  17G  0 lvm  /
      └─rhel-swap 253:1    0   2G  0 lvm  [SWAP]
    设备名 内核识别的主要次要代码 是否可卸载 容量 只读 类型 挂载点
    disk:表示硬盘
    

part:分区
lvm:逻辑卷



#### 2、smartctl

- 介绍

监测磁盘健康情况


- 选项

-i 显示设备的身份信息(SN厂家等信息)
-a 显示设备的全部SMART信息
-x 显示设备的详细信息
-H 查看磁盘的健康状态


#### 3、`df -Th`查看目前已挂载的设备



#### 4、`tune2fs`

- ```
tune2fs -l /dev/sdb1

- 查看ext文件系统的详细信息
Block size:分配的单元大小
5、xfs_info
  • 查看xfs文件系统

    [root@localhost mnt]# xfs_info /dev/sdb2
    meta-data=/dev/sdb2              isize=512    agcount=4, agsize=32000 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0 spinodes=0
    data     =                       bsize=4096   blocks=128000, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal               bsize=4096   blocks=855, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, extents=0
    
6、e2lable
  • ext指定别名
7、xfs_admin
  • xfs指定别名、UUID

    xfs_amdin -L NEWNAME /dev/sdb2
    
8、blkid
  • 查看所有已使用或已挂载的设备(已创建但是未格式化不显示)
[root@localhost ~]# blkid
/dev/sdb1: UUID="598aa9e9-f6b4-487a-bb49-3aaa65e7d843" TYPE="ext4" 
/dev/sda1: UUID="fa261355-f075-4d1c-b4ce-3f09a1a6a86d" TYPE="xfs" 
/dev/sda2: UUID="EWQp7B-Czh2-6UPs-lAWU-Et0F-AK7p-oumI1j" TYPE="LVM2_member" 
/dev/sr0: UUID="2020-02-25-11-40-31-00" LABEL="RHEL-7.8 Server.x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/mapper/rhel-root: UUID="7638f242-36fe-440f-ae0f-f5c426fb2cc7" TYPE="xfs" 
/dev/mapper/rhel-swap: UUID="643718fe-22fb-4c8a-9472-ae77da5297e9" TYPE="swap" 
/dev/sdb2: LABEL="NEWPART" UUID="912be1be-569b-43c3-b05b-a890ae9c1fea" TYPE="ext4" 
9、mount
  • 格式

    mount -t 文件系统类型 -o [可选参数]文件系统    挂载点
    
  • 功能

    该命令用来把文件系统挂载到系统中
    
  • 常用选项

    -t  文件系统类型用于指定欲挂载设备的文件系统类型,常见的类型如下(现在不需要手动指定)
    	xfs		RHEL7中标准的Linux文件系统
    	ext4	RHEL6中标准的文件系统格式
    	msdos	MD-DOS分区的文件系统,即FAT16
    	vfat	Windows分区的文件系统,即FAT32
    	nfs		网络文件系统
    	iso9660	光盘的标准文件系统
    	ntfs	Windows NT的文件系统
    	auto	自动检测文件系统
    
    fstab里编辑
    -o 	[可选参数] 用于指定挂载文件系统时的选项,常用的可选参数及其含义如下
    	defautls 打开选项rw、suid、dev、exec、auto、nouser、和async
    	
    	a 		安装/etc/fstab文件中描述的所有文件系统
    	auto	一般与-a选项一起由启动脚本使用,表明应安装此设备。与此选项相对的是noauto
    	noauto	不在系统启动时加载该文件系统
    	ro		将文件系统设置为只读模式
    	rw		将文件系统设置为可读、可写模式
    	dev		允许使用系统上的设备节点,对设备的访问完全由对磁盘上设备节点的访问权决定,这是一个安全隐患,因此对可移动文件系统采用nodev选项安装
    	async	改选项以异步I/O方式保证程序可以继续执行,而不是等待硬盘写操作,这可以大大加速磁盘操作,但是不可靠,与之相对应的是sync,特点是速度较慢但是比较可靠(存放缓存中)
    	sync	不对改设备的写操作进行缓存处理,这可以防止在非正常关机的情况下破坏
    	exec	该选项通知内核允许程序在文件系统上运行,与他对应的是noexec,他告诉内核不允许程序在文件系统上运行,通常用于安全防护措施
    	user	允许普通用户安装和卸载文件系统,它包含nodev、noexec、nosuid等选项,所以如果suid参数后面跟着user参数话,suid选项将被关闭
    	
    	suid	允许setsuid、setsuid生效,出于安全考虑,常用nosuid
    	remount	该选项允许不中断mount为已安装的文件系统改变特性,不中断文件系统的前提下让文件重载
    	quota	强制在该文件系统上进行磁盘配额限制
    
    mount -o remount,ro,sync /dev/sdb5 /mnt/yyb
    
8、命令对比
  • cat /proc/partitions
基于内核和内存的,查看内核是否识别了当前的新的分区信息
开头信息为内核识别码

fdisk创建完就会有
  • fdisk -l
查看硬件设备,存储相关信息、空间、分区、起始扇区、类型

显示总体信息
  • df -Th
查看所有已挂载的文件系统

挂载以后显示
  • blkid
查看所有已经制作好的文件系统,包含UUID(针对存储设备),只要格式化以后就能查看到

格式化以后显示
  • lsblk
查看当前的识别信息,相对于cat来说更加详细

七、创建磁盘分区

1、添加并识别硬件设备
  • fdisk -l 可以看到新添加的设备
  • ls -l /dev/sdb
2、创建分区并识别分区
  • fdisk /dev/sdb

    • 选项
    n:创建新的磁盘分区
    d:删除已存在的磁盘分区
    l:查看支持的磁盘分区类型
    t:转换分区类型
    p:查看磁盘的分区信息
    w:保存修改并退出
    q:不保存直接退出
    
  • partprobe /dev/sdb :刷新,可以使kernel重新读取分区表。如果不添加路径,默认刷新整个磁盘分区

    • rhel5和rhel7识别新分区通过partprobe识别,rhel6识别新分区通过partx识别
    • 刷新后,可以查看文件是否识别新分区cat /proc/partitions
3、制作文件系统
  • mkfs.ext4 /dev/sdb1mkfs -t ext4 /dev/sdb1

    [root@localhost ~]# mkfs.
    mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.vfat    
    mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.xfs   
    
    ext类型创建好以后,自动生成一个名为“lost+found”的文件,用来做文件恢复
    mkfs.fat、mkfs.msdos、mkfs.vfat都是针对Windows的(其实都是执行的mkfs.fat)
    
4、制作磁盘标签(option)
  • e2abel /dev/sdb1 别名
5、创建挂载点
  • mkdir /mnt/ext

    mkfs.ext4 -L 别名 /dev/sdb1		//格式化的时候起别名
    
  • blkid:查看所有已使用或已挂载的设备(已创建但是未格式化不显示)

    [root@localhost ~]# blkid
    /dev/sdb1: UUID="598aa9e9-f6b4-487a-bb49-3aaa65e7d843" TYPE="ext4" 
    /dev/sda1: UUID="fa261355-f075-4d1c-b4ce-3f09a1a6a86d" TYPE="xfs" 
    /dev/sda2: UUID="EWQp7B-Czh2-6UPs-lAWU-Et0F-AK7p-oumI1j" TYPE="LVM2_member" 
    /dev/sr0: UUID="2020-02-25-11-40-31-00" LABEL="RHEL-7.8 Server.x86_64" TYPE="iso9660" PTTYPE="dos" 
    /dev/mapper/rhel-root: UUID="7638f242-36fe-440f-ae0f-f5c426fb2cc7" TYPE="xfs" 
    /dev/mapper/rhel-swap: UUID="643718fe-22fb-4c8a-9472-ae77da5297e9" TYPE="swap" 
    /dev/sdb2: LABEL="NEWPART" UUID="912be1be-569b-43c3-b05b-a890ae9c1fea" TYPE="ext4" 
    
6、将分区信息写入文件系统分区表
  • vim /etc/fstab
    在这里插入图片描述

    1、表示待挂载的文件系统,挂载方式可以是设备路径、LABEL、UUID(推荐UUID)
    2、挂载点,设备使用后,从那个接入点使用磁盘空间
    3、文件系统类型,制作文件系统(mkfs)
    4、挂载时的磁盘参数,默认包含可读可写等
    5、是否对磁盘做dump备份,1表示备份,0表示备份
    6、是否对磁盘做fask检查,非0的正整数代表通过fack -a  ,1表示优先级最高、0代表不检查
    
  • 查看设备信息时使用blkid指令

  • mount -a

7、挂载文件系统

八、删除磁盘

虚拟机关机,移除完磁盘再还原快照

1、设备下线
umount /mnt/ext-2
2、编辑fstab,给对应的磁盘做注释
3、rm -rf /mnt/ext-2删除挂载点
4、fdisk /dev/sdb
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): d				//删除分区
Partition number (1,2, default 2): 
Partition 2 is deleted

Command (m for help): p			//查看状态

Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x4f79ea8d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      616447      307200   83  Linux

Command (m for help): w			//保存,建议先保存,再新建
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

partprobe /dev/sdb		//无论是创建还是删除都要刷新分区
cat /proc/partitions 	//查看状态分区消失

九、实验操作

1、建立ext类型
  • fdisk /dev/sdb

image-20220310165531493

primary:主分区
extended:扩展分区
(显示已使用多少个,剩余多少个)
Select:默认使用主分区
Partition number:默认使用第几个盘符,默认回车为使用第一个盘符
First sector:默认的起始扇区,默认从2048开始
Last sector:结束扇区
p:确认信息
w:保存退出
  • 刷新磁盘分区表partprobe
partprobe /dev/sdb
刷新磁盘内核,把内核的信息更新
刷新完cat /proc/partitions ,如果显示刚刚的分区,则代表成功
  • 制作文件系统mkfs.ext4 /dev/sdb1

  • 挂载

    • 临时挂载

      mkdir /mnt/ext
      mount /dev/sdb1 /mnt/ext
      
    • 永久挂载

      vim /etc/fstab
      
      mount -a		//把没有挂载的设备进行挂载
      
      df -Th | grep -v tmpfs		//查看已挂载的设备
      
      
2、建立xfs文件系统
1、fdisk /dev/sdb

2[root@localhost ~]# mkfs.xfs /dev/sdb2 -f
mkfs.xfs: /dev/sdb2 appears to contain an existing filesystem (ext4).
mkfs.xfs: Use the -f option to force overwrite.			//-f进行强制覆盖
    
3、vim /etc/fstab

4、mkdir /mnt/xfs
    
5、mount -a
3、创建扩展分区
  • 总结

    创建Windows格式的磁盘分区,在以上操作步骤中,第二步建好分区,按“t”修改磁盘分区类型
    Windows的system ID 修改为“b”
    保存退出后,刷新磁盘分区,在创建挂载点,制作文件系统
    
  • 创建扩展分区

1、fdisk /dev/sdb
	不同的是划分完大小后,需要选项“n”新建磁盘分区
  • 创建逻辑分区
Command (m for help): n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)		//逻辑分区从5开始
Select (default p): l
Adding logical partition 5
First sector (1847296-10485759, default 1847296): 
Using default value 1847296
Last sector, +sectors or +size{K,M,G} (1847296-10485759, default 10485759): +500M
Partition 5 of type Linux and of size 500 MiB is set

Command (m for help): p

Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x4f79ea8d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      616447      307200   83  Linux
/dev/sdb2          616448     1845247      614400   83  Linux
/dev/sdb3         1845248    10485759     4320256    5  Extended
/dev/sdb5         1847296     2871295      512000   83  Linux
    
Command (m for help): t		//转换分区类型
Partition number (1-3,5, default 5): 
Hex code (type L to list all codes): b	// W95 FAT32

WARNING: If you have created or modified any DOS 6.xpartitions, please see the fdisk manual page for additionalinformation.

Changed type of partition 'Linux' to 'W95 FAT32'

Command (m for help): p	//查看

Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x4f79ea8d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      616447      307200   83  Linux
/dev/sdb2          616448     1845247      614400   83  Linux
/dev/sdb3         1845248    10485759     4320256    5  Extended
/dev/sdb5         1847296     2871295      512000    b  W95 FAT32

Command (m for help): w		//保存
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

    
partprobe /dev/sdb
    
[root@localhost ~]# cat /proc/partitions 
major minor  #blocks  name

   8       16    5242880 sdb
   8       17     307200 sdb1
   8       18     614400 sdb2
   8       19          0 sdb3
   8       21     512000 sdb5
   8        0   20971520 sda
   8        1    1048576 sda1
   8        2   19921920 sda2
  11        0    4444160 sr0
 253        0   17821696 dm-0
 253        1    2097152 dm-1
//已知分区的类型
Command (m for help): l

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So(虚拟内存) c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            java
1e  Hidden W95 FAT1 80  Old Minix   
                                                                           
b  W95 FAT32 (windows推荐使用)
83  Linux(创建Linux分区)
82  Linux swap / So(虚拟内存)
8e  Linux LVM(逻辑卷)+
da  Non-FS data (隐藏分区)
  • 格式化v

    mkfs.vfat -n winfs /dev/sdb5			//格式化的同时指定别名
    
    vim /etc/fstab 
    mkdir /mnt/win
    mount -a
    

十、创建虚拟内存

  • 分区类型的swap(效率高弹性差)
    swap虚拟内存创建,在以上操作步骤中
    第二步,建好分区,按"t"修改磁盘分区类型
    swap的system ID 修改为‘82’
    制作虚拟内存的指令为mkswap
    
    swap在永久挂载的时候,没有挂载点,fstab文件格式如下
    	/dev/sdb3 	swap		swap		defaults		0 0
    
    开启虚拟内存的指令为swapon -a,将开启所有fstab文件中的swap分区
    关闭使用swapoff,如果只是关闭一个分区。swapoff /dev/sdb3,关闭所有swapoff -a
    
    
    查看虚拟内存空间变化可以使用free -m
    	free -s 10 每十秒刷新一次内存使用情况
    	
    swapon -s	显示详细信息
    Filename				Type		Size	Used	Priority
    /tmp/swap               file	    1048572	0	    -2
    /dev/dm-1               partition	2097148	0	    -3
    Priority:优先级
    
    
    
  • 文件类型的swap(效率低弹性高)
    dd id=/dev/zero of=/tmp/swap bs=1M conut=1024
    
    #格式化
    mkswap /tmp/swap(不使用UUID)
    
    swapon -a		#开启swap
    
    swapon -s		#查看swap信息
    
    #编辑fstab文件
    /tmp/swap 	swap		swap defaults 	0 0(not UUID)
    
    blkid/lsblk --fs 
    

cat /proc/partitions


文件创建出来的swap通过blkid、lsblk、cat /pro/partitions是看不出来的




### 十一、下线设备

- 文件系统是一个块设备,挂载点必须是一个已经存在的目录,一般在挂载之前使用mkdir命令先创建一个新的文件系统,如果把现有的目录当作挂载点,这个目录最好为空目录,否则新安装的文件系统会暂时覆盖安装点的文件系统,该目录下原来的文件将不可读写,所以不能将整文件系统挂载到根系统上,挂载外围设备时一般将挂载点放到`/mnt`下

- 设备下线

```java
//假如有用户在使用设备

fuser -va /mnt/xfs/
-a:显示全部信息
-v:显示详细信息

                     USER        PID ACCESS COMMAND
/mnt/xfs:            root     kernel mount /mnt/xfs
                     james      6021 ..c.. bash
//得出结论 james在使用bash
  • 管理方法
kill -9 6021		//强制结束
    
fuser -km  /mnt/xfs
 
-k:kill
-m:
    
然后umount /mnt/xfs  就可以正常执行结束

磁盘配额(quota)

  • 管理员可以为用户做能使用的磁盘空间进行配额限制,每一个用户只能使用最大配额范围内的磁盘空间
    • 对用户存储文件数量的限制
    • 对用户存储文件大小的限制
    • 删除数据,格式化数据删除的是block区域
    • 可以通过数据还原软件根据inode还原block区域的数据
      • shred :使用随机字符串进行文件覆盖

image-20220313095243961

  • 分配单元大小

    • 存放小型数据,如文本文档,建议使用默认4K
    • 存放大型数据,建议使用更大的单元大小(占用区域较小,文件连贯性强)

    image-20220313101400302

默认选择4096
默认为4096单位进行分配
没有占满将会浪费空间

一、EXT

1、配额说明
  • 配额只能针对普通用户和用户组,对root无效

  • 配额只能针对分区,不能针对某个目录(ext)

  • 即可限制block,也可限制inode

  • 查看当前磁盘有没有配额

    • mount | grep sdb1
      
      /dev/sdb1 on /mnt/ext type ext4 (rw,relatime,seclabel,quota,usrquota,grpquota,data=ordered)
      表示已经配额
      
2、前提条件
  • 内核支持

    grep CONFIG_QUOTA /boot/config-3.10.0-1127.el7.x86_64 
    ------------------------------------------------------------
    CONFIG_QUOTA=y
    CONFIG_QUOTA_NETLINK_INTERFACE=y
    # CONFIG_QUOTA_DEBUG is not set
    CONFIG_QUOTA_TREE=y
    CONFIG_QUOTACTL=y
    CONFIG_QUOTACTL_COMPAT=y
    
  • 系统安装quota工具

    rpm -qa | grep quota
    ------------------------------------------------------------
    quota-nls-4.01-19.el7.noarch
    quota-4.01-19.el7.x86_64
    
3、建立过程
①、挂载的同时需要为文件系统添加支持配额的选项

image-20220313104159297

//编辑完以后执行
mount -o remount /mnt/ext/		//刷新,重新挂载,如果不成功的话就先umount,在mount -a

mount | grep sdb1查看
②、在分区中生成配额文件quota.user(针对用户)和quota.group(针对组)

image-20220313104526348

quotacheck -augcv
	-a:扫描所有支持配额的分区
	-u:扫描磁盘计算用户所占用的文件数
	-g:扫描磁盘计算组所占用的文件数
	-c:创建配额文件aquota.user和aquota.group
	-v:显示详细信息
③、为用户建立配额信息

image-20220313104708605

edquota -u james

edquota -g name
前三个字段表示针对文件空间限制,后三个字段表示针对文件数量限制(0表示没有限制)

1、表示用户在文件系统中已占用的空间统计
2、用户在创建文件时,文件空间的警告阈值,超过数值则提示,单位KB
3、表示用户的空间限制,最大使用的磁盘空间,单位为KB

4、用户已创建文件的数量统计
5、用户传播关键文件数量的警告阈值
6、用户创建文件数量最大限制

主要针对2、3、5、6做设置

-p user1 user2 可以将user1的配额设置复制给user2
④、开启/关闭配额功能
  • quotaon/quotaoff

  • quotaon -a

    • -a表示开启支持配额功能所有分区

    • 还需要增加权限

      chmod 777 /mnt/ext/
      
      setfacl -m u:james:rwx /mnt/ext/
      
⑤:配额查看
  • quota -u 用户名:只查看用户的配额信息

    image-20220313111812449

    grace:7天倒计时,如果七天只能降到软限制一下,保持使用,没有降到软限制一下,软限制将会替代硬限制
    
  • quota -g 组名:之查看组的配额信息

  • repquota 设备:查看设备内的配额信息

    image-20220313112656238

4、关闭quota限制
编辑fstab文件,删除对应选项
quotaoff -a关闭
umount /mountpoint下线设备
mount -a重新挂载

二、XFS

xfs_quota

-x:启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令都可用
-c:直接调用管理命令,如limit,report等
1、针对用户和组做quota限制
  • 挂载的同时需要为文件系统添加支持配额的选项

    #fstab
    /dev/sdb1 /mnt/xfs 		xfs		defaults,usrquota(uquota,quota),grpquota(gquota)	0 0
    

    配额限制即可通过mount指令一次性添加,也可写入fstab,永久使用

  • 设备启用配额,需要将文件系统重新挂载

    umount /mnt/xfs
    mount -a		//重新挂载
    mount -o remount /mnt/xfs		
    
    查看是否成功
    mount | grep sdb1
    
  • 对用户设置配额

    xfs_quota -x -c "limit -u/g bsoft=60M bhard=80M isoft=8 ihard=10 username/groupname" /mountpoint
    
    
    xfs_quota -x -c "report -u/gbih" /mountpoint		//查看报告,类似于repquota
        
        b:块设备
    	i:节点数
        h:人性化显示
    
2、针对项目(目录)做quota限制
  • 挂载的同时需要为文件系统添加支持配额的选项

    //fstab
    /dev/sdb2 /mnt/xfs 	xfs		defaults,prjquota,usrquota		0 0	
    

    配额限制即可通过mount指令一次性添加,也可写入fstab,永久使用

    • 设备启用配额,需要将文件系统重新挂载

      umount /mnt/xfs
      mount -a(或mount -o remount /mnt/xfs)
      
      查看是否成功
      mount | grep sdb1
      
  • 对单一目录设置配额(project)

    调用project命令创建一个project,要将grpquota的参数取消,然后加入prjqupta

    ①、指定专用标识符与目录的对应在 /etc/projects

    echo "32:/mnt/xfs" >> /etc/projects
    	"项目编号:针对配置的目录"
    	
    	项目编号不可重复
    	projects文件不存在,需要手动输入
    

    ②、规范项目名称与标识符的对应在/etc/projid

    echo "yangyubo:32"	>> /etc/projid
    	"项目名称:项目编号"
    	
    项目名称和项目编号可以随便写,但是projid的项目编号必须与projects里的项目编号相同
    

    ③、初始化项目名称

    xfs_quota -x -c "project -s 项目名称"
    	-s:表示启动
    	
    //输出信息
    xfs_quota -x -c "print" /mnt/xfs
    
    //限制
    xfs_quota -x -c "limit -p bsoft=40M bhard=50M 项目名称" /mnt/xfs
            
    //查看设备资源信息
    xfs_quota -x -c "report -pbin" /mnt/xfs
    
  • 查询某个project的配额使用情况

    xfs_quota -x -c "quota -p 项目编号" /mnt/xfs
    
  • 列出目前系统的给个文件系统,以及文件系统的quota挂载参数支持

    xfs_quota -x -c "print"xi
    
  • 暂时取消XFS文件系统的quota限制功能

    xfs_quota -x -c "disable -up" /mountpoint
    
    #可以查看打开了那些功能
    xfs_quota -x -c "state" /mountpoint
    
    
3、移除XFS文件系统的quota限制
#如何移除project,先off完全关闭配额限制,如想重开需先umount下线设备然后mount -a重新挂载才能启动,如果无需执行remove,不建议使用off,一般disable即可

	xfs_quota -x -c "off -up" /mountpoint
	
#remove必须在off下才可执行,删除配额限制

	xfs_quota -x -c "remove -p" /mountpoint
	
	umount /mountpoint
	编辑fstab文件
	mount -a
	xfs_quota -x -c "report -pibh" /mountpoint
	
#在使用state查看不显示状态

三、EXT和XFS的对比

设置流程选项EXT文件系统XFS文件系统
/etc/fstab参数设置usrquota/grpquotausrquota/grpquota/prjquota
quota配置文件quotacheck不需要
设置用户/群组限制值edquota或setquotaxfs_quota -x -c “limit……”
设置grace timeedquota -txfs_quota -x -c “tim……”
设置目录限制值xfs_quota -x -c “limt……”
观察报告repquota或quotaxfs_quota -x -c “report…”
启动与关闭quotaquotaon,quotaoffxfs_quota -x -c “enable/disable -up”
限制发送警告信给用户warnquota目前版本尚未支持

逻辑卷和磁盘阵列

一、 LVM概述

  • PV物理卷

    • 物理卷可以由整个磁盘也可以是独立分区转化而成

    • 物理卷包括了许多默认大小为4MB的PE基本单元(和Windows的分配单元大小差不多)

      image-20220314194040129
  • VG卷组

    • 卷组是由一个或多个物理卷组成的整体

      image-20220314193911338
  • LV逻辑卷

    • 从卷组中取出一部分空间,可以建立文件系统

      image-20220314194140193

二、LVM管理命令

功能物理卷(PV)卷组(VG)逻辑卷(LV)
扫描scanpvscanvgscanlvscan
建立createpvcreatevgcreatelvcreate
显示displaypvdisplayvgdisplaylvdisplay
删除removepvremovevgremovelvremove
扩展extendvgextendlvextend
缩减reducevgreducelvreduce

三、结构图

image-20220314195726638

四、实验操作

1、逻辑卷创建
①、LVM底层文件系统标签为8e
②、转换为分区并识别后
  • 将磁盘分区初始化为物理卷

    pvcreate /dev/sdb3
    
    可以使用pvs查看状态
      PV         VG   Fmt  Attr PSize   PFree  
      /dev/sda2  rhel lvm2 a--  <19.00g      0 
      /dev/sdb3       lvm2 ---  300.00m 300.00m
    
  • 将初始化的物理卷加入卷组

    vgcreate 卷组名	/dev/sdb3
    
    可以使用vgs查看
      VG     #PV #LV #SN Attr   VSize   VFree  
      rhel     1   2   0 wz--n- <19.00g      0 
      yangvg   1   0   0 wz--n- 296.00m 296.00m
    
    
  • 在已有的卷组中,创建逻辑卷

    lvcreate -L 300M -n 逻辑卷名 卷组名
    
    可以用lvs查看
      LV     VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      root   rhel   -wi-ao---- <17.00g                                                    
      swap   rhel   -wi-ao----   2.00g                                                    
      yanglv yangvg -wi-a----- 100.00m 
    
  • 可以进行格式化

    注意路径为卷组名称加逻辑卷名称

    mkfs.ext4 /dev/yangvg/yanglv
    
  • 设备挂载

    注意:不要股灾sdb3,需要挂载/dev/yangvg/yanglv

    fstab
    
    UUID="d5c79b44-12b8-408b-9fb4-5c05a97b04c5"             /mnt/lvm        ext4    defaults        0 0 
    
    
  • vgcreatelvcreate时,必须指定卷组和逻辑卷名称,逻辑卷指定大小

2、逻辑卷拉伸及缩小
①、卷组空间足够分配给逻辑卷时,拉伸LVM分为两步
  • 拉伸逻辑卷
  • 通知文件系统
EXT文件系统:
	lvextend(lvresize) -L +300M /dev/yangvg/yanglv		//拉伸逻辑卷
	resize2fs /dev/yangvg/yanglv			//通知系统
	lvresize即可扩大也可缩小
	+代表怎加300M
XFS文件系统(不支持缩小):
	lvextend -L 500M /dev/yangvg/yanglv
	xfs_growfs /mnt/lvm
	
	500M代表怎加到500M
②、卷组空间不够分配给逻辑卷时,拉伸LVM分五步
  • 新建磁盘分区或磁盘
  • 将新建磁盘或分区初始化为物理卷
  • 拉伸卷组
  • 拉伸逻辑卷
  • 通知文件系统

移除磁盘

一、移除普通设备

  • 如果不存在物理卷则跳过3-8
  1. df -Th | grep -v tmpfs查看已挂载设备
  2. umount /mnt/……下线设备
  3. 如果有逻辑卷则执行lvs啥看已存在的逻辑卷
  4. lvremove /dev/卷组名/逻辑卷名
  5. vgs查看卷组
  6. vgremove 卷组名删除卷组
  7. pvs查看物理卷
  8. pvremove /dev/删除物理卷
  9. fidsk删除对应分区
  10. partpaobe刷新磁盘分区表
  11. 编辑fstab

二、删除swap

  1. swapoff /tmp/swap关闭虚拟内存
  2. rm -rf /tmp/swap删除对应文件

alt=“image-20220314194140193” style=“zoom:67%;” />

二、LVM管理命令

功能物理卷(PV)卷组(VG)逻辑卷(LV)
扫描scanpvscanvgscanlvscan
建立createpvcreatevgcreatelvcreate
显示displaypvdisplayvgdisplaylvdisplay
删除removepvremovevgremovelvremove
扩展extendvgextendlvextend
缩减reducevgreducelvreduce

三、结构图

[外链图片转存中…(img-bYbZCJEO-1651546161236)]

四、实验操作

1、逻辑卷创建
①、LVM底层文件系统标签为8e
②、转换为分区并识别后
  • 将磁盘分区初始化为物理卷

    pvcreate /dev/sdb3
    
    可以使用pvs查看状态
      PV         VG   Fmt  Attr PSize   PFree  
      /dev/sda2  rhel lvm2 a--  <19.00g      0 
      /dev/sdb3       lvm2 ---  300.00m 300.00m
    
  • 将初始化的物理卷加入卷组

    vgcreate 卷组名	/dev/sdb3
    
    可以使用vgs查看
      VG     #PV #LV #SN Attr   VSize   VFree  
      rhel     1   2   0 wz--n- <19.00g      0 
      yangvg   1   0   0 wz--n- 296.00m 296.00m
    
    
  • 在已有的卷组中,创建逻辑卷

    lvcreate -L 300M -n 逻辑卷名 卷组名
    
    可以用lvs查看
      LV     VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      root   rhel   -wi-ao---- <17.00g                                                    
      swap   rhel   -wi-ao----   2.00g                                                    
      yanglv yangvg -wi-a----- 100.00m 
    
  • 可以进行格式化

    注意路径为卷组名称加逻辑卷名称

    mkfs.ext4 /dev/yangvg/yanglv
    
  • 设备挂载

    注意:不要股灾sdb3,需要挂载/dev/yangvg/yanglv

    fstab
    
    UUID="d5c79b44-12b8-408b-9fb4-5c05a97b04c5"             /mnt/lvm        ext4    defaults        0 0 
    
    
  • vgcreatelvcreate时,必须指定卷组和逻辑卷名称,逻辑卷指定大小

2、逻辑卷拉伸及缩小
①、卷组空间足够分配给逻辑卷时,拉伸LVM分为两步
  • 拉伸逻辑卷
  • 通知文件系统
EXT文件系统:
	lvextend(lvresize) -L +300M /dev/yangvg/yanglv		//拉伸逻辑卷
	resize2fs /dev/yangvg/yanglv			//通知系统
	lvresize即可扩大也可缩小
	+代表怎加300M
XFS文件系统(不支持缩小):
	lvextend -L 500M /dev/yangvg/yanglv
	xfs_growfs /mnt/lvm
	
	500M代表怎加到500M
②、卷组空间不够分配给逻辑卷时,拉伸LVM分五步
  • 新建磁盘分区或磁盘
  • 将新建磁盘或分区初始化为物理卷
  • 拉伸卷组
  • 拉伸逻辑卷
  • 通知文件系统

移除磁盘

一、移除普通设备

  • 如果不存在物理卷则跳过3-8
  1. df -Th | grep -v tmpfs查看已挂载设备
  2. umount /mnt/……下线设备
  3. 如果有逻辑卷则执行lvs啥看已存在的逻辑卷
  4. lvremove /dev/卷组名/逻辑卷名
  5. vgs查看卷组
  6. vgremove 卷组名删除卷组
  7. pvs查看物理卷
  8. pvremove /dev/删除物理卷
  9. fidsk删除对应分区
  10. partpaobe刷新磁盘分区表
  11. 编辑fstab

二、删除swap

  1. swapoff /tmp/swap关闭虚拟内存
  2. rm -rf /tmp/swap删除对应文件
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值