操作系统磁盘管理

2023-05-16

文章目录

  • 01.知识概述部分
  • 02.课程知识回顾说明
  • 03.磁盘管理知识体系结构
  • 04.磁盘管理物理结构
  • 05.磁盘管理分区操作
            • 问题:新添加硬盘无法识别
        • 分区操作1:fdisk (操作时可看10点的视频)
            • mkfs.xfs /dev/sdb1 格式化
            • 扩展:fdisk命令划分2T以上分区,输入大小时需要整数,比如+2T
        • 分区操作2:parted
  • 06.磁盘管理逻辑结构 LVM
            • IBM服务器阵列配置步骤
            • lvm逻辑卷操作命令
      • 分区操作:
            • LVM磁盘管理配置过程
            • lv弹性扩容:
            • lv弹性缩容:
            • LVM的工作原理进行个总结:
  • 07.磁盘创建文件系统
  • 08.磁盘管理挂载操作:
            • 如何实现开机自动挂载磁盘分区设备:
  • 09.磁盘应用管理
          • 问题一:磁盘问题系统出现问题(fstab提示只读)
          • 问题二:磁盘空间不足情况
          • 问题三:如何调整swap空间大小
            • 方法一:
            • 如何自动重启系统识别扩容交换分区容量
            • 补充:如何分区时设置一个swap分区
            • 方法二:
  • 10.操作系统启动流程:
            • centos6
            • centos7

01.知识概述部分

1)系统启动流程

2)磁盘管理体系结构
磁盘物理层次(内部结构 外部结构)
磁盘逻辑层级(RAID :LVM)
磁盘分区操作(fdisk parted)
磁盘创建文件系统(格式化)
磁盘挂载操作(mount 参数)
磁盘应用环境(作为交换分区)

3)基础阶段知识梳理

02.课程知识回顾说明

1)操作系统用户相关命令

useradd  groupadd usermod  groupmod userdel groupdel

2)操作系统用户相关文件

 /etc/passwd  /etc/skel

3)操作系统定时任务配置 crontab -e

时间信息 任务信息
时间信息:分 时 日 月 周
时间设置:*(每) */n(每隔多久) n-m() n,m()

 1:00   0 */2 * * * --> 2点 4点 。。 (分钟也要设置,否则每分钟都会执行,每两小时只会在整数点执行)
 date -s "1:00:00"  --> tail -f /var/log/cron ---> date 2:59:50   3:00 不会执行
                                              ---> date 3:59:50   4:00 正常执行
 */n  n 在执行时, 是小时整数倍时间执行
 n=2  2 4 6 8 10 12 14 16 18 20 22 0 
 n=3  1:00 3点 6点 9  12  15 

a 定时任务编写规范 直接书写命令/直接编写脚本信息

b 定时任务注意事项

命令信息尽量绝对路径

无法识别特殊符号信息 要不然放脚本里,或者加转义\符号

尽量将定时任务输出信息放入到黑洞中 &>/dev/null

0 9,11,13 * * *  xxxxx
tail -f /var/log/cron 

当前时间 18:00 ---> 编写定时任务 ---> 日志识别当前时间为18:00
---> date 8:59 ---> 异常问题
	  
练习时把时间先改为0点 
当前时间 00:00 ---> 编写定时任务 ---> 日志识别当前时间为00:00
---> date 8:59 ---> 正常执行

4)磁盘管理章节说明
磁盘物理结构说明
外部结构:
内部结构:磁头 磁道(规范化磁盘存储方式) 扇区 柱面(分区有关)

5)磁盘管理分区方法
磁盘0磁头0磁道1扇区介绍:MBR + DPT
系统进行分区操作:fdisk parted

6)磁盘逻辑结构说明:
磁盘阵列概念:RAID
磁盘弹性管理:LVM

03.磁盘管理知识体系结构

1)磁盘管理物理结构
外部结构:能看见的结构信息
内部结构:看不到的结构信息

2)磁盘管理逻辑结构

如何将多个磁盘进行整合
利用RAID进行整合:提高单块磁盘容量 提高磁盘存储效率 提高磁盘安全性
利用LVM进行整合 :弹性扩容或缩容磁盘(数据库服务器)

3)磁盘分区操作方法

分区概念知识:主分区 扩展分区 逻辑卷 分区表(dos mbr)
分区命令使用:fdisk parted

4)磁盘格式化操作

创建文件系统:xfs ext3/ext4
格式化命令:mkfs(make file system)

5)磁盘应用管理

磁盘挂载操作:mount umount
磁盘管理检测:iotop fsck
如何创建swap空间:

04.磁盘管理物理结构

外部结构:

接口信息:SATA SCSI SAS PCI-e
转速信息:10k 15k
容量信息:byte k M G T
硬盘组成:主轴 磁盘 磁头

内部结构:
磁头(head) :读取磁道数据信息

磁道(trock) :多个同心圆

扇区(sector) :
存储数据最小物理单位(512byte)
最小逻辑存储单位:block -4k 4k=8个扇区

柱面(cylinder):表示相同同心圆做成一个存储的单元

公式:

一个柱面大小(容量)*磁道数量=磁盘大小
(一个磁道大小*磁头数) * 磁道数 ↑

05.磁盘管理分区操作

环境准备:准备三块硬盘 50g 10M 3T
检查确认:

fdisk -l   显示系统有哪些磁盘信息列表展示一下
fdisk  +  磁盘  直接分区,创建分区表
fdisk -s  指定分区block块的大小
fdisk -b  指定扇区大小
fdisk -c    一般centos6需要用,选择dos模式
fdisk -u    选择柱面或者扇区作为单元,默认扇区,正常柱面
问题:新添加硬盘无法识别

方法一:重启服务器
方法二:不重启服务器时,识别新硬盘

