LVM是linux操作系统的逻辑卷管理器,目前版本是LVM2。LVM2使用的模块是DM模块,在LVM2的管理下可控制创建的存储卷的大小。

LVM2模型图:

LVM模å

LVM2中的术语:

物理存储介质:是存储系统最底层的单元,是指物理存储设备如/dev/sda1 /dev/sdb1...

PV:磁盘分区或从逻辑上与磁盘分区具有相同功能的设备,是LVM的基本存储逻辑块,包含了与LVM相关的管理参数

VG:卷组,由多个物理PV组成

LV:逻辑卷,在LV上可创建文件系统

PE:物理盘区/物理块,逻辑存储单位,类似RAID中的chunk,PE大小取决于卷组

LE:逻辑块,逻辑卷LV被划分为可被寻址的基本单位,在同一个卷组中,LE的大小与PE是相同的,并一一对应

快照:创建一个新的块设备来呈现一个逻辑卷的精确副本

术语对应关系如下图:

LVMæ½è±¡æ¨¡åLVM


首先:查看是否安装lvm2

[root@WebA-136 ~]# rpm -qa lvm2
lvm2-2.02.143-12.el6_9.1.x86_64
[root@WebA-136 ~]# yum install lvm2 -y

1.与pv的命令,pvcreate创建pv、pvscan查看pv、pvdisplay详细查看pv、pvmove移除某个pv的数据

[root@WebA-136 ~]# pvcreate /dev/sdd1  /dev/sdd2 #先将多个磁盘(这里是多个分区)制作为pv,基本的存储逻辑块
 Physical volume "/dev/sdd1" successfully created
 Physical volume "/dev/sdd2" successfully created
[root@WebA-136 ~]# pvscan
 PV /dev/sdd1                      lvm2 [50.98 MiB]
 PV /dev/sdd2                      lvm2 [51.00 MiB]
 Total: 2 [101.98 MiB] / in use: 0 [0   ] / in no VG: 2 [101.98 MiB]

注:

    不建议对整个磁盘做PV初始化工作。因为其他操作系统不能识别LVM元数据,导致我们认为磁盘是空闲的,重新设置分区覆盖原有数据

    如果是分区需要调整分区的类型为LVM(代码为8e)

2.与vg的命令,vgcreate创建vg、vgremove移除vg、vgextend、vgreduce缩减vg,就是移除某个pv,但一定要先将pv的数据移动到另一个pv上、vgdisplay详细展示vg信息、vgscan展示vg信息

[root@WebA-136 ~]# vgcreate yang /dev/sdd1 /dev/sdd2   #指定vg的名称 和 pv,可使用-s 指定PE大小,默认4M
 Volume group "yang" successfully created
[root@WebA-136 ~]# vgs
 VG   #PV #LV #SN Attr   VSize  VFree
 yang   2   0   0 wz--n- 96.00m 96.00m
[root@WebA-136 ~]# vgdisplay
 --- Volume group ---
 VG Name               yang
 System ID
 Format                lvm2
 Metadata Areas        2
 Metadata Sequence No  1
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                0
 Open LV               0
 Max PV                0
 Cur PV                2
 Act PV                2
 VG Size               96.00 MiB
 PE Size               4.00 MiB
 Total PE              24
 Alloc PE / Size       0 / 0
 Free  PE / Size       24 / 96.00 MiB
 VG UUID               W5BWyZ-HvtU-WJ5m-Y6FM-i1KG-Vm5b-HRAeZd
[root@WebA-136 ~]# pvmove /dev/sdd1                        #先将sdd1上的数据移除
 No data to move for yang
[root@WebA-136 ~]# vgreduce yang /dev/sdd1                 #再缩减vg
 Removed "/dev/sdd1" from volume group "yang"
[root@WebA-136 ~]# pvs                                    #查看pv信息可知sdd1已不属于yang这个vg了
 PV         VG   Fmt  Attr PSize  PFree
 /dev/sdd1       lvm2 ---- 50.98m 50.98m
 /dev/sdd2  yang lvm2 a--u 48.00m 48.00m    
[root@WebA-136 ~]# vgs                                    #查看vg,容量已变小
 VG   #PV #LV #SN Attr   VSize  VFree
 yang   1   0   0 wz--n- 48.00m 48.00m
[root@WebA-136 ~]# vgextend yang /dev/sdd1                #为pv增加容量
 Volume group "yang" successfully extended
[root@WebA-136 ~]# vgs                                    #查看vg,容量已变大
 VG   #PV #LV #SN Attr   VSize  VFree
 yang   2   0   0 wz--n- 96.00m 96.00m
[root@WebA-136 ~]# pvs                                    #查看pv信息可知sdd1又属于yang这个vg了
 PV         VG   Fmt  Attr PSize  PFree
 /dev/sdd1  yang lvm2 a--u 48.00m 48.00m
 /dev/sdd2  yang lvm2 a--u 48.00m 48.00m

3.与lv的命令,lvcreate创建lv、lvremove、lvextend、lvreduce、lvs、lvdisplay

