Linux——存储管理

文章目录

  • 基本分区
    • 磁盘简介
      • 磁盘分类
      • linux的磁盘命名
      • 磁盘的分区方式
    • 管理磁盘
      • 虚拟机添加硬盘
      • 查看磁盘信息
      • 磁盘分区流程
        • 创建分区
        • 创建文件系统
        • 挂载mount
        • 查看挂载信息
      • 剩余空间继续分区
      • MBR如何划分更多的分区
        • 为什么只能有4个主分区
        • 扩展分区的引入
  • 逻辑卷LVM
    • 是什么
    • 特点
    • 术语
    • 创建LVM
    • VG卷组扩容
    • PV,VG,LV的查看方式
    • LV扩容
  • 交换分区管理Swap
    • swap简介
    • 查看当前交换分区
    • 设置交换分区
      • 准备分区
      • 格式化
      • 挂载
      • 验证
  • 文件系统
    • 文件系统的作用是
    • 文件系统的类型
      • EXT3/4文件系统
    • 磁盘文件碎片
    • 确定系统有几个文件系统
  • 文件链接
    • 符号链接
    • 硬链接
  • RAID
    • 什么是RAID
    • RAID的类型
      • RAID0
      • RAID1
      • RAID5
    • RAID的分类
    • 软RAID创建示例
  • 补充:挂载和卸载问题
  • 补充:电脑重启命令
  • 补充:写满一个磁盘
  • 补充:卸载分区

基本分区

磁盘简介

磁盘,硬盘,disk都是指一个东西,和内存的区别是容量比较大。
磁盘的作用是存储数据。
普通用户用来存储音乐文件,视频文件,文本文件,游戏,目录。
工程师负责存储企业的数据:用户账号,用户头像,用户视频,用户信息。

磁盘分类

磁盘可以分为机械磁盘和固态磁盘:
机械磁盘的构成有磁头,磁臂,盘片,扇区,磁道,扇区等。
固态磁盘的组成是芯片。
固态磁盘的价格更贵一些。

linux的磁盘命名

linux查看磁盘名称的路径:/dev/sda 、 /dev/sdb …

  • /dev : 表示设备文件目录
  • s:表示磁盘的连接方式sata串口的方式
  • d:表示磁盘
  • a:表示第一块(b:就表示第二块, c表示第三块…)
    磁盘的命名时计算机自动命名的,把磁盘插到计算机上,计算机自动命名。

跟过磁盘的概念可以查看:https://blog.csdn.net/mantou_riji/article/details/135649323

磁盘的分区方式

磁盘的分区就是指我们系统中的 C盘,D盘 这种概念。
常见的磁盘分区方式有MBRGPT

MBR:

  • MBR是:主引导记录,是在磁盘分区时,在驱动器最前端的一段引导扇区。MBR的大小固定为512字节,其中引导代码占据了前446字节,而接下来的64字节被用于存储分区表,最后2个字节是结束标记。分区表包含了硬盘分区的起始扇区和结束扇区,以及分区类型等信息。
  • MBR支持最大的磁盘容量是<2TB
  • 在MBR中,最多可以定义四个分区,每个分区的起始扇区被存储在分区表中。如果硬盘上只有一个分区,则分区表的四个分区项中的三个将被标记为未使用。
  • 如果希望超过四个分区,需放弃主分区改为扩展分区和逻辑分区

GPT:

  • GPT是:全局唯一标识分区表。它和MBR分区的区别就是引导方式和分区结构的不同;支持硬盘分区的容量不同。
  • MBR分区直接存储数据和引导记录,GPT分区的数据和引导记录是分开存储的
  • GPT支持大于2T的硬盘,可以支持128个分区

管理磁盘

虚拟机添加硬盘

  • 关闭虚拟机:添加硬盘的时候必须要关闭电源
  • 编辑虚拟机设置 ==> 虚拟机设置 ==> 添加 ==> 下一步(一直点下一步就可以了)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    添加成功之后记得点击确认。
    开机的时候会有如下显示
    在这里插入图片描述

查看磁盘信息

法一:查看磁盘的命令:ll /dev/sd*(是ls -l /dev/sd*的简写)
eg:

brw-rw----. 1 root disk 8,  0 119 23:30 /dev/sda
brw-rw----. 1 root disk 8,  1 119 23:30 /dev/sda1
brw-rw----. 1 root disk 8,  2 119 23:30 /dev/sda2
brw-rw----. 1 root disk 8, 16 119 23:30 /dev/sdb
brw-rw----. 1 root disk 8, 32 119 23:30 /dev/sdc
brw-rw----. 1 root disk 8, 48 119 23:30 /dev/sdd
brw-rw----. 1 root disk 8, 64 119 23:30 /dev/sde
brw-rw----. 1 root disk 8, 80 119 23:30 /dev/sdf
brw-rw----. 1 root disk 8, 96 119 23:30 /dev/sdg
  • 开头的b: 是block的简写,表示是硬盘文件
  • disk:是磁盘组,用来管理磁盘的
  • 从上面的信息可以看出此计算机有7块硬盘,编号从a到g,注意sda1sda2是磁盘sda的分区,表示的都是sda这块磁盘,磁盘分区后才能存储数据

法二:查看磁盘的命令:lsblk

eg:

[root@localhost ~]# lsblk
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 ├─centos-root 253:0    0   17G  0 lvm  /└─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    5G  0 disk 
sdc               8:32   0    5G  0 disk 
sdd               8:48   0    5G  0 disk 
sde               8:64   0    5G  0 disk 
sdf               8:80   0    5G  0 disk 
sdg               8:96   0    5G  0 disk 
sr0              11:0    1  4.4G  0 rom  /run/media/root/CentOS 7 x86_64
  • NAME:磁盘名称
  • SIZE:表示磁盘大小
    上述信息:
    sda分区为sda1和sda2,sda1的大小是1G,sda2的大小是2G,sda2再进行分卷,分为centos-root centos-swap

磁盘分区流程

硬盘光添加完是不能使用的,还需要进行一系列的操作才能存储数据被我们使用。
需要进行如下操作:分区(MBR或者GPT)⇒ 格式化文件系统 ⇒ 挂载mount

创建分区