echo "- - -" > /sys/class/scsi_host/host0/scan   --- 让系统重新扫描磁盘硬件信息
(磁盘太大时还是需要重启,2T以上)

硬盘简单描述:
一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个。且主分区+扩展分区总共不能超过4个。逻辑分区可以有若干个。 但扩展分区是不能直接用的,他是以逻辑分区的方式来使用的,所以说扩展分区可分成若干逻辑分区。他们的关系是包含的关系,所有的逻辑分区都是扩展分区的一部分。在linux中第一块硬盘分区为hda分区(或者是sda分区),主分区编号为hda1-4,逻辑分区从5开始。
硬盘的容量=主分区的容量+扩展分区的容量 扩展分区的容量=各个逻辑分区的容量之和

MBR简单描述
0磁头0磁道1扇区:MBR(master boot record主引导记录)+DPT(磁盘分区表)正好512字节,MBR占了446byte,DTP 占用64字节,每个分区占用16字节:总共有4个主分区,分区结束,标识55AA占用2byte,可以划分一个扩展分区:类似指针 --> 不同逻辑分区,设置扩展分区的目的,只是为了能够建立更多逻辑分区。

https://blog.csdn.net/free050463/article/details/81876521 msdos与GPT详解
https://zhidao.baidu.com/question/138774663.html 主分区与逻辑分区的区别
https://www.cnblogs.com/hiwangzi/p/7640995.html 《鸟哥的Linux私房菜》笔记——03. 磁盘分区

总结:
主分区 4个 扩展分区只能1个(不能直接使用)逻辑分区可以多个 (编号从5开始)

4个主分区(/dev/sda):/dev/sda1 … /dev/sda4

三个主分区,2个逻辑分区:/dev/sda1 … /dev/sda3 /dev/sda5 /dev/sda6
4不能用,代表扩展分区

分区操作1:fdisk (操作时可看10点的视频)

第一个里程:利用命令进入分区界面

fdisk /dev/sdb
c    toggle the dos compatibility flag(centos6会用到) 切换dos兼容性标志
d    delete a partition 删除指定分区
g   create a new empty GPT partition table(centos7独有) 创建一个新的空的GPT分区表(没有主分区限制,100多个)可以划分超过2T大小磁盘
G     create an IRIX (SGI) partition table 创建一个IRIX (SGI)分区表
l    list known partition types 列出已知分区类型(用的时候输入英文的l)关注:8e  Linux LVM     82  Linux swap / So    83  Linux 
m    print this menu 打开菜单
n    add a new partition 添加新的分区
o    create a new empty DOS partition table 创建一个新的空的DOS分区表(具有主分区限制)只能划分2T以下磁盘
p    print the partition table 输出分区表信息
q    quit without saving changes 退出不保存配置
t   change a partition's system id 改变分区类型
v    verify the partition table 验证分区表
u   change display/entry units 改变单元方式,扇区或柱面,一般默认就可以了
w    write table to disk and exit 保存分区配置

第二个里程:进行分区操作

操作时误输入,删除错误字符时按住ctrl+删除键 或者ctrl u

n  -->  p  --> 分区大小信息  -->  划分主分区
n  -->  e  --> 分区大小信息  -->  划分扩展分区,只有分完扩展分区后,才能分逻辑分区
n  -->  l  --> 分区大小信息  -->  划分逻辑分区


# Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-104857599, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599): +10G
Partition 1 of type Linux and of size 10 GiB is set

Command (m for help): p

Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 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: 0xca0477a7

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux

第三个里程: 检查确认并保存退出后格式化

p --> w 
mkfs.xfs /dev/sdb1 格式化

格式化较小磁盘时,比如10M,需要选用etx3或者etx4,xfs不支持较小的分区
-f 强制分区,用于xfs,ext3,4不支持该参数

扩展:fdisk命令划分2T以上分区,输入大小时需要整数,比如+2T

输入g 修改分区表为gpt
输入o 修改分区表为dos

[root@jason / 20:15:02]# fdisk /dev/sdc
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
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): n
Partition number (1-128, default 1): 
First sector (34-6442450910, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-6442450910, default 6442450910): +2T  
Created partition 1

Command (m for help): p

Disk /dev/sdc: 3298.5 GB, 3298534883328 bytes, 6442450944 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: gpt
Disk identifier: F83A4F4D-DC55-4D12-904D-BFCC7C2F5C23

#         Start          End    Size  Type            Name
 1         2048   4294969343      2T  Linux filesyste 

分区操作2:parted

查看空闲空间

[root@jason ~ 04:34:55]# parted /dev/sdc print free
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      17.4kB  2100GB  2100GB               primary
        2100GB  3299GB  1199GB  Free Space

第一个里程:

[root@jason ~ 10:33:17]# parted /dev/sdc
GNU Parted 3.1
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)   

第二个里程:

分区参数:

mklabel(创建分区表 MRB-msdos/gpt)        create a new disklabel (partition table)
                                         创建新的分区表
1.配置分区类型,需注意,如果之前有分区下面的操作会清除以前的分区数据
# mklabel GPT                            # mklabel    msdos这是恢复默认的格式

2. mkpart(创建新的分区)                  make a partition
配置主分区:
 # mkpart primary 0 2100G   (创建第一个主分区,0到2100G,可以把所有分区都划为主分区)
创建第二个分区mkpart primary  2100G 3000G   (以此类推)

配置逻辑分区:
剩余空间给扩展分区
mkpart entended 2150G 2350G

在扩展分区上创建第一个逻辑分区
(parted) mkpart logic 2350G 2400G   

创建第二个逻辑分区
mkpart logic 2400G 100%            #100%代表使用剩余的所有空间
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name      Flags
 1      17.4kB  2100GB  2100GB               primary
 2      2100GB  2150GB  50.0GB               primary
 3      2150GB  2350GB  200GB                entended
 4      2350GB  2350GB  512B                 logic
 5      2350GB  2400GB  50.0GB               logic
 6      2400GB  3299GB  899GB                logic



