Linux磁盘分区中物理卷(PV)、卷组(VG)、逻辑卷(LV)创建和(LVM)管理

news2025/2/28 20:00:14

文章目录

  • 一 基础定义
  • 二 创建逻辑卷
    • 2-1 准备物理设备
    • 2-2 创建物理卷
    • 2-3 创建卷组
    • 2-4 创建逻辑卷
    • 2-5 创建文件系统并挂载文件
  • 三 扩展卷组和缩减卷组
    • 3-1 准备物理设备
    • 3-2 创建物理卷
    • 3-3 扩展卷组
    • 3-4 查看卷组的详细信息以验证
    • 3-5 缩减卷组
  • 四 扩展逻辑卷
    • 4-1 检查卷组是否有可用的空间
    • 4-2 扩展逻辑卷
    • 4-3 扩展文件系统
  • 五 删除逻辑卷
    • 5-1 备份数据
    • 5-2 卸载文件系统
    • 5-3 删除逻辑卷
    • 5-4 删除卷组
    • 5-5 删除物理卷

一 基础定义

LVM,Logical Volume Manger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分区管理的灵活性。

物理设备,是用于保留逻辑卷中所存储数据的存储设备。它们是块设备,可以是磁盘分区、
整个磁盘、RAID阵列或SAN磁盘。设备必须初始化为LVM物理卷,才能与LVM结合使用。
整个“设备”将用作一个物理卷。

物理卷(PV) ,用于注册基础物理设备以便在卷组中使用。LVM自动将PV划分为物理区块
(PE); 它们是充当PV上最小存储块的小块数据。

卷组 (VG), 是存储池,由一个或多个物理卷组成。一个PV只能分配给一个VG 。VG可以
包含未使用的空间和任意数目的逻辑卷。

逻辑卷(LV), 根据卷组中的空闲物理范围创建,提供应用、用户和操作系统所使用的“存
储”设备。LV是逻辑区块(LE) 的集合,LE映射到物理区块。默认情况下,每个 LE将映射到一个PE。设置特定LV选项将会更改此映射;例如,镜像会导致每个LE映射到两个PE。

在这里插入图片描述

二 创建逻辑卷

2-1 准备物理设备

在上一章内容的基础上,创建第三个主分区,并设置分区类型为LVM,具体步骤如下。
如果不理解每一个交互式命令的含义,可以参考笔者的上一篇文章。

Linux磁盘分区和管理

[root@canway01 ~]# 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): n   
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
Partition number (3,4, default 3): 3
First sector (4196352-20971519, default 4196352): 
Using default value 4196352
Last sector, +sectors or +size{K,M,G} (4196352-20971519, default 20971519): +2G
Partition 3 of type Linux and of size 2 GiB is set

Command (m for help): t
Partition number (1-3, default 3): 3
Hex code (type L to list all codes): 8e   
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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: 0xceafdf4b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576   82  Linux swap / Solaris
/dev/sdb3         4196352     8390655     2097152   8e  Linux LVM

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.
[root@canway01 ~]# partprobe /dev/sdb

2-2 创建物理卷

为分区或其他设备添加标签,使其作为物理卷和LVM结合使用。会将用于存储LVM配置数据的一个标头直接写入PV(物理卷)。

/dev/sdb3标记为PV,准备好分配到卷组。

[root@canway01 ~]# pvcreate /dev/sdb3
  Physical volume "/dev/sdb3" successfully created.

查看结果

[root@canway01 ~]# pvs
  PV         VG              Fmt  Attr PSize  PFree
  /dev/sda2  centos_canway01 lvm2 a--  19.50g    0 
  /dev/sdb3                  lvm2 ---   2.00g 2.00g
[root@canway01 ~]# pvdisplay /dev/sdb3
  "/dev/sdb3" is a new physical volume of "2.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb3
  VG Name               
  PV Size               2.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               pCOYib-ZuXO-OrBJ-jw3b-wBF8-9Mtg-VYU5Ym
  

2-3 创建卷组

