当前位置: 代码网 > 服务器>服务器>Linux > Linux LVM逻辑卷管理过程

Linux LVM逻辑卷管理过程

2026年01月25日 Linux 我要评论
卷组volume group (vg)卷组是lvm中最高抽象层,是由一个或多个物理卷所组成的存储器池。物理卷physical volume (pv)典型的物理卷是硬盘分区,但也可以是整个硬盘或已创建的
  • 卷组volume group (vg)
  • 卷组是lvm中最高抽象层,是由一个或多个物理卷所组成的存储器池。
  • 物理卷physical volume (pv)
  • 典型的物理卷是硬盘分区,但也可以是整个硬盘或已创建的software raid 卷。
  • 物理块physical extent (pe)
  • 物理卷按大小相等的“块”为单位存储,块的大小与卷组中逻辑卷块的大小相同。
  • 逻辑块logical extent (le)
  • 逻辑卷按“块”为单位存储,在一卷组中的所有逻辑卷的块大小是相同的。

逻辑卷logical volume (lv)

逻辑卷相当于非lvm系统中的分区,它在卷组上建立,是一个标准的块设备,可以在其上建立文件系统

线性映射

线性映射-把一定范围的物理块按顺序分配给逻辑卷,如lv的le 1-99映射到pv1,le 100-347映射到pv2。

交错模式

交错模式-将把逻辑块交错映射到不同的物理卷中,如 lv的le 1映射为pv1的pe1,le 2映射为pv2的pe1,le 3映射为pv1的pe2.。这种方式可以提高逻辑卷的性能,但是采用这种方式建立的逻辑卷将不能在它们所在的物理卷中扩展。

创建lvm卷,从下到上创建,示意图如下

第一步创建物理文件系统

首先我们要创建文件系统

命令: fdisk /dev/sdb   ————  创建物理卷并修改id为8e

第二步初始化物理卷为pv

创建pv,添加几个文件系统,然后再添加一个raid文件系统

命令:

  • pvcreate /dev/sdb{5,6,7,8,9}   ————   添加文件系统到pv
  • pvcreate /dev/md0              ————   添加raid文件系统到pv
  • pvs,pvdisplay                 ————   查看系统现有pv

第三步创建卷组vg

添加pv到卷组,创建vg卷组

命令:vgcreate  [-s=16m]     test_vg      /dev/sdk1  /dev/sdl1

指定pe大小  vg卷组名   要添加到vg中的pv

使用man帮助看一下使用方法

看上面的例子,我们添加pv到卷组中创建vg

命令:vgcreate vg0 /dev/sdb{5,6,7,8,9} /dev/md0

vgs,vgdisplay

注释:[-s=16m] 里面的内容可选,修改默认的pe单元大小,默认为4m,最大一个卷组是256g,修改默认单元为16m,最大的卷组单元是1024g

命令:vgdisplay testvg | grep "total pe"

看看默认的pe大小为4m,pv个数为6个,vg的总大小为6.7.g

其他vg卷组的一些操作

激活vg

在被激活之前,vg与lv是无法访问的

用man帮助看一下

命令:vgchange -a y vg0  ———— 激活vg0卷组

当不再使用vg时,休眠了vg0卷组

命令:vgchange -a n vg0  ———— 使之不再可用

移除vg

在移除一卷组前应确认卷组中不再有逻辑卷

命令:vgchange -a n vg0    ———— 休眠卷组

vgremove  vg0        ———— 移除该卷组

为vg增加新pv

当卷组空间不足时,可以加入新的物理卷来扩大vg卷组容量,这时可用命令vgextend

  • pvcreate  /dev/sdb15 ———— 初始化sdb15为pv
  • vgextend  vg0  /dev/sdb15 ———— 把sdb15加入到卷组vg0中

其中/dev/sdb15是新的pv,当然在这之前,它应使用pvcreate初始化

从vg移除pv

在移除pv之前,应确认该pv没用被lv使用

命令:pvdisplay  /dev/sdb15  ———— 查看pv有没有使用

如这个pv仍在被使用,在确认它未被使用后,可用命令vgreduce把它从vg中删除

命令:vgreduce  vg0  /dev/sdb15  ———— 从vg中删除pv

如果所在pv上有数据,则应把数据传移到其它pv上