3.
print(显示分区表信息)                                  display the partition table
rm(删除指定分区信息)                                  delete partition NUMBER

4.quit(退出分区界面)                                       exit program

5.mkfs.xfs   /dev/xxx   格式化后挂载即可

6.mklabel    msdos这是恢复默认的格式

06.磁盘管理逻辑结构 LVM

磁盘阵列概念:将多块磁盘整合为一块,提高磁盘存储效率和安全性,以及单块磁盘容量

磁盘阵列配置:RAID 0 1 5 10 11

阵列级别:
raid 0 :用于WCG游戏等比赛
优势:读写效率高
缺点:安全性低
存储:存储利用率=总磁盘容量总和

raid 1 :
优势:安全性高
缺点:读写效率低
存储:存储利用率=总磁盘容量总和1/2

raid 5:最少三块,每块盘生成校验文件 重要!
优势:安全性高 读写效率高
缺点:损失一块磁盘容量

raid 6:
优势:安全性高,读写效率高,可以坏两块磁盘
存储:损失一块磁盘容量
RAID6实现方式:
带有两种校验的独立磁盘结构,两种校验方法,效率低,存储率低,可靠性高,解决两块磁盘失效,没有统一的校验,最少4块磁盘。
P+Q算法横向
DP算法斜向

raid 10/01:
优势:安全性高 读写效率高
存储:损失一半容量

IBM服务器阵列配置步骤

第一个步骤:是否按 ctrl + H 进入磁盘阵列配置界面
第二个步骤:选择raid配置向导界面
手动配置
第三个步骤:创建驱动器组
第四个步骤:选择配置阵列级别
dell服务器RAID配置:https://www.cnblogs.com/passzhang/articles/8672029.html
IBM服务器RAID配置:https://jingyan.baidu.com/article/da1091fb60acb0027849d6ce.html

磁盘弹性扩容:实现磁盘分区大小灵活调整(数据库/存储) LVM

概念介绍说明
概念原理知识:
PV:(PE PE PE) VG (PV PV PV) LV逻辑卷
pe最小存储单位 pv物理卷 vg卷组 LV逻辑卷

lvm逻辑卷操作命令
序号 功能            PV物理卷命令 VG卷组命令 LV逻辑卷命令
1 扫描功能(scan)    pvscan      vgscan    lvscan
2 建立功能(create)  pvcreate    vgcreate  lvcreate
3 查询功能(display) pvdisplay   vgdisplay lvdisplay
4 删除功能(remove)  pvremove    vgremove  lvremove
5 扩容功能(extend)              vgextend  lvextend
6 缩容功能(reduce)              vgreduce  lvreduce

分区操作:

LVM磁盘管理配置过程

第一个里程:进行磁盘分区格式化操作

fdisk -l              ---检查系统磁盘信息
fdisk /dev/sdc  ---对第三块磁盘进行分区

(说明:利用lvm逻辑卷管理执行相关命令,需要先安装lvm软件程序包lvm2)

分区操作步骤:

n --> p --> 回车,回车 --> 输入分区大小(+尺寸) --> p   划分出两个分区
[root@jason ~ 18:44:59]# fdisk /dev/sdc  (更改分区类型,改为linux lvm)
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
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): t
Partition number (1,2, default 2): 1
Partition type (type L to list all types): 31
Changed type of partition 'Linux filesystem' to 'Linux LVM'
#         Start            End          Size         Type            Name
 1         2048        1026047     500M     Linux LVM       
 2      1026048      2050047    500M     Linux LVM       

w   保存分区操作

yum -y install lvm2  

第二个里程:进行PV创建过程(物理卷)

[root@jason ~ 18:51:26]# pvcreate /dev/sdc1  /dev/sdc2
Physical volume "/dev/sdc1" successfully created.
Physical volume "/dev/sdc2" successfully created.

[root@jason ~ 18:52:10]# pvdisplay(查看pv,用pvs可以简单查看)
  "/dev/sdc1" is a new physical volume of "500.00 MiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc1
  VG Name               
  PV Size               500.00 MiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               iq78ZX-oB0D-RuKY-sd09-Wivv-jv9W-tEoCSW
   
  "/dev/sdc2" is a new physical volume of "500.00 MiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc2
  VG Name               
  PV Size               500.00 MiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               f86XlI-R6tH-xRyk-hpnP-oC7W-DFGE-DR11XR

第三个里程:将PV划分到VG中(生成卷组)

[root@jason ~ 18:52:53]# vgcreate vg1 /dev/sdc1 /dev/sdc2
Volume group "vg1" successfully created

(vg1是可以随便起的名称)

vgdisplay后跟卷组名可以只查看这个卷组的详细信息,不跟卷组名是查看所有卷组的详细信息。这里我们看到我们创好的vg卷组PE大小为4MiB,这是PE的默认大小,PE是卷组的最小储存单位,我们也可以用-s参数来修改,不过这只能在创建卷组时使用,一旦卷组创建成功是没法再去修改PE大小的

[root@jason ~ 20:18:15]# vgdisplay    (详细查看卷组信息)
  --- Volume group ---
  VG Name               vg1
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               992.00 MiB  ←两个物理卷合并为卷组
  PE Size               4.00 MiB    ←默认4兆,PE是卷组的最小储存单位,我们也可以用-s参数来修改,不过这只能在创建卷组时使用,一旦卷组创建成功是没法再去修改PE大小的。
  Total PE              248
  Alloc PE / Size       0 / 0   
  Free  PE / Size       248 / 992.00 MiB
  VG UUID               6nRCff-3IY4-fcn8-M7NE-i3ht-o9fr-rmfM9T


[root@jason ~ 20:19:11]# vgs   (简单查看卷组信息)
VG  #PV #LV #SN Attr   VSize   VFree  
vg1   2   0   0 wz--n- 992.00m 992.00m

