百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Linux LVM分区实战案例配置图文详解(含扩容缩容管理)

bigegpt 2024-10-05 13:44 3 浏览

请关注本头条号,每天坚持更新原创干货技术文章。

如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习

前言

本文将列举最常用的LVM磁盘管理案例,分2个案例4种场景,涵盖最常用的使用案例,希望能帮助读者能很好理解LVM的原理、操作及使用时的注意点。

案例1:目前硬盘的空间不足,原硬盘的根分区是LVM分区。想通过加新硬盘的方式,扩展原来根分区的大小。即把新加硬盘的空间加入到原来的根分区。

Step1:在加硬盘之前先查看硬盘资源情况:

执行lsblk可以看到vda2是物理分区,vda2使用了LVM逻辑分区,分成了两个分区,一个swap,一个是根分区。

[root@zcwyou ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

vda 252:0 0 240G 0 disk

├─vda1 252:1 0 1G 0 part /boot

└─vda2 252:2 0 39G 0 part

├─centos-root 253:0 0 35.1G 0 lvm /

└─centos-swap 253:1 0 3.9G 0 lvm [SWAP]

查看当前硬盘分区情况

执行df -TH可以看到根分区使用了xfs文件系统,物理分区vda1挂载到/boot,同样使用xfs文件系统

[root@zcwyou ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on

/dev/mapper/centos-root xfs 38G 940M 37G 3% /

devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev

tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm

tmpfs tmpfs 2.0G 8.9M 2.0G 1% /run

tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup

/dev/vda1 xfs 1.1G 150M 914M 15% /boot

tmpfs tmpfs 398M 0 398M 0% /run/user/0

查看当前分区与挂载点

执行parted -l可以看到磁盘vda的分区情况

[root@zcwyou ~]# parted -l

Model: Virtio Block Device (virtblk)

Disk /dev/vda: 258GB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

Disk Flags:

Number Start End Size Type File system Flags

1 1049kB 1075MB 1074MB primary xfs boot

2 1075MB 42.9GB 41.9GB primary lvm

查看当前分区与文件系统

Step2:加新硬盘后查看硬盘资源情况:

执行lsblk可以看到新硬盘vdb

[root@zcwyou ~]# lsblk 

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

vda 252:0 0 240G 0 disk

├─vda1 252:1 0 1G 0 part /boot

└─vda2 252:2 0 39G 0 part

├─centos-root 253:0 0 35.1G 0 lvm /

└─centos-swap 253:1 0 3.9G 0 lvm [SWAP]

vdb 252:16 0 60G 0 disk

查看新硬件连接情况

执行parted -l可以看到新硬盘vdb

[root@zcwyou ~]# parted -l

Error: /dev/vdb: unrecognised disk label

Model: Virtio Block Device (virtblk)

Disk /dev/vdb: 64.4GB

Sector size (logical/physical): 512B/512B

Partition Table: unknown

Disk Flags:

使用parted查看新硬盘连接情况

使用parted查看新硬盘连接情况

Step3:使用fdisk给新硬盘分区(可选):

[root@zcwyou ~]# fdisk /dev/vdb

Command (m for help): n 输入n表示建立新分区

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): p 输入p表示建立主分区,MBR主分区最多4个

Partition number (1-4, default 1): 直接回车使用默认即可,表示从最可用低值开始

First sector (2048-125829119, default 2048): 扇区开始的位置,直接回车使用默认即可

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-125829119, default 125829119): 扇区结束的位置,直接回车使用剩下的所有空间。

Using default value 125829119

Partition 1 of type Linux and of size 60 GiB is set

Command (m for help): t 输入t表示修改分区的系统ID

Selected partition 1

Hex code (type L to list all codes): 8e输入8e表示修改分区的系统ID为LVM

Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): w 输入w表示保存分区信息

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

使用fdisk给新硬盘分区,界面如下:

使用fdisk给新硬盘分区

Step4:加入原PV组:

扫描pv,看到PV组的成员以及VG组的名字

[root@zcwyou ~]# pvscan