这里使用MBR分区为例:
(MBR的分区命令就是fdisk, GPT的分区命令是gdisk其他操作是一样的)

  • 启动分区工具:fdisk /dev/硬盘名称
[root@localhost ~]# fdisk /dev/sdb
  • 进入会话模式
    (1)输入命令之后提示如下信息:
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。Device does not contain a recognized partition table
使用磁盘标识符 0x74b42328 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):

提示你,是否开始磁盘分区,此时按n表示开始分区。
(2)按n之后显示如下内容

命令(输入 m 获取帮助):n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): 

选择分区类型:
p:主分区(MBR模式最多划分4个主分区)
e:扩展分区
此时按p表示选择主分区。
(3)按p后显示如下信息:

Select (default p): p
分区号 (1-4,默认 1):

选择当前主分区分区的分区号,一般从1编号开始分区。

(4)输入1后显示如下信息:

分区号 (1-4,默认 1):1
起始 扇区 (2048-10485759,默认为 2048):

选择第一个分区的起始扇区的标号位置,默认位置是上一个分区的结束位置,如果没有上一个分区,默认从2048开始。一般直接输入回车就可以了。
10485759的计算方式:
已知当前硬盘的大小是5G, 5GB = 5120MB = 5242880KB = 5368709120B, 一个扇区的大小固定式512B,所以扇区的个数是:5368709120/512 = 10485760, 编号是从0开始的。前面四个扇区存储的是MBR分区的方式,记录每个分区的大小和起始节点。

(5)输入回车之后显示

起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):

选择第一个分区的结束位置的扇区编号,但是也可以直接写改分区需要分配多大的内存,如果想要分配2个G的内存直接输入+2G即可。

(6)输入+2G后显示

Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB命令(输入 m 获取帮助):

目前是分好区了,但还没通知磁盘,我们需要输入w,将该分区信息写入磁盘。
此时也可以输入n,继续进行分区,所有空间都分配好之后再按 w进行保存。

(7)输入w保存分区信息,自动退出分区工具

命令(输入 m 获取帮助):w
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盘。
  • 刷新分区表
    partprobe /dev/硬盘名称
    按上述案例我们执行
partprobe /dev/sdb
  • 查看分区结果
    输入命令之后fdisk -l /dev/硬盘名称
[root@localhost ~]# fdisk -l /dev/sdb磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x74b42328设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux

fdisk -l /dev/硬盘名称表示查看磁盘的具体信息,磁盘的大小,字节数,扇区数,以及磁盘的分区大小。

创建文件系统

磁盘分区之后不能直接使用,还需要创建对应的文件系统才能使用。 文件系统的作用是给存储空间分块和编号,便于数据的存储和管理。
创建文件系统的命令:mkfs.ext4 /dev/硬盘分区名 等价于 mkfs -t ext4 /dev/硬盘分区名

  • mkfs.ext4 是 make(创造)、file(文件)、system(系统)、extend4(扩展文件系统第四代。是文件系统的类型)
  • /dev/硬盘分区名:表示的是需要创建文件系统的分区,需要格式化的分区。
