目录

一、LVM概要

二、LVM核心管理命令

(一)、物理卷(PV)核心命令

1、pvcreate

(1)、使用一个磁盘创建物理卷

(2)、使用一个磁盘分区创建物理卷

2、pvs

3、pvscan

4、pvdisplay  

5、pvremove

6、pvresize

(二)、逻辑卷组(VG)核心命令

1、vgcreate

(1)、使用单个物理卷创建逻辑卷组

(2)、使用多个物理卷创建逻辑卷组

2、vgs

3、vgscan

4、vgdisplay

5、vgremove

6、vgextend

7、vgreduce

(三)、逻辑卷(LV)核心命令

1、lvcreate

2、lvs

3、lvscan

4、lvdisplay

5、lvremove

6、lvextend

7、lvreduce

8、lvresize

9、lvrename

三、应用实例

(一)、使用新增磁盘创建逻辑卷并挂载使用。

1、创建物理卷PV

2、创建逻辑卷组VG

3、创建逻辑卷LV

4、格式化逻辑卷

5、挂载使用逻辑卷

(1)、临时挂载

(2)、永久挂载(建议使用该方式)

(二)、根路径扩容

1、查询磁盘情况

2、查询逻辑卷组及逻辑卷情况

3、逻辑卷组centos扩容

4、根路径逻辑卷扩容

(三)、逻辑卷缩容

1、卸载文件系统

2、缩减文件系统

3、缩减逻辑卷

4、重新挂载文件系统

(四)、逻辑卷组缩容

1、卸载文件系统

2、缩减逻辑卷组

3、重新挂载文件系统


 

 

 

更多精彩博文详见:

《Linux系统应用运维》专栏总目录(持续更新)

 

 

 

 

 

 

一、LVM概要

 

        LVM是逻辑卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘进行管理的一种机制。LVM通过将底层的一块或者多块磁盘、分区层层抽象封装,最后以逻辑卷的方式供上层应用。其最大的特点是可以对磁盘进行动态管理,根据实际情况灵活地对逻辑卷进行扩容或者缩容。

        LVM的组成主要包括物理存储介质、物理卷、逻辑卷组、逻辑卷。

 

  • 物理存储介质(PhysicalStorageMedia)

指物理存储设备,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。

 

 

  • 物理卷(Physical Volume,PV)

物理卷是LVM的基本存储逻辑块,它在逻辑卷管理中处于最底层,可以是整个物理硬盘、物理硬盘上的分区或者是raid设备。

 

 

  • 逻辑卷组(Volume Group,VG)

逻辑卷组(VG)由一个或多个物理卷(PV)组成,可以在逻辑卷组(VG)上创建一个或多个逻辑卷(LV)。

 

 

  • 逻辑卷(Logical Volume,LV)

逻辑卷(LV)建立在逻辑卷组(VG)之上。逻辑卷(LV)上可以挂载文件系统(例如/home、/usr、/data等)。

 

LVM简易示意图如下:

 

 

 

 


 

 

 

 

 

 

二、LVM核心管理命令

 

 

(一)、物理卷(PV)核心命令

 

 

1、pvcreate

pvcreate命令用于创建物理卷。

 

(1)、使用一个磁盘创建物理卷

此处使用磁盘/dev/sdb来创建物理卷。

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

 

 

 

(2)、使用一个磁盘分区创建物理卷

此处使用磁盘/dev/sdc下的分区/dev/sdc1来创建物理卷。

[root@dataTest ~]# pvcreate /dev/sdc1

 


 

 

2、pvs

pvs命令用于显示物理卷信息。

[root@dataTest ~]# pvs

由上可见,当前有三个物理卷/dev/sda2、/dev/sdb、/dev/sdc1

 

 

 

 

3、pvscan

pvscan命令用于列出所有物理卷的使用情况。

[root@dataTest ~]# pvscan

 

 

 

 

4、pvdisplay  

pvdisplay命令用于显示所有物理卷的详细信息。

[root@dataTest ~]# pvdisplay

 

 

 

 

5、pvremove

pvremove命令用于删除物理卷。

此处删除物理卷/dev/sdc1。

[root@dataTest ~]# pvremove /dev/sdc1

 

 

 

 

6、pvresize

调整物理卷大小

将物理卷/dev/sdb的大小由5G调整为10G。

[root@dataTest ~]# pvresize --setphysicalvolumesize 10G /dev/sdb

 

 

 

 

 