PV /dev/vda2 VG centos lvm2 [<39.00 GiB / 4.00 MiB free]

扫描当前LVM组的PV

扫描vg,看到vg组名字为centos

[root@zcwyou ~]# vgscan

Reading volume groups from cache.

Found volume group "centos" using metadata type lvm2

扫描当前系统中的vg组情况

扫描当前系统中的vg组情况

图中的组名为cl,根据自己的环境中的实际情况进行调整。如果没有执行Step3,则把整个vdb加入PV组:

[root@zcwyou ~]# pvcreate /dev/vdb

如果执行了Step3,则把vdb1加入PV组

[root@zcwyou ~]# pvcreate /dev/vdb1

因为刚刚分区了,有了vdb1,所以可以把该分区加入到pv组中。

新分区成功加入PV组

检查

[root@zcwyou ~]# pvscan

PV /dev/vda2 VG centos lvm2 [<39.00 GiB / 4.00 MiB free]

PV /dev/vdb1 lvm2 [<60.00 GiB]

扫描pv情况

扫描pv情况

查询pv的信息

[root@zcwyou ~]# pvdisplay

查询pv的信息

如果要删除物理卷,执行命令:

[root@zcwyou ~]# pvremove /dev/vdb1

Step5:加入原VG组:

加入VG组

[root@zcwyou ~]# vgextend centos /dev/vdb1

把vdb1加入原VG组

把vdb1加入原VG组

注意,图中的VG组为cl,根据自己的实际情况自行调整

检查,留意空间是否变大了:

[root@zcwyou ~]# vgdisplay

留意空闲的空间

Free PE / Size XXXX / XXX GiB

检查vg组是否更新

检查vg组是否更新

从VG组删除:

[root@zcwyou ~]# vgreduce centos /dev/vdb1

Step6:扩展LV卷

查看原有的LV名字,可以看到一个LV名为root,一个LV名为swap:

[root@zcwyou ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

root centos -wi-ao---- <35.12g

swap centos -wi-ao---- <3.88g

使用lvs命令查询当前lv信息

使用lvs命令查询当前lv信息

以扩展LV卷为例:

变更LV逻辑卷的大小三种方式,只需要采用其中一种就行:

  1. 定义逻辑卷最终大小:
[root@zcwyou ~]# lvresize -L 40g /dev/centos/root
  1. 定义逻辑卷要添加减少的大小:
[root@zcwyou ~]# lvresize -L +20g /dev/centos/root
  1. 把vg组剩下所有可用的空间加入LV卷
[root@zcwyou ~]# lvresize -l +100%FREE /dev/centos/root

把vg组剩下所有可用的空间加入LV卷

Step7:检查磁盘错误,前提是必须先卸载文件系统,对于根分区,不能在线执行此命令:

如果原来的文件系统是EXT2/3/4,执行以下指令

[root@zcwyou ~]# e2fsck -f /dev/centos/root

对于正在挂载的文件系统,则显示以下错误:

使用e2fsck检查磁盘错误

使用e2fsck检查磁盘错误

如果原来的文件系统是xfs,执行以下指令

[root@zcwyou ~]# xfs_ncheck /dev/centos/root

Step8:扩展文件系统大小:

如果原来的文件系统是EXT2/3/4,执行以下指令更新文件系统信息

[root@zcwyou ~]# resize2fs -f /dev/centos/root

如果原来的文件系统是xfs,执行以下指令更新文件系统信息

[root@zcwyou ~]# xfs_growfs /dev/centos/root

更新xfs文件系统信息

更新xfs文件系统信息

检查逻辑卷状态

[root@zcwyou ~]# lvdisplay

检查逻辑卷最新状态

检查逻辑卷最新状态

可以看到lv的容量已经更新了。

Step9:检查文件系统大小:

[root@zcwyou ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on

/dev/mapper/centos-root xfs 103G 941M 102G 1% /

检查调整过后的文件系统大小

检查调整过后的文件系统大小

可以看到根分区的大小已经成功扩展!

接下来我们看看其他案例

案例2:目前硬盘的空间充足,但原分区划分不合理。比如根分区小,不够用。/home分区过大过剩。

前提条件:

根分区和/home分区都是LVM。并且/home不能是XFS文件系统,因为XFS不支持缩小空间。

系统可以重启

场景1:假设/home的文件系统是XFS或者/home里的资料已经做好了安全备份,这时可以直接把/home分区删除。注意,此方法需要重启系统。

Step1:修改fstab配置

[root@zcwyou ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on

/dev/mapper/centos-root xfs 54G 939M 53G 2% /

devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev

tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm

tmpfs tmpfs 2.0G 8.9M 2.0G 1% /run

tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup

/dev/mapper/centos-home xfs 199G 34M 199G 1% /home

/dev/vda1 xfs 1.1G 150M 915M 15% /boot

tmpfs tmpfs 398M 0 398M 0% /run/user/0

编辑/etc/fstab,

[root@zcwyou ~]# vi /etc/fstab

删除关于/home的行,

如果不会vi命令,执行以下命令一键删除关于/home的行

sed -i '/home/d' /etc/fstab

然后重启系统

[root@zcwyou ~]# reboot

Step2:删除LV

重启后:

[root@localhost ~]# df -TH /home/

Filesystem Type Size Used Avail Use% Mounted on

/dev/mapper/centos-root xfs 54G 940M 53G 2% /

可以看到现在的/目录是挂在/centos-root上的,跟/目录属于同一分区。

扫描LV

[root@localhost ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

home centos -wi-a----- 20.00g

root centos -wi-ao---- 50.00g

swap centos -wi-ao---- <3.88g

记下VL名称与VG名称。

删除对应的LV

[root@zcwyou ~]# lvremove /dev/centos/home

删除LV后,应该可以得到空闲的VG空间

[root@zcwyou ~]# vgdisplay

Free PE / Size 42271 / 165.12 GiB

Step3:扩展LV卷

查看原有的LV名字,可以看到一个LV名为root,一个LV名为swap:

[root@localhost ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

root centos -wi-ao---- <35.12g

swap centos -wi-ao---- <3.88g

以扩展LV卷为例:

变更LV逻辑卷的大小三种方式,只需要采用其中一种就行:

  1. 定义逻辑卷最终大小:
[root@zcwyou ~]# lvresize -L 40g /dev/centos/root
  1. 定义逻辑卷要添加减少的大小:
[root@zcwyou ~]# lvresize -L +20g /dev/centos/root
  1. 把vg组可用的空间加入LV卷
[root@zcwyou ~]# lvresize -l +100%FREE /dev/centos/root

Step4:检查磁盘错误,前提是必须先卸载文件系统,对于根分区,不能在线执行此命令:

如果原来的文件系统是EXT2/3/4,执行以下指令

[root@zcwyou ~]# e2fsck -f /dev/centos/root

如果原来的文件系统是xfs,执行以下指令

[root@zcwyou ~]# xfs_ncheck /dev/centos/root

Step5:扩展文件系统大小:

如果原来的文件系统是EXT2/3/4,执行以下指令更新文件系统信息

[root@zcwyou ~]# resize2fs -f /dev/centos/root

如果原来的文件系统是xfs,执行以下指令更新文件系统信息

[root@zcwyou ~]# xfs_growfs /dev/centos/root

检查逻辑卷状态

[root@zcwyou ~]# lvdisplay

Step6:检查文件系统大小:

[root@zcwyou ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on

/dev/mapper/centos-root xfs 253G 940M 252G 1% /

场景2:假设/home的文件系统是EXT2/3/4,原理是把/home的分区缩小,/分区增大。/home和/分区必须是LVM分区。

Step1:前期准备

[root@zcwyou ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on

/dev/mapper/centos-root xfs 43G 939M 42G 3% /

devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev

tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm

tmpfs tmpfs 2.0G 8.9M 2.0G 1% /run

tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup

/dev/mapper/centos-home ext4 207G 63M 196G 1% /home

/dev/vda1 xfs 496M 141M 355M 29% /boot

tmpfs tmpfs 398M 0 398M 0% /run/user/0

可以看到根目录/的空间很小,/home的空间是207G,并且/home的文件系统是ext系列的,支持LVM缩小。如果是XFS,则不支持缩小。

修改fstab配置

[root@zcwyou ~]# vi /etc/fstab

注释掉/home的行,即前面加#号

/dev/mapper/centos-home /home ext4 defaults 1 2

重启系统

[root@zcwyou ~]# reboot

Step2:检查磁盘错误,前提是必须先卸载文件系统,对于根分区,不能在线执行此命令:

查看LVM的基本情况:

[root@zcwyou ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

home centos -wi-ao---- <195.53g

root centos -wi-ao---- 40.00g

swap centos -wi-ao---- 4.00g

记下LV名称和VG名称

[root@zcwyou ~]# e2fsck -f /dev/centos/home

Step3:缩小文件系统大小和LV大小:

缩小文件系统,更新文件系统信息

[root@zcwyou ~]# resize2fs /dev/centos/home 10g

减少LV大小

[root@zcwyou ~]# lvresize -L 10g /dev/centos/home

编辑/etc/fstab

[root@zcwyou ~]# vi /etc/fstab

把刚刚加入的#号删除

/dev/mapper/centos-home /home ext4 defaults 1 2

重新挂载文件系统

[root@zcwyou ~]# mount -a

检查调整后的文件系统,看到9.9G

[root@zcwyou ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on

/dev/mapper/centos-root xfs 43G 939M 42G 3% /

devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev

tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm

tmpfs tmpfs 2.0G 8.9M 2.0G 1% /run

tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup

/dev/vda1 xfs 496M 141M 355M 29% /boot

tmpfs tmpfs 398M 0 398M 0% /run/user/0

/dev/mapper/centos-home ext4 11G 38M 9.9G 1% /home

Step4:扩展LV卷

查看原有的LV名字,可以看到一个LV名为root,一个LV名为swap:

[root@zcwyou ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

root centos -wi-ao---- <35.12g

swap centos -wi-ao---- <3.88g

[root@zcwyou ~]# vgdisplay

看到空闲空间

Free PE / Size 47495 / <185.53 GiB

以扩展LV卷为例:

变更LV逻辑卷的大小三种方式,只需要采用其中一种就行:

  1. 定义逻辑卷最终大小:
[root@zcwyou ~]# lvresize -L 40g /dev/centos/root
  1. 定义逻辑卷要添加减少的大小:
[root@zcwyou ~]# lvresize -L +20g /dev/centos/root
  1. 把vg组可用的空间加入LV卷
[root@zcwyou ~]# lvresize -l +100%FREE /dev/centos/root

Step5:检查磁盘错误,前提是必须先卸载文件系统,对于根分区,不能在线执行此命令:

如果原来的文件系统是EXT2/3/4,执行以下指令

[root@zcwyou ~]# e2fsck -f /dev/centos/root

如果原来的文件系统是xfs,执行以下指令

[root@zcwyou ~]# xfs_ncheck /dev/centos/root

Step6:扩展文件系统大小:

如果原来的文件系统是EXT2/3/4,执行以下指令更新文件系统信息

[root@zcwyou ~]# resize2fs -f /dev/centos/root

如果原来的文件系统是xfs,执行以下指令更新文件系统信息

[root@zcwyou ~]# xfs_growfs /dev/centos/root

检查逻辑卷状态

[root@zcwyou ~]# vgdisplay

看到空闲空间为0

Free PE / Size 0 / 0

Step7:检查文件系统大小:

[root@zcwyou ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on

/dev/mapper/centos-root xfs 243G 940M 242G 1% /

场景3:针对KVM虚拟机,把虚拟机关机后对原硬盘扩充,重新开机后,进入系统使用fdisk创建一个新分区

Step1:创建新分区:

[root@zcwyou ~]# fdisk /dev/vda

Command (m for help): n 输入n表示建立新分区

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): p 输入p表示建立主分区,MBR主分区最多4个

Partition number (3-4, default 3): 直接回车使用默认即可,表示从最可用低值开始

First sector (2048-125829119, default 20480): 扇区开始的位置,直接回车使用默认即可

Using default value 20480

Last sector, +sectors or +size{K,M,G} (2048-125829119, default 125829119): 扇区结束的位置,直接回车使用剩下的所有空间。

Using default value 125829119

Partition 3 of type Linux and of size 60 GiB is set

Command (m for help): t 输入t表示修改分区的系统ID

Selected partition 1

Hex code (type L to list all codes): 8e输入8e表示修改分区的系统ID为LVM

Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): w 输入w表示保存分区信息

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

Step2:查看新分区:

[root@zcwyou ~]# lsblk

应该可以看到类似于标识为vda3的新分区,并且没有挂载点。

Step3:加入原PV组:

扫描pv,看到PV组的成员以及VG组的名字

[root@zcwyou ~]# pvscan

PV /dev/vda2 VG centos lvm2 [<39.00 GiB / 4.00 MiB free]

扫描vg,看到vg组名字为centos

[root@zcwyou ~]# vgscan

Reading volume groups from cache.

Found volume group "centos" using metadata type lvm2

把vdb3加入PV组

[root@zcwyou ~]# pvcreate /dev/vdb1

检查

[root@zcwyou ~]# pvscan

PV /dev/vdb3 lvm2 [<60.00 GiB]

[root@zcwyou ~]# pvdisplay

如果要删除物理卷,执行命令:

[root@zcwyou ~]# pvremove /dev/vdb3

Step4:加入原VG组:

加入VG组

[root@zcwyou ~]# vgextend centos /dev/vdb1

检查:

[root@zcwyou ~]# vgdisplay

留意空闲的空间

Free PE / Size XXXX / XXX GiB

从VG组删除:

[root@zcwyou ~]# vgreduce centos /dev/vdb1

Step5:扩展LV卷

查看原有的LV名字,可以看到一个LV名为root,一个LV名为swap:

[root@zcwyou ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

root centos -wi-ao---- <35.12g

swap centos -wi-ao---- <3.88g

以扩展LV卷为例:

变更LV逻辑卷的大小三种方式,只需要采用其中一种就行:

  1. 定义逻辑卷最终大小:
[root@zcwyou ~]# lvresize -L 40g /dev/centos/root
  1. 定义逻辑卷要添加减少的大小:
[root@zcwyou ~]# lvresize -L +20g /dev/centos/root
  1. 把vg组剩下所有可用的空间加入LV卷
[root@zcwyou ~]# lvresize -l +100%FREE /dev/centos/root

Step6:检查磁盘错误,前提是必须先卸载文件系统,对于根分区,不能在线执行此命令:

如果原来的文件系统是EXT2/3/4,执行以下指令

[root@zcwyou ~]# e2fsck -f /dev/centos/root

如果原来的文件系统是xfs,执行以下指令

[root@zcwyou ~]# xfs_ncheck /dev/centos/root

Step7:扩展文件系统大小:

如果原来的文件系统是EXT2/3/4,执行以下指令更新文件系统信息

[root@zcwyou ~]# resize2fs -f /dev/centos/root

如果原来的文件系统是xfs,执行以下指令更新文件系统信息

[root@zcwyou ~]# xfs_growfs /dev/centos/root

检查逻辑卷状态

[root@zcwyou ~]# lvdisplay

Step8:检查文件系统大小:

[root@zcwyou ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on

/dev/mapper/centos-root xfs 103G 941M 102G 1% /

总结

善于利用LVM,能灵活按需求调整分区大小,但请注意,调整分区有大风险,调整前请备好数据。

本文已同步至博客站,尊重原创,转载时请在正文中附带以下链接:

https://www.linuxrumen.com/rmxx/630.html

点击了解更多,快速查看更多的技术文章列表。

相关推荐

C#.NET Autofac 详解(c# autoit)

简介Autofac是一个成熟的、功能丰富的.NET依赖注入(DI)容器。相比于内置容器,它额外提供:模块化注册、装饰器(Decorator)、拦截器(Interceptor)、强o的属性/方法注...

webapi 全流程(webapi怎么部署)

C#中的WebAPIMinimalApi没有控制器,普通api有控制器,MinimalApi是直达型,精简了很多中间代码,广泛适用于微服务架构MinimalApi一切都在组控制台应用程序类【Progr...

.NET外挂系列:3. 了解 harmony 中灵活的纯手工注入方式

一:背景1.讲故事上一篇我们讲到了注解特性,harmony在内部提供了20个HarmonyPatch重载方法尽可能的让大家满足业务开发,那时候我也说了,特性虽然简单粗暴,但只能解决95%...

C# 使用SemanticKernel调用本地大模型deepseek

一、先使用ollama部署好deepseek大模型。具体部署请看前面的头条使用ollama进行本地化部署deepseek大模型二、创建一个空的控制台dotnetnewconsole//添加依赖...

C#.NET 中间件详解(.net core中间件use和run)

简介中间件(Middleware)是ASP.NETCore的核心组件,用于处理HTTP请求和响应的管道机制。它是基于管道模型的轻量级、模块化设计,允许开发者在请求处理过程中插入自定义逻辑。...

IoC 自动注入:让依赖注册不再重复劳动

在ASP.NETCore中,IoC(控制反转)功能通过依赖注入(DI)实现。ASP.NETCore有一个内置的依赖注入容器,可以自动完成依赖注入。我们可以结合反射、特性或程序集扫描来实现自动...

C#.NET 依赖注入详解(c#依赖注入的三种方式)

简介在C#.NET中,依赖注入(DependencyInjection,简称DI)是一种设计模式,用于实现控制反转(InversionofControl,IoC),以降低代码耦合、提高可...

C#从零开始实现一个特性的自动注入功能

在现代软件开发中,依赖注入(DependencyInjection,DI)是实现松耦合、模块化和可测试代码的一个重要实践。C#提供了优秀的DI容器,如ASP.NETCore中自带的Micr...

C#.NET 仓储模式详解(c#仓库货物管理系统)

简介仓储模式(RepositoryPattern)是一种数据访问抽象模式,它在领域模型和数据访问层之间创建了一个隔离层,使得领域模型无需直接与数据访问逻辑交互。仓储模式的核心思想是将数据访问逻辑封装...

C#.NET 泛型详解(c# 泛型 滥用)

简介泛型(Generics)是指在类型或方法定义时使用类型参数,以实现类型安全、可重用和高性能的数据结构与算法为什么需要泛型类型安全防止“装箱/拆箱”带来的性能损耗,并在编译时检测类型错误。可重用同一...

数据分析-相关性分析(相关性 分析)

相关性分析是一种统计方法,用于衡量两个或多个变量之间的关系强度和方向。它通过计算相关系数来量化变量间的线性关系,从而帮助理解变量之间的相互影响。相关性分析常用于数据探索和假设检验,是数据分析和统计建模...

geom_smooth()函数-R语言ggplot2快速入门18

在每节,先运行以下这几行程序。library(ggplot2)library(ggpubr)library(ggtext)#用于个性化图表library(dplyr)#用于数据处理p...

规范申报易错要素解析(规范申报易错要素解析)

为什么要规范申报?规范申报是以满足海关监管、征税、统计等工作为目的,纳税义务人及其代理人依法向海关如实申报的行为,也是海关审接单环节依法监管的重要工作。企业申报的内容须符合《中华人民共和国海关进出口货...

「Eurora」海关编码归类 全球海关编码查询 关务服务

  海关编码是什么?  海关编码即HS编码,为编码协调制度的简称。  其全称为《商品名称及编码协调制度的国际公约》(InternationalConventionforHarmonizedCo...

9月1日起,河南省税务部门对豆制品加工业试行新政7类豆制品均适用投入产出法

全媒体记者杨晓川报道9月2日,记者从税务部门获悉,为减轻纳税人税收负担,完善农产品增值税进项税额抵扣机制,根据相关规定,结合我省实际情况,经广泛调查研究和征求意见,从9月1日起,我省税务部门对豆制品...