注释:若要把一个pv从vg中移除,应首先把其上所有活动pe中的数据转移到其它pv上,而新的pv必须是本vg的一部分,有足够的空间,如要把pv1:/dev/md0上的数据移到pv2:/dev/sdb6上可用,建议在转移数据之前备份lv中的数据,如果在该pv之上的lv采用交错方式存放,则这个转移过程不能被打断。

命令:pvmove /dev/md0 /dev/sdb6

第四步创建lv逻辑卷

lvcreate命令的常用方法和参数:

lvcreate  [options]  -n  逻辑卷名  卷组名 [pv1...]

  • -i  stripes :采用交错(striped)方式创建lv,其中stripes指卷组中pv的数量。
  • -i  stripe_size :采用交错方式时采用的块大小(单位为kb),stripe_size必须为2的指数:2n ,n=2,3...9
  • -l  les :指定lv的逻辑块数。
  • -l  size :指定lv的大小,其后可以用k、m、g表示kb、mb、gb。
  • -s  :创建一已存在lv的snapshot卷。
  • -n  name :为lv指定名称。

看看man帮助如何创建lv

在vg卷组上创建lv逻辑卷

命令:lvcreate  -l 500m  -n lv0  vg0

指定lv大小    lv名称   卷组vg名称

查看整个卷组vg总大小6.7g,剩余的空间为6.21g

命令:vgs

格式化lv

命令:mkfs.ext3  /dev/vg0/lv0

查看一个lv0块设备

删除lv

为删除一个逻辑卷,必须首先从系统卸载其上的文件系统,然后可用lvremove删除,如:

  • umount /lv1               先卸载lv文件系统
  • lvremove /dev/vg0/lv1     移除lv1逻辑卷

挂载lv0并创建文件

下面最关键的来了

扩大lv

步骤如下:

首先增加逻辑卷容量(lvextend)

在线(脱机)增加ext3文件系统(resize2fs)

查看man帮助

查看lv扩展后的vg卷组剩余空间

首先增加逻辑卷容量(lvextend)

指定扩容后的尺寸: lvextend -l 2g /dev/vg0/lv0

将扩大逻辑卷lv0的容量为2gb。

指定要增加的尺寸: lvextend -l +512m  /dev/vg0/lv0

将为lv v0再增大容量1gb至1.5gb。

注释:为lv扩容的一个前提是,lv所在的vg有足够的空闲存储空间可用。

在为lv扩容之后,应同时为lv之上的文件系统扩容,使二者相匹配。对不同的文件系统有相对应的扩容方法。

扩充了lv后,重新挂载,查看大小,看到当前的lv大小并没有增大,那又该怎么办呢?

注释:ext2/ext3除非内核已有ext2online 补丁,否则在改变ext2/ext3文件系统的大小时应卸载它

在线(脱机)增加ext3文件系统(resize2fs)

再次查看的时候我们可以看到容量大小已经是扩展后的大小了

缩小lv(这个比较麻烦)

步骤如下:

  • 卸载文件系统,使其脱机进行操作(umount)
  • 检查文件系统(e2fsck)
  • 缩小文件系统(resize2fs),指定缩小后的容量
  • 缩小lv,减少卷容量(lvreduce),指定缩小后的容量
  • 使用man 帮助看一看lvreduce的用法

注释:逻辑卷可扩展同样也可缩小,但应在缩小lv之前首先减小文件系统,否则将可能导致数据丢失。

下面来缩小lv0的容量,现容量为800m容量,我要缩小到500m

卸载文件系统,使其脱机进行操作(umount)

命令:umount /lv0

检查文件系统(e2fsck)

命令:e2fsck -f /dev/vg0/lv0

缩小文件系统(resize2fs)

命令:resize2fs /dev/vg0/lv0  500m

缩小lv,减少卷容量(lvreduce)

命令:lvreduce -l 500m /dev/vg0/lv0

挂载lv0文件系统并查看其大小

系统启动激活

在rhel 5以后都会自动激活lvm,如下,在系统启动的时候会自动激活的

如果没有激活的话请做如下操作:

系统启动/关闭

"为使系统启动时可自动激活并使用lvm,可将以下几行添加到启动 rc 脚本中:

  • /sbin/vgscan
  • /sbin/vgchange -a y

这些行将浏览所有可用的卷组并激活它们。要注意的是,它们应在安装卷组上的文件系统操作之前被执行,否则将无法正常安装文件系统。

"在系统关机时,要关闭lvm,这可将以下这行添加到关机 rc 脚本中,并确保它在卸装了所有文件系统后执行:/sbin/vgchange -a n

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com