创建包含一个或多个物理卷的池。VG大小由池中的物理范围的总数决定。

创建的卷组名称是vg_name1,大小等于/dev/sdb3

[root@canway01 ~]# vgcreate vg_name1 /dev/sdb3
  Volume group "vg_name1" successfully created

查看结果

[root@canway01 ~]# vgs
  VG              #PV #LV #SN Attr   VSize  VFree 
  centos_canway01   1   2   0 wz--n- 19.50g     0 
  vg_name1          1   0   0 wz--n- <2.00g <2.00g
[root@canway01 ~]# vgdisplay vg_name1
  --- Volume group ---
  VG Name               vg_name1
  System ID             
  Format                lvm2
  Metadata Areas        1
  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                1
  Act PV                1
  VG Size               <2.00 GiB
  PE Size               4.00 MiB
  Total PE              511
  Alloc PE / Size       0 / 0   
  Free  PE / Size       511 / <2.00 GiB
  VG UUID               VLvUZr-pyay-tp23-A7Cg-8aKT-PXkZ-KIzrsV

2-4 创建逻辑卷

使用命令lvcreate根据卷组中可用的物理范围创建新的逻辑卷。
参数-n设置LV名称
参数-L设置LV大小
参数-n设置LV名称

[root@canway01 ~]# lvcreate -n lv_name1 -L 1G vg_name1
  Logical volume "lv_name1" created.

检查确认

[root@canway01 ~]# lvs
  LV       VG              Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root     centos_canway01 -wi-ao---- 18.00g                                                    
  swap     centos_canway01 -wi-ao----  1.50g                                                    
  lv_name1 vg_name1        -wi-a-----  1.00g                                                    
[root@canway01 ~]# lvdisplay /dev/vg_name1/lv_name1
  --- Logical volume ---
  LV Path                /dev/vg_name1/lv_name1
  LV Name                lv_name1
  VG Name                vg_name1
  LV UUID                6TLKBb-IZ91-hOcR-1zKD-FpSQ-3ofR-eluxkD
  LV Write Access        read/write
  LV Creation host, time canway01, 2022-11-19 21:23:39 +0800
  LV Status              available
  # open                 0
  LV Size                1.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

此处需要注意的是,如何找到自己创建的逻辑卷名。

传统名称:/dev/卷组名/逻辑卷名
内核映射:/dev/mapper/卷组名-逻辑卷名

2-5 创建文件系统并挂载文件

首先创建文件系统

[root@canway01 ~]# mkfs.xfs /dev/vg_name1/lv_name1 
meta-data=/dev/vg_name1/lv_name1 isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

然后创建挂载目录

[root@canway01 ~]# mkdir -p /data/sdb3/vg_name1/lv_name1

接着向/etc/fstab中添加条目

[root@canway01 ~]# tail -1 /etc/fstab 
/dev/vg_name1/lv_name1  /data/sdb3/vg_name1/lv_name1    xfs   defaults  0 0

挂载/etc/fstab中的所有文件和目录

[root@canway01 ~]# mount -a

检查确认

[root@canway01 ~]# df -h
Filesystem                        Size  Used Avail Use% Mounted on
devtmpfs                          470M     0  470M   0% /dev
tmpfs                             487M     0  487M   0% /dev/shm
tmpfs                             487M  8.1M  479M   2% /run
tmpfs                             487M     0  487M   0% /sys/fs/cgroup
/dev/mapper/centos_canway01-root   18G  5.2G   13G  29% /
/dev/sda1                         505M  165M  340M  33% /boot
tmpfs                              98M     0   98M   0% /run/user/0
/dev/sdb1                        1014M   33M  982M   4% /data/sdb1
/dev/mapper/vg_name1-lv_name1    1014M   33M  982M   4% /data/sdb3/vg_name1/lv_name1

到此为止,我们的逻辑卷创建完成。

三 扩展卷组和缩减卷组

3-1 准备物理设备

