Linux学习-46-LVM逻辑卷管理机制

news2024/11/19 22:48:32

11.9 LVM逻辑卷管理机制(硬盘分区管理)

  • 我们在实际使用 Linux 服务器的时候,随着业务的增加,文件系统负载会越来越大,当到了空间不足的情况时,如果我们还在使用传统的分区方式管理硬盘,就不得不将现有的所有分区全部删除,并重新规划新的存储方案。但是,分区到底应该分多大呢?分得太大,会浪费硬盘空间;分得太小,又会面临不够使用的情况。如果在安装系统时规划不合理,这种困扰就会经常出现。如果真出现了分区不够用的情况,应该怎么解决呢?在以往(2.4 内核以前)要想调整分区大小,要么先新建立一个更大的分区,然后复制旧分区中的内容到新分区,最后使用软链接来替代旧分区;要么使用调整分区大小的工具(如 parted),parted 虽然可以调整分区大小,但是它需要卸载分区之后才可以进行,也就是说需要停止服务。

  • 这时就需要有一种管理机制来帮助我们动态地管理存储,LVM 就提供了这种功能。LVM 最大的好处就是可以随时调整分区的大小,分区中的现有数据不会丟失,并且不需要卸载分区、停止服务。

  • LVM (Logical Volume Manager ):逻辑卷管理。它是 Linux 下对硬盘分区的一种管理机制。LVM 适合于管理大存储设备,并允许用户动态调整文件系统的大小。此外,LVM 的快照功能可以帮助我们快速备份数据。LVM 为我们提供了逻辑概念上的磁盘,使得文件系统不再关心底层物理磁盘的概念。Linux LVM 允许我们在逻辑卷在线的状态下将其复制到另一设备上,此成功被称为快照功能。快照允许我们在复制的同时,保证运行关键任务的 Web 服务器或数据库服务继续工作。

  • LVM 是在硬盘分区之上建立一个逻辑层,这个逻辑层让多个硬盘或分区看起来像一块逻辑硬盘,然后将这块逻辑硬盘分成逻辑卷之后使用,从而大大提高了分区的灵活性。我们把真实的物理硬盘或分区称作物理卷(PV);由多个物理卷组成一块大的逻辑硬盘,叫作卷组(VG);将卷组划分成多个可以使用的分区,叫作逻辑卷(LV)。而在 LVM 中最小的存储单位不再是 block,而是物理扩展块(Physical Extend,PE)。我们通过下图看看这些概念之间的联系。
    在这里插入图片描述

  • 物理卷(Physical Volume,PV):就是真正的物理硬盘或分区。

  • 卷组(Volume Group,VG):将多个物理卷合起来就组成了卷组。组成同一个卷组的物理卷可以是同一块硬盘的不同分区,也可以是不同硬盘上的不同分区。我们可以把卷组想象为一块逻辑硬盘。

  • 逻辑卷(Logical Volume,LV):卷组是一块逻辑硬盘,硬盘必须分区之后才能使用,我们把这个分区称作逻辑卷。逻辑卷可以被格式化和写入数据。我们可以把逻辑卷想象为分区。

  • 物理扩展(Physical Extend,PE):PE 是用来保存数据的最小单元,我们的数据实际上都是写入 PE 当中的。PE 的大小是可以配置的,默认是 4MB。

  • 也就是说,我们在建立 LVM 的时候,需要按照以下步骤来进行:

    1. 把物理硬盘分成分区,当然也可以是整块物理硬盘;
    2. 把物理分区建立为物理卷(PV),也可以直接把整块硬盘都建立为物理卷。
    3. 把物理卷整合为卷组(VG)。卷组就已经可以动态地调整大小了,可以把物理分区加入卷组,也可以把物理分区从卷组中删除。
    4. 把卷组再划分为逻辑卷(LV),当然逻辑卷也是可以直接调整大小的。我们说逻辑卷可以想象为分区,所以也需要格式化和挂载。
  • 其实,在安装 Linux 系统时,我们采用的图形安装界面就可以直接把硬盘配置成 LVM(RAID 也可以在安装时直接配置),但当时我们只分配了基本分区。那是因为 LVM 最主要的作用是调整分区大小,所以就算在安装时已经安装了 LVM,我们还是需要学习 LVM 的命令。