[root@localhost ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 
  • 块大小=4096 (log=2) 表示每个分块的大小
挂载mount

磁盘是一个文件,文件里面不能放文件夹,这个时候就需要对文件进行挂载,给磁盘找个文件夹 。
语法:mount -t 文件系统类型 需要挂载的磁盘 挂载的目标文件夹
挂载完成之后,该文件夹就相当于是新磁盘分区的空间,在里面存储内容占取的是新磁盘分区的空间,这就是磁盘的挂载。
磁盘分区可以挂载在任意文件夹下。
挂载就是为磁盘存储数据信息提供一个访问入口,为访问磁盘提供一个门

eg:

[root@localhost mnt]# mkdir /mnt/disk1
[root@localhost mnt]# mount -t ext4 /dev/sdb1 /mnt/disk1

取消挂载的语法:unmount 需要卸载的磁盘

注意: monut的挂载命令是临时挂载,重启后是不会显示挂载信息的,想要实现永久挂载,需要把挂载命令放到文件/etc/fstab文件中。/etc/fstab文件存储的是所有硬盘的挂载信息

查看挂载信息

法一:df -hT

[root@localhost mnt]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  974M     0  974M    0% /dev
tmpfs                   tmpfs     991M     0  991M    0% /dev/shm
tmpfs                   tmpfs     991M   11M  980M    2% /run
tmpfs                   tmpfs     991M     0  991M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  5.2G   12G   31% /
/dev/sda1               xfs      1014M  172M  843M   17% /boot
tmpfs                   tmpfs     199M   44K  198M    1% /run/user/0
/dev/sr0                iso9660   4.4G  4.4G     0  100% /run/media/root/CentOS 7 x86_64
/dev/sdb1               ext4      2.0G  6.0M  1.8G    1% /mnt/disk1

最后一行是我们刚才挂载的磁盘信息:

  • 文件系统: 挂载的磁盘分区
  • 类型:文件系统类型
  • 容量:分区的容量
  • 已用:分区已经使用的容量,当前有内容是文件系统所占取的空间
  • 挂载点: 磁盘分区挂载的文件

上面几行的信息显示的都是第一块磁盘的挂载信息。

法二:使用mount

[root@localhost mnt]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
...
(rw,nosuid,nodev,relatime,user_id=0,group_id=0)
/dev/sr0 on /run/media/root/CentOS 7 x86_64 type iso9660 (ro,nosuid,nodev,relatime,uid=0,gid=0,iocharset=utf8,dmode=0500,mode=0400,uhelper=udisks2)
/dev/sdb1 on /mnt/disk1 type ext4 (rw,relatime,seclabel,data=ordered)

最后一行就是刚才设置的挂载信息。

注意:没有被分区的空间仍然不可用,只有已经进行分区的空间才可用。

剩余空间继续分区

继续执行一遍上面的 磁盘分区流程即可。

  • 划分分区时,p命令是查看当前磁盘的分区情况:
命令(输入 m 获取帮助):p磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x74b42328设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352     4605951      204800   83  Linux
/dev/sdb3         4605952     5015551      204800   83  Linux
/dev/sdb4         5015552    10485759     2735104   83  Linux

MBR如何划分更多的分区

MBR最多划分4个分区,如果还要继续划分第5个分区就会显示如下内容:

命令(输入 m 获取帮助):n
If you want to create more than four partitions, you must replace a
primary partition with an extended partition first.

就是:如果你想要创建更多的分区就必须使用扩展分区。

扩展分区的主分区的区别:

  • 如果单纯用来存储文件,主分区和扩展分区没有任何区别
  • 区别在于主分区可以用来装操作系统
为什么只能有4个主分区

MBR分区前面的512个字节是主引导记录,其中有64字节被用于存储分区表,这64个字节被平均分成4份,一份16个字节,用来存储每个主分区的起始位置和结束位置。这64个字节能且只能分四个部分,所以只能划分为4个主分区。
在这里插入图片描述

扩展分区的引入

扩展分区的原理是:放弃一个主分区,把它设置为扩展分区,扩展分区可以继续进行划分,划分为逻辑分区,想划成多少个逻辑分区就划分成多少个逻辑分区。
注意:扩展分区相当于一个容器,他容纳的是逻辑分区,所以无法在扩展分区存放数据,只能在逻辑分区存放数据,不划分逻辑分区是无法存放数据的。
在这里插入图片描述
操作:

  • 删除一个主分区
命令(输入 m 获取帮助):d
分区号 (1-4,默认 4):4
分区 4 已删除命令(输入 m 获取帮助):
  • 创建扩展分区
    常规的创建分区的流程只不过分区类型选择e(扩展分区):
命令(输入 m 获取帮助):n
Partition type:p   primary (3 primary, 0 extended, 1 free)e   extended
Select (default e): e
已选择分区 4
起始 扇区 (5015552-10485759,默认为 5015552):
将使用默认值 5015552
Last 扇区, +扇区 or +size{K,M,G} (5015552-10485759,默认为 10485759):
将使用默认值 10485759
分区 4 已设置为 Extended 类型,大小设为 2.6 GiB命令(输入 m 获取帮助):p磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x74b42328设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352     4605951      204800   83  Linux
/dev/sdb3         4605952     5015551      204800   83  Linux
/dev/sdb4         5015552    10485759     2735104    5  Extended

/dev/sdb4就是扩展分区

  • 创建逻辑分区
    直接输入n即可,继续创建逻辑分区,其他操作和创建主分区一样
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (5017600-10485759,默认为 5017600):
将使用默认值 5017600
Last 扇区, +扇区 or +size{K,M,G} (5017600-10485759,默认为 10485759):+200M
分区 5 已设置为 Linux 类型,大小设为 200 MiB命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 6
起始 扇区 (5429248-10485759,默认为 5429248):
将使用默认值 5429248
Last 扇区, +扇区 or +size{K,M,G} (5429248-10485759,默认为 10485759):+200M
分区 6 已设置为 Linux 类型,大小设为 200 MiB命令(输入 m 获取帮助):N
All primary partitions are in use
添加逻辑分区 7
起始 扇区 (5840896-10485759,默认为 5840896):
将使用默认值 5840896
Last 扇区, +扇区 or +size{K,M,G} (5840896-10485759,默认为 10485759):
将使用默认值 10485759
分区 7 已设置为 Linux 类型,大小设为 2.2 GiB命令(输入 m 获取帮助):w
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# partprobe /dev/sdb
  • 查看分区结果
    lsblk命令:
    在这里插入图片描述
  • 逻辑分区的格式化和挂载和主分区的操作是一样的不再赘述,这里以挂载sdb5为例,查看一下结果:
[root@localhost ~]# mkfs.ext4 /dev/sdb5
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
51200 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33816576
25 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 [root@localhost ~]# mkdir /mnt/disk5
[root@localhost ~]# mount -t ext4 /dev/sdb5 /mnt/disk5
[root@localhost ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  974M     0  974M    0% /dev
tmpfs                   tmpfs     991M     0  991M    0% /dev/shm
tmpfs                   tmpfs     991M   11M  980M    2% /run
tmpfs                   tmpfs     991M     0  991M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  5.2G   12G   31% /
/dev/sda1               xfs      1014M  172M  843M   17% /boot
tmpfs                   tmpfs     199M   32K  199M    1% /run/user/0
/dev/sr0                iso9660   4.4G  4.4G     0  100% /run/media/root/CentOS 7 x86_64
/dev/sdb5               ext4      190M  1.6M  175M    1% /mnt/disk5

可以看到逻辑分区sdb5已经挂载到文件夹/mnt/disk5上。

逻辑卷LVM

物理空间是限定的,当过一个文件非常大,需要放在多个磁盘进行存储,这种存储方式是不便于管理(拷贝、删除、授权)的。所以说我们不会将一个文件分储在多个磁盘上的。单靠物理磁盘是解决不了空间增长的问题的。

我们可以使用逻辑卷扩充一个磁盘分区的大小。

是什么

逻辑卷管理是一种高级的分区方式 。是管理磁盘的一种方式,性质与基本磁盘无异。
在这里插入图片描述

特点

使用逻辑卷可以随意扩张磁盘的大小。

术语

  • PV:物理卷
  • VG:卷组
  • LV:逻辑卷

创建LVM

  • 准备物理磁盘
    按虚拟机添加硬盘的方式添加几块物理磁盘
  • pv
    将物理磁盘,转换成物理卷PV
    命令:pvcreate 硬盘名
[root@localhost mnt]# pvcreate /dev/sdfPhysical volume "/dev/sdf" successfully created.
  • vg
    创建卷组VG,将物理卷作为组成员创建卷组
    命令:vgcreate 卷组名 卷组成员
[root@localhost mnt]# vgcreate vg1 /dev/sdfVolume group "vg1" successfully created
  • lv
    创建逻辑卷LV,从卷组中分出部分空间创建逻辑卷
    命令:lvcreate -L 逻辑卷大小 -n 逻辑卷名 卷组VG名
    eg:lvcreate -L 4G -n lv1 vg1
[root@localhost ~]# lvcreate -L 4G -n lv1 vg1Logical volume "lv1" created.
  • 创建文件系统并挂载
    (和磁盘分区的操作一样)
    创建文件系统:mkfs.ext4 /dev/卷组名/逻辑卷名
    创建挂载点:mkdir /mnt/lv1 (临时挂载,开机会消失)
    挂载:mount /dev/卷组名/逻辑卷名 挂载点

上述三条命令是:

mkfs.ext4 /dev/vg1/lv1
mkdir /mnt/lv1
mount /dev/vg1/lv1 /mnt/lv1

查看挂载信息:

[root@localhost ~]# df -hT
文件系统                  类型      容量   已用  可用   已用% 挂载点
/dev/mapper/vg1-lv1     ext4      3.9G   16M  3.6G    1% /mnt/lv1

注意:逻辑卷的定位是 /dev/卷组名/逻辑卷名

此时查看硬盘信息:

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdf               8:80   0    5G  0 disk 
└─vg1-lv1       253:2    0    4G  0 lvm  /mnt/lv1

VG卷组扩容

卷组的空间也可能被占满,比如所有空间都分给了逻辑卷,此时就需要对卷组扩容。

卷组扩容只需要新建物理卷,然后把物理卷放到卷组中就可以了。

  • 新建物理卷:pvcreate /dev/硬盘名
  • 物理卷放到卷组中:vgextend 卷组名 刚才创建的物理卷

卷组中物理卷的空间总和就是该卷组的空间。

实际操作:

[root@localhost ~]# pvcreate /dev/sdgPhysical volume "/dev/sdg" successfully created.
[root@localhost ~]# vgextend vg1 /dev/sdgVolume group "vg1" successfully extended

这样就扩充成功了,使用vgs查看物理卷

[root@localhost ~]# vgsVG     #PV #LV #SN Attr   VSize   VFreecentos   1   2   0 wz--n- <19.00g    0 vg1      2   1   0 wz--n-   9.99g 5.99g

原本的vg的大小是5G,扩容之后是10G

PV,VG,LV的查看方式

  • 物理卷的查看方式: pvs
[root@localhost ~]# pvsPV         VG     Fmt  Attr PSize   PFree   /dev/sda2  centos lvm2 a--  <19.00g       0 /dev/sdf   vg1    lvm2 a--   <5.00g 1020.00m/dev/sdg   vg1    lvm2 a--   <5.00g   <5.00g

PSize:物理卷的大小
PFree :物理卷的空余空间

  • 卷组的查看方式:vgs
[root@localhost ~]# vgsVG     #PV #LV #SN Attr   VSize   VFreecentos   1   2   0 wz--n- <19.00g    0 vg1      2   1   0 wz--n-   9.99g 5.99g

VG:卷组名
PV:卷组包含的物理卷个数
LV:化了一个逻辑卷
VSize:卷组的大小
VFree:卷组的空余方式

  • 逻辑卷卷的查看方式: lvs

LV扩容

LV的扩容本质上就是扩展逻辑卷的容量。
占满lv逻辑卷空间

 dd if=/dev/zero of=/mnt/lv1/1.txt bs=1M count=5000

查看剩余空间

[root@localhost ~]# df -hT
文件系统                  类型      容量  已用  可用 已用% 挂载点
/dev/mapper/vg1-lv1     ext4      3.9G  3.8G     0  100% /mnt/lv1

lv扩容
lv扩容需要先查看对应的卷组是否还有空间,如果没有空间需要先对卷组扩容,如果有空间就可以对lv直接扩容。

  • 查看卷组是否有空间命令:vgs
[root@localhost ~]# vgsVG     #PV #LV #SN Attr   VSize   VFreecentos   1   2   0 wz--n- <19.00g    0 vg1      2   1   0 wz--n-   9.99g 5.99g
  • lv扩容:
    lv的扩容命令是:lvextend -L +扩充的大小 /dev/卷组名/逻辑卷名
    如:lvextend -L +200M /dev/vg1/lv1
[root@localhost ~]# lvextend -L +200M /dev/vg1/lv1Size of logical volume vg1/lv1 changed from 4.00 GiB (1024 extents) to <4.20 GiB (1074 extents).Logical volume vg1/lv1 successfully resized.
[root@localhost ~]# lvextend -L +4G /dev/vg1/lv1Size of logical volume vg1/lv1 changed from <4.20 GiB (1074 extents) to <8.20 GiB (2098 extents).Logical volume vg1/lv1 successfully resized.
  • 查看扩容结果:lvs
[root@localhost ~]# lvsLV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertroot centos -wi-ao---- <17.00g                                                    swap centos -wi-ao----   2.00g                                                    lv1  vg1    -wi-a-----  <8.20g   

我们可以看到逻辑卷lv1已经扩容到8.2g了。

刷新文件系统
上述命令是为lv扩容了,但是还没有同步到文件系统上:

[root@localhost ~]# df -hT
文件系统                  类型      容量  已用  可用 已用% 挂载点
/dev/mapper/vg1-lv1     ext4      3.9G  3.8G     0  100% /mnt/lv1

可以看到逻辑卷lv1的容量仍然是4G,不是扩容后的大小,这是因为我们需要将逻辑卷的更新告知文件系统,就需要进行FS扩容。

FS扩容:resize2fs /dev/卷组名/逻辑卷

[root@localhost ~]# resize2fs /dev/vg1/lv1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg1/lv1 is mounted on /mnt/lv1; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/vg1/lv1 is now 2148352 blocks long.
[root@localhost ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/vg1-lv1     ext4      8.0G  3.8G  3.8G   51% /mnt/lv1

此时就完成了LV扩容

交换分区管理Swap

swap简介

交换分区swap其实就是一个普通的分区,任何一个分区都可以当做交换分区。
swap的作用:‘提升内存’的容量,防止内存溢出(OOM
交换分区swap是一块普通的分区,是硬盘上的一块存储空间,当内存的空间不够用的时候可以存储在交换分区swap中,swap中存储的是热点数据,可以提高读取速度。
(在linux中叫交换分区swap,对应的在windows中叫虚拟内存)
在这里插入图片描述

swap的大小:
swap交换分区的推荐大小是内存的2倍。
但是在实际使用时:

  • 大于4GB而小于16GB内存的系统,最小需要4GB交换空间;
  • 大于16GB而小于64GB内存的系统,最小需要8GB交换空间;
  • 大于64GB而小于256GB内存的系统,最小需要16GB交换空间。

查看当前交换分区

查看命令:free -m

[root@localhost ~]# free -mtotal        used        free      shared  buff/cache   available
Mem:           1980         821          72          19        1086         974
Swap:          2047           0        2047

可以看到swap的交换分区的大小是2G

[root@localhost ~]# lsblk
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 ├─centos-root 253:0    0   17G  0 lvm  /└─centos-swap 253:1    0    2G  0 lvm  [SWAP]
...

我们通过lsblk可以看出swap交换分区是从sda硬盘的sda2分区中,并且大小是2G。

设置交换分区

准备分区

  • 准备/dev/sde磁盘,划分2G分区
fdisk /dev/sde

过程略

  • 划分分区后,按t,将类型设置为82
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”

82表示的是交换分区的类型,按l命令可以查看分区的所有类型

命令(输入 m 获取帮助):l0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris        1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / 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 隐藏的 C:  c6  DRDOS/sec (FAT-
...

可以看到82表示的是交换分区swap

  • w进行保存
  • 刷新分区表
    partprobe /dev/sde 刷硬盘
[root@localhost ~]# partprobe /dev/sde
[root@localhost ~]# ll /dev/sde*
brw-rw----. 1 root disk 8, 64 1月  21 14:19 /dev/sde
brw-rw----. 1 root disk 8, 65 1月  21 14:19 /dev/sde1

格式化

格式化交换分区:mkswap /dev/硬盘分区

[root@localhost ~]# mkswap /dev/sde1
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=b5b89581-4449-42c3-ae23-d02c98437efb

UUID是磁盘的身份证号

挂载

挂载分区:swapon /dev/磁盘分区
此时 /dev/sde1就表示是交换分区,但是我们还需要挂载一下。

[root@localhost ~]# swapon /dev/sde1

取消挂载的命令是swaoff /dev/磁盘分区

验证

查看交换分区

[root@localhost ~]# free -mtotal        used        free      shared  buff/cache   available
Mem:           1980         808          93          19        1078         987
Swap:          4095           0        4095

可以看到当前的交换分区是4G,有2G是刚才我们手动设置的

文件系统

划分一个磁盘基本分为三大步:分区、格式化和挂载,其中最重要的就是格式化,格式化就是将存储空间划分成小块的过程,格式化的过程是创建文件系统的过程

文件系统的作用是

  • 将文件准确地放到磁盘的某个位置
  • 快速定位文件在磁盘的位置的位置

文件系统的类型

windows常见的文件系统:FAT16、FAT32、NTFS
Linux常见的文件系统:EXT3、EXT4、XFS
现在Linux常用的文件系统就是EXT3、4。

EXT3/4文件系统

类型: EXT3/4 文件系统的类型是索引文件系统
索引文件系统组成:索引文件系统由文件索引值(inode)和存储块(block)组成,不同的文件有自己的索引值(inode),同时索引值又存储着对应的块信息:
在这里插入图片描述

  • inode: 记录各个文件的属性,记录文件的元数据metadata。运输局是指文件的属性、大小、权限、属主属组、连接数、块数量块编号。一个文件占用一个inode,一个inode的大小是128bytes。
  • block:是存储文件的实际空间。每一个block的大小默认为4096b,即4K。block是存储数据最基本的单元:如果文件小于4k,那么该文件就会占取一个块空间,且无论该块是否还剩余空间,下一个文件都是从下一个块开始存储;如果文件大于4K,那么该文件就会占取多个快空间。如:一个5K的文件后面是一个2K的文件,那么存储方式就是,5k的文件占取第1、2个块,2K的文件占取第三个块。
  • superblock:block与inode的总量,显示未使用和已使用的inode和block的数量。

查看文件的inode:
命令:ls -l -i 文件名 (即ls命令添加 -i参数就可以查看文件的inode)

[root@localhost disk1]# touch 1.txt
[root@localhost disk1]# ls -l -i 1.txt
12 -rw-r--r--. 1 root root 2023567360 1月  30 22:46 1.txt

其中第一个数据12就是该文件的inode。

查看一个磁盘可以存储多少个文件:
即查看文件的inode数量,
命令:df -i

文件系统                  Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sdb1                131072      12  131060       1% /mnt/disk1

可以看到sdb1分区有 131072 个Inode,即最多可以存储131072 个文件。
eg:

[root@localhost disk1]# rm -rf *.txt
[root@localhost disk1]# touch file{1..65527}
[root@localhost disk1]# touch file{65528..131061}
[root@localhost disk1]# ls -l | wc -l
131063
[root@localhost disk1]# df -i
文件系统                  Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sdb1                131072  131072       0     100% /mnt/disk1

ls -l | wc -l:用于查询磁盘文件个数
总共有131063个文件,因为里面还有个系统文件夹,所以文件个数和inode个数不一样。但是此时sdb1分区已经满了,再往sdb1分区写文件就写不进去了。

[root@localhost disk1]# touch file{131062..131070}
touch: 无法创建"file131062": 设备上没有空间
touch: 无法创建"file131063": 设备上没有空间
touch: 无法创建"file131064": 设备上没有空间
touch: 无法创建"file131065": 设备上没有空间
touch: 无法创建"file131066": 设备上没有空间
touch: 无法创建"file131067": 设备上没有空间
touch: 无法创建"file131068": 设备上没有空间
touch: 无法创建"file131069": 设备上没有空间
touch: 无法创建"file131070": 设备上没有空间

此时只是不能创建文件了,但是文件都还是空文件。即inode满了,但是block都还是空的。我们可以在文件中编写内容,填充block。

[root@localhost disk1]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/sdb1               ext4      2.0G  9.7M  1.8G    1% /mnt/disk1

可以看到可用空间还有1.8G呢。
占取block空间:

[root@localhost disk1]# dd if=/dev/zero of=./file1 bs=1M count=3000
dd: 写入"./file1" 出错: 设备上没有空间
记录了1927+0 的读入
记录了1926+0 的写出
2019708928字节(2.0 GB)已复制,12.5855 秒,160 MB/秒
[root@localhost disk1]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/sdb1               ext4      2.0G  1.9G     0  100% /mnt/disk1

此时sdb1分区的空间已经被占满。
我们发现:一个文件可以占取磁盘分区的所有空间,限制文件大小的是磁盘分区的大小,而不是block块(4096kb)的大小
此时再向file2中写内容,会报错:

[root@localhost disk1]# dd if=/dev/zero of=./file2 bs=1k count=3000
dd: 写入"./file2" 出错: 设备上没有空间
记录了1+0 的读入
记录了0+0 的写出
0字节(0 B)已复制,0.000398932 秒,0.0 kB/秒

系统限制:

  • EXT3:文件系统最大16TB
  • EXT4:文件系统最大16TB
  • XFS:文件系统最大100TB

磁盘文件碎片

  • 是指一个文件可能不会被存储在连续的空间里。如:A文件占取块1,2,3;B文件展示4、5;C文件占取6、7。如果此时删除了文件B,并且存储需要占取4个block的文件D,那么文件D所占取的块就是4,5,8,9。这就是文件碎片。文件碎片的产生是不可避免的,不影响使用,只影响读取速度

确定系统有几个文件系统

系统文件系统的数量是根据格式化的次数决定的,格式化了几次就有几个文件系统。即执行了几次mkfs.ext4命令就有几个文件系统。

文件链接

文件链接就是快捷方式。

符号链接

符号链接就是软链接,可以通过软链接快速访问文件。

软链接的创建方式

  • 创建一个文件并输入内容
[root@localhost disk1]# echo 111 > /file1
[root@localhost disk1]# cat /file1
111
  • 创建文件的软链接ln -s 文件的实际位置 创建软链接的位置
[root@localhost disk1]# ln -s /file1 /root/桌面/file11

在这里插入图片描述

[root@localhost disk1]# ls -l /root/桌面/file11
lrwxrwxrwx. 1 root root 6 1月  30 23:42 /root/桌面/file11 -> /file1

第一个字母l表示是link,快捷键。

/root/桌面/file11 就是 /file1 的软连接,删除源文件,软连接闪烁,不可用。

软链接的特点

  • 软链接像快捷方式,可以对文件和目录做软连接。
  • 软链接记录的只是源文件的绝对路径。
  • 软链接失去源文件不可用。如果源文件删除,或改名,或移动位置软链接都不可用,因为软连接存储的是文件的绝对路径。

硬链接

硬链接和软连接很像,但是硬链接只能在一个分区里面做。
硬链接的创建方式

  • 创建文件
[root@localhost disk1]# echo 222 > /file2
[root@localhost disk1]# cat /file2
222
  • 创建文件的硬链接ln 文件的实际位置 创建软链接的位置
[root@localhost disk1]# ln /file2 /file2-h1
[root@localhost disk1]# ls -l /file2 /file2-h1
-rw-r--r--. 2 root root 4 1月  30 23:57 /file2
-rw-r--r--. 2 root root 4 1月  30 23:57 /file2-h1

其中的2表示的是文件的硬链接数,文件本身算一个硬链接。

硬链接的特点

  • 硬链接只能在同分区做。创建同分区硬链接成功,创建不同分区硬链接失败。
  • 硬链接只能针对文件做。不能对目录做。
  • 硬链接失去源文件仍然可用。如果源文件删除,访问硬链接,还是可以访问的,硬链接相当于备份。

RAID

RAID的作用:

  • 容错,保障数据的安全性:备份数据,当磁盘损坏的时候,可以保证数据不丢失
  • 提升磁盘的读写速度

什么是RAID

RAID:廉价磁盘冗余阵列
就是将磁盘的数据备份到廉价的磁盘上,这种策略就叫做RAID。

RAID的类型

常见的RAID类型有RAID0,RAID1,RAID5

  • 操作系统一般做成RAID1
  • 对于重要的数据做成RAID5

RAID0

RAID0又叫条带集,2块及以上磁盘,如果磁盘数是n,那么读写速度比原来快n倍,但是不能容错。

  • 读写速度比原来快n倍,n磁盘同时读写,速度自然是之前的n倍
  • 由于没有备份盘,所以不容错

在这里插入图片描述

RAID1

RAID1俗称镜像集,包含2块磁盘,容量是50%,读写速度一般,容错

  • 包含2块磁盘,容量是50%:一块磁盘存储数据,一块磁盘用来备份,所以实际上只有一半的空间可以使用。
  • 容错: RAID1备份磁盘数据,可以容错。
    在这里插入图片描述

RAID5

RAID5包含3块及以上磁盘,并且所有磁盘大小一样,利用率(n-1)/n,读写速度快。容错。

  • 最少包含3块磁盘,其中有一块磁盘是校验盘做数据备份用,其余盘都是数据盘,用来存储数据的,所以利用率是(n-1)/n。RAID5备份的原理是:三块盘其中有两块是数据盘,一块是校验盘,存储数据的时候,将数据拆成两份,两块数据盘各一份,再将两份数据经过某种运算得到的结果存储在校验盘中。这样计时其中一个数据盘坏了,通过逆运算还可以获取到损坏的数据盘。
  • 如果多余3块盘,假设总共有n块盘,那么n-1块磁盘用来存储数据,数据将被分成n-1份,n-1份数据的计算结果被存储在校验盘上。
  • 读写速度快:是因为一个数据被存储在n-1块盘上,这n-1块盘同时读写,速度当然快。如果n-1=2,速度就比原来快2倍;如果n-1=4,速度就比原来快4倍
  • 热备盘,RAID5种可能会有热备盘的存在, 热备盘的作用是当3块盘其中的任意一块盘损坏之后,热备盘就能够及时的充当损坏的那块盘的角色。

在这里插入图片描述

RAID的分类

  • 硬RAID:需要RAID卡(硬件),有自己的CPU,处理速度快。
  • 软RAID:通过操作系统实现,比如Windows、Linux

软RAID创建示例

使用软RAID(以RAID5为例),分为如下几步:

  • 准备4块硬盘 :3块数据盘+1块热备盘
    在虚拟机上创建4块虚拟硬盘
[root@localhost ~]# ls /dev/sd* -l
brw-rw----. 1 root disk 8, 112 22 21:35 /dev/sdh
brw-rw----. 1 root disk 8, 128 22 21:35 /dev/sdi
brw-rw----. 1 root disk 8, 144 22 21:35 /dev/sdj
brw-rw----. 1 root disk 8, 160 22 21:35 /dev/sdk
  • 创建RAID
    命令:mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd{h,i,j,k}
    -C: 创建
    /dev/md0: 给RAID命名,/dev/RAID的名字
    -l5:等级是5,代表RAID5
    -n3:表示的是数据盘的数量
    -x1:表示热备盘的数量
    /dev/sd{h,i,j,k}:对哪些磁盘做

创建示例

[root@localhost ~]# mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd{h,i,j,k}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

如果机器上没有mdadm命令,需要手动安装一下

yum -y install mdadm
  • 格式化挂载
    RAID本质上就是一块磁盘,我们可以将其进行挂载。
[root@localhost ~]# mkfs.ext4 /dev/md0
[root@localhost ~]# mkdir /mnt/raid5
[root@localhost ~]# mount /dev/md0 /mnt/raid5/
[root@localhost ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/md0                ext4      2.0G   52M  1.8G    3% /mnt/raid5

只有2G空间是因为:4块盘,2块存数据,一块校验盘,一块热备盘。

  • 查看RAID信息
    mdadm -D RAID盘
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:Version : 1.2Creation Time : Fri Feb  2 22:14:19 2024Raid Level : raid5Array Size : 2093056 (2044.00 MiB 2143.29 MB)Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)Raid Devices : 3Total Devices : 4Persistence : Superblock is persistent
...Number   Major   Minor   RaidDevice State0       8      112        0      active sync   /dev/sdh1       8      128        1      active sync   /dev/sdi4       8      144        2      active sync   /dev/sdj3       8      160        -      spare   /dev/sdk
  • 模拟一块硬盘损坏并移除
    损坏磁盘mdadm /dev/md0 -f /dev/sdh -r /dev/sdh,表示强制删除h盘。
[root@localhost ~]# mdadm /dev/md0 -f /dev/sdh -r /dev/sdh
mdadm: set /dev/sdh faulty in /dev/md0
mdadm: hot removed /dev/sdh from /dev/md0
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:Version : 1.2Creation Time : Fri Feb  2 22:14:19 2024Raid Level : raid5Array Size : 2093056 (2044.00 MiB 2143.29 MB)Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)Raid Devices : 3Total Devices : 3Persistence : Superblock is persistent...Number   Major   Minor   RaidDevice State3       8      160        0      active sync   /dev/sdk1       8      128        1      active sync   /dev/sdi4       8      144        2      active sync   /dev/sdj

可以看到热备盘sdk现在被作为数据盘使用

补充:挂载和卸载问题

  • 如果一个分区挂载在一个文件夹上,该分区卸载时候,原挂载分区的内容会移到sda分区上。
  • 如果一个分区挂载在一个有内容的文件夹上,那么挂载的分区的内容会覆盖文件夹的内容,如果在卸载该分区,文件夹的内容还是之前存储的内容。简单来说,未挂载时,文件夹存储的是 sda 的内容,挂载后文件存储的是新分区的内容。
  • 注意挂载是临时的,当计算机重启之前挂载的内容会消失,也可以永久挂载但是可能会影响操作系统的启动。
  • 永久挂载的方式是将挂载命令编写在一个系统启动文件中。

补充:电脑重启命令

  • reboot
  • init 6

补充:写满一个磁盘

dd if=/dev/zero of=/mnt/disk4/1.txt bs=1M count=1000是一个抄写命令

  • dd: 抄写命令
  • if=/dev/zero:抄写的位置
  • of=/mnt/disk4/1.txt:抄写的目标位置
  • bs =1M :抄写的大小
  • count:抄写的次数
    上述命令就是表示抄写/dev/zero中的内容到/mnt/disk4/1.txt中,每次抄写1MB的大小,总共抄写1000次。

eg:

[root@localhost mnt]# dd if=/dev/zero of=/mnt/disk1/1.txt bs=1M count=2000
dd: 写入"/mnt/disk1/1.txt" 出错: 设备上没有空间
记录了1930+0 的读入
记录了1929+0 的写出
2023567360字节(2.0 GB)已复制,8.16791 秒,248 MB/秒
[root@localhost mnt]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  974M     0  974M    0% /dev
tmpfs                   tmpfs     991M     0  991M    0% /dev/shm
tmpfs                   tmpfs     991M   11M  980M    2% /run
tmpfs                   tmpfs     991M     0  991M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  5.2G   12G   31% /
/dev/sda1               xfs      1014M  172M  843M   17% /boot
tmpfs                   tmpfs     199M   28K  199M    1% /run/user/0
/dev/sr0                iso9660   4.4G  4.4G     0  100% /run/media/root/CentOS 7 x86_64
/dev/sdb1               ext4      2.0G  1.9G     0  100% /mnt/disk1

可以看到磁盘分区空间已满

补充:卸载分区

如果一个分区不想使用了,一定要先卸载umount,再删除分区。
删除分区的命令是:fdisk -d

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/664143.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据图表方案,企业视频生产数据可视化

在信息爆炸的时代&#xff0c;如何将复杂的数据转化为直观、生动的视觉信息&#xff0c;是企业在数字化转型中面临的挑战。美摄科技凭借其独特的数据图表方案&#xff0c;为企业在数据可视化领域打开了一扇全新的大门。 一、数据图表方案的优势 1、高效便捷&#xff1a;利用数…

vscode实时预览markdown效果

安装插件 Markdown Preview Enhanced 上面是搜索框 启动预览 右键->Open Preview On the Side 效果如下&#xff1a; 目录功能 目录功能还是使用gitee吧 push后使用gitee&#xff0c;gitee上markdown支持侧边生成目录

Android矩阵Matrix裁切setRectToRect拉伸Bitmap替代Bitmap.createScaledBitmap缩放,Kotlin

Android矩阵Matrix裁切setRectToRect拉伸Bitmap替代Bitmap.createScaledBitmap缩放&#xff0c;Kotlin class MyImageView : AppCompatImageView {private var mSrcBmp: Bitmap? nullprivate var testIV: ImageView? nullconstructor(ctx: Context, attrs: AttributeSet) :…

一步到位:用Python实现PC屏幕截图并自动发送邮件,实现屏幕监控

在当前的数字化世界中&#xff0c;自动化已经成为我们日常生活和工作中的关键部分。它不仅提高了效率&#xff0c;还节省了大量的时间和精力。在这篇文章中&#xff0c;我们将探讨如何使用Python来实现一个特定的自动化任务 - PC屏幕截图自动发送到指定的邮箱。 这个任务可能看…

YoloV8改进策略:Block改进|DCNv4最新实践|高效涨点|完整论文翻译

摘要 涨点效果:在我自己的数据集上,mAP50 由0.986涨到了0.991,mAP50-95由0.737涨到0.753,涨点明显! DCNv4是可变形卷积的第四版,速度和v3相比有了大幅度的提升,但是环境搭建有一定的难度,对新手不太友好。如果在使用过程遇到编译的问题,请严格按照我写的环境配置。…

Linux 系统开始配置

文章目录 备份源为root 设置密码安装基本工具切换root 用户删除snap从 Ubuntu 移除 Snap 后使用 deb 文件安装软件商店和 Firefox在 Ubuntu 系统恢复到 Snap 软件包总结 删除 vim安装neovim在线安装neovim压缩安装neovim安装lazyvim安装剪切板 安装qt配置 Qt 环境不在sudoers文…

链表中的数字相加

不能简单认为将两条链表转变为整数后进行运算&#xff0c;然后将结果转变为链表。因为如果链表很长&#xff0c;这可能会导致整数溢出。 在正常的两个整数加法运算时&#xff0c;我们是从低位开始&#xff0c;然后依次相加更高位的数字&#xff0c;所以不难想到我们需要将链表反…

(每日持续更新)jdk api之NotSerializableException基础、应用、实战

博主18年的互联网软件开发经验&#xff0c;从一名程序员小白逐步成为了一名架构师&#xff0c;我想通过平台将经验分享给大家&#xff0c;因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验&#xff0c;晚上进行用心精简、整理、总结、定稿&…

【动态规划】【记忆化搜索】【回文】1312让字符串成为回文串的最少插入次数

作者推荐 【动态规划】【字符串】【表达式】2019. 解出数学表达式的学生分数 本文涉及知识点 动态规划汇总 记忆化搜索 回文 字符串 LeetCode1312. 让字符串成为回文串的最少插入次数 给你一个字符串 s &#xff0c;每一次操作你都可以在字符串的任意位置插入任意字符。 请…

基于Java SSM框架实现校园快领服务系统项目【项目源码+论文说明】

基于java的SSM框架实现校园快领服务系统演示 摘要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于校园快领服务系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了…

Python爬虫的基本原理

我们可以把互联网比作一张大网&#xff0c;而爬虫&#xff08;即网络爬虫&#xff09;便是在网上爬行的蜘蛛。把网的节点比作一个个网页&#xff0c;爬虫爬到这就相当于访问了该页面&#xff0c;获取了其信息。可以把节点间的连线比作网页与网页之间的链接关系&#xff0c;这样…

双非本科准备秋招(14.3)—— java线程

创建和运行线程 1、使用Thread Slf4j(topic "c.Test1")public class Test1 {public static void main(String[] args) {Thread t new Thread("t1") {Overridepublic void run() {log.debug("running");}};t.start();​log.debug("runnin…

Windows 共享文件 netlogon和sysvol的作用

在Windows域环境中&#xff0c;Netlogon和SYSVOL是两个非常重要的共享文件夹&#xff0c;它们由域控制器自动创建并管理&#xff0c;对于Active Directory&#xff08;AD&#xff09;域的正常运行至关重要&#xff1a; NETLOGON共享&#xff1a; 位置&#xff1a;\\<domain_…

牛客——扫雷MINE(dp,dfs,枚举+递推)

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 相信大家都玩过扫雷的游戏。那是在一个n*m的矩阵里面有一些雷&#xff0c;要你根据一些信息找出雷来。 万圣节到了 &#xff0c;“余”人国流行起了一种简单的扫雷游戏&#xff0c;…

【BIAI】Lecture 9-Motor system 1

Motor System 专业词汇 skeletal muscle 骨骼肌 smooth muscle 平滑肌 cardiac muscle 心肌 flexor reflex 屈曲反射 central pattern generators 中央模式生成器 bio-inspired bipedal robots 仿生双足机器人 myotatic stretch reflex 肌肉自伸展反射 Cortex optic nerve 视皮…

web wifi配网和模式切换-esp8266和esp32

web wifi配网和模式切换-esp8266和esp32 支持模式:1:tcp client() 2:tcp server 3:http server(POST/GET) 4:http client 5:udp,6:factory,7:mqtt 配网进入方式&#xff1a; 开机&#xff0c;指示灯亮起后(需要灯闪烁3下后)&#xff0c;需在3s内&#xff08;超过3s则会正常启动…

NUXTJS安装始终报错无法正常运行问题解决

近日在了解NuxtJS&#xff0c;按照官方给出方法进行安装后&#xff0c;不是报错&#xff0c;就是安装成功后运行不了。执行npm run dev后始终运行出错&#xff0c;判断肯定是对应版本问题&#xff0c;沿着这方向研究&#xff0c;最终运行成功了。 文档地址&#xff1a;安装 - …

WordPress可以做企业官网吗?如何用wordpress建公司网站?

我们在国内看到很多个人博客网站都是使用WordPress搭建&#xff0c;但是企业官网的相对少一些&#xff0c;那么WordPress可以做企业官网吗&#xff1f;如何用wordpress建公司网站呢&#xff1f;下面boke112百科就跟大家简单说一下。 WordPress是一款免费开源的内容管理系统&am…

python爬虫4

#1.练习 # &#xff08;1&#xff09; 获取网页的源码 # &#xff08;2&#xff09; 解析 解析的服务器响应的文件 etree.HTML # (3) 打印 import urllib.request urlhttps://www.baidu.com/ headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit…

RabbitMQ介绍及简单操作

文章目录 一、同步调用二、异步调用三、MQ介绍1.安装RabbitMQ2.介绍RabbitMQ3.页面简单使用 一、同步调用 例如&#xff1a; #mermaid-svg-DMjF9XQ1VKYd5FjK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-DMjF9XQ…