什么是LVM
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。
为什么使用LVM
直接使用fdisk分区挂载的话,随着时间的推移,数据量越来越大,硬盘空间越来越小,要想扩充容量的话,就必须挂载新硬盘然后做数据迁移,这就必然导致前台业务的停止,不符合企业需求,因此完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。Linux提供的逻辑盘卷管理(LVM,Logical Volume Manager)机制就是一个完美的解决方案。
LVM逻辑卷管理通过将底层物理硬盘抽象封装起来,以逻辑卷的形式表现给上层系统,逻辑卷的大小可以动态调整,而且不会丢失现有数据。新加入的硬盘也不会改变现有上层的逻辑卷,大大提高了磁盘管理的灵活性。
LVM原理
首先我们讨论以下几个LVM术语:
物理存储介质(The physical media):这里指系统的存储设备:硬盘,如:/dev/hda、/dev/sda等等,是存储系统最低层的存储单元。
物理卷(physical volume):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个"LVM分区"(逻辑卷),LVM卷组由一个或多个物理卷组成。
逻辑卷(logical volume):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
PE(physical extent):每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
LE(logical extent):逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
一块硬盘(物理存储介质)被格式化为物理卷(physical volume),其内部被分成若干个默认大小为4M的PE(physical extent),然后在PV的基础上创建卷组(Volume Group),可以把一个或者多个PV加到VG中,VG就好像一个空间池,假如多少个PV,VG就有多大的容量,最后基于VG创建逻辑卷(logical volume) ,一个逻辑卷就是若干个PE,然后将LV格式化再挂载(将LV当成是分区)
1、物理磁盘被格式化为PV,空间被分为一个个PE
2、不同的PV加入同一个VG,不同PV的PE全部进入VG的PE池内
3、LV基于PE创建,大小为PE的整数倍,组成LV的PE可能自来不同的物理磁盘
4、LV现在就直接可以格式化后挂载使用了
5、LV的扩充缩减实际上就是增加或减少组成该LV的PE的数量,其过程不会丢失数据
场景一:
原来已有一块硬盘sda,根分区原来是LVM,现在新增加一块磁盘20GB的磁盘sdb,要求把容量增加到原来的根目录
1、读取磁盘总线(请使用最tab键,读取最后一个host即可):
[root@localhost home]# echo "- - - " > /sys/class/scsi_host/hostN/scan
2、查看新增加的磁盘信息:
[root@localhost home]# lsblk
[root@localhost home]#fdisk -l
3、进行分区处理:
fdisk /dev/sdb
n
p
1
v
t
8e
w
4、创建PV,扩展VG
[root@localhost tmp]# pvcreate /dev/sdb1
[root@localhost tmp]# vgextend centos /dev/sdb1 //如果不知道vg名称,请先用vgs查看
查看VG
5、扩展lv
[root@localhost tmp]# lvextend -l 5120 /dev/centos/root
查看扩展后的lv
6、更新文件系统(centos7 默认使用的是XFS文件系统 )
[root@localhost ~]# xfs_growfs /dev/centos/root //如果是centos6.x请使用,resize2fs /dev/centos/root
[root@localhost ~]# df -h
场景二:
不管原来的系统是LVM还是非LVM,新加一块硬盘,做成LVM便于后期扩容。
1、读取磁盘总线(请使用最tab键,读取最后一个host即可):
[root@localhost home]# echo "- - - " > /sys/class/scsi_host/hostN/scan
2、查看新增加的磁盘信息:
[root@localhost home]# lsblk
[root@localhost home]#fdisk -l
3、进行分区处理:
fdisk /dev/sdb
n
p
1
v
t
8e
w
3、创建PV
[root@localhost tmp]# pvcreate /dev/sdb1
查看的PV
4、创建VG
[root@localhost ~]# vgcreate testvg /dev/sdb1
查看VG
5、创建lv
[root@localhost ~]# lvcreate -n lvtest -l 5119 testvg // 5119是上面查看vg 的Total PE值,后面是lv名称
查看lv
[root@localhost ~]# lvdisplay
6、创建文件系统
[root@localhost ~]# mkfs.xfs /dev/testvg/lvtest
6、挂载LV
[root@localhost /]# mount /dev/testvg/lvtest /mnt
7、修改fstab,以便开机挂载
[root@localhost /]# vim /etc/fstab
8.查看容量情况
[root@localhost /]# df -h