LVM逻辑卷管理器

news2025/6/23 22:09:32

LVM是Linux系统对硬盘分区进行管理的一种机制,在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。这样,用户无需关心物理硬盘设备的底层架构和布局,就可以实现对硬盘分区的动态调整。

常用的LVM部署命令

功能物理卷管理命令pv卷组管理命令vg逻辑卷管理命令lv
scan扫描pvscanvgscanlvscan
create建立pvcreatevgcreatelvcreate
display显示pvdisplayvgdisplaylvdisplay
remove删除pvremovevgremovelvremove
extend扩展-vgextendlvextend
reduce缩小-vgreducelvreduce

实现LVM:

一、物理卷、卷组、逻辑卷的建立

首先在虚拟机上添加两块硬盘。

一直点下一步下一步,添加两块是20G的硬盘。点确定!不要点叉!

1.1 通过fdisk建立LVM类型的分区。

分区(也可以不分区直接用),可以reboot重启一下后。输入lsblk能看到多了两块硬盘sdb,sdc

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    4G  0 part /boot
└─sda2            8:2    0   54G  0 part 
  ├─centos-root 253:0    0   50G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
sdc               8:32   0   20G  0 disk 

sr0              11:0    1 1024M  0 rom

分区:上一篇文章有讲解!管理磁盘,硬盘管理工具fdisk-CSDN博客