[root@WebA-136 ~]# lvcreate -n lv-yang -L 50M yang           # -n 指定lv的名称   -L指定lv的大小   指定在哪个vg上创建lv
  Rounding up size to full physical extent 52.00 MiB
  Logical volume "lv-yang" created.
[root@WebA-136 ~]#

注:分区是在物理边界上创建一个文件系统,文件是在文件系统边界上新建的。文件系统是逻辑边界,so.首先扩展物理边界再扩展逻辑边界或先缩减逻辑边界再缩减物理边界

在线扩展物理边界lv:使用lvextend命令

[root@WebA-136 ~]# mkfs.ext4 /dev/yang/lv-yang   #在lv上创建文件系统
[root@WebA-136 ~]# mount /dev/yang/lv-yang /mnt/  #挂载
[root@WebA-136 ~]# df -h |grep "lv"                    #查看已挂载到/mnt上
/dev/mapper/yang-lv--yang   51M  4.9M   43M  11% /mnt
[root@WebA-136 ~]# lvextend  -L +20M /dev/yang/lv-yang        #扩展逻辑边界
 Size of logical volume yang/lv-yang changed from 52.00 MiB (13 extents) to 72.00 MiB (18 extents).     #告知已经扩展了物理边界
 Logical volume lv-yang successfully resized.
[root@WebA-136 ~]# df -h |grep "lv"                        #查看挂载的容量没有变化---->因为需要再扩展逻辑边界
/dev/mapper/yang-lv--yang   51M  4.9M   43M  11% /mnt
[root@WebA-136 ~]# resize2fs  -p /dev/yang/lv-yang            #进行扩展逻辑边界(文件系统),-p扩展到与物理边界(lv边界)一样大小的容量
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/yang/lv-yang is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/yang/lv-yang to 73728 (1k) blocks.
The filesystem on /dev/yang/lv-yang is now 73728 blocks long.

[root@WebA-136 ~]# df -h |grep "lv"                    #查看挂载的容量已经变化,ok
/dev/mapper/yang-lv--yang   70M  5.1M   62M   8% /mnt
[root@WebA-136 ~]#

注:缩减lv

    一定不能在线缩减lv(非挂载才行)

    缩减后的空间依旧能保留原来的数据

    先缩减逻辑编辑(文件系统边界)再缩减物理边界(lv边界),resize2fs-->lvreduce -L 

    重新挂载

[root@WebA-136 ~]# umount /mnt                #先卸载
[root@WebA-136 ~]# e2fsck -f /dev/yang/lv-yang   #需要先检查磁盘
e2fsck 1.41.12 (17-May-2010)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/yang/lv-yang: 11/22848 files (9.1% non-contiguous), 8245/94208 blocks
[root@WebA-136 ~]# resize2fs /dev/yang/lv-yang 52m             #缩减文件系统边界到52M
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/yang/lv-yang to 53248 (1k) blocks.
The filesystem on /dev/yang/lv-yang is now 53248 blocks long.

[root@WebA-136 ~]# lvreduce -L 52m /dev/yang/lv-yang           #再缩减lv边界到52m
 WARNING: Reducing active logical volume to 52.00 MiB.
 THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce yang/lv-yang? [y/n]: y            #会让你确认是否缩减,因为可能会损坏数据
 Size of logical volume yang/lv-yang changed from 92.00 MiB (23 extents) to 52.00 MiB (13 extents).
 Logical volume lv-yang successfully resized.
[root@WebA-136 ~]# mount /dev/yang/lv-yang /mnt/               #挂载
[root@WebA-136 ~]# df -h |grep "lv"                            #查看已经缩减空间
Filesystem                 Size  Used Avail Use% Mounted on    
/dev/mapper/yang-lv--yang   51M  4.9M   44M  11% /mnt
[root@WebA-136 ~]#

快照:

    用于备份

    生命周期:整个数据时长在这段时间内,数据的增长量不能超过快照卷的大小

    快照是只读的

    快照卷和原卷是在同一个卷组内

lvcreate -s -p r|w -L 大小 -n指定名称   /dev/vgs-name/lv-name   对lv-name创建快照只读/可写

[root@WebA-136 ~]# lvcreate -s -p r -L 40m -n lv-snap /dev/yang/lv-yang        #为/dev/yang/lv-yang创建快照名为lv-snap
 Logical volume "lv-snap" created.
[root@WebA-136 ~]# mount /dev/yang/lv-snap /snap/                               #挂载
mount: block device /dev/mapper/yang-lv--snap is write-protected, mounting read-only
[root@WebA-136 ~]# ls /snap            #查看快照内容
aaa  lost+found

当对逻辑卷进行备份后,就可以删除快照了

[root@WebA-136 ~]# lvremove  /dev/yang/lv-snap
Do you really want to remove active logical volume lv-snap? [y/n]: y
 Logical volume "lv-snap" successfully removed
[root@WebA-136 ~]#

:resize2fs是调整文件系统大小的工具,可以放大缩写在线/非在线的文件系统大小。在线需内核支持。

语法:resize2fs [选项] device [size]