当前位置: 首页 > news >正文

Linux操作系统-逻辑卷管理(LVM)

目录

一、LVM的基本概念和组成部分

二、关于在扩容前是否需要进行分区操作?

1.核心结论

2.为什么许多教程推荐先分区?

(1) 历史与兼容性

(2) 管理习惯与安全性

(3) 企业环境实践

3.直接使用整盘作为 PV 的场景

4.分区 vs 直接使用整盘的对比

5.操作示例(下面示例会进行演示)

(1) 使用分区创建 PV

(2) 直接使用整盘创建 PV

6.总结建议

三、lvm方式下的扩容流程

1.逻辑卷扩容简要流程

2.LVM相关命令

四、扩容实操(三个案例)

(一)卷组、逻辑卷扩容到已有的挂载路径

1.选择添加硬盘

2.识别新增硬盘块

3.添加物理卷

4.查看根分区的所在的卷组(类似于存储池的概念)

5.将新增的物理卷扩展的默认的卷组中

6.查看当前逻辑卷的空间状态

7.使用 lvcreate

8.刷新根分区并查看状态

(二)直接扩展待扩展磁盘进行lvm扩容

1.确认待扩容块设备

2.对对应的块设备加阔10G空间

3.借助parted工具,将sda2分区填满

4.调整物理卷大小

5.扩展逻辑卷

6.扩展文件系统

(三)卷组、逻辑卷的操作(挂载到指定路径)

1.创建分区:fdisk /dev/硬盘名

2.创建物理卷,同上。

3.创建卷组

4.创建逻辑卷

5.查看分区信息

6.格式化文件系统

7.挂载与使用(挂载到前面所创建的 /database_log目录下)

8.扩展逻辑卷操作

9.设置开机自动挂载

10.重启查看

五、关键注意事项

1.文件系统类型

2.根分区是否选用lvm管理方式


一、LVM的基本概念和组成部分

LVM的方式扩容:‌LVM(Logical Volume Manager,逻辑卷管理)‌是一种在Linux环境下对磁盘分区进行管理的管理机制。它通过在硬盘和分区之上创建一个逻辑层,提供了一种更为灵活和动态的磁盘管理方式。在虚拟机扩容中,新增一块硬盘和直接在原有硬盘基础上扩容是一样的(只不过在原有硬盘上扩容需要关机才可以执行);

LVM主要由以下几个部分组成:

  1. ‌物理卷(Physical Volume, PV)‌:LVM的基本存储逻辑块,可以是硬盘分区或整个硬盘。
  2. ‌卷组(Volume Group, VG)‌:由一个或多个物理卷组成的存储池,类似于非LVM系统中的物理硬盘。
  3. ‌逻辑卷(Logical Volume, LV)‌:在卷组上创建的逻辑磁盘,类似于非LVM系统中的硬盘分区,但具有更高的灵活性。
  4. 物理扩展(PE):PE是LVM的最小存储单元,默认大小为4M。

二、关于在扩容前是否需要进行分区操作?

使用 LVM 之前是否需要先进行分区操作,取决于具体场景和需求。以下是详细解释:

1.核心结论

  • LVM 可以直接使用整个磁盘(无需分区),但通常推荐先分区再使用 LVM,原因包括兼容性、管理习惯、安全隔离等。
  • 关键区分
    • 物理卷(PV):LVM 直接管理的存储单元,可以是整个磁盘(如/dev/sdb)或分区(如/dev/sdb1)。

    • 是否分区:由用户决定,但分区更常见。

2.为什么许多教程推荐先分区?

(1) 历史与兼容性

  • 引导需求:早期系统无法从 LVM 启动,需单独分区存放 /boot(引导文件)。虽然现代系统支持 LVM 启动,但仍有场景需要独立分区。
  • 工具兼容性:某些工具(如旧版fdisk)对未分区的磁盘处理不够友好,分区可避免潜在问题。

(2) 管理习惯与安全性

  • 明确标记用途:分区类型设置为Linux LVM(文件系统类型代码 8e ),明确标识该分区专用于 LVM,避免误操作。
  • 隔离风险:若磁盘有其他用途(如预留空间或与其他系统共享),分区可划分明确边界。

(3) 企业环境实践

  • 灵活扩展:分区后,可通过 LVM 跨多个磁盘/分区合并空间(如将 /dev/sdb1 和 /dev/sdc1) 加入同一卷组)。
  • 避免整盘占用:若磁盘未完全用于 LVM,分区可划分多用途区域(如部分给 LVM,部分给其他文件系统)。