(二)、逻辑卷组(VG)核心命令

 

 

1、vgcreate

vgcreate命令用于创建逻辑卷组。

 

(1)、使用单个物理卷创建逻辑卷组

此处使用物理卷/dev/sdc2来创建逻辑卷组first_vg。

[root@dataTest ~]# vgcreate first_vg /dev/sdc2

 

 

 

(2)、使用多个物理卷创建逻辑卷组

此处使用物理卷/dev/sdb、/dev/sdc1来创建逻辑卷组second_vg。

[root@dataTest ~]# vgcreate second_vg /dev/sdb /dev/sdc1

 

 

 

 

2、vgs

vgs命令用于显示所有逻辑卷组的使用情况信息。

[root@dataTest ~]# vgs

 

 

 

 

3、vgscan

vgscan命令用于列出所有逻辑卷组。

[root@dataTest ~]# vgscan

 

 

 

 

4、vgdisplay

vgdisplay命令用于显示逻辑卷组的详细信息

[root@dataTest ~]# vgdisplay

 

 

 

 

5、vgremove

vgremove命令用于删除逻辑卷组。

此处删除逻辑卷组second_vg。

[root@dataTest ~]# vgremove second_vg

 

 

 

 

6、vgextend

vgextend命令用于扩容逻辑卷组,即将新的物理卷添加到逻辑卷组。

此处将物理卷/dev/sdc1添加至逻辑卷组first_vg

[root@dataTest ~]# vgextend first_vg /dev/sdc1

由上可见,物理卷/dev/sdc1的大小为2G,添加至逻辑卷组first_vg后,逻辑卷组first_vg的容量由4G扩容至5.99G。

 

 

 

 

7、vgreduce

vgreduce命令用于从逻辑卷组中删除物理卷。

此处从逻辑卷组first_vg中将物理卷/dev/sdc1删除。

[root@dataTest ~]# vgreduce first_vg /dev/sdc1

由上可见,从逻辑卷组first_vg中将物理卷/dev/sdc1删除后,逻辑卷组first_vg的容量由5.99G缩减为4G。

 

 

 

 

 

(三)、逻辑卷(LV)核心命令

 

 

1、lvcreate

lvcreate命令用于创建逻辑卷。

此处创建逻辑卷first_lv。

  • 创建逻辑卷first_lv

[root@dataTest ~]# lvcreate -L 2G -n first_lv first_vg

-L:表示逻辑卷的大小;

-n:表示逻辑卷的名称;

first_vg:表示从逻辑卷组first_vg中分配2G的空间给逻辑卷first_lv。

 

 

  • 查看逻辑卷组first_vg

[root@dataTest ~]# vgs

查看逻辑卷组first_vg,可用空间由5.99G减少至3.99G,减少的2G空间分配给了逻辑卷first_lv。

 

 

 

 

2、lvs

lvs命令用于显示所有逻辑卷的信息。

[root@dataTest ~]# lvs

 

 

 

 

3、lvscan

lvscan命令用于列出所有逻辑卷的状态信息。

[root@dataTest ~]# lvscan

 

 

 

 

4、lvdisplay

lvdisplay命令用于显示所有逻辑卷的详细信息。

[root@dataTest ~]# lvdisplay

 

 

 

 

5、lvremove

lvremove命令用于删除逻辑卷。

此处删除逻辑卷组first_vg中的逻辑卷first_lv。

  • 删除逻辑卷first_lv

[root@dataTest ~]# lvremove /dev/first_vg/first_lv

 

 

  • 查看逻辑卷组first_vg

[root@dataTest ~]# vgs

查看逻辑卷组first_vg,可用空间由3.99G增加到5.99G,增加的2G空间是删除逻辑卷first_lv的空间。

 

 

 

 

6、lvextend

lvextend命令用于扩展逻辑卷的大小。

此处扩展逻辑卷first_lv的大小,由原来的2G扩展为3G。

  • 扩展逻辑卷first_lv

[root@dataTest ~]# lvextend -L +1G /dev/first_vg/first_lv

-L:+1G,表示扩展1G空间;

由上可见,逻辑卷first_lv的大小已经由2G扩展至3G。

 

 

  • 查看逻辑卷组first_vg

[root@dataTest ~]# vgs

查看逻辑卷组first_vg,可用空间由3.99G减少至2.99G,减少的1G空间分配给了逻辑卷first_lv。

 

 

 

 

7、lvreduce