第四个里程:创建LV

使用lvcreate命令创建一个LV,是从指定VG中创建一个逻辑卷

说明:命令参数解释

-L    ---  参数后跟的是你要设定的逻辑卷大小,这个大小必须是是你设定的PE值的整数倍,如果不是它会给你分一个比你设定的大一点的空间,也就是向上取整数倍空间。弊端就是有可能用不完vg里面的空间
-l    ---  后面跟的就是PE数量,像上个步骤中我们划分的卷组PE值为4MiB,数量为248,也可以使用-l跟数量,那划分的逻辑卷大小就为4*划分的数量。弊端是需要计算,但是不会出现用不完vg的空间的情况。
-n    ---  参数后跟逻辑卷名字,是对创建的逻辑卷命名,最后跟的是卷组名。

[root@jason ~ 20:22:22]# lvcreate -L 200M -n lv1 vg1
Logical volume "lv1" created.

(从vg1组里的900M里只拿出200M使用,创建的lv的名字是lv1)

创建完后我们可以用lvs查看或者lvdisplay查看详细信息

[root@jason ~ 20:32:02]# lvs       (简单查看)
LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
lv1  vg1 -wi-a----- 200.00m  

[root@jason ~ 20:32:59]# lvdisplay (详细查看)
  --- Logical volume ---
  LV Path                /dev/vg1/lv1
  LV Name                lv1
  VG Name                vg1
  LV UUID                7h6yPO-v0FV-7DbJ-zOf0-yZkd-5EAA-FBHiP4
  LV Write Access        read/write
  LV Creation host, time jason, 2019-12-28 20:32:02 +0800
  LV Status              available
  # open                 0
  LV Size                200.00 MiB
  Current LE             50
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

第五个里程:挂载使用LV

先使用mkfs命令对创建的卷组进行格式化操作,使用ext4格式

mkfs.ext4 /dev/vg1/lv1

(xfs格式是不支持动态缩减的,可以增加,但是,我们可以借助于工具搞定它)↓
https://www.dazhuanlan.com/2019/10/07/5d9a61dc22277/

[root@jason ~ 20:34:34]# mount /dev/vg1/lv1 /mnt
[root@jason ~ 20:35:02]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda3             99G  2.9G   96G   3% /
devtmpfs             980M     0  980M   0% /dev
tmpfs                991M     0  991M   0% /dev/shm
tmpfs                991M  9.6M  981M   1% /run
tmpfs                991M     0  991M   0% /sys/fs/cgroup
/dev/sda1            197M  105M   93M  54% /boot
tmpfs                199M     0  199M   0% /run/user/0
/dev/mapper/vg1-lv1  190M  1.6M  175M   1% /mnt

说明: 如果想实现开机自动挂载,可以后续编写/etc/rc.local和/etc/fstab文件信息

lv弹性扩容:
[root@jason ~ 20:36:54]# vgs
  VG  #PV #LV #SN Attr   VSize   VFree  
  vg1   2   1   0 wz--n- 992.00m 792.00m

[root@jason ~ 20:37:50]# lvextend -L +100M /dev/vg1/lv1
  Size of logical volume vg1/lv1 changed from 200.00 MiB (50 extents) to 300.00 MiB (75 extents).
  Logical volume vg1/lv1 successfully resized.

[root@jason ~ 20:38:30]# lvscan
  ACTIVE            '/dev/vg1/lv1' [300.00 MiB] inherit

[root@jason ~ 20:38:41]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-ao---- 300.00m       
resize2fs -f /dev/oldboy01/lv1

说明: 先使用vgs查看VG剩余空间是否充足,然后用-L或-l参数调整lv空间,然后跟上要扩容的逻辑卷
-L — 后面直接跟容量大小,需要注意+xxx表示增加多少空间,xxx是表示扩容到多少。
-r — 使挂载的文件系统自动识别扩容的空间,不用命令加载识别
需要注意此时文件系统并没有增大,需要执行命令让文件系统识别已经扩容的空间。↓

[root@oldboyedu ~]# df -h
文件系统              容量   已用   可用  已用% 挂载点
/dev/mapper/vg1-lv1  190M  1.6M  175M    1% /disk1           ← 未识别扩容空间
[root@oldboyedu ~]# resize2fs -f /dev/mapper/vg1-lv1         ← 加载识别扩容空间
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg1-lv1 is mounted on /disk1; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/mapper/vg1-lv1 is now 307200 blocks long.

[root@oldboyedu ~]# df -h                                                    
文件系统             容量  已用  可用 已用% 挂载点
/dev/mapper/vg1-lv1  287M  2.1M  267M    1% /disk1           ← 已经识别扩容空间

说明:其实有更简单的操作,就是在扩容的同时加上-r参数会自动扩展文件系统大小。↓

[root@jason ~ 20:43:33]# lvextend -L +100M -r /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 300.00 MiB (75 extents) to 400.00 MiB (100 extents).
Logical volume vg1/lv1 successfully resized.
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg1-lv1 is mounted on /mnt; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 4
The filesystem on /dev/mapper/vg1-lv1 is now 409600 blocks long.

[root@jason ~ 20:44:15]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda3             99G  2.9G   96G   3% /
devtmpfs             980M     0  980M   0% /dev
tmpfs                991M     0  991M   0% /dev/shm
tmpfs                991M  9.6M  981M   1% /run
tmpfs                991M     0  991M   0% /sys/fs/cgroup
/dev/sda1            197M  105M   93M  54% /boot
tmpfs                199M     0  199M   0% /run/user/0
/dev/mapper/vg1-lv1  384M  2.3M  360M   1% /mnt

使用vgextend命令来对逻辑卷组进行扩容:

