linux用户安装linux操作系统时遇到一个常见的难以解决的问题就是如何正确的评估各分区大小,以分配合适的磁盘空间,普通的磁盘分区方式在逻辑分区划分好之后就无法改变其大小,分区内存不能满足需要的解决方法。


逻辑卷管理Logical Volume Manager

它是linux环境下对磁盘分区进行管理的一种机制。linux用户安装linux操作系统时遇到一个常见的难以解决的问题就是如何正确的评估各分区大小,以分配合适的磁盘空间,普通的磁盘分区方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上,出现某个分区空间将耗尽的问题时,linux逻辑卷管理功能的出现,用户在无需停机的情况下可以方便的调整各分区的大小

  

#1.pv##物理卷,指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备,是lvm的基本存储逻辑块

  vg ##卷组,由一个或多个物理卷组成

 lv ##逻辑卷,建立在卷组vg上,在逻辑卷lv之上可以建立文件系统

 pe ##每一个物理卷被划分的基本单元

#2.建立lvm

* 创建分区:使用分区工具,fdisk /dev/vdb ,方式和创建其他分区的方式一样,区别是lvm 的分区类型为8e

Linux中的Lvm逻辑卷管理_逻辑卷

Linux中的Lvm逻辑卷管理_逻辑卷_02

Linux中的Lvm逻辑卷管理_管理_03

监控命令

Linux中的Lvm逻辑卷管理_管理_04

同步硬盘信息,添加两个分区vdb1,vdb2

Linux中的Lvm逻辑卷管理_管理_05

创建物理卷

将/vdb1分区创建为物理卷 

[root@localhost ~]# pvcreate /dev/vdb1 ##创建物理卷

Linux中的Lvm逻辑卷管理_Linux_06

pvcreate建立的物理卷创建一个卷组

第一个参数是指定该逻辑卷组的逻辑名,后面的参数是指定希望添加到该逻辑卷组的所有分区和磁盘。

[root@localhost ~]# vgcreate vg0 /dev/vdb1 把/dev/vdb1加到/vg0这个逻辑圈组 ##创建物理卷组

Linux中的Lvm逻辑卷管理_Linux_07

创建逻辑卷

[root@localhost ~]# lvcreate -L 100M -n lv0 vg0  ##在vg0上创建名字为lv0,大小为100m的逻辑卷,并且设备入口为/dev/vg0/lv0

-L ##指定设备大小  -n ##名字 ##创建逻辑卷组


监控显示物理卷,物理卷组已创建

Linux中的Lvm逻辑卷管理_逻辑卷_08

对于xfs文件系统

[root@localhost ~]# mkfs.xfs /dev/vg0/lv0 ##格式化文件系统

Linux中的Lvm逻辑卷管理_管理_09

[root@localhost ~]# mount /dev/vg0/lv0 /qq ##挂载,让设备可用,设备挂载体投入使用

Linux中的Lvm逻辑卷管理_Linux_10

[root@localhost ~]# xfs_growfs /dev/vg0/lv0 ##同步文件系统 

Linux中的Lvm逻辑卷管理_逻辑卷_11

监控文件系统更新

Linux中的Lvm逻辑卷管理_Linux_12

3.lvm的拉伸

vg中剩余容量充足的时候

lvextend -L 400M /dev/vg0/lv0 ##-L指定设备大小

xfs_growfs /dev/vg0/lv0 ##同步文件系统

Linux中的Lvm逻辑卷管理_Linux_13

Linux中的Lvm逻辑卷管理_逻辑卷_14

监控,逻辑卷大小400M,文件系统更新

Linux中的Lvm逻辑卷管理_逻辑卷_15

vg中剩余容量不足时

新建分区

pvcreate /dev/vdb2 ##创建物理卷

Linux中的Lvm逻辑卷管理_逻辑卷_16

vgextend vg0 /dev/vdb2 ##创建物理卷组,把/dev/vdb2加到vg0这个逻辑卷组,实现扩容

Linux中的Lvm逻辑卷管理_Linux_17

lvextend -L 400M /dev/vg0/lv0 ##拉伸逻辑卷为700M

Linux中的Lvm逻辑卷管理_管理_18

xfs_growfs /dev/vg0/lv0 ##同步文件系统

Linux中的Lvm逻辑卷管理_Linux_19

监控,逻辑卷lv0的大小拉伸为700M

Linux中的Lvm逻辑卷管理_管理_20

由于xfs文件系统只能拉伸文件系统,不能缩小,故采用ext4文件系统格式,既能拉伸也能缩减

###要把他改为ext4这个文件系统,要先卸载###