Linux的主分区和扩展分区加起来最多只有4个,在前面的操作中,我们已经创建了3个主分区,分别是Linux分区、swap交换分区、LVM分区。因此如果要扩展逻辑卷,只能先创建扩展分区,然后从扩展分区中切割出新的逻辑分区(PV)来给LV扩容。

创建扩展分区时,起始的块和最终的块都不要输入内容,都是直接回车键选择默认,这样我们就将这块硬盘上剩下的所有空间都分给了扩展分区。

[root@canway01 ~]# 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): n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): e
Selected partition 4
First sector (8390656-20971519, default 8390656): 
Using default value 8390656
Last sector, +sectors or +size{K,M,G} (8390656-20971519, default 20971519): 
Using default value 20971519
Partition 4 of type Extended and of size 6 GiB is set

Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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: 0xceafdf4b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576   82  Linux swap / Solaris
/dev/sdb3         4196352     8390655     2097152   8e  Linux LVM
/dev/sdb4         8390656    20971519     6290432    5  Extended

创建好扩展分区后,再从扩展分区中切割新的逻辑分区/dev/sdb5

Command (m for help): n   
All primary partitions are in use
Adding logical partition 5
First sector (8392704-20971519, default 8392704): 
Using default value 8392704
Last sector, +sectors or +size{K,M,G} (8392704-20971519, default 20971519): +1G
Partition 5 of type Linux and of size 1 GiB is set

Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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: 0xceafdf4b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576   82  Linux swap / Solaris
/dev/sdb3         4196352     8390655     2097152   8e  Linux LVM
/dev/sdb4         8390656    20971519     6290432    5  Extended
/dev/sdb5         8392704    10489855     1048576   83  Linux

接着,我们将/dev/sdb5的分区类型修改为LVM。

Command (m for help): t     
Partition number (1-5, default 5): 5
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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: 0xceafdf4b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576   82  Linux swap / Solaris
/dev/sdb3         4196352     8390655     2097152   8e  Linux LVM
/dev/sdb4         8390656    20971519     6290432    5  Extended
/dev/sdb5         8392704    10489855     1048576   8e  Linux LVM

最后不要忘了保存请求的信息,并加载内核读取新的磁盘分区表。

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.
[root@canway01 ~]# partprobe /dev/sdb

3-2 创建物理卷

/dev/sdb5标记为PV,准备好分配到卷组中。

[root@canway01 ~]# pvcreate /dev/sdb5
  Physical volume "/dev/sdb5" successfully created.
[root@canway01 ~]# pvs
  PV         VG              Fmt  Attr PSize  PFree   
  /dev/sda2  centos_canway01 lvm2 a--  19.50g       0 
  /dev/sdb3  vg_name1        lvm2 a--  <2.00g 1020.00m
  /dev/sdb5                  lvm2 ---   1.00g    1.00g

3-3 扩展卷组

向卷组添加新的物理卷。

[root@canway01 ~]# vgextend vg_name1 /dev/sdb5
  Volume group "vg_name1" successfully extended
[root@canway01 ~]# vgs
  VG              #PV #LV #SN Attr   VSize  VFree
  centos_canway01   1   2   0 wz--n- 19.50g    0 
  vg_name1          2   1   0 wz--n-  2.99g 1.99g

3-4 查看卷组的详细信息以验证

[root@canway01 ~]# vgdisplay vg_name1
  --- Volume group ---
  VG Name               vg_name1
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               2.99 GiB
  PE Size               4.00 MiB
  Total PE              766
  Alloc PE / Size       256 / 1.00 GiB
  Free  PE / Size       510 / 1.99 GiB
  VG UUID               VLvUZr-pyay-tp23-A7Cg-8aKT-PXkZ-KIzrsV

Free PE / Size。它不应当为零。

到此为止,扩展逻辑卷就完成了。

3-5 缩减卷组

首先,还是备份数据。
因为你不确定在整个流程中是否会产生误操作而丢失数据。

其次,移动物理区段。
只有当VG中存在足够的空闲范围,且这些范围都是来自于其他PV时,才能做这个操作。

[root@canway01 ~]# pvmove /dev/sdb5
  No data to move for vg_name1.