11.10 PV物理卷(创建、查看和删除)详解

  • 虽然使用图形界面方式建立 LVM 更加方便,但是 LVM 最主要的作用是在不丢失数据合不停机的情况下调整分区大小,所以我们一定会在系统安装完成之后,使用命令模式进行 LVM 调整。

  • 第一步,就是要建立所需的物理分区,创建方式就是使用 fdisk 交互命令。需要注意的是,分区的系统 ID 不再是 Linux 默认的分区 ID 83,而要改成 LVM 的 ID 8e。在 /dev/sdb 硬盘中还有空闲空间,在这块硬盘中新建立 3 个分区,每 个分区的大小为 1GB。命令如下:

[root@CncLucZK ~]# fdisk /dev/sdb #建立分区的命令省略
Command {m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000ebd
Device Boot Start End Blocks Id System
/dev/sdbl 1 65 522081 83 Linux
/dev/sdb2 66 2610 20442712+ 5 Extended
/dev/sdb5 66 197 1060258+ 83 Linux
/dev/sdb6 198 329 1060258+ 83 Linux
/dev/sdb7 330 461 1060258+ 83 Linux
#建立了/dev/sdb5 ~ 7三个分区
Command (m for help): t				#修改分区ID
Partition number (1-7): 5
Hex code (type L to list codes): 8e
Changed system type of partition 5 to 8e (Linux LVM)
#把/dev/sdb5的分区ID改为8e,其他两个分区照做,改好后,查询结果如下:
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000ebd
Device Boot Start End Blocks Id System
/dev/sdb1 1 65 52.2081 83 Linux
/dev/sdb2 66 2610 20442712+ 5 Extended
/dev/sdb5 66 197 1060258+ 8e Linux LVM
/dev/sdb6 198 329 1060258+ 8e Linux LVM
/dev/sdb7 330 461 1060258+ 8e Linux LVM #保存退出
[root@CncLucZK ~]# partprobe 			#记得重新读取分区表,否则重启系统
  • 建立物理卷:建立物理卷的命令如下:
[root@CncLucZK ~]# pvcreate [设备文件名]

在建立物理卷时,我们既可以把整块硬盘都建立成物理卷,也可以把某个分区建立成物理卷。如果要把整块硬盘都建立成物理卷,则命令如下:

[root@CncLucZK ~]# pvcreate /dev/sdb

在我们的使用中要把分区建立成物理卷,所以执行以下命令:

[root@CncLucZK ~]# pvcreate /dev/sdb5
Writing physical volume data to disk "/dev/sdb5" Physical volume "/dev/sdb5" successfully created
[root@CncLucZK ~]# pvcreate /dev/sdb6
Writing physical volume data to disk "/dev/sdb6" Physical volume "/dev/sdb6" successfully created
[root@CncLucZK ~]# pvcreate /dev/sdb7
Writing physical volume data to disk "/dev/sdb7" Physical volume "dev/sdb7' successfully created
  • 查看物理卷:查看物理卷的命令有两个,第一个是 pvscan,用来查询系统中哪些硬盘或分区是物理卷。命令如下:
[root@CncLucZK ~]# pvscan
PV /dev/sdb5 Ivm2 [1.01 GiB]
PV /dev/sdb6 Ivm2 [1.01 GiB]
PV /dev/sdb7 Ivm2 [1.01 GiB]
Total: 3 [3.03 GiB] /in no VG: 0 [0 ] / in no VG: 3 [3.03 GiB]

可以看到,在我们的系统中,/dev/sdb5~7 这三个分区是物理卷。最后一行的意思是:共有 3 个物理卷[大小]/使用了 0 个卷[大小]/空闲 3 个卷[大小]。

第二个查询命令是 pvdisplay,它可以查看到更详细的物理卷状态,命令如下:

[root@CncLucZK ~]# pvdisplay
"/dev/sdb5" is a new physical volume of "1.01 GiB"
—NEW Physical volume 一
PV Name /dev/sdb5
#PV名
VG Name
#属于的VG名,还没有分配,所以空白
PV Size 1.01 GiB
#PV 的大小
Allocatable NO
#是否已经分配
PE Size 0
#PE大小,因为还没有分配,所以PE大小也没有指定
Total PE 0
#PE总数
Free PE 0
#空闲 PE数
Allocated PE 0
#可分配的PE数
PV UUID CEsVz3-t0sD-e1w0-wkHZ-iaLq-06aV-xtQNTB
#PV的UUID
…其它两个PV省略…
  • 删除物理卷:如果不再需要物理卷,则使用 pvremove 命令删除,命令如下:
[root@CncLucZK ~]# pvremove /dev/sdb7
Labels on physical volume "/dev/sdb7" successfully wiped
#当然,在我们的使中还要用到/dev/sdb7物理卷,所以实验完成后,记得把它再添加回来
  • 在删除物理卷时,物理卷必须不属于任何卷组,也就是需要先将物理卷从卷组中删除,再删除物理卷。其实所有的删除就是把创建过程反过来,建立时不能少某个步骤,删除时也同样不能跳过某一步直接删除。

11.11 VG卷组(创建、激活、查看、扩容、减小及删除)

  • 之前物理分区已经建立,同时也把物理分区建立成了逻辑卷,按照步骤,接下来就建立卷组了。可以把卷组想象成基本分区中的硬盘,是由多个物理卷组成的。卷组就已经可以动态地调整空间大小了,当卷组空间不足时,可以向卷组中添加新的物理卷。

  • 建立卷组:建立卷组使用的命令是 vgcreate,具体命令格式如下:

[root@CncLucZK ~]# vgcreate [-s PE 大小] 卷组名 物理卷名

[-s PE 大小] 选项的含义是指定 PE 的大小,单位可以是 MB、GB、TB 等。如果不写,则默认 PE 大小是 4MB。这里的卷组名指的就是要创建的卷组的名称,而物理卷名则指的是希望添加到此卷组的所有硬盘区分或者整个硬盘。

我们有三个物理卷 /dev/sdb5~7,先把 /dev/sdb5 和 /dev/sdb6 加入卷组,留着 /dev/sdb7 一会实验调整卷组大小,命令如下:

[root@CncLucZK ~]# vgcreate -s 8MB scvg /dev/sdb5 /dev/sdb6
Volume group "scvg" successfully created
我们把/dev/sdb和/dev/sdb6两个物理卷加入了卷组scvg,并指定了PE的大小是8MB
  • 激活卷组:卷组创建完毕后,可以通过 vgchange 命令来激活卷组,而无法重启系统。vgchange 命令的基本格式如下:
#激活卷组
[root@CncLucZK ~]# vgchange -a y 卷组名
#停用卷组
[root@CncLucZK ~]# vachange -a n 卷组名

通过使用 vgchange 命令,我们可以激活 scvg 卷组。

  • 查看卷组:查看卷组的命令同样有两个:vgscan 命令主要用于查看系统中是否有卷组;而 vgdisplay 命令则用于查看卷组的详细状态。命令如下:
[root@CncLucZK ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "scvg" using metadata type lvm2 			#scvg卷组确实存在
[root@CncLucZK ~]# vgdisplay
---Volume group ---
VG Name scvg 卷组名
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 2.02 GiB
#卷组大小
PE Size 8.00 MiB
#PE大小
Total PE 258
#PE总数
Alloc PE / Size 0/0
#已用 PE 数量/大小
Free PE / Size 258 / 2.02GiB
#空闲PE数量/大小
VG UUID Fs0dPf-LV7H-0Ir3-rthA-3UxC-LX5c-FLFriJ
  • 增加卷组容量:我们现在要把 /dev/sdb7 加入卷组,使用的命令是 vgextend。命令如下:
[root@CncLucZK ~]# vgextend scvg /dev/sdb7
Volume group "scvg" successfully extended
#把/dev/sdb7物理卷也加入scvg卷组
[root@localhost ~]# vgdisplay
---Volume group ---
VG Name scvg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 3.02 GiB
#卷组容量增加
PE Size 8.00 MiB
Total PE 387
#PE 总数增加
Alloc PE / Size 0/0
Free PE / Size 387 / 3.02 GiB
VG UUID Fs0dPf-LV7H-0Ir3-rthA-3UxC-LX5c-FLFriJ
  • 减少卷组容量:既然可以增加卷组容量,当然也可以减少卷组容量,我们使用 vgreduce 命令在卷组中删除物理卷。命令如下:
[root@CncLucZK ~]# vgreduce scvg /dev/sdb7
Removed "/dev/sdb7" from volume group "scvg"
#在卷组中删除/dev/sdb7物理卷
[root@CncLucZK ~]# vgreduce -a
#删除所有未使用的物理卷

当然,删除之后记得再添加回来,以便下面再用于实验。

  • 删除卷组:删除卷组的命令是 vgremove。命令如下:
[root@CncLucZK ~]# vgremove scvg
Volume group "scvg" successfully removed

只有在删除卷组之后,才能删除物理卷。还要注意的是,scvg 卷组中还没有添加任何逻辑卷,如果拥有了逻辑卷,则记得先删除逻辑卷再删除卷组。再次强调,删除就是安装的反过程,每一步都不能跳过。

当然,删除之后记得再建立回来,否则逻辑卷的实验无法完成。命令如下:

[root@CncLucZK ~]# vgcreate -s 8MB scvg /dev/ sdb5 /dev/sdb6 /dev/sdb7
Volume group "scvg" successfully created
#这次三个物理卷就一起加入卷组了

11.12 LV逻辑卷(创建、查看、调整大小及删除)

  • 可以把逻辑卷想象成分区,那么这个逻辑卷当然也需要被格式化和挂载。另外,逻辑卷也是可以动态调整大小的,而且数据不会丟失,也不用卸载逻辑卷。

1.建立逻辑卷:我们现在已经建立了 3GB 大小的卷组 scvg,接下来需要在卷组中建立逻辑卷。命令格式如下:

[root@CncLucZK ~]# lvcreate [选项] [-n 逻辑卷名] 卷组名
  • 选项:

    • -L 容量:指定逻辑卷大小,单位为 MB、GB、TB 等;
    • -l 个数:按照 PE 个数指定逻辑卷大小,这个参数需要换算容量,太麻烦;
    • -n 逻辑卷名:指定逻辑卷名;
  • 我们建立一个 1.5GB 大小的 userlv 逻辑卷,命令如下:

[root@CncLucZK ~]# lvcreate -L 1.5G -n userlv  scvg
Logical volume "userlv " created
#在scvg卷组中建立一个1.5GB大小的userlv逻辑卷
  • 建立完逻辑卷,还要在格式化和挂载之后才能正常使用。格式化和挂载命令与操作普通分区时是一样的,不过需要注意的是,逻辑卷的设备文件名是"/dev/卷组名/逻辑卷名",如逻辑卷 userlv的设备文件名就是"/dev/scvg/userlv"。具体命令如下:
[root@CncLucZK ~]# mkfs -t ext4 /dev/scvg/userlv
#格式化
[root@CncLucZK ~]# mkdir /disklvm
[root@CncLucZK ~]# mount /dev/scvg/userlv /disklvm/
#建立挂载点,并挂载
[root@CncLucZK ~]# mount
…省略部分输出…
/dev/mapper/scvg-userlv on /disklvm type ext4(rw)
#已经挂载了
  • 当然,如果需要开机后自动挂载,则要修改 /etc/fstab 文件。

2.查看逻辑卷

  • 查看命令同样有两个,第一个命令 lvscan 只能看到系统中是否拥有逻辑卷,命令如下:
[root@CncLucZK ~]# lvscan
ACTIVE '/dev/scvg/userlv' [1.50 GiB] inherit
#能够看到激活的逻辑卷,大小是1.5GB
  • 第二个命令 lvdisplay 可以看到逻辑卷的详细信息,命令如下:
[root@CncLucZK ~]# lvdisplay
---Logical volume---
LV Path /dev/scvg/lamplv
逻辑卷的设备文件名
LV Name lamplv
#逻辑卷名
VG Name scvg
#所属的卷组名
LV UUID 2kyKmn-Nupd-CldB-8ngY-NsI3-b8hV-QeUuna
LV Write Access read/write
LV Creation host, time localhost, 2013-04-18 03:36:39 +0800
LV Status available
# open 1
LV Size 1.50 GiB
#逻辑卷大小
Current LE 192
Segments 2
Allocation inherit
Read ahead sectors auto
-currently set to 256
Block device 253:0
  1. 调整逻辑卷大小
  • 我们可以使用 lvresize 命令调整逻辑卷的大小,不过我们一般不推荐减少逻辑卷的空间,因为这非常容易导致逻辑卷中的文件系统的数据丟失。所以,除非我们已经备份了逻辑卷中的数据,否则不要减少逻辑卷的空间。lvresize 命令格式如下:
[root@CncLucZK ~]# lvresize [选项] 逻辑卷的设备文件名
  • 选项:

    • -L 容量:安装容量调整大小,单位为 KB、GB、TB 等。使用 + 増加空间,- 代表减少空间。如果直接写容量,则代表设定逻辑卷大小为指定大小;
    • -l 个数:按照 PE 个数调整逻辑卷大小;
  • 我们先在 /disklvm 分区中建立一些测试文件,一会儿调整完大小,再看看数据是否丟失了。

[root@CncLucZK ~]# cd /disklvm/
[root@CncLucZK disklvm]# touch testf
[root@CncLucZK disklvm]# mkdir testd
[root@CncLucZK disklvm]# ls
lost+found testd testf
  • userlv 逻辑卷的大小是 1.5GB,而 scvg 卷组中还有 1.5GB 的空闲空间,那么增加 userlv逻辑卷的大小到 2.5GB。命令如下:
[root@CncLucZK disklvm]# lvresize -L 2.5G /dev/scvg/userlv
Extending logical volume userlv  to 2.50 GiB Logical volume userlv  successfully resized
#增加userlv 逻辑卷的大小到2. 5GB,当然命令也可以这样写
[roots CncLucZK disklvm] # lvresize -L +1G /dev/scvg/userlv 
[root@CncLucZK disklvm]# lvdisplay
---Logical volume ---
LV Path /dev/scvg/userlv 
LV Name userlv
VG Name scvg
LV UUID 2kyKmn-Nupd-CldB-8ngY-Ns13-b8hV-QeUuna
LV Write Access read/write
LV Creation host, time localhost, 2013-04-18 03:36:39 +0800 LV Status available
# open 1
LV Size 2.50 GiB
#大小改变了
Current LE 320
Segments 3
Allocation inherit
Read ahead sectors auto
-currently set to 256
Block device 253:0
  • 逻辑卷的大小已经改变了,但是好像有如下一些问题:
[root@CncLucZK disklvm]# df -h /disklvm/
文件系统 容量 已用 可用 已用% %挂载点
/dev/mapper/scvg-userlv 1.5G 35M 1.4G 3%/ disklvm

/disklvm 分区的大小还是 1.5GB ,刚刚只是逻辑卷的大小改变了,如果要让分区使用这个新逻辑卷,则还要使用 resize2fs 命令来调整分区的大小。不过这里就体现出了 LVM 的优势:我们不需要卸载分区,直接就能调整分区的大小。

  • resize2fs命令的格式如下:
[root@CncLucZK ~]# resize2fs [选项] [设备文件名] [调整的大小]
  • 选项:

    • -f:强制调整;
    • 设备文件名:指定调整哪个分区的大小;
    • 调整的大小:指定把分区调整到多大,要加 M、G 等单位。如果不加大小,则会使用整个分区;
  • 我们已经把逻辑卷调整到 2.5GB,这时就需要把整个逻辑卷都加入 /disklvm 分区中,命令如下:

[root@CncLucZK ~]# resize2fs /dev/scvg/userlv
resize2fs 1.41.12(17-May-2010)
Filesystem at /dev/scvg/userlv is mounted on/ disklvm; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of/dev/scvg/userlv to 655360 (4k) blocks.
The filesystem on /dev/scvg/userlv is now 655360 blocks long.
#已经调整了分区大小
[root@CncLucZK ~]# df -h /disklvm/
文件系统 容量 已用 可用 已用% %挂载点
/dev/mapper/scvg-userlv 2.5G 35M 2.4G 2% /disklvm
#分区大小已经是2.5GB 了
[root@CncLucZK ~]# ls /disklvm/
lost+found testd testf
#而且数据并没有丟失

如果要减少逻辑卷的容量,则只需把增加步骤反过来再做一遍就可以了。不过我们并不推荐减少逻辑卷的容量,因为这有可能导致数据丟失。

4.删除逻辑卷:删除了逻辑卷,其中的数据就会丟失,所以要确定你真的需要删除这个逻辑卷。命令格式如下:

[root@CncLucZK ~]#lvremove 逻辑卷的设备文件名
  • 我们删除 userlv逻辑卷,记得在删除时要先卸载。 命令如下:
[root@CncLucZK ~]# umount /dev/scvg/userlv
[root@CncLucZK ~]# Ivremove /dev/scvg/userlv
Do you really want to remove active logical volume userlv? [y/n]: n
#如果这里选择y,就会执行删除操作,逻辑卷内的所有数据都会被清空
Logical volume userlv not removed

参考文献:
Linux LVM逻辑卷管理机制(硬盘分区管理机制)

下一篇:Linux学习-47-Linux系统进程管理和启动方式

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

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

相关文章

项目管理的核心是什么?

管理的核心是目标管理 目标管理通俗来讲是对做什么的思考,作为管理者在面向业务的开展过程中,根据业务的动态调整目标,大目标不变的情况下,去不断思考做什么更好地完成目标。 目标发展的几个阶段 1、相关的概念 项目启动&…

做测试8年,刚升主管,还是没逃过裁员....

我做测试8年,半年前被升为测试部门主管,本以为马上到达人生巅峰,没想到公司今天通知跟我解约。 回想晋升的这半年,我也曾激情满满,想着一定要好好干出一番成绩。可做了之后才发现这是个坑: 每天不是在开会…

一个简单的HTML网页 故宫学生网页设计作品 dreamweaver作业静态HTML网页设计模板 旅游景点网页作业制作

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有…

计算机网络第七章知识点回顾(自顶向下)

第七章知识点回顾1.网络层1.1网络层服务1.1.1网络层的两个主要功能1.1.2选路和转发的关系1.2网络层: 数据面和控制面1.网络层 Chapter goals: 理解网络层服务原理,主要关注数据面 网络层服务模型网络层上的重要功能:转发和选路路由器工作原理编址因特网…

【linux】cpu过高解决方法

CPU过高情况: 1、使用top命令查看cpu的进程占用情况: 2、发现11443的进程占比过高,通过top -Hp 11443 查看线程的占用情况,发现11459、11460、11461线程的占比过高: 解决swap占用CPU: 设置vm.swappiness0…

win10录屏快捷键是什么?电脑录屏快捷键ctrl+alt+

​在我们日常生活中,经常会使用电脑。我们在使用win10电脑的时候,有时候经常会遇到一些好看的视频或者是一些十分有用的知识教程,想要对其进行保存与分享,这个时候就需要用到电脑自带的录屏功能了。那么win10录屏快捷键是什么&…

Ubuntu22 Docker运行SRS流媒体服务,推拉流,yolov5训练自定义模型进行视频流识别

首先安装docker,设置系统启动 sudo apt-get install -y docker.io sudo systemctl start docker 查看docker进程 ps -ef|grep docker 拉去srs镜像 sudo docker pull registry.cn-hangzhou.aliyuncs.com/ossrs/srs:v4.0.198 启动镜像 sudo docker run -p 193…

PPT设置“只读模式”的两种方法

想要防止PPT文件被意外更改,或者禁止他人随意更改,我们可以给PPT设置保护模式,而PPT的“只读模式”就起到了这样的作用。 ​具体的设置方法有两种,我们可以根据不同需求选择合适的方法。 方法一: 防止意外更改&…

Linux安装Nexus3搭建maven私服超详细搭建上传步骤

下载nexus3.x 上传nexus压缩包并解压 启动 开启端口号 浏览器访问 ​编辑 设置开机自启动 运行用户为root (编辑nexus bin下的nexus.rc) 修改nexus3启动时要使用的jdk版本 修改nexus3默认端口 私服新建自定义的仓库 添加角色和用户 添加角色 添加用户 使用 Mave…

[附源码]java毕业设计学生实习管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

12.5 Hierarchical names (层次化名称)

Verilog HDL描述中的每个标识符应具有唯一的分层路径名。模块的层次结构和项目的定义(如模块内的任务和命名块)应定义这些名称。名称的层次结构可以被视为树结构,其中每个模块实例、生成块实例、任务、函数或命名的begin-end 或者 fork-join块…

【Git】一文带你入门Git分布式版本控制系统(简介,安装,Linux命令)

Git 系列文章目录 文章目录Git 系列文章目录一、前言二、安装 Git三、基本 Linux 命令一、前言 [ 什么是Git?] Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。【百度百科】 Git 是分布式版本控制系统&#…

Scratch、Python、C++,谁才是少儿编程的第一选择?

前言 面对市面上形形色色的编程语言类型,经常有家长犯难问我们该如何为孩子选择合适的课程: “那种拖块看起来像玩游戏,不如 Python、C 这样的代码编程语⾔⾼级。” “现在是人工智能时代,直接让孩子从Python学习,以…

【0147】当参数shared_memory_type分别为sysv和mmap时,差异为何如此大?

文章目录 1. sysv和mmap差异如此大2. 底层原理2.1 创建匿名mmap()共享内存段2.2 确定huge page大小2.3 创建ipcs看见的64字节shared memory1. sysv和mmap差异如此大 在【0145】postmaster创建System V shared memory默认值大小(2)一文中的第1节里,我有给出过当postgresql.c…

Hystrix 请求合并、请求隔离、优化

文章目录请求合并引入依赖启动类 加注解EnableHystrixservice服务测试请求隔离线程池隔离&#xff08;大部分情况下&#xff09;信号量隔离线程池隔离演示引入依赖启动类 加注解EnableHystrixservice服务测试信号量隔离演示Hystrix的其他用法请求合并 引入依赖 <dependenc…

linux文件的隐藏属性

1.查看隐藏属性 lsattr 查看文件隐藏属性 lsattr -d 查看目录隐藏属性 lsattr -a 显示隐藏文件隐藏属性 lsattr -R 连同子目录的数据也一并列出来 2.修改隐藏属性 chattr 修改隐藏属性 属性A &#xff1a;当设定了 A 这个属性时&#xff0c;若你有存取此文件(或目录)时&a…

ACM-BCB2019 | SMILES-BERT:基于大规模无监督预训练的分子属性预测模型

原文标题&#xff1a;SMILES-BERT: Large Scale Unsupervised Pre-Training for Molecular Property Prediction 链接&#xff1a;https://doi.org/10.1145/3307339.3342186 一、问题提出 分子指纹&#xff1a;可用于分子性质分类、回归或生成新分子等各种应用。传统的分子指纹…

【强化学习论文合集】IJCAI-2022 强化学习论文 | 2022年合集(五)

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。 本专栏整理了近几年国际顶级会议中,涉及强化学习(Rein…

设计模式之美——单一职责原则和开闭原则

“看懂”和“会用”是两回事&#xff0c;而“用好”更是难上加难。 SOLID 原则&#xff1a; SRP单一职责原则&#xff08;the single responsibility principle &#xff09; OCP开闭原则&#xff08;the open closed principle&#xff09; LSP里氏替换原则&#xff08;the l…

【HMS Core】School Diary应用集成多个HMS Core服务,更好的体验华为生态系统

一、介绍 总览 通过建立本次的School Diary应用&#xff0c;您可以更好地体验华为生态系统的组成部分&#xff0c;包括认证服务、云存储和云数据库等Serverless服务。此外您还可以了解到如何使用账号服务集成应用登录功能。老师和学生两种角色的匹配过程是本应用的一大特色。…