lvreduce命令用于缩减逻辑卷的大小。

此处将逻辑卷first_lv的大小由3G缩减为2G。

  • 缩减逻辑卷first_lv

[root@dataTest ~]# lvreduce /dev/first_vg/first_lv -L -1G

-L:-1G,表示缩减1G空间;

由上可见,逻辑卷first_lv的大小已经由3G缩减至2G。

 

 

  • 查看逻辑卷组first_vg

[root@dataTest ~]# vgs

查看逻辑卷组first_vg,可用空间由2.99G增加至3.99G,增加的1G空间是逻辑卷first_lv缩减空间而来。

 

 

 

 

8、lvresize

lvresize命令用于调整逻辑卷的大小。

此处将逻辑卷组first_vg中的逻辑卷first_lv的大小调整为3G。

[root@dataTest ~]# lvresize -L 3G /dev/first_vg/first_lv

由上可见,逻辑卷first_lv的大小已经由2G调整为3G。

 

 

 

 

9、lvrename

lvrename命令用于重命名逻辑卷。

此处将逻辑卷first_lv重命名为first_lv_change。

[root@dataTest ~]# lvrename /dev/first_vg/first_lv /dev/first_vg/first_lv_change

由上可见,逻辑卷first_lv已经重命名为first_lv_change。

 

 

 

 


 

 

 

 

 

 

三、应用实例

 

 

(一)、使用新增磁盘创建逻辑卷并挂载使用。

 

此处演示新增了一块磁盘/dev/sdb,将其创建逻辑卷后,挂载到路径/data/soft/oracle/flash_recovery_area下使用。

 

 

1、创建物理卷PV

此处创建物理卷/dev/sdb。

  • 查看当前的磁盘

[root@Oracle ~]# fdisk -l

 

 

  • 查看当前物理卷PV

[root@Oracle ~]# pvs

或者

[root@Oracle ~]# pvdisplay

 

 

  • 创建物理卷PV

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

查看是否创建成功

[root@Oracle ~]# pvs

或者

[root@Oracle ~]# pvdisplay

 

 

 

 

2、创建逻辑卷组VG

此处创建逻辑卷组new_vg。

  • 查看当前逻辑卷组

[root@Oracle ~]# vgs

或者

[root@Oracle ~]# vgdisplay

 

 

  • 创建逻辑卷组new_vg

[root@Oracle ~]# vgcreate new_vg /dev/sdb

查看是否创建成功

[root@Oracle ~]# vgs

[root@Oracle ~]# vgdisplay new_vg

 

 

 

 

3、创建逻辑卷LV

在卷组new_vg上创建名称为new_lv且容量为19G的逻辑卷。

  • 创建逻辑卷

[root@Oracle ~]# lvcreate -L 19G -n new_lv new_vg

-n:指定lv名称

-L:指定大小

 

 

  • 查看是否创建成功

[root@Oracle ~]# lvs

[root@Oracle ~]# lvdisplay /dev/new_vg/new_lv

 

 

 

 

4、格式化逻辑卷

此处格式化逻辑卷/dev/new_vg/new_lv

[root@Oracle ~]# mke2fs -j /dev/new_vg/new_lv

也可以选择格式化的文件类型,使用参数-t

或者直接使用其他命令

mkfs.ext2

mkfs.ext3

mkfs.xfs

等,根据实际的文件系统类型选择对应命令

 

 

 

 

5、挂载使用逻辑卷

此处将逻辑卷/dev/new_vg/new_lv挂载到路径/data/soft/oracle/flash_recovery_area使用。

 

 

(1)、临时挂载

临时挂载会在服务器重启后失效。

[root@Oracle ~]# mount /dev/new_vg/new_lv /data/soft/oracle/flash_recovery_area

[root@Oracle ~]# df -h

 

 

 

(2)、永久挂载(建议使用该方式)

编辑/etc/fstab文件,将逻辑卷/dev/new_vg/new_lv永久挂载到/data/soft/oracle/flash_recovery_area路径下。

[root@Oracle ~]# cat /etc/fstab | grep -v "#"

[root@Oracle ~]# echo "/dev/new_vg/new_lv /data/soft/oracle/flash_recovery_area ext4 defaults 0 0" >> /etc/fstab

 

 

 

 

 

(二)、根路径扩容

 

新增了一块5GB的磁盘/dev/sdb,用于扩容根路径。

 

 

1、查询磁盘情况

 

  • 查询当前根路径使用情况