接着,缩减卷组。
将物理卷从卷组中删除。

[root@canway01 ~]# vgreduce vg_name1 /dev/sdb5
  Removed "/dev/sdb5" from volume group "vg_name1"

最后检查确认一遍

[root@canway01 ~]# vgs
  VG              #PV #LV #SN Attr   VSize  VFree   
  centos_canway01   1   2   0 wz--n- 19.50g       0 
  vg_name1          1   1   0 wz--n- <2.00g 1020.00m
[root@canway01 ~]# vgdisplay vg_name1 
  --- Volume group ---
  VG Name               vg_name1
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <2.00 GiB
  PE Size               4.00 MiB
  Total PE              511
  Alloc PE / Size       256 / 1.00 GiB
  Free  PE / Size       255 / 1020.00 MiB
  VG UUID               VLvUZr-pyay-tp23-A7Cg-8aKT-PXkZ-KIzrsV

至此,物理卷/dev/sdb5已经从vg_name1卷组中移除,可以添加到其他卷组中。

四 扩展逻辑卷

4-1 检查卷组是否有可用的空间

我们需要确认的是, Free PE / Size 255 / 1020.00 MiB的值,应该大于等于所需额外空间的值。
此处可知,VG还有1020M的空闲空间,所以扩展逻辑卷的额外空间不能大于1020M。

[root@canway01 ~]# vgdisplay vg_name1 
  --- Volume group ---
  VG Name               vg_name1
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <2.00 GiB
  PE Size               4.00 MiB
  Total PE              511
  Alloc PE / Size       256 / 1.00 GiB
  Free  PE / Size       255 / 1020.00 MiB
  VG UUID               VLvUZr-pyay-tp23-A7Cg-8aKT-PXkZ-KIzrsV

4-2 扩展逻辑卷

命令lvextend可以将逻辑卷扩展为新的大小。
参数-L表示以字节大小作为指定值。
如果有+,表示向现有逻辑卷增加这个值。
如果无+,表示逻辑卷最终总大小就是这个值。

[root@canway01 ~]# lvextend -L +300M /dev/vg_name1/lv_name1 
  Size of logical volume vg_name1/lv_name1 changed from 1.00 GiB (256 extents) to 1.29 GiB (331 extents).
  Logical volume vg_name1/lv_name1 successfully resized.

4-3 扩展文件系统

[root@canway01 ~]# xfs_growfs /data/sdb3/vg_name1/lv_name1/
meta-data=/dev/mapper/vg_name1-lv_name1 isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 262144 to 338944

检查确认一遍

[root@canway01 ~]# df -h /data/sdb3/vg_name1/lv_name1/
Filesystem                     Size  Used Avail Use% Mounted on
/dev/mapper/vg_name1-lv_name1  1.3G   33M  1.3G   3% /data/sdb3/vg_name1/lv_name1

补充说明:
除了xfs_growfs命令可以挂载文件系统,还有resize2fs命令。
前者识别XFS系统,后面跟的参数是挂载点;
后者识别EXT4系统,后面跟的参数是逻辑卷名称。

五 删除逻辑卷

5-1 备份数据

为防止过程中的错误操作,向将分区中的数据迁移或备份

5-2 卸载文件系统

一方面,手动卸载之前挂载的目录文件

[root@canway01 ~]# umount /data/sdb3/vg_name1/lv_name1 

另一方面,删除/etc/fstab文件下该设备的条目

5-3 删除逻辑卷

[root@canway01 ~]# lvremove /dev/vg_name1/lv_name1 
Do you really want to remove active logical volume vg_name1/lv_name1? [y/n]: y
  Logical volume "lv_name1" successfully removed

5-4 删除卷组

[root@canway01 ~]# vgremove vg_name1 
  Volume group "vg_name1" successfully removed

5-5 删除物理卷

[root@canway01 ~]# pvremove /dev/sdb3
  Labels on physical volume "/dev/sdb3" successfully wiped.

最后使用命令df -h检查确认

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

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