3.直接使用整盘作为 PV 的场景

  • 专用磁盘:若整块磁盘完全用于 LVM,可直接创建物理卷:

    bash

    pvcreate /dev/sdb # 直接使用整块磁盘
  • 优势
    • 简化操作,无需分区。
    • 避免分区表占用空间(但现代磁盘分区表开销可忽略)。

4.分区 vs 直接使用整盘的对比

场景分区后再用 LVM直接使用整盘 LVM
兼容性高(兼容旧系统/工具)低(某些工具可能不识别未分区磁盘)
用途标识明确(分区类型标记为Linux LVM无明确标记
多用途磁盘支持(可划分多个分区)不支持(整盘专用于 LVM)
管理复杂度稍高(需分区步骤)低(直接操作整盘)
适用场景通用场景、企业环境专用磁盘、简单环境

5.操作示例(下面示例会进行演示)

(1) 使用分区创建 PV

[root@localhost ~]# fdisk /dev/sdc p # 查看分区信息 n # 创建分区 p # 选择主分区 回车默认,默认会将所有剩余空间都划入该分区 t # 修改分区格式 L # 列出所有分区格式信息 8e # 创建分区并标记为 Linux LVM(类型 8e),8e为lvm类型的hex代码 p # 查看分区信息 w # 保存并退出 # 创建物理卷 sudo pvcreate /dev/sdb1

(2) 直接使用整盘创建 PV

# 直接操作整块磁盘(无需分区) sudo pvcreate /dev/sdb

6.总结建议

  • 推荐先分区:除非磁盘完全专用于 LVM,否则分区能提高兼容性和管理灵活性。
  • 例外情况:若磁盘仅用于 LVM 且环境支持(如现代 Linux 系统),可直接使用整盘。

三、lvm方式下的扩容流程

1.逻辑卷扩容简要流程

  1. 建立物理卷 ---> pv ---> 类似于硬盘域的概念
  2. 建立卷组 ---> vg ---> 类似于存储池的概念
  3. 建立逻辑卷 ---> lv ---> 对标lun卷
  4. 格式化安装文件系统 ---> mkfs
  5. 挂载 ---> mount

2.LVM相关命令

功能物理卷管理卷组管理逻辑卷管理
Scan扫描pvscanvgscanIvscan
Create建立pvcreatevgcreatelvcreate
Display显示pvdisplayvgdisplayIvdisplay
Remove删除pvremovevgremovelvremove
Extend扩展-vgextendIvextend
Reduce减少-vgreduceIvreduce

四、扩容实操(三个案例)

(一)卷组、逻辑卷扩容到已有的挂载路径

1.选择添加硬盘

2.识别新增硬盘块

物理插入磁盘后,系统通常会自动识别,但仍需手动操作:

lsblk # 查看磁盘及分区结构,确认新磁盘是否加载成功(如 /dev/sdb)

注:lsblk用于列出系统中所有可用的块设备(如硬盘、分区、LVM、RAID、光驱等)。它以树状图的方式显示设备之间的关系,而不显示它们的文件系统详细信息,这使得lsblk在快速查看系统的存储层次结构时非常有用。

3.添加物理卷

注:物理卷只能从新增加的硬盘中进行挑选

语法:pvcreate 硬盘的位置

4.查看根分区的所在的卷组(类似于存储池的概念)

注:新安装的操作系统,如果使用lvm管理磁盘空间的话,默认会存在一个根目录卷组名(vg_centos6的卷组)。

5.将新增的物理卷扩展的默认的卷组中

格式: vgextend vg_centos6 物理卷名

将物理卷(/dev/sdb)扩展到卷组(centos【上一步提到的根目录卷组名】)

6.查看当前逻辑卷的空间状态

7.使用 lvcreate

格式:Ivcreate [选项] 逻辑卷名 卷组名

# 将卷组中的空闲空间扩展到根分区逻辑卷:

lvextend -l +100%FREEdev/vg_centos6/lv_root
# 若想指定大小分配,则可以使用:

lvcreate -L 2GB -n LV_Name VG_NAME

常用参数:

-l指的是按照比例来进行配置,-L指定大小,-n的作用是指定新创建的逻辑卷(Logical Volume)的名称

8.刷新根分区并查看状态

注:刷新分区之前需要查看分区类型格式,如:ext4、xfs。查看方式如下

方式一:使用df -TH来进行查看

方式二:使用blkid查看所有盘符信息

注:df命令用于显示文件系统的磁盘空间使用情况。常用选项-T表示以易读的格式显示,-h表示使用人类可读的格式。


# 若磁盘格式是xfs,则执行如下命令:xfs_growfs /dev/vg_centos6/lv_root


# 若磁盘格式是ext4,则执行如下命令:resize2fs /dev/vg_centos6/lv_root

(二)直接扩展待扩展磁盘进行lvm扩容

1.确认待扩容块设备

lsblk查看,发现sda块设备下的sda2分区空间不够

2.对对应的块设备加阔10G空间

3.借助parted工具,将sda2分区填满

4.调整物理卷大小

分区扩展完成之后,需完成其中最重要的一步就是进行:pvresize /dev/sda2;

这步操作主要是使用 pvresize 命令来调整物理卷的大小,以匹配新的分区大小。如果不执行将会出现如下现象:

执行:pvresize /dev/sda2

5.扩展逻辑卷

6.扩展文件系统

整体过程:

[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 40G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 29G 0 part ├─centos-root 253:0 0 27G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 1G 0 disk └─sdb1 8:17 0 1023M 0 part /history_data sdc 8:32 0 25G 0 disk └─sdc1 8:33 0 25G 0 part /dmdata2 sr0 11:0 1 4.4G 0 rom [root@localhost ~]# parted /dev/sda GNU Parted 3.1 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) help align-check TYPE N check partition N for TYPE(min|opt) alignment help [COMMAND] print general help, or help on COMMAND mklabel,mktable LABEL-TYPE create a new disklabel (partition table) mkpart PART-TYPE [FS-TYPE] START END make a partition name NUMBER NAME name partition NUMBER as NAME print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a particular partition quit exit program rescue START END rescue a lost partition near START and END resizepart NUMBER END resize partition NUMBER rm NUMBER delete partition NUMBER select DEVICE choose the device to edit disk_set FLAG STATE change the FLAG on selected device disk_toggle [FLAG] toggle the state of FLAG on selected device set NUMBER FLAG STATE change the FLAG on partition NUMBER toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER unit UNIT set the default unit to UNIT version display the version number and copyright information of GNU Parted (parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sda: 42.9GB 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 32.2GB 31.1GB primary lvm (parted) resizepart 2 100% (parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sda: 42.9GB 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 (parted) quit Information: You may need to update /etc/fstab. [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 40G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 39G 0 part ├─centos-root 253:0 0 27G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 1G 0 disk └─sdb1 8:17 0 1023M 0 part /history_data sdc 8:32 0 25G 0 disk └─sdc1 8:33 0 25G 0 part /dmdata2 sr0 11:0 1 4.4G 0 rom [root@localhost ~]# [root@localhost ~]# pvresize /dev/sda2 Physical volume "/dev/sda2" changed 1 physical volume(s) resized or updated / 0 physical volume(s) not resized [root@localhost ~]# [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <39.00g 10.00g [root@localhost ~]# [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <39.00g 10.00g [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <39.00g 10.00g [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- 26.99g swap centos -wi-ao---- 2.00g [root@localhost ~]# blkid /dev/sda1: UUID="f5c128eb-513e-47c6-a725-564c557e05af" TYPE="xfs" /dev/sda2: UUID="I3JO1t-Tqpj-3F5B-hlSt-lIgS-nY3p-cux7mc" TYPE="LVM2_member" /dev/sdb1: UUID="a927f23c-f9bc-4b2e-8e2e-d369e8f9b176" TYPE="xfs" /dev/sdc1: UUID="d176f4c4-c540-41f3-9ec3-3d079c323c7d" TYPE="ext4" /dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/mapper/centos-root: UUID="75b0fa64-e099-430f-a143-706f8fcc0209" TYPE="xfs" /dev/mapper/centos-swap: UUID="a8d4df56-dad9-41ba-85e3-a7063645cc80" TYPE="swap" [root@localhost ~]# lvextend -l +100%FREE /dev/centos/root Size of logical volume centos/root changed from 26.99 GiB (6910 extents) to <37.00 GiB (9471 extents). Logical volume centos/root successfully resized. [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 40G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 39G 0 part ├─centos-root 253:0 0 37G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 1G 0 disk └─sdb1 8:17 0 1023M 0 part /history_data sdc 8:32 0 25G 0 disk └─sdc1 8:33 0 25G 0 part /dmdata2 sr0 11:0 1 4.4G 0 rom [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 898M 0 898M 0% /dev tmpfs 910M 0 910M 0% /dev/shm tmpfs 910M 9.6M 901M 2% /run tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/mapper/centos-root 27G 24G 3.1G 89% / /dev/sdb1 1020M 33M 988M 4% /history_data /dev/sdc1 25G 8.5G 15G 37% /dmdata2 /dev/sda1 1014M 151M 864M 15% /boot tmpfs 182M 0 182M 0% /run/user/0 [root@localhost ~]# [root@localhost ~]# blkid /dev/sda1: UUID="f5c128eb-513e-47c6-a725-564c557e05af" TYPE="xfs" /dev/sda2: UUID="I3JO1t-Tqpj-3F5B-hlSt-lIgS-nY3p-cux7mc" TYPE="LVM2_member" /dev/sdb1: UUID="a927f23c-f9bc-4b2e-8e2e-d369e8f9b176" TYPE="xfs" /dev/sdc1: UUID="d176f4c4-c540-41f3-9ec3-3d079c323c7d" TYPE="ext4" /dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/mapper/centos-root: UUID="75b0fa64-e099-430f-a143-706f8fcc0209" TYPE="xfs" /dev/mapper/centos-swap: UUID="a8d4df56-dad9-41ba-85e3-a7063645cc80" TYPE="swap" [root@localhost ~]# xfs_ xfs_admin xfs_copy xfs_estimate xfs_fsr xfs_info xfs_logprint xfs_metadump xfs_ncheck xfs_repair xfs_bmap xfs_db xfs_freeze xfs_growfs xfs_io xfs_mdrestore xfs_mkfile xfs_quota xfs_rtcp [root@localhost ~]# xfs_growfs /dev/mapper/centos-root meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=1768960 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=7075840, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=3455, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 7075840 to 9698304 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 40G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 39G 0 part ├─centos-root 253:0 0 37G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 1G 0 disk └─sdb1 8:17 0 1023M 0 part /history_data sdc 8:32 0 25G 0 disk └─sdc1 8:33 0 25G 0 part /dmdata2 sr0 11:0 1 4.4G 0 rom [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 898M 0 898M 0% /dev tmpfs 910M 0 910M 0% /dev/shm tmpfs 910M 9.6M 901M 2% /run tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/mapper/centos-root 37G 24G 14G 65% / /dev/sdb1 1020M 33M 988M 4% /history_data /dev/sdc1 25G 8.5G 15G 37% /dmdata2 /dev/sda1 1014M 151M 864M 15% /boot tmpfs 182M 0 182M 0% /run/user/0 [root@localhost ~]#

此过程中需要注意,文件系统格式,否则会报出如下错误:

完成上述操作,我们就成功针对空间不足的问题进行解决了!

(三)卷组、逻辑卷的操作(挂载到指定路径)

注:这里新创建一个database_log目录,用于测试

1.创建分区:fdisk /dev/硬盘名

注:依次执行即可

[root@localhost ~]# fdisk /dev/xvdb
p # 查看分区信息
n # 创建分区
p # 选择主分区
回车默认,默认会将所有剩余空间都划入该分区
t # 修改分区格式
L # 列出所有分区格式信息
8e # 创建分区并标记为 Linux LVM(类型 8e),8e为lvm类型的hex代码
p # 查看分区信息
w # 保存并退出

pvcreate /dev/sdb1 # 使用分区名(如/dev/sdb1)

2.创建物理卷,同上。

3.创建卷组

4.创建逻辑卷

5.查看分区信息

6.格式化文件系统

注:格式化之前先确定逻辑卷的信息及文件系统是什么格式

方式一:使用df -TH来进行查看

方式二:使用blkid查看所有盘符信息

EXT4文件系统下的格式化:


XFS文件系统下的格式化:

7.挂载与使用(挂载到前面所创建的 /database_log目录下)

8.扩展逻辑卷操作

如果扩展的是一个挂载的文件系统,可以直接运行resize2fs命令。resize2fs命令来自于英文词组“resize to filesystem”的缩写,其功能是用于同步文件系统容量到内核。如对ext3、ext4、XFS等设备卷容量进行了调整,则需要使用resize2fs命令同步信息到系统内核;如果是非挂载文件系统,需要先挂载文件系统。

xfs_growfs与resize2fs之间的主要区别是为识别文件系统而传递的参数。xfs_growfs命令将挂载点作为参数,resize2fs命令则将LV名称作为参数。xfs_growfs命令仅支持联机调整大小,而resize2fs命令同时支持联机和脱机调整大小。您可以调大或调小ext4文件系统的大小,但只能调大XFS文件系统的大小。

1、对于Ext4文件系统,可以使用resize2fs命令。语法格式: resize2fs [参数] 设备。

eg:resize2fs /dev/mapper/vg_ storage_test/lv_storage_test。

2、对于XFS文件系统,xfs_growfs可以直接扩展已经挂载的文件系统。

语法格式:xfs_growfs [参数] 设备。

eg:xfs_growfs /dev/vg_data/lv_data。

3、注意事项:在操作卷组(VG)和逻辑卷(LV)时,通常不需要手动执行同步命令(如 sync 或 partprobe),因为 LVM(逻辑卷管理)的创建和挂载流程由内核自动处理。

操作步骤是否需要同步命令备注
创建 PV/VG/LV内核自动生效
格式化文件系统mkfs直接写入设备
挂载/卸载mount/umount直接生效
扩展 LV 或文件系统需文件系统工具(如xfs_growfs

如上所说,所以这里使用同步命令之后,报出已经做过同步,不需要做其他操作。

9.设置开机自动挂载

注:名称格式不能写错,否则可能开不了机
# echo "/dev/mapper/vg_database_log-lv_database_log /database_log ext4 defaults 0 0" >> /etc/fstab


# cat /etc/fstab(etc/fstab一个系统配置文件,用于定义文件系统的静态挂载信息,确保系统启动时自动挂载指定的存储设备或分区)。

10.重启查看

五、关键注意事项

1.文件系统类型

XFS 仅支持扩容不支持缩容

ext4 可通过resize2fs调整大小

2.根分区是否选用lvm管理方式

在 CentOS 7 系统中,如果根分区未使用 LVM(逻辑卷管理),则无法直接通过卷组(VG)动态扩容。但若系统已使用 LVM(默认安装通常会创建名为 centos 的卷组),只需按标准 LVM 流程扩容即可。

http://www.jsqmd.com/news/860955/

相关文章:

  • No!! MeiryoUI终极指南:3步恢复Windows界面字体自定义功能
  • CANN/asc-devkit:获取核心内存带宽API
  • 深度防御架构:unblob的多层安全防护与权限隔离实践
  • 蓝晒法AI化转型关键突破,仅限前200名领取:含47个已验证蓝晒LUT预设+光照角度黄金比例表
  • 终极GTA5安全增强菜单:YimMenu完整使用指南与防护策略
  • 软工作业4
  • 基于PhasorDetect手持NIRS设备多光谱反射数据的组织氧饱和度实时监测研究附Matlab代码
  • SchemaCrawler:终极数据库模式发现与理解工具完全指南
  • Rufus终极指南:轻松创建Windows安装USB并绕过硬件限制
  • ElevenLabs希腊文语音本地化交付SOP,含欧盟GDPR语音数据脱敏协议模板与ASR对齐验证脚本
  • BiliTools终极指南:跨平台哔哩哔哩工具箱的完整使用教程
  • Faster RCNN PyTorch部署指南:从训练模型到生产环境
  • OmniSharp-vim与主流补全插件集成:asyncomplete、coc.nvim、deoplete配置详解
  • 第六届辽宁省大学生程序设计竞赛 B题思路分享(数论,构造,欧拉定理)
  • 3个真实开发场景:Continue如何让你的JetBrains IDE变成AI编程伙伴
  • 新手入门指南从注册Taotoken到发出第一个ChatCompletion请求
  • DeepCreamPy深度解析:当AI神经网络邂逅动漫图像修复
  • 三步快速实现GitHub Desktop中文界面:终极汉化指南
  • go-jsonnet完整指南:从零开始掌握Jsonnet配置语言
  • 实习准备(26_05_21)
  • # 2026年西安中考复读学校谁家靠谱?教学、案例与管理模式横向测评 - 科技焦点
  • eLabFTW深度解析:开源电子实验记录本的技术架构与实战应用
  • mob源码深度解析:Go语言实现高效Git协作工具的架构奥秘
  • Kubepug快速入门:5分钟学会Kubernetes集群升级安全检查
  • LayoutLMv3终极指南:如何在5分钟内快速部署文档AI多模态模型
  • ChatGPT-Web-Midjourney-Proxy的GPTs功能详解:打造专属AI助手的终极指南
  • RT-DETR自定义数据集训练实战:构建专属实时目标检测器
  • Enumerize 国际化实战指南:如何为枚举值添加多语言支持
  • GitHub Desktop中文汉化解决方案:智能文本映射技术实现界面本地化
  • 得电