[root@dataTest ~]# df -h

由上可见,根路径分配总空间17G,当前使用率为51%。

注意:在/dev/mapper/centos-root中,centos-root表示逻辑卷组为centos,逻辑卷为root。

 

 

  • 查询新增的磁盘信息

[root@dataTest ~]# fdisk -l

由上可见,新增的磁盘为/dev/sdb,容量为5G。

 

 

 

 

2、查询逻辑卷组及逻辑卷情况

 

 

  • 查询逻辑卷信息

[root@dataTest ~]# lvdisplay

由上可见,根路径的逻辑卷属于逻辑卷组centos。

 

 

  • 查询逻辑卷组centos使用信息

[root@dataTest ~]# vgs

由上可见,逻辑卷组centos可分配空间已经为0,需要扩容逻辑卷组。

 

  •  
  •  
  •  

3、逻辑卷组centos扩容

 

  • 使用新增磁盘/dev/sdb创建物理卷

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

[root@dataTest ~]# pvs

 

 

  • 使用物理卷/dev/sdb对逻辑卷组centos进行扩容

[root@dataTest ~]# vgextend centos /dev/sdb

由上可见,扩容后的逻辑卷组centos可分配空间增加到5G。

 

 

 

 

4、根路径逻辑卷扩容

 

  • 根路径逻辑卷扩容

[root@dataTest ~]# lvextend -L +4G /dev/mapper/centos-root

 

 

  • 同步文件系统

[root@dataTest ~]# xfs_growfs /dev/mapper/centos-root

 

 

  • 查看根路径使用情况

[root@dataTest ~]# df -h

由上可见,根路径分配总空间由17G上升为21G,可用空间已经由8.4G增长至13G,使用率由51%下降为42%。

 

根路径扩容成功!

 

 

 

 

 

(三)、逻辑卷缩容

 

逻辑卷组first_vg的逻辑卷first_lv挂载在路径/lvm下,由于空间使用率较低,将其由9G缩容为5G。

[root@dataTest ~]# df -h

 

 

1、卸载文件系统

将逻辑卷/dev/first_vg/first_lv从/lvm路径卸载。

[root@dataTest ~]# umount /lvm/

由上可见,/lvm已经不在列表,说明卸载成功。

 

 

 

 

2、缩减文件系统

缩减文件系统的大小至5G。

  • 执行磁盘检查操作

[root@dataTest ~]# e2fsck -f /dev/first_vg/first_lv

 

 

  • 缩减文件系统的大小至5G

[root@dataTest ~]# resize2fs /dev/first_vg/first_lv 5G

 

 

 

 

3、缩减逻辑卷

缩减逻辑卷/dev/first_vg/first_lv的大小至5G。

[root@dataTest ~]# lvreduce /dev/first_vg/first_lv -L 5G

 

 

 

 

4、重新挂载文件系统

将逻辑卷/dev/first_vg/first_lv重新挂载在/lvm路径下。

[root@dataTest ~]# mount /dev/first_vg/first_lv /lvm

由上可见,逻辑卷/dev/first_vg/first_lv已经成功挂载在/lvm路径下,且路径/lvm下的文件内容正常。

 

 

逻辑卷缩容成功!

 

 

 

 

 

(四)、逻辑卷组缩容

 

 

1、卸载文件系统

将逻辑卷/dev/first_vg/first_lv从/lvm路径卸载。

[root@dataTest ~]# umount /lvm

由上可见,/lvm已经不在列表,说明卸载成功。

 

 

 

 

2、缩减逻辑卷组

将物理卷/dev/sdc1从逻辑卷组first_vg中移除。

[root@dataTest ~]# vgreduce first_vg /dev/sdc1

由上可见,物理卷/dev/sdc1的大小为2G,从逻辑卷组first_vg中移除物理卷/dev/sdc1后,逻辑卷组first_vg的大小由9.99G缩减至7.99G。

 

 

 

 

3、重新挂载文件系统

将逻辑卷/dev/first_vg/first_lv重新挂载在/lvm路径下。

[root@dataTest ~]# mount /dev/first_vg/first_lv /lvm

由上可见,逻辑卷/dev/first_vg/first_lv已经成功挂载在/lvm路径下,且路径/lvm下的文件内容正常。

 

 

 

逻辑卷组缩容成功!

 

 

 

 


 

 

 更多精彩博文详见:

《Linux系统应用运维》专栏总目录(持续更新)

 

 

 

 

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