相关文章

Python实现全自动输入文本

文章目录1. 效果图2. 示例代码3. 代码解释1. 效果图 该Python脚本可以实现自动用Notepad打开文本文件&#xff0c;然后自动输入文本&#xff0c;最后保存并关闭文件&#xff0c;从而实现全面自动化处理文本。 2. 示例代码 Python脚本源码如下&#xff0c;主要使用了win32gui、…

Modern Radar for Automotive Applications(用于汽车应用的现代雷达)

目录 1 引言 2 汽车雷达系统的工作原理 2.1 基本雷达功能 2.2 汽车雷达架构 2.2.1 发射机 2.2.2 接收机 2.2.3 天线和天线阵 2.3 信号模型 2.3.1 振幅模型 2.3.2 噪声模型 2.4 雷达波形和信号处理 2.4.1 距离处理 2.4.2 多普勒处理 2.4.3 FMCW汽车雷达应用的典型波形参数…

[Unity好插件之PlayMaker]PlayMaker如何扩展额外创建更多的脚本

学习目标&#xff1a; 如果你正在学习使用PlayMaker的话&#xff0c;那么本篇文章将非常的适用。关于如何连线则是你自己的想法。本篇侧重于扩展适用更多的PlayMaker行为Action&#xff0c;那么什么是PlayMaker行为Action呢&#xff1f; 就是这个列表。当我们要给PlayMaker行为…

CSS的元素显示模式和CSS的背景

&#x1f353;个人主页&#xff1a;bit.. &#x1f352;系列专栏&#xff1a;Linux(Ubuntu)入门必看 C语言刷题 数据结构与算法 HTML和CSS3 目录 一.CSS的元素显示模式 1.1什么是元素的显示模式 1.2块元素 1.3行内元素 1.4 行内块元素 1.5元素显示模式总结 1.6…

JavaEE——HttpServletRequest

HttpServletRequest 核心方法 方法功能String getProtocol()返回请求协议的名称和版本。String getMethod()返回请求的 HTTP 方法的名称String getRequestURI()从协议名称直到 HTTP 请求的第一行的查询字符串中&#xff0c;返回该请求的 URL 的一部分。String getContextPath…

DolphinScheduler3.1简介、部署、功能介绍以及架构设计

DolphinScheduler3.1简介、部署、功能介绍以及架构设计1.DolphinScheduler简介 1-1.关于DolphinScheduler Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景&#xff0c;提供了一个可视化操作任务、工作流和全生命周期数据处…

Day08--自定义组件的数据监听器案例

1.案例效果&#xff1a; 我的操作&#xff1a; 1》新建一个组件test4 2》在app.json里面将test4设置为全局组件 3》在home.wxml里面是用这个test4组件。 4》在test4.js中编写代码&#xff1a;【需要的配置项都弄一下呗。】 *********************************************…

anaconda3报错Can‘t find libdevice directory解决方案

anaconda3报错Cant find libdevice directory解决方案1. 问题描述2. 解决方案3. 原理分析4. 其他解决方案1. 问题描述 使用anaconda3运行tensorflow进行单机多GPU运算时报错&#xff1a; error: Cant find libdevice directory ${CUDA_DIR}/nvvm/libdevice较的全报错如下&…

【Wayland】QtWayland框架分析

QtWayland框架分析 QtWayland概念介绍 QtWayland是Qt官方基于Wayland开发的一款Toolbox&#xff0c;根据其官网介绍 The QtWayland module consists of two parts: Wayland platform plugin: Enables Qt applications to be run as Wayland clients. QtWaylandCompositor API…

地理空间技术改变世界的未来

摘要: 地理空间技术是一项重大的科学发现&#xff0c;它将人类的可能性推向了一个全新的水平。那么什么是地理空间技术呢&#xff1f;事实上&#xff0c;它与普通的空间数据不同&#xff0c;地理空间技术的创新使我们能够确定物体或人在地球上的确切位置。人们将地理空间技术应…

网络安全系列-四十: suricata 的运行模型Running mode讲解