需要首先添加一块新硬盘sdd用于对卷组进行扩容,添加新的PV。
在虚拟机中这个时候我们通常需要重启,这里我们可以使用:

echo "- - -" > /sys/class/scsi_host/host0/scan
让系统重新扫描SCSI总线来添加设备,因为添加的是SCSI磁盘,所以扫描的是SCSI总线

[root@oldboyedu ~]# lsblk
NAME         MAJ:MIN     RM      SIZE RO  TYPE MOUNTPOINT
sdd                  8:32 0          20G 0    disk

将添加好的硬盘格式化为PV,再将新的PV添加到指定的卷组中:

[root@oldboyedu ~]# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created.  ← /dev/sdc已创建完成PV物理卷



[root@oldboyedu ~]# vgextend vg1 /dev/sdd
Volume group "vg1" successfully extended    ← /dev/sdd已扩展完成VG物理卷组
[root@oldboyedu ~]# vgs
VG  #PV #LV #SN Attr   VSize   VFree 
vg1   2   1   0 wz--n- 20.96g 20.57g
lv弹性缩容:

逻辑卷扩容可以在线操作但是缩减必须是离线执行,需要先卸载已挂载的逻辑卷

1.umount 挂载点目录
2.e2fsck -f /dev/vg1/lv1
3.lvreduce -L -4M /dev/vg1/lv1
4.resize2fs -f /dev/vg1/lv1
5.mount 挂载点

扩容逻辑卷是先扩大逻辑卷再扩大文件系统,而缩小逻辑卷就需要反着来,要先缩小文件系统,再去缩小逻辑卷。

