1 LVM介绍

LVM(Logical Volume Manager)逻辑卷管理,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,

image  

                                                    逻辑卷管理器的技术结构

2 LVM的优缺点

优点:

1. 文件系统可以跨多个磁盘,因此文件系统大小不会受物理磁盘的限制。

2. 可以在系统运行的状态下动态的扩展文件系统的大小。

3. 可以增加新的磁盘到LVM的存储池中。

4. 可以以镜像的方式冗余重要的数据到多个物理磁盘。

5. 可以方便的导出整个卷组到另外一台机器。

缺点:

1. 在从卷组中移除一个磁盘的时候必须使用reducevg命令(这个命令要求root权限,并且不允许在快照卷组中使用)。

2. 当卷组中的一个磁盘损坏时,整个卷组都会受到影响。

3. 因为加入了额外的操作,存贮性能受到影响。

3 LVM基础概念

1. 物理卷……PV(Physical Volume):物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘。

2. 卷组……VG(Volumne Group):卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个LVM系统中可以只有一个卷组,也可以拥有多个卷组。

3. 逻辑卷……LV(Logical Volume):逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。

4. 物理区域……PE(Physical Extent):物理区域是物理卷中可用于分配的最小存储单元,物理区域的大小可根据实际情况在建立物理卷时指定。物理区域大小一旦确定将不能更改,同一卷组中的所有物理卷的物理区域大小需要一致。

5. 逻辑区域……LE(Logical Extent):逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。

6. 卷组描述区域……VGDA(Volume Group Descriptor Area):卷组描述区域存在于每个物理卷中,用于描述物理卷本身、物理卷所属卷组、卷组中的逻辑卷及逻辑卷中物理区域的分配等所有信息,卷组描述区域是在使用pvcreate建立物理卷时建立的。

4 LVM管理命令

PV:Physical(物理卷)

pvcreate、pvs 、pvdisplay 、pvremove、pvmove、pvscan

VG:Volume Group(卷组)

vgcreate、vgs、vgdisplay、vgremove、vgrename、vgreduce、vgextent

LV:logical Volume(逻辑卷)

lvs、lvdisplay、lvremove、lvextend、lvresize、lvscan、lvrename

功能命令

物理卷管理

卷组管理

逻辑卷管理

扫描

pvscan

vgscan

lvscan

建立

pvcreate

vgcreate

lvcreate

显示

pvdisplay /pvs

vgdisplay /vgs

lvdisplay /lvs

删除

pvremove

vgremove

lvremove

扩展

 

vgextend

lvextend

缩小

 

vgreduce

lvreduce

5 LVM的配置

部署逻辑卷创建过程:

1.创建物理卷, 添加物理磁盘

2.创建卷组, 添加物理卷加⼊到该卷组

3.在卷组中划分逻辑卷

操作步骤:

1、部署逻辑卷

1. 准备物理磁盘

[root@lvm ~]# lsblk |grep "sd[bcd]"

image

2. 将磁盘加⼊pv

[root@lvm ~]# pvcreate /dev/sdb

image

3. 检查pv创建情况

[root@lvm ~]# pvs

image

4. 创建名为datavg的卷组

vgcreate

-s 指定PE大小

[root@lvm ~]# vgcreate datavg /dev/sdb

image

5. 检查卷组

[root@lvm ~]# vgs

image

6. 查看卷组组信息

[root@lvm ~]# vgdisplay test

image

7. 创建逻辑卷, 分配名称, 以及⼤⼩, 指定卷组

[root@lvm ~]# lvcreate -L 200M -n data test

image

8. 检查逻辑卷

[root@lvm ~]# lvscan

image

9. 查看逻辑卷信息

[root@lvm ~]# lvdisplay /dev/test/data

image

10. 格式化⽂件系统

[root@lvm ~]# mkfs.xfs /dev/test/data

image

11. 挂载并使⽤

[root@lvm ~]# mkdir /data