[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xe3054f41 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

这个是sdb1分区。sdb磁盘上分两块区域。同理,再分一个sdb2。

分区后:能看到sdb有两个分区sdb1和sdb2。磁盘sdc也同理分两个分区,每个分区5G

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    4G  0 part /boot
└─sda2            8:2    0   54G  0 part 
  ├─centos-root 253:0    0   50G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
├─sdb1            8:17   0    5G  0 part 
└─sdb2            8:18   0    5G  0 part 
sdc               8:32   0   20G  0 disk 
├─sdc1            8:33   0    5G  0 part 
└─sdc2            8:34   0    5G  0 part 
sr0              11:0    1 1024M  0 rom

修改分区类型为LVM类型。t是修改分区类型。(说明:在建立分区时也可以直接修改LVM类型)

[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):t
分区号 (1,2,默认 2):1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t
分区号 (1,2,默认 2):2
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

 输入fdisk -l看到sdb1,2修改为了8e

同理也把sdc1,2修改成8e。 

 

sdb和sdc分区(sdb1,sdb2,sdc1,sdc2)和修改类型(8e)就完成了。

1.2 建立物理卷

pvcreate命令可以在已创建好的分区上建立物理卷。

pvcreate /dev/sdb1 /dev/sdb2 /dev/sdc1 /dev/sdc2

[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2 /dev/sdc1 /dev/sdc2
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
  Physical volume "/dev/sdc1" successfully created.
  Physical volume "/dev/sdc2" successfully created.

#pvscan 查看一下

[root@localhost ~]# pvscan 
  PV /dev/sda2   VG centos          lvm2 [54.00 GiB / 4.00 MiB free]
  PV /dev/sdc2                      lvm2 [5.00 GiB]
  PV /dev/sdb1                      lvm2 [5.00 GiB]
  PV /dev/sdc1                      lvm2 [5.00 GiB]
  PV /dev/sdb2                      lvm2 [5.00 GiB]

  Total: 5 [74.00 GiB] / in use: 1 [54.00 GiB] / in no VG: 4 [20.00 GiB]

也可以用pvdisplay查看

1.3 建立卷组

我们把sdb1和sdc1两个物理卷组成一个卷组lv1,把sdb2和sdc2组成一个卷组lv2。卷组名自己起的。

使用vgcreate命令建立卷组。卷组设备文件使用/dev目录下与卷组同名的目录表示,所有逻辑设备文件都将建立在该目录下。包含多个物理卷,也可以只有一个物理卷。

vgcreate 卷组名 两个物理卷:successfully

起了两个卷组名vg1和vg2,可以随便起。vgscan查看一下

[root@localhost ~]# vgscan 
  Reading volume groups from cache.
  Found volume group "vg1" using metadata type lvm2
  Found volume group "vg2" using metadata type lvm2

  Found volume group "centos" using metadata type lvm2

1.4 建立逻辑卷

建立好卷组后,可以使用lvcreate在已有卷组上建立逻辑卷。

lvcreate -L 指定大小 -n 逻辑卷名 卷组名 (这里指定的大小肯定不能超过卷组总大小)

我们的四个分区sdb1,sdb2,sdc1,sdc2都是5G,那么vg1(sdb1,sdc1)和vg2(sdb2,sdc2)各10G。

lvcreate -L 6G -n lv1 vg1

lvcreate -L 7G -n lv2 vg2

逻辑卷名字随便起:lv1,lv2

[root@localhost ~]# lvscan 
  ACTIVE            '/dev/vg1/lv1' [6.00 GiB] inherit
  ACTIVE            '/dev/vg2/lv2' [7.00 GiB] inherit

  ACTIVE            '/dev/centos/swap' [4.00 GiB] inherit
  ACTIVE            '/dev/centos/root' [50.00 GiB] inherit

二、逻辑卷管理

[root@localhost ~]# lsblk                         # 显示块设备
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    4G  0 part /boot
└─sda2            8:2    0   54G  0 part 
  ├─centos-root 253:0    0   50G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
├─sdb1            8:17   0    5G  0 part 
│ └─vg1-lv1     253:2    0    6G  0 lvm  
└─sdb2            8:18   0    5G  0 part 
  └─vg2-lv2     253:3    0    7G  0 lvm  
sdc               8:32   0   20G  0 disk 
├─sdc1            8:33   0    5G  0 part 
│ └─vg1-lv1     253:2    0    6G  0 lvm  
└─sdc2            8:34   0    5G  0 part 
  └─vg2-lv2     253:3    0    7G  0 lvm  
sr0              11:0    1 1024M  0 rom

# 可以看到sdb1和sdc1都在逻辑卷lv1中,sdb2和sdc2都在逻辑卷lv2中。

2.1 逻辑卷容量扩容

vg1中共有10G的空间,我们上面指定了大小为6G的逻辑卷。如果存放一个大小为8G的文件时,显然不够使用,这时候扩容3G到9G,来存放8G文件

# 现在lv1是6G

[root@localhost ~]# lvscan 
  ACTIVE            '/dev/vg1/lv1' [6.00 GiB] inherit
  ACTIVE            '/dev/vg2/lv2' [7.00 GiB] inherit
  ACTIVE            '/dev/centos/swap' [4.00 GiB] inherit
  ACTIVE            '/dev/centos/root' [50.00 GiB] inherit

# 扩容,这里一定要写+3G代表扩容,不能写3G。
[root@localhost ~]# lvextend -L +3G /dev/vg1/lv1
  Size of logical volume vg1/lv1 changed from 6.00 GiB (1536 extents) to 9.00 GiB (2304 extents).
  Logical volume vg1/lv1 successfully resized.

# 可以查看多了3G
[root@localhost ~]# lvscan 
  ACTIVE            '/dev/vg1/lv1' [9.00 GiB] inherit
  ACTIVE            '/dev/vg2/lv2' [7.00 GiB] inherit
  ACTIVE            '/dev/centos/swap' [4.00 GiB] inherit
  ACTIVE            '/dev/centos/root' [50.00 GiB] inherit

缩容命令(自行尝试):lvreduce -L -3G /dev/vg1/lv1

2.2往卷组中增加新的物理卷

当卷组中没有足够的空间分配逻辑卷时,可以往卷组中增加物理卷的方法来增加卷组空间。

sdb磁盘中再分一个分区sdb3给它5G。加到vg1中,那么vg1就有了15G了。

前期准备:

1.分区,修改类型为8e。(1.1 已讲解)

fdisk -l查看

设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   8e  Linux LVM
/dev/sdb2        10487808    20973567     5242880   8e  Linux LVM
/dev/sdb3        20973568    31459327     5242880   8e  Linux LVM

2.建立物理卷

建立物理卷先删除逻辑卷:lvremove /dev/vg1/lv1;lvremove /dev/vg2/lv2

才能建立物理卷:pvcreate /dev/sdb3

 可以看到物理卷已建立

[root@localhost ~]# pvscan 
  PV /dev/sdb1   VG vg1             lvm2 [<5.00 GiB / 0    free]
  PV /dev/sdc1   VG vg1             lvm2 [<5.00 GiB / 1016.00 MiB free]
  PV /dev/sdb2   VG vg2             lvm2 [<5.00 GiB / 0    free]
  PV /dev/sdc2   VG vg2             lvm2 [<5.00 GiB / 2.99 GiB free]
  PV /dev/sda2   VG centos          lvm2 [54.00 GiB / 4.00 MiB free]
  PV /dev/sdb3                      lvm2 [5.00 GiB]
  Total: 6 [<78.99 GiB] / in use: 5 [<73.99 GiB] / in no VG: 1 [5.00 GiB]

往卷组中加物理卷:vgextend vg1 /dev/sdb3(往vg1中加入sdb3)

 查看物理卷:可以发现sdb3加入到了vg1中

[root@localhost ~]# pvscan 
  PV /dev/sdb1   VG vg1             lvm2 [<5.00 GiB / <5.00 GiB free]
  PV /dev/sdc1   VG vg1             lvm2 [<5.00 GiB / <5.00 GiB free]
  PV /dev/sdb3   VG vg1             lvm2 [<5.00 GiB / <5.00 GiB free]
  PV /dev/sdb2   VG vg2             lvm2 [<5.00 GiB / <5.00 GiB free]
  PV /dev/sdc2   VG vg2             lvm2 [<5.00 GiB / <5.00 GiB free]
  PV /dev/sda2   VG centos          lvm2 [54.00 GiB / 4.00 MiB free]
  Total: 6 [78.98 GiB] / in use: 6 [78.98 GiB] / in no VG: 0 [0   ]

# 建立逻辑卷,指定大小13G,可以看到是可以指定13G的,因为此时三个分区sdb1,sdc1,sdb3共有15G。
[root@localhost ~]# lvcreate -L 13G -n lv1 vg1
  Logical volume "lv1" created.
[root@localhost ~]# lvscan 
  ACTIVE            '/dev/vg1/lv1' [13.00 GiB] inherit
  ACTIVE            '/dev/vg2/lv2' [7.00 GiB] inherit
  ACTIVE            '/dev/centos/swap' [4.00 GiB] inherit
  ACTIVE            '/dev/centos/root' [50.00 GiB] inherit

[root@localhost ~]# lvcreate -L 7G -n lv2 vg2
  Logical volume "lv2" created.

三、创建文件系统并加载使用

3.1 使用xfs文件系统格式化逻辑卷

就相当于格式化:

mkfs.xfs /dev/vg1/lv1

[root@localhost ~]# mkfs.xfs /dev/vg1/lv1
meta-data=/dev/vg1/lv1           isize=512    agcount=4, agsize=851968 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=3407872, 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@localhost ~]# mkfs.xfs /dev/vg2/lv2

同理:mkfs.xfs /dev/vg2/lv2

3.2 创建了文件系统以后,挂载

挂载:我们在/mnt下建立两个文件夹test1和test2,让lv1和lv2分别挂载上

mkdir /mnt/test{1,2}

 挂载

mount /dev/vg1/lv1 /mnt/test1

mount /dev/vg2/lv2 /mnt/test2

 查看文件系统的硬盘空间占用情况和挂载位置:df

-T显示文件系统类型。

-h显示大小,人性化

[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  2.0G     0  2.0G    0% /dev
tmpfs                   tmpfs     2.0G     0  2.0G    0% /dev/shm
tmpfs                   tmpfs     2.0G   13M  2.0G    1% /run
tmpfs                   tmpfs     2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        50G  4.6G   46G   10% /
/dev/sda1               xfs       4.0G  171M  3.9G    5% /boot
tmpfs                   tmpfs     394M  4.0K  394M    1% /run/user/42
tmpfs                   tmpfs     394M   24K  394M    1% /run/user/0
/dev/mapper/vg1-lv1     xfs        13G   33M   13G    1% /mnt/test1
/dev/mapper/vg2-lv2     xfs       7.0G   33M  7.0G    1% /mnt/test2

可以看到两个逻辑卷均挂在上了。

mount 显示所有挂载情况。我们只看后两个

[root@localhost ~]# mount | tail -2
/dev/mapper/vg1-lv1 on /mnt/test1 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/mapper/vg2-lv2 on /mnt/test2 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

挂载上可以正常使用里面的磁盘空间了。test1目录下,用的是sdb1,sdc1,sdb3的空间。test2目录下用的是sdb2,sdc2的空间。

四、删除逻辑卷、卷组、物理卷

删除顺序(解挂载-->删除逻辑卷-->删除卷组-->删除物理卷)

四步:

1.解挂载:umount /mnt/test1;umount /mnt/test2

2.删除逻辑卷:lvremove /dev/vg1/lv1;lvremove /dev/vg2/lv2

3.删除卷组:vgremove vg1;vgremove vg2

4.删除物理卷:pvremove /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdc1 /dev/sdc2

可以试试,不解挂载能不能删除逻辑卷

[root@localhost ~]# mount | tail -2
/dev/mapper/vg1-lv1 on /mnt/test1 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/mapper/vg2-lv2 on /mnt/test2 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
[root@localhost ~]# lvremove /dev/vg1/lv1                # 不解挂载直接删除逻辑卷
  Logical volume vg1/lv1 contains a filesystem in use.             # 失败 有正在使用的文件系统,显然要先解挂载


1.解挂载
[root@localhost ~]# umount /mnt/test1 

[root@localhost ~]# umount /mnt/test2

2.删除逻辑卷

[root@localhost ~]# lvremove /dev/vg1/lv1                                 # 删除逻辑卷lv1
Do you really want to remove active logical volume vg1/lv1? [y/n]: y
  Logical volume "lv1" successfully removed                                # 删除lv1成功
[root@localhost ~]# lvremove /dev/vg2/lv2                                # 删除逻辑卷lv2
Do you really want to remove active logical volume vg2/lv2? [y/n]: y
  Logical volume "lv2" successfully removed                               # 删除lv2成功

3.删除卷组

[root@localhost ~]# vgremove vg1
  Volume group "vg1" successfully removed

[root@localhost ~]# vgremove vg2
  Volume group "vg2" successfully removed

4.删除物理卷

[root@localhost ~]# pvremove /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdc1 /dev/sdc2
  Labels on physical volume "/dev/sdb1" successfully wiped.
  Labels on physical volume "/dev/sdb2" successfully wiped.
  Labels on physical volume "/dev/sdb3" successfully wiped.
  Labels on physical volume "/dev/sdc1" successfully wiped.
  Labels on physical volume "/dev/sdc2" successfully wiped.

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

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

相关文章

智过网:注册安全工程师注册有效期与周期解析

在职业领域&#xff0c;各种专业资格认证不仅是对从业者专业能力的认可&#xff0c;也是保障行业安全、规范发展的重要手段。其中&#xff0c;注册安全工程师证书在安全生产领域具有举足轻重的地位。那么&#xff0c;注册安全工程师的注册有效期是多久呢&#xff1f;又是几年一…

Unity 九宫格

1. 把图片拖拽进资源文件夹 2.选中图片&#xff0c;然后设置图片 3.设置九宫格 4.使用图片&#xff0c;在界面上创建2个相同的Image,然后使用图片&#xff0c;修改Image Type 为Sliced

图书推荐:《和AI一起编程》

《Coding with AI For Dummies》这本书由Chris Minnick撰写&#xff0c;主要分为四个部分&#xff0c;涵盖了与AI相结合的编程技术、AI编码工具的应用、利用AI编写代码的具体实践&#xff0c;以及测试、文档编制和维护代码的相关内容。 克里斯明尼克(Chris Minnick)&#xff1a…

【论文阅读】MCTformer: 弱监督语义分割的多类令牌转换器

【论文阅读】MCTformer: 弱监督语义分割的多类令牌转换器 文章目录 【论文阅读】MCTformer: 弱监督语义分割的多类令牌转换器一、介绍二、联系工作三、方法四、实验结果 Multi-class Token Transformer for Weakly Supervised Semantic Segmentation 本文提出了一种新的基于变换…

数字化浪潮下,制造业如何乘势而上实现精益生产

随着数字化技术的迅猛发展&#xff0c;制造业正迎来前所未有的变革机遇。本文将探讨如何利用数字化手段助推制造业实现精益生产&#xff0c;从而在激烈的市场竞争中脱颖而出。 1、构建智能化生产系统 借助物联网技术&#xff0c;实现设备之间的互联互通&#xff0c;构建智能化…

最祥解决python 将Dataframe格式数据上传数据库所碰到的问题

碰到的问题 上传Datafrane格式的数据到数据库 会碰见很多错误 举几个很普遍遇到的问题(主要以SqlServer举例) 这里解释下 将截断字符串或二进制数据 这个是字符长度超过数据库设置的长度 然后还有字符转int失败 或者字符串转换日期/或时间失败 这个是碰到的需要解决的最多的问…

比特币减半后 牛市爆发

作者&#xff1a;Arthur Hayes of Co-Founder of 100x 编译&#xff1a;Qin jin of ccvalue (以下内容仅代表作者个人观点&#xff0c;不应作为投资决策依据&#xff0c;也不应被视为参与投资交易的建议或意见&#xff09;。 Ping PingPing&#xff0c;我的手机发出的声音&…

词频统计程序

使用Hadoop MapReduce处理文本文件&#xff0c;Mapper负责将文本分割为单词&#xff0c;然后Reducer对每个单词进行计数&#xff0c;最后将结果写入输出文件。 // 定义WordCount公共类 public class WordCount {// 主入口方法&#xff0c;处理命令行参数public static void m…

C语言进阶|顺序表

✈顺序表的概念及结构 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使 用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串.. 线性表在逻辑上是线性结构&#xff0c;也就说是连…

推荐学习什么编程语言?

选择编程语言学习时&#xff0c;除了就业因素外&#xff0c;还可以考虑以下几个方面来决定学习哪些编程语言&#xff1a; 个人兴趣与目标&#xff1a;如果你对某个特定领域感兴趣&#xff0c;比如游戏开发、数据分析、人工智能等&#xff0c;可以选择与该领域紧密相关的编程语言…

Python---【re库的使用】

目录&#xff1a; 一.re库简介 二.match方法 三.Match对象方法 四.使用search()方法进行匹配 五.使用findall()方法进行匹配 六.使用sub()方法替换字符串 七.使用split()方法分割字符串 一.re库简介 re库是Python用来实现“正则表达式”的库&#xff0c;并且re库在Pyth…

使用 nginx 服务器部署Vue项目

安装nginx 文本代理服务器 centos下载 注意需要root权限 在CentOS服务器上下载Nginx可以通过以下步骤完成&#xff1a; 更新系统软件包列表&#xff1a; yum update 安装EPEL存储库&#xff08;Extra Packages for Enterprise Linux&#xff09;&#xff1a; yum install…

分类预测 | Matlab实现KPCA-IDBO-LSSVM基于核主成分分析和改进蜣螂优化算法优化最小二乘支持向量机分类预测

分类预测 | Matlab实现KPCA-IDBO-LSSVM基于核主成分分析和改进蜣螂优化算法优化最小二乘支持向量机分类预测 目录 分类预测 | Matlab实现KPCA-IDBO-LSSVM基于核主成分分析和改进蜣螂优化算法优化最小二乘支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述…

Visual Studio C++ 正确创建项目与更改文件名

1、创建项目 1&#xff09;打开Visual Studio&#xff0c;选择创建新项目。 2&#xff09;创建空项目 3&#xff09;配置新项目&#xff0c;注意不要勾选 " 将解决方案和项目放在同一目录中 " 。并将位置的文件夹设为与解决方案同名&#xff0c;方便管理。项目名称则…

《零秒思考》像麦肯锡精英一样思考 - 三余书屋 3ysw.net

零秒思考&#xff1a;像麦肯锡精英一样思考 大家好&#xff0c;今天我们要深入探讨的著作是《零秒思考》。在领导提出问题时&#xff0c;我们常常会陷入沉思&#xff0c;却依然难以有所进展&#xff0c;仿佛原地踏步&#xff0c;但是身边的同事却能够立即给出清晰的回答。这种…

乡村智慧化升级:数字乡村打造农村生活新品质

目录 一、乡村智慧化升级的内涵与意义 二、乡村智慧化升级的具体实践 1、加强农村信息基础设施建设 2、推广智慧农业应用 3、提升乡村治理智慧化水平 4、丰富智慧乡村生活内容 三、数字乡村打造农村生活新品质的成果展现 1、农业生产效率与质量双提升 2、农民收入与消…

学习Rust的第二天:Cargo

We dive into Cargo, the powerful and convenient build system and package manager for Rust. 基于Steve Klabnik的《The Rust Programming Language》一书&#xff0c;我们深入了解Cargo&#xff0c;这是Rust强大而方便的构建系统和包管理器。 Cargo is a robust and effic…

Linux文件与目录的默认权限和隐藏权限

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Kubernetes航线图&#xff1a;从船长到K8s掌舵者》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、Linux的起源与发展 二、文件默认权限&#xf…

vitepress/vite vue3 怎么实现vue模版字符串实时编译

如果是vue模版字符串的话&#xff0c;先解析成模版对象 另一篇文章里有vue模版字符串解析成vue模版对象-CSDN博客 //vue3写法&#xff08;vue2可以用new Vue.extend(vue模版对象)来实现&#xff09;import { createApp, defineComponent } from vue;// 定义一个简单的Vue组件c…

【从浅学到熟知Linux】进程状态与进程优先级(含进程R/S/T/t/D/X/Z状态介绍、僵尸进程、孤儿进程、使用top及renice调整进程优先级)

&#x1f3e0;关于专栏&#xff1a;Linux的浅学到熟知专栏用于记录Linux系统编程、网络编程及数据库等内容。 &#x1f3af;每天努力一点点&#xff0c;技术变化看得见 文章目录 进程状态进程状态查看R运行状态&#xff08;running&#xff09;S睡眠状态&#xff08;sleeping&a…