[root@oldboyedu ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg1/lv1: 11/77824 files (0.0% non-contiguous), 15987/307200 blocks
[root@oldboyedu ~]# resize2fs /dev/vg1/lv1 200M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv1 to 204800 (1k) blocks.
The filesystem on /dev/vg1/lv1 is now 204800 blocks long.

说明:缩小文件系统前我们要先对文件系统做个扫描检测,如果我们直接使用resize2fs系统会提示
先对文件系统进行检测,这是为了保护缩减文件系统时不对数据损害
磁盘文件系统检测完毕之后,对相应逻辑卷大小进行缩容处理:

[root@rihongedu ~]# lvreduce -L 200M /dev/vg1/lv1
# 警告: 将活动逻辑卷减少到200.00 mib
WARNING: Reducing active logical volume to 200.00 MiB. 
# 这可能会破坏您的数据(文件系统等)。
THIS MAY DESTROY YOUR DATA (filesystem etc.)  
# 真的想降低vg1/lv1吗?[是/否]:是
Do you really want to reduce vg1/lv1? [y/n]: y  
# 逻辑卷vg1/lv1的大小从400.00 mib(100区)更改为200.00 mib(50区)。
Size of logical volume vg1/lv1 changed from 400.00 MiB (100 extents) to 200.00 MiB (50 extents).
# 逻辑卷vg1/lv1已成功调整大小。
Logical volume vg1/lv1 successfully resized.
 
[root@oldboyedu ~]# lvs
LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
lv1  vg1 -wi-a----- 200.00m

说明:文件系统大小和逻辑卷大小一定要保持一致才行。
如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。
看到逻辑卷已经缩小了,接着我们再来挂载看看文件系统大小

[root@oldboyedu ~]# mount /dev/vg1/lv1 /disk1/
[root@oldboyedu ~]# df -h
Filesystem            Size   Used  Avail  Use% Mounted on
/dev/mapper/vg1-lv1  190M  1.6M  175M   1%  /disk1

逻辑卷组缩小过程说明,可以利用vgreduce去缩小VG卷组的大小

[root@oldboyedu ~]# vgreduce vg1 /dev/sdc
Removed “/dev/sdc”Volume group "vg1"     ß /dev/sdc已缩减完成VG物理卷组
[root@oldboyedu ~]# vgs
VG  #PV #LV #SN Attr   VSize   VFree 
vg1   2   1   0 wz--n- 992.00m 792.00m

说明:缩小VG卷组就是把一个PV从卷组中移除,但要先肯定PV中没有数据,不然就会造成数据的丢失
接着我们可以使用pvremove命令移除PV,这样就让分区又重新变成了普通分区。

[root@oldboyedu ~]# pvremove /dev/sdc
Labels on physical volume "/dev/sdc" successfully wiped.  ß /dev/sdc已删除完成PV物理卷

 
[root@oldboyedu ~]# pvs
PV        VG Fmt  Attr PSize   PFree 
/dev/sdb1     lvm2 ---  500.00m 500.00m
/dev/sdb2     lvm2 ---  500.00m 500.00m
LVM的工作原理进行个总结:
  1. 物理磁盘被格式化为PV,空间被划分为一个个的PE
  2. 不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内
  3. LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘
  4. LV现在就直接可以格式化后挂载使用了
  5. LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,如果操作正确其过程不会丢失原始数据
    PS:我们实际生产操作中很少用到逻辑卷的缩减,因为缩减很容易就会造成数据损坏,这是得不偿失的,所以不推荐对逻辑卷进行缩减。

07.磁盘创建文件系统

文件系统概念:存储数据不同机制
常见文件系统:ext3/ext4(存储效率) xfs(存储效率/识别大硬盘能力)
mkfs.ext3 格式化很慢

ext3
块尺寸 最大文件尺寸 最大文件系统尺寸

1KiB  16GiB   2TiB
2KiB  256GiB  8TiB
4KiB  2TiB    16TiB
8KiB  16TiB   32TiB

ext4
Extents
ext4引进了Extent档案储存方式,以取代ext2/3使用的block mapping方式。Extent指的是一连串的连续实体block,这种方式可以增加大型档案的效率并减少分裂档案。ext4支援的单一Extent, 在单一block为4KB的系统中最高可达128MB[1]。单一inode中可储存4笔Extent;超过四笔的Extent会以Htree方式被索 引。
最大文件尺寸 16 TiB (for 4k block filesystem)
最大卷容量 1 EiB

xfs
最大可支持的文件大小为263 = 9 x 1018 = 9 exabytes,最大文件系统尺寸为18 exabytes。

创建文件系统:mkfs – make file system 格式化分区,不要直接格式化整块磁盘
命令语法结构:

mkfs.文件系统类型(ext4/xfs) /dev/分区文件sdb2  
mkfs -t -f  文件系统类型(ext4/xfs)/dev/sdb2

08.磁盘管理挂载操作:

挂载概念:给一个存储设备(文件)开了个门
挂载操作:

mount   (mount 参数  设备文件信息  挂载点目录)  
umount (umount   /挂载点目录)处在目录中或者目录中有数据被调用无法卸载
umount -lf  挂载点目录   强制卸载     
-l lazy     (懒惰)不用从挂载点目录切换出去
-f force     强制进行卸载
如何实现开机自动挂载磁盘分区设备:

方法一:vim /etc/fstab

blkid查看UUID

UUID=a171c16c-1aa8-4578-a766-38e36e647d38   /mnt                  xfs    defaults        0 0

方法二:vim /etc/rc.local

mount  /dev/sdb1  /mnt

09.磁盘应用管理

问题一:磁盘问题系统出现问题(fstab提示只读)

fsck ext 修复ext系统的

步骤一:利用命令检查或修复文件系统,最好是修复未挂载的

fsck -a  挂载点/分区设备文件
xfs_repair   

步骤二:利用挂载命令修复

mount -o  remount rw    /        (或者相应出问题的挂载点)

修复后reboot重启

问题二:磁盘空间不足情况

inode空间不足了:
解决:找出大量小文件

find ./  -type f  -size -10c|xargs  rm

block空间不足:

dd  ---模拟创建一个大文件/创建交换分区
dd if=/dev/zero of=/tmp/1g  bs=100M count=10  


[root@jason tmp 10:41:35]# dd if=/dev/zero of=/tmp/123.txt  bs=100M count=10  
10+0 records in
10+0 records out
1048576000 bytes (1.0 GB) copied, 6.9012 s, 152 MB/s
[root@jason tmp 10:42:16]# dd if=/dev/zero of=/tmp/123.txt  bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 3.38328 s, 317 MB/s

解决:找出大文件数据

find / -type f  -size  
du -sh /* |sort -h

文件数据是否彻底删除:
1)会否有硬链接存在 i_link=0
PS:硬链接不能在不同的分区创建

find /  -type f  inum  xxx  |xargs rm -f

2)是否有程序进程调用 i_conut=0
日志文件 --> 服务进程调用

> acess.log   重定向清空

(实验一下删除源文件后du是否还能查到为硬链接的大文件)
[root@jason tmp 21:38:46]# ll -h
total 2.1G
-rw-r--r-- 2 root   root   1.0G Dec 27 10:42 123.txt
-rw-r--r-- 2 root   root   1.0G Dec 27 10:42 123.txt_link

[root@jason tmp 21:40:23]# du -sh ./*|sort -rh
1.0G	./123.txt
656K	./oldboy02.txt

[root@jason tmp 21:40:27]# rm 123.txt
[root@jason tmp 21:40:45]# du -sh ./*|sort -rh
1.0G	./123.txt_link
656K	./oldboy02.txt
问题三:如何调整swap空间大小
[root@jason ~]# free -h
                     total        used        free      shared  buff/cache   available
Mem:           1.9G         94M        1.7G        9.5M        130M        1.7G
Swap:          1.0G          0B         1.0G

内存空间不足 --> 使用swap不足 --> 系统服务自动停止(内存溢出)java程序软件

方法一:

第一个历程: 占用磁盘空间作为扩展交换分区

dd if=/dev/zero of=/swap/1G_swap bs=100M count=10
          1        2               3         4
1)相当于从黑洞中取出数据内容
2)将黑洞中取出数据存放到哪
3)每次取出数据数量
4)总的取出数据次数

第二个历程: 将创建数据变为swap文件数据

mkswap  /swap/1G_swap
file /swap/1G_swap

第三个历程: 加载文件给交换分区扩容

swapon /swap/1G_swap
swapoff /swap/1G_swap
swapon -s 查看
如何自动重启系统识别扩容交换分区容量

https://blog.csdn.net/lzw5210/article/details/60140684
在系统重启后,swap文件的大小又会变回原大小,我们可以在/etc/fstab里增加下面的配置,使其重启后,我们刚刚的配置仍然有效。

/swap/1G_swap           swap                    swap    defaults        0 0

如果想卸载掉上面的分区,可以通过swapoff完成

[root@gataway ~]# swapoff /swap/1G_swap

========================================

补充:如何分区时设置一个swap分区

第一个里程:指定划分磁盘

fdisk /dev/sda

第二个里程:创建分区,并设置为swap分区类型

t  --> 82(l查看)  --> 设置完成
方法二:

通过fdisk增加swap分区
该方法和方法一主要操作步骤大同小异。不过该方法要求硬件目前有未分配的空间。

1、我们先通过fdisk新增分区

fdisk  /dev/sdaCommand(m for help): n
通过n新建分区,选择为主分区,分区ID为82,即swap分区。保存退出。接着对新建的分区进行格式化并挂载
mkswap /dev/sda4
swapon /dev/swap
完成后,参照方法一里的查看方法进行查看确认。新增完成后,在/etc/fstab里新增如下配置
/dev/sda4             swap                    swap    defaults        00

磁盘使用流程:
1)完成磁盘阵列配置
2)完成磁盘分区操作
3)系统磁盘弹性管理 *
4)完成磁盘格式化,创建文件系统
5)磁盘挂载操作
6)磁盘应用管理

10.操作系统启动流程:

centos6
  1. 进行服务器开机bios自检 (检查硬件 加载识别bios)
  2. 识别MBR引导信息 (引导系统启动)
  3. 加载grub菜单选择内核 (选择内核信息)
  4. 加载系统内核信息 (控制管理硬件)
  5. 启动第一个服务进程 (init服务进程,可以让所有服务串行启动)
  6. 加载系统文件运行级别文件 (/etc/inittab)
    加载系统文件磁盘挂载文件 (/etc/fstab) ???
  7. 加载系统初始化脚本文件 (/etc/rc.d/rc.sysinit)
  8. 加载不同运行级别目录脚本 (实现服务开机自启)
  9. 加载启动mingetty进程 (显示登录系统界面)

centos启动知识扩展介绍

进入到/etc/rc3.d目录中:
S编号信息: start 指定服务启动顺序
K编号信息: kill 指定服务关闭顺序

centos6开机自动启动服务:
所有服务进行串行启动/关闭 启动效率比centos7慢

centos6检查服务是否开启
/etc/init.d/crond status
crond (pid 1679) is running…

centos6检查服务开机是否自启
chkconfig --list|grep crond
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off

centos6调整服务开机启动设置
chkconfig crond off 关闭
chkconfig crond on 关闭

centos6手动启动服务程序
/etc/init.d/crond start 启动
/etc/init.d/crond stop 关闭

centos7
  1. 进行开机自检 ----------- (检查硬件 加载识别bios)
  2. 识别MBR引导信息 ---- (引导系统启动)
  3. 加载grub菜单 ----------- (选择内核信息)
  4. 加载内核信息 ----------- (控制管理硬件)
  5. 启动第一个服务进程 – (systemd服务进程,可以让所有服务并行启动)
  6. 加载系统运行模式文件 (/etc/systemd/system/default.target)
    加载系统文件磁盘挂载文件 ----- (/etc/fstab)
  7. 加载系统初始化脚本文件 -------- (/usr/lib/systemd/system/sysinit.target)
  8. 加载系统开机运行目标文件
    加载不同运行级别目录单元文件 (/usr/lib/systemd/system/multi-user.target.wants/xxx —> /usr/lib/systemd/system
    PS:可以确保centos7中服务可以开机运行
  9. 加载启动mingetty进程 (显示登录系统界面)

如何编写自动启动服务脚本:shell

CentOS7引导顺序

1.  UEFi或BIOS初始化,运行POST开机自检
2.  选择启动设备
3.  引导装载程序, centos7是grub2
4.  读取装载程序的配置文件:/etc/grub.d/ /etc/default/grub /boot/grub2/grub.cfg
5.  加载initramfs驱动模块
6.  加载内核选项
7.  内核初始化,centos7使用systemd代替init
8.  执行initrd.target所有单元,包括挂载/etc/fstab
9.  从initramfs根文件系统切换到磁盘根目录
10.systemd执行默认target配置,配置文件/etc/systemd/system/default.target
11.systemd执行sysinit.target初始化系统及basic.target准备操作系统
12.systemd启动multi-user.target下的本机与服务器服务
13.systemd执行multi-user.target下的/etc/rc.d/rc.local
14.Systemd执行multi-user.target下的getty.target及登录服务
systemd执行graphical需要的服务

进入/etc/systemd/system/multi-user.target.wants/目录中
systemctl enable 服务 ---- 服务开机自启
systemctl disable 服务 ---- 服务禁止自启

所有服务启动或停止文件
/usr/lib/systemd/system/

centos7开机自动启动服务:
所有服务进行并行启动/关闭 启动效率比centos6快
/usr/lib/systemd/system/crond.service == centos6启动服务脚本文件
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-unit_files

总结系统启动过程:
开机自检 - 加载MBR - 识别grub菜单 - 启动第一个系统进程
识别系统运行模式/级别 – 加载初始化文件 – 实现系统服务开机自启 – 显示登陆界面

磁盘管理总结
1)磁盘管理分区方法
磁盘0磁头0磁道1扇区介绍:MBR + DPT
系统进行分区操作:fdisk parted
2)磁盘逻辑结构说明:
磁盘阵列概念:RAID
磁盘弹性管理:LVM

问题:
01.挂载defaults参数是什么意思?并进行详细解释说明

[root@ob2 data]# cat /etc/fstab 

UUID=da4d312a-dee1-4433-98c0-59dbbcf8b040 /                       ext4    defaults        1 1
UUID=e4ab7a0c-500f-4305-bcd2-a77be0ce5326 /boot                   ext4    defaults        1 2
UUID=ecac3aab-5a27-4cdb-9c52-6f5deb254d26 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

第一列到六列是设备或分区 挂载点 文件类型 default是挂载类型 dump 系统故障dump内存信息到硬盘 fsck 检查磁盘坏道等
defaults表示挂载类型,rw,suid.dev,exec,auto,nouser,async.大多是默认值.async是异步,写入内存.效率高,安全稍低.sync写入磁盘效率低一些.
rw读写
suid可以有suid权限
exec可执行文件
Async/sync 设置是否为同步方式运行,默认为async
auto/noauto 当下载mount -a 的命令时,此文件系统是否被主动挂载。默认为auto
rw/ro 是否以以只读或者读写模式挂载
exec/noexec 限制此文件系统内是否能够进行"执行"的操作
user/nouser 是否允许用户使用mount命令挂载
suid/nosuid 是否允许SUID的存在
Usrquota 启动文件系统支持磁盘配额模式
Grpquota 启动文件系统对群组磁盘配额模式的支持
Defaults 同事具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置

02.如何自动重启系统识别扩容交换分区容量
在系统重启后,swap文件的大小又会变回原大小,我们可以在/etc/fstab里增加下面的配置,使其重启后,我们刚刚的配置仍然有效。
/tmp/mem.swap swap swap defaults 00
如果想卸载掉上面的分区,可以通过swapoff完成
[root@gataway ~]# swapoff /tmp/mem.swap

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

操作系统磁盘管理 的相关文章

随机推荐

  • 大数加法越界处理

    大数越界处理 当数据很大时 xff0c 求中点的方法 i 43 j 2的结果有可能会超出 int 类型的取值范围 在此情况下 xff0c 我们需要换一种计算中点的写法 i 43 j 有可能超出 int 的取值范围 int m 61 i 43
  • idea使用断言

    测试程序 public class TestAssert public static void main String args String s1 61 null assert s1 61 null 默认assert不起作用 需开启 ve
  • 2018年面试总结 -- 多线程很重要,多总结很重要

    2018年面试总结 先后面试了Android Linux C C 43 43 QT 得到的结论有以一下几条 xff1a 1 多线程作为一个高级话题太重要了 几乎每种开发环境下都会问到 xff0c 无论是Android还是QT xff1b 2
  • 平常使用的小问题【Windows11开启不了热点,开启热点后连不上去】

    故障现象 xff1a xff08 1 xff09 连接设备一直显示obtaining ip address xff08 2 xff09 电脑没有显示连接的设备 解决措施 xff1a xff08 1 xff09 先转到设置 xff08 2 x
  • IOException: No such file or directory 问题解决

    文章目录 问题描述 xff1a 注册权限动态申请权限总结 xff1a 问题描述 xff1a Android开发 xff0c 在访问文件夹创建文件的时候 xff0c 报错IOException No such file or director
  • 2020(春)工程伦理MOOC期末考试答案

    单选题 多选题 判断题
  • Git中Fork使用

    GitLab或者GitHub中的Fork可以理解为一个物理副本 xff0c 用来管理代码的一种手段 在参与开源项目代码贡献时 xff0c 通常不会直接获得源代码仓库的Developer权限 这点和一般公司开发不太一样 xff0c 公司一般都
  • 在OK6410上运行QT程序找不到libQtGui.so.4的解决

    想在OK6410上运行自己经过交叉编译的QT程序 xff0c OK6410上烧写的是光盘所带的Linux系统 xff0c 运行程序时出现以下现象 xff1a qt server error while loading shared libr
  • Docker的安装

    这篇文章原文是我2016年10月份写的 xff0c 当时在研究docker xff0c 上周六不经意翻了出来 xff0c 由于3月换工作 xff0c 新环境比较忙 xff0c 没时间写些东西 xff0c 所以先把之前写的东西放一下 xff0
  • CRAZEPONY飞控学习(一)

    在不久前曾研究过最近最为流行的开源飞控Pixhawk的源代码 xff0c 但是由于在这之前没有接触过操作系统这个概念 xff0c 在不知道代码执行流程的情况下看了几个星期的时间 xff0c 脑子里还是一团乱 xff0c 所以决定还是从裸机开
  • PHP常用的设计模式

    php常用的设计模式 xff1a 1 单例模式 xff08 构造方法私有化 xff0c 对外提供实例化对象的静态调用方法 xff09 class Site span class token punctuation span public s
  • 003.多线程-主线程、守护线程、用户线程的区别

    对于线程的分类 xff0c 我们可以简单划分为 xff1a 主线程 xff08 每个进程只有一个主线程 xff09 子线程 主线程 xff1a main方法 子线程 xff1a 非主线程皆是子线程 子线程中可以简单划分为 xff1a 守护线
  • Ubuntu中在当前目录下打开终端

    在Ubuntu中 xff0c 打开终端可以通过Ctrl 43 Alt 43 T来打开 xff0c 但其打开的是 下的 xff0c 如果进入指定的目录 xff0c 便需要通过cd命令来进行切换 xff0c 故本文提供一个可以通过鼠标右键来在当
  • C语言经典面试题100道(校对详解版)

    题目非本人整理 xff0c 转载于https blog csdn net qq 42613510 article details 81225935 做了校对与详解 xff0c 方便大家参考 最后编程答案自己做的 xff0c 还没写完 xff
  • 浅谈FreeRTOS任务启动与切换流程

    一个轻量级操作系统最核心的地方就在于任务的执行与切换 xff0c 像FreeRTOS和ucOS 在任务启动与切换方面都差不多 xff0c 本文主要从枝干而省去了所有细枝末节让你最快的了解操作系统的任务创建与切换 以正点原子FreeRTOS移
  • 状态机编程思维学习笔记(C语言)

    前言 不摸鱼摆烂的第一天 目录 前言C语言面对对象特性引入函数指针结构体中套用函数指针宏定义中 纯替换 状态机概念状态机实现后文 C语言面对对象特性引入 众所周知 xff0c C 43 43 是由C语言编写而成 xff0c 因此 xff0c
  • stm32串口中断收发数据环形缓冲区的设计

    Function Name USART2 IRQHandler Description This function handles USART2 global interrupt request Input None Output None
  • 多线程的守护线程和等待线程结束方法

    守护线程的含义是 xff1a 如果当前运行的所有线程都是守护线程 xff0c 则程序直接结束 package thread 64 ClassName Test7 64 Author 瞿肖 64 Date 2022 7 11 14 32 pu
  • 用数学规划的方式求解优化问题

    本文介绍如何用数学语言对实际中的优化问题进行建模 通过建立数学模型 我们利用现成的求解器可以便捷地计算出最优解 或可行解 运输问题 考虑三个粮食储量分别是100 200 300的仓库 单位 吨 下文省略 我们需要把粮食运送给4个客户 其需求
  • 操作系统磁盘管理

    文章目录 01 知识概述部分02 课程知识回顾说明03 磁盘管理知识体系结构04 磁盘管理物理结构05 磁盘管理分区操作问题 xff1a 新添加硬盘无法识别 分区操作1 xff1a fdisk xff08 操作时可看10点的视频 xff09