[root@lvm ~]# mount /dev/test/data /data/

[root@lvm ~]# df –h

image

2、卷组池管理

1. 新硬盘加⼊pv

[root@lvm ~]# pvcreate /dev/sdc

image

2. 查看pv信息

[root@lvm ~]# pvdisplay /dev/sdc

image

3. 扩展卷组VG, 扩⼤VG卷组使⽤vgextend扩展

[root@lvm ~]# vgextend test /dev/sdc

image

4. 查看vg信息

[root@lvm ~]# vgdisplay test

image

5. 移除卷组VG, 移除vg组中某⼀块硬盘

[root@lvm ~]# vgreduce datavg /dev/sdb

image

6. 查看vg信息

[root@lvm ~]# vgdisplay test

image

7.数据迁移卷组VG, 同⼀卷组的磁盘才可以进⾏在线迁移

检查当前逻辑卷VG中PV使⽤情况

[root@lvm ~]# pvs

image

8. pvmove在线数据迁移⾄其他pv

[root@lvm ~]# pvmove /dev/sdb

image

9. 检查是否将sdb数据迁移⾄sdc

[root@lvm ~]# pvs

image

3、扩容逻辑卷

逻辑卷的扩展, 取决于vg卷中剩余多少容量, 扩展容量不能超过卷组VG

xfs扩容 lv逻辑卷

1. 增加800M分配给逻辑卷 {注意: 800M +800M 不⼀样;直接800M是扩展到800M,+800M是在原有基础+800M。}

[root@lvm ~]# lvextend -L +800M /dev/test/data

image

2. 刷新磁盘分区

[root@lvm ~]# xfs_growfs /dev/test/data

image

3. 查看磁盘大小

[root@lvm ~]# df –Th

image

4. ext扩容分配磁盘池中多少百分⽐给逻辑卷

[root@lvm ~]# lvextend -l +50%FREE /dev/test/nfs

image

[root@lvm ~]# resize2fs /dev/test/nfs

image

5. 查看磁盘大小

[root@lvm ~]# df –Th

image

4、缩逻辑卷

ext4 离线减小逻辑卷

1. 取消挂载/dev/test/nfs

[root@lvm ~]# umount /dev/test/nfs/

image

2. 扫描信息 (把空的数据补齐)

[root@lvm ~]# e2fsck -f /dev/test/nfs

image

3. 减小文件系统到600M

[root@lvm ~]# resize2fs /dev/test/nfs 600M

image

4. 减小逻辑卷为600M

[root@lvm ~]# lvreduce -L 600M /dev/test/nfs

image

5. 重新挂载磁盘,并查看挂载信息

[root@lvm ~]# mount /dev/test/nfs /nfs/

[root@lvm ~]# df –Th

image

xfs只能扩大文件系统大小,不能减小文件系统大小。  

5、删除逻辑卷

当生产环境中想要重新部署LVM或者不再需要使用LVM时,则需要执行LVM的删除操作。为此,需要提前备份好重要的数据信息,然后依次删除逻辑卷、卷组、物理卷设备,这个顺序不可颠倒。若你写入自动挂载配置文件中,首先取消逻辑卷与目录的挂载关联,删除配置文件中永久生效的设备参数。

1. 删除逻辑卷设备,需要输入y来确认操作

[root@lvm ~]# lvremove /dev/test/nfs

image

2. 删除卷组,此处只写卷组名称即可,不需要设备的绝对路径。

[root@lvm ~]# vgremove test

image

3. 删除物理卷设备。

[root@lvm ~]# pvremove /dev/sdb /dev/sdc

image

4. 在上述操作执行完毕之后,再执行lvdisplay、vgdisplay、pvdisplay命令来查看LVM的信息时就不会再看到信息了(前提是上述步骤的操作是正确的)。

[root@lvm ~]# pvdisplay /dev/sdb

[root@lvm ~]# vgdisplay test

[root@lvm ~]# lvdisplay /dev/test/nfs

image