[root@localhost ~]# umount /qq/卸载

Linux中的Lvm逻辑卷管理_Linux_21

[root@localhost ~]# mkfs.ext4 /dev/vg0/lv0 格式化为ext4文件系统

Linux中的Lvm逻辑卷管理_管理_22

[root@localhost ~]# mount /dev/vg0/lv0 /qq挂载

Linux中的Lvm逻辑卷管理_逻辑卷_23

[root@localhost ~]# lvextend -L 800M /dev/vg0/lv0 ##将逻辑卷lv0拉伸为800M

Linux中的Lvm逻辑卷管理_管理_24

resize2fs /dev/vg0/lv0 ##同步文件系统

Linux中的Lvm逻辑卷管理_Linux_25

监控看出,lv0扩容为800M

Linux中的Lvm逻辑卷管理_管理_26

缩减

对设备

[root@localhost ~]# umount /qq/ ##先卸载

Linux中的Lvm逻辑卷管理_Linux_27

[root@localhost ~]# e2fsck -f /dev/vg0/lv0  ##扫描文件系统大小

Linux中的Lvm逻辑卷管理_Linux_28

[root@localhost ~]# resize2fs /dev/vg0/lv0 200M ##文件系统缩减为200M

缩减时,先扫描文件系统,在缩减设备 

Linux中的Lvm逻辑卷管理_Linux_29

[root@localhost ~]# mount /dev/vg0/lv0 /qq/ ##缩减完成再重新挂载

Linux中的Lvm逻辑卷管理_Linux_30

[root@localhost ~]# lvreduce -L 200M /dev/vg0/lv0 ##缩减设备 

Linux中的Lvm逻辑卷管理_逻辑卷_31

监控可看出逻辑卷和文件系统都缩减为200M

Linux中的Lvm逻辑卷管理_管理_32

###对圈组### 

##从卷组中删除一个物理卷##

要从一个卷组中删除一个物理卷,首先要确认被删除的物理卷没有被任何逻辑卷正在使用,

需要使用pvdisplay查看逻辑卷信息,如果某个物理卷正在被逻辑卷使用,就需要将该物理卷的数据备份到其他地方在删除。

[root@localhost ~]# pvmove /dev/vdb1 /dev/vdb2  ##当/dev/vdb2闲置,将存在数据的/dev/vdb1迁移到/dev/vdb2,再删除/dev/vdb1

Linux中的Lvm逻辑卷管理_管理_33

[root@localhost ~]# vgreduce vg0 /dev/vdb1 ##/dev/vdb1vg0圈组中移出

Linux中的Lvm逻辑卷管理_逻辑卷_34

[root@localhost ~]# pvremove /dev/vdb1 ##将/dev/vdb1从pv中删除

Linux中的Lvm逻辑卷管理_Linux_35

监控可看出,删除了/dev/vdb1

Linux中的Lvm逻辑卷管理_逻辑卷_36

###lvm的快照###

cd /qq/

touch file{1..10}

cd

lvcreate -L 100M -n lv0backup -s /dev/vg0/lv0

更改的是快照内容,访问的是原文件,L,指定快照大小,n指定快照的名字,s指定创建快照的设备

Linux中的Lvm逻辑卷管理_管理_37

Linux中的Lvm逻辑卷管理_逻辑卷_38

cd /qq

ls

不小心删除 rm -fr /qq/* 将快照删除,只是修改的快照内容,不改变原文件

umount /qq/

Linux中的Lvm逻辑卷管理_Linux_39

删除快照

lvremove /dev/vg0/lv0backup

Linux中的Lvm逻辑卷管理_管理_40

Linux中的Lvm逻辑卷管理_逻辑卷_41

原来的内容未改变

Linux中的Lvm逻辑卷管理_Linux_42

###删除pv,vg,lv###

[root@localhost ~]# umount /qq  ##卸载

[root@localhost ~]# lvremove /dev/vg0/lv0 ##删除文件系统

Linux中的Lvm逻辑卷管理_Linux_43

[root@localhost ~]# vgremove vg0 ##移除逻辑卷组

Linux中的Lvm逻辑卷管理_逻辑卷_44

[root@localhost ~]# pvremove /dev/vdb2 ##移除物理卷

Linux中的Lvm逻辑卷管理_逻辑卷_45

监控看出移除成功

Linux中的Lvm逻辑卷管理_管理_46

[root@localhost ~]# fdisk /dev/vdb ##删除分区

Linux中的Lvm逻辑卷管理_逻辑卷_47

查看分区信息 cat /proc/partitions

Linux中的Lvm逻辑卷管理_Linux_48