1. 什么是Running mode 1.1. 基本概念 Sruciata由线程、线程模块、队列组成。 数据包在线程间传递通过队列实现,线程由多个线程模块组成,每个线程模块实现一种功能一个数据包可以由多个线程处理,数据包将通过队列传递到下一个线程。包每次由一个线程处理,但是引擎可以同时…

docker (网卡设置、namespace、网络互通)

1 查看网卡信息 查看网卡的三种命令 ip a lo&#xff1a; 表示本地网络 127.0.0.1eth0&#xff1a; 连接网卡的网络docker0&#xff1a; docker的网卡 ip link show ls /sys/class/net 以文件的形式查看 2 网卡的操作 网卡中增加IP ip addr add 192.168.100.120/24 dev et…

springboot+jsp大学图书借阅管理系统idea maven

本论文是以构建图书借阅为目标&#xff0c;使用 jsp制作&#xff0c;由前台用户借阅图书、后台管理员添加图书两大部分组成。着重论述了系统设计分析&#xff0c;系统的实现&#xff08;用户注册模块&#xff0c;用户登录&#xff0c;用户浏览图书模块&#xff0c;图书借阅模块…

代码复杂度分析

1.复杂度分析原则 1.1 最大循环原则 只看高阶部分 public class SumNum {public static void main(String[] args) {System.out.println(sum2(4));}/*** 1-n 的累加* param n* return*/public static int sum1(int n){int sum 0;// 执行1次for (int i0;i<n;i){//这是三个…

轻量应用云服务器如何部署SpringBoot项目(jar包形式)?

这篇文章将介绍如何在腾讯云的轻量应用服务器上部署我们的java项目&#xff0c;本次演示的是java项目是使用springboot开发的单体项目&#xff0c;项目开发完成之后需要打包成jar&#xff0c;然后上传至云服务器&#xff0c;安装运行数据库文件之后&#xff0c;使用java -jar 的…

企业经营欺诈评分模型的开发与划定

近两周&#xff0c;番茄风控上线的课程中&#xff0c;涉及的财税票贷产品课程干货满满。 今天我们跟大家讲讲在模型中最干货的内容&#xff0c;也就是在税票贷产品中最干货的欺诈模型的开发与使用&#xff0c;本文会基于税票中票&#xff08;也就是发票&#xff09;相关的数据进…

双缝函数的编程

摘要 在傅立叶光学中&#xff0c;光学元件通常可以建模为传递函数&#xff0c;该函数对输入场的振幅和相位进行调制。VirtualLab Fusion提供了可编程功能&#xff0c;用户可以在其中定义元件的函数体现。 此示例提供了具有自定义缝隙宽度的双缝函数的代码段。 狭缝在y方向上是无…

CUDA 编程基础

1. GPU与CPU并行计算框架2. CUDA编程模型3 CUDA程序1. GPU与CPU并行计算框架 GPU并不是一个独立运行的计算平台&#xff0c;而需要与CPU协同工作&#xff0c;可以看成是CPU的协处理器&#xff0c;因此当我们在说GPU并行计算时&#xff0c;其实是指的基于CPUGPU的异构计算架构。…

学习日记(XML 文件解析、检索、工厂设计模式、装饰设计模式)

文章目录学习日记&#xff08;XML 文件解析、检索、工厂设计模式、装饰设计模式&#xff09;一、XML 概述1. 概念2. XML 的创建及语法规则3. XML 文档约束方式二、XML 文件的解析技术1. 使用 Dom4j 解析 XML 文件2. XML 解析案例三、XML 文件的数据检索技术&#xff1a;XPath四…

Nacos 注册中心、配置文件中心的常用配置(springcloud)

Nacos Discovery Starter 更多的配置项 1.服务端地址 spring.cloud.nacos.discovery.server-addr 无 Nacos Server 启动监听的 ip 地址和端口2.服务名 spring.cloud.nacos.discovery.s ervice ${spring.application.name} 给当前的服务命名3.服务分组spring.cloud.nacos.disc…